| 1 |
!function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=421)}([function(e,t,n){var a; |
| 2 |
/*! |
| 3 |
Copyright (c) 2017 Jed Watson. |
| 4 |
Licensed under the MIT License (MIT), see |
| 5 |
http://jedwatson.github.io/classnames |
| 6 |
*/!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var a=arguments[t];if(a){var o=typeof a;if("string"===o||"number"===o)e.push(a);else if(Array.isArray(a)&&a.length){var i=r.apply(null,a);i&&e.push(i)}else if("object"===o)for(var s in a)n.call(a,s)&&a[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(a=function(){return r}.apply(t,[]))||(e.exports=a)}()},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,a;function r(){return t.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var n,a=[];for(n=0;n<e.length;++n)a.push(t(e[n],n));return a}function d(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function p(e,t){for(var n in t)d(t,n)&&(e[n]=t[n]);return d(t,"toString")&&(e.toString=t.toString),d(t,"valueOf")&&(e.valueOf=t.valueOf),e}function m(e,t,n,a){return Lt(e,t,n,a,!0).utc()}function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function h(e){if(null==e._isValid){var t=f(e),n=a.call(t.parsedDateParts,(function(e){return null!=e})),r=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(r=r&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return r;e._isValid=r}return e._isValid}function b(e){var t=m(NaN);return null!=e?p(f(t),e):f(t).userInvalidated=!0,t}a=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,a=0;a<n;a++)if(a in t&&e.call(this,t[a],a,t))return!0;return!1};var g=r.momentProperties=[];function y(e,t){var n,a,r;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=f(t)),s(t._locale)||(e._locale=t._locale),g.length>0)for(n=0;n<g.length;n++)s(r=t[a=g[n]])||(e[a]=r);return e}var _=!1;function k(e){y(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===_&&(_=!0,r.updateOffset(this),_=!1)}function w(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function v(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function M(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=v(t)),n}function L(e,t,n){var a,r=Math.min(e.length,t.length),o=Math.abs(e.length-t.length),i=0;for(a=0;a<r;a++)(n&&e[a]!==t[a]||!n&&M(e[a])!==M(t[a]))&&i++;return i+o}function T(e){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function E(e,t){var n=!0;return p((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,e),n){for(var a,o=[],i=0;i<arguments.length;i++){if(a="","object"==typeof arguments[i]){for(var s in a+="\n["+i+"] ",arguments[0])a+=s+": "+arguments[0][s]+", ";a=a.slice(0,-2)}else a=arguments[i];o.push(a)}T(e+"\nArguments: "+Array.prototype.slice.call(o).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var S,x={};function C(e,t){null!=r.deprecationHandler&&r.deprecationHandler(e,t),x[e]||(T(t),x[e]=!0)}function D(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function O(e,t){var n,a=p({},e);for(n in t)d(t,n)&&(i(e[n])&&i(t[n])?(a[n]={},p(a[n],e[n]),p(a[n],t[n])):null!=t[n]?a[n]=t[n]:delete a[n]);for(n in e)d(e,n)&&!d(t,n)&&i(e[n])&&(a[n]=p({},a[n]));return a}function Y(e){null!=e&&this.set(e)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,S=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)d(e,t)&&n.push(t);return n};var j={};function P(e,t){var n=e.toLowerCase();j[n]=j[n+"s"]=j[t]=e}function N(e){return"string"==typeof e?j[e]||j[e.toLowerCase()]:void 0}function B(e){var t,n,a={};for(n in e)d(e,n)&&(t=N(n))&&(a[t]=e[n]);return a}var A={};function H(e,t){A[e]=t}function z(e,t,n){var a=""+Math.abs(e),r=t-a.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+a}var I=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,F=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},W={};function U(e,t,n,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),e&&(W[e]=r),t&&(W[t[0]]=function(){return z(r.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)})}function q(e,t){return e.isValid()?(t=G(t,e.localeData()),R[t]=R[t]||function(e){var t,n,a,r=e.match(I);for(t=0,n=r.length;t<n;t++)W[r[t]]?r[t]=W[r[t]]:r[t]=(a=r[t]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(t){var a,o="";for(a=0;a<n;a++)o+=D(r[a])?r[a].call(t,e):r[a];return o}}(t),R[t](e)):e.localeData().invalidDate()}function G(e,t){var n=5;function a(e){return t.longDateFormat(e)||e}for(F.lastIndex=0;n>=0&&F.test(e);)e=e.replace(F,a),F.lastIndex=0,n-=1;return e}var V=/\d/,$=/\d\d/,J=/\d{3}/,X=/\d{4}/,Q=/[+-]?\d{6}/,K=/\d\d?/,Z=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,ae=/[+-]?\d{1,6}/,re=/\d+/,oe=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,se=/Z|[+-]\d\d(?::?\d\d)?/gi,le=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ce={};function ue(e,t,n){ce[e]=D(t)?t:function(e,a){return e&&n?n:t}}function de(e,t){return d(ce,e)?ce[e](t._strict,t._locale):new RegExp(pe(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,a,r){return t||n||a||r}))))}function pe(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var me={};function fe(e,t){var n,a=t;for("string"==typeof e&&(e=[e]),l(t)&&(a=function(e,n){n[t]=M(e)}),n=0;n<e.length;n++)me[e[n]]=a}function he(e,t){fe(e,(function(e,n,a,r){a._w=a._w||{},t(e,a._w,a,r)}))}function be(e,t,n){null!=t&&d(me,e)&&me[e](t,n._a,n,e)}function ge(e){return ye(e)?366:365}function ye(e){return e%4==0&&e%100!=0||e%400==0}U("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),U(0,["YY",2],0,(function(){return this.year()%100})),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),P("year","y"),H("year",1),ue("Y",oe),ue("YY",K,$),ue("YYYY",ne,X),ue("YYYYY",ae,Q),ue("YYYYYY",ae,Q),fe(["YYYYY","YYYYYY"],0),fe("YYYY",(function(e,t){t[0]=2===e.length?r.parseTwoDigitYear(e):M(e)})),fe("YY",(function(e,t){t[0]=r.parseTwoDigitYear(e)})),fe("Y",(function(e,t){t[0]=parseInt(e,10)})),r.parseTwoDigitYear=function(e){return M(e)+(M(e)>68?1900:2e3)};var _e,ke=we("FullYear",!0);function we(e,t){return function(n){return null!=n?(Me(this,e,n),r.updateOffset(this,t),this):ve(this,e)}}function ve(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Me(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ye(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Le(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Le(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,a=(t%(n=12)+n)%n;return e+=(t-a)/12,1===a?ye(e)?29:28:31-a%7%2}_e=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},U("M",["MM",2],"Mo",(function(){return this.month()+1})),U("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),U("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),P("month","M"),H("month",8),ue("M",K),ue("MM",K,$),ue("MMM",(function(e,t){return t.monthsShortRegex(e)})),ue("MMMM",(function(e,t){return t.monthsRegex(e)})),fe(["M","MM"],(function(e,t){t[1]=M(e)-1})),fe(["MMM","MMMM"],(function(e,t,n,a){var r=n._locale.monthsParse(e,a,n._strict);null!=r?t[1]=r:f(n).invalidMonth=e}));var Te=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ee="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Se="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function xe(e,t,n){var a,r,o,i=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)o=m([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(o,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(r=_e.call(this._shortMonthsParse,i))?r:null:-1!==(r=_e.call(this._longMonthsParse,i))?r:null:"MMM"===t?-1!==(r=_e.call(this._shortMonthsParse,i))||-1!==(r=_e.call(this._longMonthsParse,i))?r:null:-1!==(r=_e.call(this._longMonthsParse,i))||-1!==(r=_e.call(this._shortMonthsParse,i))?r:null}function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=M(t);else if(!l(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Le(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function De(e){return null!=e?(Ce(this,e),r.updateOffset(this,!0),this):ve(this,"Month")}var Oe=le,Ye=le;function je(){function e(e,t){return t.length-e.length}var t,n,a=[],r=[],o=[];for(t=0;t<12;t++)n=m([2e3,t]),a.push(this.monthsShort(n,"")),r.push(this.months(n,"")),o.push(this.months(n,"")),o.push(this.monthsShort(n,""));for(a.sort(e),r.sort(e),o.sort(e),t=0;t<12;t++)a[t]=pe(a[t]),r[t]=pe(r[t]);for(t=0;t<24;t++)o[t]=pe(o[t]);this._monthsRegex=new RegExp("^("+o.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Pe(e,t,n,a,r,o,i){var s;return e<100&&e>=0?(s=new Date(e+400,t,n,a,r,o,i),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,a,r,o,i),s}function Ne(e){var t;if(e<100&&e>=0){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Be(e,t,n){var a=7+t-n;return-(7+Ne(e,0,a).getUTCDay()-t)%7+a-1}function Ae(e,t,n,a,r){var o,i,s=1+7*(t-1)+(7+n-a)%7+Be(e,a,r);return s<=0?i=ge(o=e-1)+s:s>ge(e)?(o=e+1,i=s-ge(e)):(o=e,i=s),{year:o,dayOfYear:i}}function He(e,t,n){var a,r,o=Be(e.year(),t,n),i=Math.floor((e.dayOfYear()-o-1)/7)+1;return i<1?a=i+ze(r=e.year()-1,t,n):i>ze(e.year(),t,n)?(a=i-ze(e.year(),t,n),r=e.year()+1):(r=e.year(),a=i),{week:a,year:r}}function ze(e,t,n){var a=Be(e,t,n),r=Be(e+1,t,n);return(ge(e)-a+r)/7}function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),H("week",5),H("isoWeek",5),ue("w",K),ue("ww",K,$),ue("W",K),ue("WW",K,$),he(["w","ww","W","WW"],(function(e,t,n,a){t[a.substr(0,1)]=M(e)})),U("d",0,"do","day"),U("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),U("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),U("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),H("day",11),H("weekday",11),H("isoWeekday",11),ue("d",K),ue("e",K),ue("E",K),ue("dd",(function(e,t){return t.weekdaysMinRegex(e)})),ue("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),ue("dddd",(function(e,t){return t.weekdaysRegex(e)})),he(["dd","ddd","dddd"],(function(e,t,n,a){var r=n._locale.weekdaysParse(e,a,n._strict);null!=r?t.d=r:f(n).invalidWeekday=e})),he(["d","e","E"],(function(e,t,n,a){t[a]=M(e)}));var Fe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),We="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Ue(e,t,n){var a,r,o,i=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)o=m([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(r=_e.call(this._weekdaysParse,i))?r:null:"ddd"===t?-1!==(r=_e.call(this._shortWeekdaysParse,i))?r:null:-1!==(r=_e.call(this._minWeekdaysParse,i))?r:null:"dddd"===t?-1!==(r=_e.call(this._weekdaysParse,i))||-1!==(r=_e.call(this._shortWeekdaysParse,i))||-1!==(r=_e.call(this._minWeekdaysParse,i))?r:null:"ddd"===t?-1!==(r=_e.call(this._shortWeekdaysParse,i))||-1!==(r=_e.call(this._weekdaysParse,i))||-1!==(r=_e.call(this._minWeekdaysParse,i))?r:null:-1!==(r=_e.call(this._minWeekdaysParse,i))||-1!==(r=_e.call(this._weekdaysParse,i))||-1!==(r=_e.call(this._shortWeekdaysParse,i))?r:null}var qe=le,Ge=le,Ve=le;function $e(){function e(e,t){return t.length-e.length}var t,n,a,r,o,i=[],s=[],l=[],c=[];for(t=0;t<7;t++)n=m([2e3,1]).day(t),a=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),o=this.weekdays(n,""),i.push(a),s.push(r),l.push(o),c.push(a),c.push(r),c.push(o);for(i.sort(e),s.sort(e),l.sort(e),c.sort(e),t=0;t<7;t++)s[t]=pe(s[t]),l[t]=pe(l[t]),c[t]=pe(c[t]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Je(){return this.hours()%12||12}function Xe(e,t){U(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Qe(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Je),U("k",["kk",2],0,(function(){return this.hours()||24})),U("hmm",0,0,(function(){return""+Je.apply(this)+z(this.minutes(),2)})),U("hmmss",0,0,(function(){return""+Je.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)})),U("Hmm",0,0,(function(){return""+this.hours()+z(this.minutes(),2)})),U("Hmmss",0,0,(function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)})),Xe("a",!0),Xe("A",!1),P("hour","h"),H("hour",13),ue("a",Qe),ue("A",Qe),ue("H",K),ue("h",K),ue("k",K),ue("HH",K,$),ue("hh",K,$),ue("kk",K,$),ue("hmm",Z),ue("hmmss",ee),ue("Hmm",Z),ue("Hmmss",ee),fe(["H","HH"],3),fe(["k","kk"],(function(e,t,n){var a=M(e);t[3]=24===a?0:a})),fe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),fe(["h","hh"],(function(e,t,n){t[3]=M(e),f(n).bigHour=!0})),fe("hmm",(function(e,t,n){var a=e.length-2;t[3]=M(e.substr(0,a)),t[4]=M(e.substr(a)),f(n).bigHour=!0})),fe("hmmss",(function(e,t,n){var a=e.length-4,r=e.length-2;t[3]=M(e.substr(0,a)),t[4]=M(e.substr(a,2)),t[5]=M(e.substr(r)),f(n).bigHour=!0})),fe("Hmm",(function(e,t,n){var a=e.length-2;t[3]=M(e.substr(0,a)),t[4]=M(e.substr(a))})),fe("Hmmss",(function(e,t,n){var a=e.length-4,r=e.length-2;t[3]=M(e.substr(0,a)),t[4]=M(e.substr(a,2)),t[5]=M(e.substr(r))}));var Ke,Ze=we("Hours",!0),et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Se,week:{dow:0,doy:6},weekdays:Fe,weekdaysMin:We,weekdaysShort:Re,meridiemParse:/[ap]\.?m?\.?/i},tt={},nt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function rt(t){var a=null;if(!tt[t]&&void 0!==e&&e&&e.exports)try{a=Ke._abbr,n(392)("./"+t),ot(a)}catch(e){}return tt[t]}function ot(e,t){var n;return e&&((n=s(t)?st(e):it(e,t))?Ke=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ke._abbr}function it(e,t){if(null!==t){var n,a=et;if(t.abbr=e,null!=tt[e])C("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=tt[e]._config;else if(null!=t.parentLocale)if(null!=tt[t.parentLocale])a=tt[t.parentLocale]._config;else{if(null==(n=rt(t.parentLocale)))return nt[t.parentLocale]||(nt[t.parentLocale]=[]),nt[t.parentLocale].push({name:e,config:t}),null;a=n._config}return tt[e]=new Y(O(a,t)),nt[e]&&nt[e].forEach((function(e){it(e.name,e.config)})),ot(e),tt[e]}return delete tt[e],null}function st(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ke;if(!o(e)){if(t=rt(e))return t;e=[e]}return function(e){for(var t,n,a,r,o=0;o<e.length;){for(t=(r=at(e[o]).split("-")).length,n=(n=at(e[o+1]))?n.split("-"):null;t>0;){if(a=rt(r.slice(0,t).join("-")))return a;if(n&&n.length>=t&&L(r,n,!0)>=t-1)break;t--}o++}return Ke}(e)}function lt(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>Le(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),f(e)._overflowWeeks&&-1===t&&(t=7),f(e)._overflowWeekday&&-1===t&&(t=8),f(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ut(e){var t,n,a,o,i,s=[];if(!e._d){for(a=function(e){var t=new Date(r.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,n,a,r,o,i,s,l;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)o=1,i=4,n=ct(t.GG,e._a[0],He(Tt(),1,4).year),a=ct(t.W,1),((r=ct(t.E,1))<1||r>7)&&(l=!0);else{o=e._locale._week.dow,i=e._locale._week.doy;var c=He(Tt(),o,i);n=ct(t.gg,e._a[0],c.year),a=ct(t.w,c.week),null!=t.d?((r=t.d)<0||r>6)&&(l=!0):null!=t.e?(r=t.e+o,(t.e<0||t.e>6)&&(l=!0)):r=o}a<1||a>ze(n,o,i)?f(e)._overflowWeeks=!0:null!=l?f(e)._overflowWeekday=!0:(s=Ae(n,a,r,o,i),e._a[0]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(i=ct(e._a[0],a[0]),(e._dayOfYear>ge(i)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),n=Ne(i,0,e._dayOfYear),e._a[1]=n.getUTCMonth(),e._a[2]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=a[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Ne:Pe).apply(null,s),o=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==o&&(f(e).weekdayMismatch=!0)}}var dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/Z|[+-]\d\d(?::?\d\d)?/,ft=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ht=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bt=/^\/?Date\((\-?\d+)/i;function gt(e){var t,n,a,r,o,i,s=e._i,l=dt.exec(s)||pt.exec(s);if(l){for(f(e).iso=!0,t=0,n=ft.length;t<n;t++)if(ft[t][1].exec(l[1])){r=ft[t][0],a=!1!==ft[t][2];break}if(null==r)return void(e._isValid=!1);if(l[3]){for(t=0,n=ht.length;t<n;t++)if(ht[t][1].exec(l[3])){o=(l[2]||" ")+ht[t][0];break}if(null==o)return void(e._isValid=!1)}if(!a&&null!=o)return void(e._isValid=!1);if(l[4]){if(!mt.exec(l[4]))return void(e._isValid=!1);i="Z"}e._f=r+(o||"")+(i||""),vt(e)}else e._isValid=!1}var yt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function _t(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}var kt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function wt(e){var t,n,a,r,o,i,s,l=yt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){var c=(t=l[4],n=l[3],a=l[2],r=l[5],o=l[6],i=l[7],s=[_t(t),Se.indexOf(n),parseInt(a,10),parseInt(r,10),parseInt(o,10)],i&&s.push(parseInt(i,10)),s);if(!function(e,t,n){return!e||Re.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],c,e))return;e._a=c,e._tzm=function(e,t,n){if(e)return kt[e];if(t)return 0;var a=parseInt(n,10),r=a%100;return(a-r)/100*60+r}(l[8],l[9],l[10]),e._d=Ne.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function vt(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],f(e).empty=!0;var t,n,a,o,i,s=""+e._i,l=s.length,c=0;for(a=G(e._f,e._locale).match(I)||[],t=0;t<a.length;t++)o=a[t],(n=(s.match(de(o,e))||[])[0])&&((i=s.substr(0,s.indexOf(n))).length>0&&f(e).unusedInput.push(i),s=s.slice(s.indexOf(n)+n.length),c+=n.length),W[o]?(n?f(e).empty=!1:f(e).unusedTokens.push(o),be(o,n,e)):e._strict&&!n&&f(e).unusedTokens.push(o);f(e).charsLeftOver=l-c,s.length>0&&f(e).unusedInput.push(s),e._a[3]<=12&&!0===f(e).bigHour&&e._a[3]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var a;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((a=e.isPM(n))&&t<12&&(t+=12),a||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),ut(e),lt(e)}else wt(e);else gt(e)}function Mt(e){var t=e._i,n=e._f;return e._locale=e._locale||st(e._l),null===t||void 0===n&&""===t?b({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new k(lt(t)):(c(t)?e._d=t:o(n)?function(e){var t,n,a,r,o;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(r=0;r<e._f.length;r++)o=0,t=y({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[r],vt(t),h(t)&&(o+=f(t).charsLeftOver,o+=10*f(t).unusedTokens.length,f(t).score=o,(null==a||o<a)&&(a=o,n=t));p(e,n||t)}(e):n?vt(e):function(e){var t=e._i;s(t)?e._d=new Date(r.now()):c(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=bt.exec(e._i);null===t?(gt(e),!1===e._isValid&&(delete e._isValid,wt(e),!1===e._isValid&&(delete e._isValid,r.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):o(t)?(e._a=u(t.slice(0),(function(e){return parseInt(e,10)})),ut(e)):i(t)?function(e){if(!e._d){var t=B(e._i);e._a=u([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),ut(e)}}(e):l(t)?e._d=new Date(t):r.createFromInputFallback(e)}(e),h(e)||(e._d=null),e))}function Lt(e,t,n,a,r){var s,l={};return!0!==n&&!1!==n||(a=n,n=void 0),(i(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=r,l._l=n,l._i=e,l._f=t,l._strict=a,(s=new k(lt(Mt(l))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Tt(e,t,n,a){return Lt(e,t,n,a,!1)}r.createFromInputFallback=E("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Et=E("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:b()})),St=E("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:b()}));function xt(e,t){var n,a;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],a=1;a<t.length;++a)t[a].isValid()&&!t[a][e](n)||(n=t[a]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Dt(e){var t=B(e),n=t.year||0,a=t.quarter||0,r=t.month||0,o=t.week||t.isoWeek||0,i=t.day||0,s=t.hour||0,l=t.minute||0,c=t.second||0,u=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===_e.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,a=0;a<Ct.length;++a)if(e[Ct[a]]){if(n)return!1;parseFloat(e[Ct[a]])!==M(e[Ct[a]])&&(n=!0)}return!0}(t),this._milliseconds=+u+1e3*c+6e4*l+1e3*s*60*60,this._days=+i+7*o,this._months=+r+3*a+12*n,this._data={},this._locale=st(),this._bubble()}function Ot(e){return e instanceof Dt}function Yt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function jt(e,t){U(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+z(~~(e/60),2)+t+z(~~e%60,2)}))}jt("Z",":"),jt("ZZ",""),ue("Z",se),ue("ZZ",se),fe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Nt(se,e)}));var Pt=/([\+\-]|\d\d)/gi;function Nt(e,t){var n=(t||"").match(e);if(null===n)return null;var a=((n[n.length-1]||[])+"").match(Pt)||["-",0,0],r=60*a[1]+M(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Bt(e,t){var n,a;return t._isUTC?(n=t.clone(),a=(w(e)||c(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+a),r.updateOffset(n,!1),n):Tt(e).local()}function At(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ht(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var zt=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ft(e,t){var n,a,r,o,i,s,c=e,u=null;return Ot(e)?c={ms:e._milliseconds,d:e._days,M:e._months}:l(e)?(c={},t?c[t]=e:c.milliseconds=e):(u=zt.exec(e))?(n="-"===u[1]?-1:1,c={y:0,d:M(u[2])*n,h:M(u[3])*n,m:M(u[4])*n,s:M(u[5])*n,ms:M(Yt(1e3*u[6]))*n}):(u=It.exec(e))?(n="-"===u[1]?-1:1,c={y:Rt(u[2],n),M:Rt(u[3],n),w:Rt(u[4],n),d:Rt(u[5],n),h:Rt(u[6],n),m:Rt(u[7],n),s:Rt(u[8],n)}):null==c?c={}:"object"==typeof c&&("from"in c||"to"in c)&&(o=Tt(c.from),i=Tt(c.to),r=o.isValid()&&i.isValid()?(i=Bt(i,o),o.isBefore(i)?s=Wt(o,i):((s=Wt(i,o)).milliseconds=-s.milliseconds,s.months=-s.months),s):{milliseconds:0,months:0},(c={}).ms=r.milliseconds,c.M=r.months),a=new Dt(c),Ot(e)&&d(e,"_locale")&&(a._locale=e._locale),a}function Rt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Wt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Ut(e,t){return function(n,a){var r;return null===a||isNaN(+a)||(C(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=a,a=r),qt(this,Ft(n="string"==typeof n?+n:n,a),e),this}}function qt(e,t,n,a){var o=t._milliseconds,i=Yt(t._days),s=Yt(t._months);e.isValid()&&(a=null==a||a,s&&Ce(e,ve(e,"Month")+s*n),i&&Me(e,"Date",ve(e,"Date")+i*n),o&&e._d.setTime(e._d.valueOf()+o*n),a&&r.updateOffset(e,i||s))}Ft.fn=Dt.prototype,Ft.invalid=function(){return Ft(NaN)};var Gt=Ut(1,"add"),Vt=Ut(-1,"subtract");function $t(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),a=e.clone().add(n,"months");return-(n+(t-a<0?(t-a)/(a-e.clone().add(n-1,"months")):(t-a)/(e.clone().add(n+1,"months")-a)))||0}function Jt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=st(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function Qt(){return this._locale}function Kt(e,t){return(e%t+t)%t}function Zt(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-126227808e5:new Date(e,t,n).valueOf()}function en(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-126227808e5:Date.UTC(e,t,n)}function tn(e,t){U(0,[e,e.length],0,t)}function nn(e,t,n,a,r){var o;return null==e?He(this,a,r).year:(t>(o=ze(e,a,r))&&(t=o),an.call(this,e,t,n,a,r))}function an(e,t,n,a,r){var o=Ae(e,t,n,a,r),i=Ne(o.year,0,o.dayOfYear);return this.year(i.getUTCFullYear()),this.month(i.getUTCMonth()),this.date(i.getUTCDate()),this}U(0,["gg",2],0,(function(){return this.weekYear()%100})),U(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),tn("gggg","weekYear"),tn("ggggg","weekYear"),tn("GGGG","isoWeekYear"),tn("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),H("weekYear",1),H("isoWeekYear",1),ue("G",oe),ue("g",oe),ue("GG",K,$),ue("gg",K,$),ue("GGGG",ne,X),ue("gggg",ne,X),ue("GGGGG",ae,Q),ue("ggggg",ae,Q),he(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,a){t[a.substr(0,2)]=M(e)})),he(["gg","GG"],(function(e,t,n,a){t[a]=r.parseTwoDigitYear(e)})),U("Q",0,"Qo","quarter"),P("quarter","Q"),H("quarter",7),ue("Q",V),fe("Q",(function(e,t){t[1]=3*(M(e)-1)})),U("D",["DD",2],"Do","date"),P("date","D"),H("date",9),ue("D",K),ue("DD",K,$),ue("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),fe(["D","DD"],2),fe("Do",(function(e,t){t[2]=M(e.match(K)[0])}));var rn=we("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),H("dayOfYear",4),ue("DDD",te),ue("DDDD",J),fe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=M(e)})),U("m",["mm",2],0,"minute"),P("minute","m"),H("minute",14),ue("m",K),ue("mm",K,$),fe(["m","mm"],4);var on=we("Minutes",!1);U("s",["ss",2],0,"second"),P("second","s"),H("second",15),ue("s",K),ue("ss",K,$),fe(["s","ss"],5);var sn,ln=we("Seconds",!1);for(U("S",0,0,(function(){return~~(this.millisecond()/100)})),U(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),U(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),U(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),U(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),U(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),U(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),P("millisecond","ms"),H("millisecond",16),ue("S",te,V),ue("SS",te,$),ue("SSS",te,J),sn="SSSS";sn.length<=9;sn+="S")ue(sn,re);function cn(e,t){t[6]=M(1e3*("0."+e))}for(sn="S";sn.length<=9;sn+="S")fe(sn,cn);var un=we("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var dn=k.prototype;function pn(e){return e}dn.add=Gt,dn.calendar=function(e,t){var n=e||Tt(),a=Bt(n,this).startOf("day"),o=r.calendarFormat(this,a)||"sameElse",i=t&&(D(t[o])?t[o].call(this,n):t[o]);return this.format(i||this.localeData().calendar(o,this,Tt(n)))},dn.clone=function(){return new k(this)},dn.diff=function(e,t,n){var a,r,o;if(!this.isValid())return NaN;if(!(a=Bt(e,this)).isValid())return NaN;switch(r=6e4*(a.utcOffset()-this.utcOffset()),t=N(t)){case"year":o=$t(this,a)/12;break;case"month":o=$t(this,a);break;case"quarter":o=$t(this,a)/3;break;case"second":o=(this-a)/1e3;break;case"minute":o=(this-a)/6e4;break;case"hour":o=(this-a)/36e5;break;case"day":o=(this-a-r)/864e5;break;case"week":o=(this-a-r)/6048e5;break;default:o=this-a}return n?o:v(o)},dn.endOf=function(e){var t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?en:Zt;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-Kt(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-Kt(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-Kt(t,1e3)-1}return this._d.setTime(t),r.updateOffset(this,!0),this},dn.format=function(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=q(this,e);return this.localeData().postformat(t)},dn.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Tt(e).isValid())?Ft({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},dn.fromNow=function(e){return this.from(Tt(),e)},dn.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||Tt(e).isValid())?Ft({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},dn.toNow=function(e){return this.to(Tt(),e)},dn.get=function(e){return D(this[e=N(e)])?this[e]():this},dn.invalidAt=function(){return f(this).overflow},dn.isAfter=function(e,t){var n=w(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},dn.isBefore=function(e,t){var n=w(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},dn.isBetween=function(e,t,n,a){var r=w(e)?e:Tt(e),o=w(t)?t:Tt(t);return!!(this.isValid()&&r.isValid()&&o.isValid())&&("("===(a=a||"()")[0]?this.isAfter(r,n):!this.isBefore(r,n))&&(")"===a[1]?this.isBefore(o,n):!this.isAfter(o,n))},dn.isSame=function(e,t){var n,a=w(e)?e:Tt(e);return!(!this.isValid()||!a.isValid())&&("millisecond"===(t=N(t)||"millisecond")?this.valueOf()===a.valueOf():(n=a.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},dn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},dn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},dn.isValid=function(){return h(this)},dn.lang=Xt,dn.locale=Jt,dn.localeData=Qt,dn.max=St,dn.min=Et,dn.parsingFlags=function(){return p({},f(this))},dn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:A[n]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=B(e)),a=0;a<n.length;a++)this[n[a].unit](e[n[a].unit]);else if(D(this[e=N(e)]))return this[e](t);return this},dn.startOf=function(e){var t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?en:Zt;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=Kt(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=Kt(t,6e4);break;case"second":t=this._d.valueOf(),t-=Kt(t,1e3)}return this._d.setTime(t),r.updateOffset(this,!0),this},dn.subtract=Vt,dn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},dn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},dn.toDate=function(){return new Date(this.valueOf())},dn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?q(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):D(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",q(n,"Z")):q(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r=t+'[")]';return this.format(n+a+"-MM-DD[T]HH:mm:ss.SSS"+r)},dn.toJSON=function(){return this.isValid()?this.toISOString():null},dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dn.unix=function(){return Math.floor(this.valueOf()/1e3)},dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dn.year=ke,dn.isLeapYear=function(){return ye(this.year())},dn.weekYear=function(e){return nn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dn.isoWeekYear=function(e){return nn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},dn.quarter=dn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},dn.month=De,dn.daysInMonth=function(){return Le(this.year(),this.month())},dn.week=dn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},dn.isoWeek=dn.isoWeeks=function(e){var t=He(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},dn.weeksInYear=function(){var e=this.localeData()._week;return ze(this.year(),e.dow,e.doy)},dn.isoWeeksInYear=function(){return ze(this.year(),1,4)},dn.date=rn,dn.day=dn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},dn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},dn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},dn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},dn.hour=dn.hours=Ze,dn.minute=dn.minutes=on,dn.second=dn.seconds=ln,dn.millisecond=dn.milliseconds=un,dn.utcOffset=function(e,t,n){var a,o=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Nt(se,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(a=At(this)),this._offset=e,this._isUTC=!0,null!=a&&this.add(a,"m"),o!==e&&(!t||this._changeInProgress?qt(this,Ft(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:At(this)},dn.utc=function(e){return this.utcOffset(0,e)},dn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(At(this),"m")),this},dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},dn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dn.isUtc=Ht,dn.isUTC=Ht,dn.zoneAbbr=function(){return this._isUTC?"UTC":""},dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dn.dates=E("dates accessor is deprecated. Use date instead.",rn),dn.months=E("months accessor is deprecated. Use month instead",De),dn.years=E("years accessor is deprecated. Use year instead",ke),dn.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),dn.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=Mt(e))._a){var t=e._isUTC?m(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&L(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var mn=Y.prototype;function fn(e,t,n,a){var r=st(),o=m().set(a,t);return r[n](o,e)}function hn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return fn(e,t,n,"month");var a,r=[];for(a=0;a<12;a++)r[a]=fn(e,a,n,"month");return r}function bn(e,t,n,a){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var r,o=st(),i=e?o._week.dow:0;if(null!=n)return fn(t,(n+i)%7,a,"day");var s=[];for(r=0;r<7;r++)s[r]=fn(t,(r+i)%7,a,"day");return s}mn.calendar=function(e,t,n){var a=this._calendar[e]||this._calendar.sameElse;return D(a)?a.call(t,n):a},mn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},mn.invalidDate=function(){return this._invalidDate},mn.ordinal=function(e){return this._ordinal.replace("%d",e)},mn.preparse=pn,mn.postformat=pn,mn.relativeTime=function(e,t,n,a){var r=this._relativeTime[n];return D(r)?r(e,t,n,a):r.replace(/%d/i,e)},mn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return D(n)?n(t):n.replace(/%s/i,t)},mn.set=function(e){var t,n;for(n in e)D(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},mn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Te).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},mn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Te.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},mn.monthsParse=function(e,t,n){var a,r,o;if(this._monthsParseExact)return xe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=m([2e3,a]),n&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[a]||(o="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[a].test(e))return a;if(n&&"MMM"===t&&this._shortMonthsParse[a].test(e))return a;if(!n&&this._monthsParse[a].test(e))return a}},mn.monthsRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||je.call(this),e?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Ye),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},mn.monthsShortRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||je.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Oe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},mn.week=function(e){return He(e,this._week.dow,this._week.doy).week},mn.firstDayOfYear=function(){return this._week.doy},mn.firstDayOfWeek=function(){return this._week.dow},mn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ie(n,this._week.dow):e?n[e.day()]:n},mn.weekdaysMin=function(e){return!0===e?Ie(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},mn.weekdaysShort=function(e){return!0===e?Ie(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},mn.weekdaysParse=function(e,t,n){var a,r,o;if(this._weekdaysParseExact)return Ue.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=m([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[a].test(e))return a;if(n&&"ddd"===t&&this._shortWeekdaysParse[a].test(e))return a;if(n&&"dd"===t&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}},mn.weekdaysRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},mn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ge),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},mn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ve),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},mn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},mn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===M(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=E("moment.lang is deprecated. Use moment.locale instead.",ot),r.langData=E("moment.langData is deprecated. Use moment.localeData instead.",st);var gn=Math.abs;function yn(e,t,n,a){var r=Ft(t,n);return e._milliseconds+=a*r._milliseconds,e._days+=a*r._days,e._months+=a*r._months,e._bubble()}function _n(e){return e<0?Math.floor(e):Math.ceil(e)}function kn(e){return 4800*e/146097}function wn(e){return 146097*e/4800}function vn(e){return function(){return this.as(e)}}var Mn=vn("ms"),Ln=vn("s"),Tn=vn("m"),En=vn("h"),Sn=vn("d"),xn=vn("w"),Cn=vn("M"),Dn=vn("Q"),On=vn("y");function Yn(e){return function(){return this.isValid()?this._data[e]:NaN}}var jn=Yn("milliseconds"),Pn=Yn("seconds"),Nn=Yn("minutes"),Bn=Yn("hours"),An=Yn("days"),Hn=Yn("months"),zn=Yn("years"),In=Math.round,Fn={ss:44,s:45,m:45,h:22,d:26,M:11};function Rn(e,t,n,a,r){return r.relativeTime(t||1,!!n,e,a)}var Wn=Math.abs;function Un(e){return(e>0)-(e<0)||+e}function qn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Wn(this._milliseconds)/1e3,a=Wn(this._days),r=Wn(this._months);e=v(n/60),t=v(e/60),n%=60,e%=60;var o=v(r/12),i=r%=12,s=a,l=t,c=e,u=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var p=d<0?"-":"",m=Un(this._months)!==Un(d)?"-":"",f=Un(this._days)!==Un(d)?"-":"",h=Un(this._milliseconds)!==Un(d)?"-":"";return p+"P"+(o?m+o+"Y":"")+(i?m+i+"M":"")+(s?f+s+"D":"")+(l||c||u?"T":"")+(l?h+l+"H":"")+(c?h+c+"M":"")+(u?h+u+"S":"")}var Gn=Dt.prototype;return Gn.isValid=function(){return this._isValid},Gn.abs=function(){var e=this._data;return this._milliseconds=gn(this._milliseconds),this._days=gn(this._days),this._months=gn(this._months),e.milliseconds=gn(e.milliseconds),e.seconds=gn(e.seconds),e.minutes=gn(e.minutes),e.hours=gn(e.hours),e.months=gn(e.months),e.years=gn(e.years),this},Gn.add=function(e,t){return yn(this,e,t,1)},Gn.subtract=function(e,t){return yn(this,e,t,-1)},Gn.as=function(e){if(!this.isValid())return NaN;var t,n,a=this._milliseconds;if("month"===(e=N(e))||"quarter"===e||"year"===e)switch(t=this._days+a/864e5,n=this._months+kn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(wn(this._months)),e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return 24*t+a/36e5;case"minute":return 1440*t+a/6e4;case"second":return 86400*t+a/1e3;case"millisecond":return Math.floor(864e5*t)+a;default:throw new Error("Unknown unit "+e)}},Gn.asMilliseconds=Mn,Gn.asSeconds=Ln,Gn.asMinutes=Tn,Gn.asHours=En,Gn.asDays=Sn,Gn.asWeeks=xn,Gn.asMonths=Cn,Gn.asQuarters=Dn,Gn.asYears=On,Gn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*M(this._months/12):NaN},Gn._bubble=function(){var e,t,n,a,r,o=this._milliseconds,i=this._days,s=this._months,l=this._data;return o>=0&&i>=0&&s>=0||o<=0&&i<=0&&s<=0||(o+=864e5*_n(wn(s)+i),i=0,s=0),l.milliseconds=o%1e3,e=v(o/1e3),l.seconds=e%60,t=v(e/60),l.minutes=t%60,n=v(t/60),l.hours=n%24,i+=v(n/24),r=v(kn(i)),s+=r,i-=_n(wn(r)),a=v(s/12),s%=12,l.days=i,l.months=s,l.years=a,this},Gn.clone=function(){return Ft(this)},Gn.get=function(e){return e=N(e),this.isValid()?this[e+"s"]():NaN},Gn.milliseconds=jn,Gn.seconds=Pn,Gn.minutes=Nn,Gn.hours=Bn,Gn.days=An,Gn.weeks=function(){return v(this.days()/7)},Gn.months=Hn,Gn.years=zn,Gn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var a=Ft(e).abs(),r=In(a.as("s")),o=In(a.as("m")),i=In(a.as("h")),s=In(a.as("d")),l=In(a.as("M")),c=In(a.as("y")),u=r<=Fn.ss&&["s",r]||r<Fn.s&&["ss",r]||o<=1&&["m"]||o<Fn.m&&["mm",o]||i<=1&&["h"]||i<Fn.h&&["hh",i]||s<=1&&["d"]||s<Fn.d&&["dd",s]||l<=1&&["M"]||l<Fn.M&&["MM",l]||c<=1&&["y"]||["yy",c];return u[2]=t,u[3]=+e>0,u[4]=n,Rn.apply(null,u)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},Gn.toISOString=qn,Gn.toString=qn,Gn.toJSON=qn,Gn.locale=Jt,Gn.localeData=Qt,Gn.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",qn),Gn.lang=Xt,U("X",0,0,"unix"),U("x",0,0,"valueOf"),ue("x",oe),ue("X",/[+-]?\d+(\.\d{1,3})?/),fe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))})),fe("x",(function(e,t,n){n._d=new Date(M(e))})),r.version="2.24.0",t=Tt,r.fn=dn,r.min=function(){var e=[].slice.call(arguments,0);return xt("isBefore",e)},r.max=function(){var e=[].slice.call(arguments,0);return xt("isAfter",e)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=m,r.unix=function(e){return Tt(1e3*e)},r.months=function(e,t){return hn(e,t,"months")},r.isDate=c,r.locale=ot,r.invalid=b,r.duration=Ft,r.isMoment=w,r.weekdays=function(e,t,n){return bn(e,t,n,"weekdays")},r.parseZone=function(){return Tt.apply(null,arguments).parseZone()},r.localeData=st,r.isDuration=Ot,r.monthsShort=function(e,t){return hn(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return bn(e,t,n,"weekdaysMin")},r.defineLocale=it,r.updateLocale=function(e,t){if(null!=t){var n,a,r=et;null!=(a=rt(e))&&(r=a._config),t=O(r,t),(n=new Y(t)).parentLocale=tt[e],tt[e]=n,ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?tt[e]=tt[e].parentLocale:null!=tt[e]&&delete tt[e]);return tt[e]},r.locales=function(){return S(tt)},r.weekdaysShort=function(e,t,n){return bn(e,t,n,"weekdaysShort")},r.normalizeUnits=N,r.relativeTimeRounding=function(e){return void 0===e?In:"function"==typeof e&&(In=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==Fn[e]&&(void 0===t?Fn[e]:(Fn[e]=t,"s"===e&&(Fn.ss=t-1),!0))},r.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=dn,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n(27)(e))},function(e,t,n){"use strict";e.exports=n(340)},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var a=n(96),r="object"==typeof self&&self&&self.Object===Object&&self,o=a||r||Function("return this")();e.exports=o},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var a; |
| 7 |
/*! |
| 8 |
* jQuery JavaScript Library v3.4.1 |
| 9 |
* https://jquery.com/ |
| 10 |
* |
| 11 |
* Includes Sizzle.js |
| 12 |
* https://sizzlejs.com/ |
| 13 |
* |
| 14 |
* Copyright JS Foundation and other contributors |
| 15 |
* Released under the MIT license |
| 16 |
* https://jquery.org/license |
| 17 |
* |
| 18 |
* Date: 2019-05-01T21:04Z |
| 19 |
*/!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,(function(n,r){"use strict";var o=[],i=n.document,s=Object.getPrototypeOf,l=o.slice,c=o.concat,u=o.push,d=o.indexOf,p={},m=p.toString,f=p.hasOwnProperty,h=f.toString,b=h.call(Object),g={},y=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},_=function(e){return null!=e&&e===e.window},k={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var a,r,o=(n=n||i).createElement("script");if(o.text=e,t)for(a in k)(r=t[a]||t.getAttribute&&t.getAttribute(a))&&o.setAttribute(a,r);n.head.appendChild(o).parentNode.removeChild(o)}function v(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?p[m.call(e)]||"object":typeof e}var M=function(e,t){return new M.fn.init(e,t)},L=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function T(e){var t=!!e&&"length"in e&&e.length,n=v(e);return!y(e)&&!_(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}M.fn=M.prototype={jquery:"3.4.1",constructor:M,length:0,toArray:function(){return l.call(this)},get:function(e){return null==e?l.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=M.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return M.each(this,e)},map:function(e){return this.pushStack(M.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(l.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:o.sort,splice:o.splice},M.extend=M.fn.extend=function(){var e,t,n,a,r,o,i=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof i&&(c=i,i=arguments[s]||{},s++),"object"==typeof i||y(i)||(i={}),s===l&&(i=this,s--);s<l;s++)if(null!=(e=arguments[s]))for(t in e)a=e[t],"__proto__"!==t&&i!==a&&(c&&a&&(M.isPlainObject(a)||(r=Array.isArray(a)))?(n=i[t],o=r&&!Array.isArray(n)?[]:r||M.isPlainObject(n)?n:{},r=!1,i[t]=M.extend(c,o,a)):void 0!==a&&(i[t]=a));return i},M.extend({expando:"jQuery"+("3.4.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==m.call(e))&&(!(t=s(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&h.call(n)===b)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){w(e,{nonce:t&&t.nonce})},each:function(e,t){var n,a=0;if(T(e))for(n=e.length;a<n&&!1!==t.call(e[a],a,e[a]);a++);else for(a in e)if(!1===t.call(e[a],a,e[a]))break;return e},trim:function(e){return null==e?"":(e+"").replace(L,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(T(Object(e))?M.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:d.call(t,e,n)},merge:function(e,t){for(var n=+t.length,a=0,r=e.length;a<n;a++)e[r++]=t[a];return e.length=r,e},grep:function(e,t,n){for(var a=[],r=0,o=e.length,i=!n;r<o;r++)!t(e[r],r)!==i&&a.push(e[r]);return a},map:function(e,t,n){var a,r,o=0,i=[];if(T(e))for(a=e.length;o<a;o++)null!=(r=t(e[o],o,n))&&i.push(r);else for(o in e)null!=(r=t(e[o],o,n))&&i.push(r);return c.apply([],i)},guid:1,support:g}),"function"==typeof Symbol&&(M.fn[Symbol.iterator]=o[Symbol.iterator]),M.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),(function(e,t){p["[object "+t+"]"]=t.toLowerCase()}));var E= |
| 20 |
/*! |
| 21 |
* Sizzle CSS Selector Engine v2.3.4 |
| 22 |
* https://sizzlejs.com/ |
| 23 |
* |
| 24 |
* Copyright JS Foundation and other contributors |
| 25 |
* Released under the MIT license |
| 26 |
* https://js.foundation/ |
| 27 |
* |
| 28 |
* Date: 2019-04-08 |
| 29 |
*/ |
| 30 |
function(e){var t,n,a,r,o,i,s,l,c,u,d,p,m,f,h,b,g,y,_,k="sizzle"+1*new Date,w=e.document,v=0,M=0,L=le(),T=le(),E=le(),S=le(),x=function(e,t){return e===t&&(d=!0),0},C={}.hasOwnProperty,D=[],O=D.pop,Y=D.push,j=D.push,P=D.slice,N=function(e,t){for(var n=0,a=e.length;n<a;n++)if(e[n]===t)return n;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",A="[\\x20\\t\\r\\n\\f]",H="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",z="\\["+A+"*("+H+")(?:"+A+"*([*^$|!~]?=)"+A+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+A+"*\\]",I=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",F=new RegExp(A+"+","g"),R=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),W=new RegExp("^"+A+"*,"+A+"*"),U=new RegExp("^"+A+"*([>+~]|"+A+")"+A+"*"),q=new RegExp(A+"|>"),G=new RegExp(I),V=new RegExp("^"+H+"$"),$={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+I),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+A+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+A+"*((?:-\\d)?\\d*)"+A+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+A+"?|("+A+")|.)","ig"),ne=function(e,t,n){var a="0x"+t-65536;return a!=a||n?t:a<0?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,1023&a|56320)},ae=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,re=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){p()},ie=ke((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{j.apply(D=P.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){j={apply:D.length?function(e,t){Y.apply(e,P.call(t))}:function(e,t){for(var n=e.length,a=0;e[n++]=t[a++];);e.length=n-1}}}function se(e,t,a,r){var o,s,c,u,d,f,g,y=t&&t.ownerDocument,v=t?t.nodeType:9;if(a=a||[],"string"!=typeof e||!e||1!==v&&9!==v&&11!==v)return a;if(!r&&((t?t.ownerDocument||t:w)!==m&&p(t),t=t||m,h)){if(11!==v&&(d=Z.exec(e)))if(o=d[1]){if(9===v){if(!(c=t.getElementById(o)))return a;if(c.id===o)return a.push(c),a}else if(y&&(c=y.getElementById(o))&&_(t,c)&&c.id===o)return a.push(c),a}else{if(d[2])return j.apply(a,t.getElementsByTagName(e)),a;if((o=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return j.apply(a,t.getElementsByClassName(o)),a}if(n.qsa&&!S[e+" "]&&(!b||!b.test(e))&&(1!==v||"object"!==t.nodeName.toLowerCase())){if(g=e,y=t,1===v&&q.test(e)){for((u=t.getAttribute("id"))?u=u.replace(ae,re):t.setAttribute("id",u=k),s=(f=i(e)).length;s--;)f[s]="#"+u+" "+_e(f[s]);g=f.join(","),y=ee.test(e)&&ge(t.parentNode)||t}try{return j.apply(a,y.querySelectorAll(g)),a}catch(t){S(e,!0)}finally{u===k&&t.removeAttribute("id")}}}return l(e.replace(R,"$1"),t,a,r)}function le(){var e=[];return function t(n,r){return e.push(n+" ")>a.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function ce(e){return e[k]=!0,e}function ue(e){var t=m.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),r=n.length;r--;)a.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,a=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(a)return a;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function me(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function fe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function he(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function be(e){return ce((function(t){return t=+t,ce((function(n,a){for(var r,o=e([],n.length,t),i=o.length;i--;)n[r=o[i]]&&(n[r]=!(a[r]=n[r]))}))}))}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},p=se.setDocument=function(e){var t,r,i=e?e.ownerDocument||e:w;return i!==m&&9===i.nodeType&&i.documentElement?(f=(m=i).documentElement,h=!o(m),w!==m&&(r=m.defaultView)&&r.top!==r&&(r.addEventListener?r.addEventListener("unload",oe,!1):r.attachEvent&&r.attachEvent("onunload",oe)),n.attributes=ue((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ue((function(e){return e.appendChild(m.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=K.test(m.getElementsByClassName),n.getById=ue((function(e){return f.appendChild(e).id=k,!m.getElementsByName||!m.getElementsByName(k).length})),n.getById?(a.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&h){var n=t.getElementById(e);return n?[n]:[]}}):(a.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&h){var n,a,r,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(r=t.getElementsByName(e),a=0;o=r[a++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),a.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,a=[],r=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[r++];)1===n.nodeType&&a.push(n);return a}return o},a.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&h)return t.getElementsByClassName(e)},g=[],b=[],(n.qsa=K.test(m.querySelectorAll))&&(ue((function(e){f.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&b.push("[*^$]="+A+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||b.push("\\["+A+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+k+"-]").length||b.push("~="),e.querySelectorAll(":checked").length||b.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||b.push(".#.+[+~]")})),ue((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=m.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&b.push("name"+A+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&b.push(":enabled",":disabled"),f.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&b.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),b.push(",.*:")}))),(n.matchesSelector=K.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ue((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),g.push("!=",I)})),b=b.length&&new RegExp(b.join("|")),g=g.length&&new RegExp(g.join("|")),t=K.test(f.compareDocumentPosition),_=t||K.test(f.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,a=t&&t.parentNode;return e===a||!(!a||1!==a.nodeType||!(n.contains?n.contains(a):e.compareDocumentPosition&&16&e.compareDocumentPosition(a)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},x=t?function(e,t){if(e===t)return d=!0,0;var a=!e.compareDocumentPosition-!t.compareDocumentPosition;return a||(1&(a=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===a?e===m||e.ownerDocument===w&&_(w,e)?-1:t===m||t.ownerDocument===w&&_(w,t)?1:u?N(u,e)-N(u,t):0:4&a?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,a=0,r=e.parentNode,o=t.parentNode,i=[e],s=[t];if(!r||!o)return e===m?-1:t===m?1:r?-1:o?1:u?N(u,e)-N(u,t):0;if(r===o)return pe(e,t);for(n=e;n=n.parentNode;)i.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;i[a]===s[a];)a++;return a?pe(i[a],s[a]):i[a]===w?-1:s[a]===w?1:0},m):m},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==m&&p(e),n.matchesSelector&&h&&!S[t+" "]&&(!g||!g.test(t))&&(!b||!b.test(t)))try{var a=y.call(e,t);if(a||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return a}catch(e){S(t,!0)}return se(t,m,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!==m&&p(e),_(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==m&&p(e);var r=a.attrHandle[t.toLowerCase()],o=r&&C.call(a.attrHandle,t.toLowerCase())?r(e,t,!h):void 0;return void 0!==o?o:n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+"").replace(ae,re)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,a=[],r=0,o=0;if(d=!n.detectDuplicates,u=!n.sortStable&&e.slice(0),e.sort(x),d){for(;t=e[o++];)t===e[o]&&(r=a.push(o));for(;r--;)e.splice(a[r],1)}return u=null,e},r=se.getText=function(e){var t,n="",a=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=r(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[a++];)n+=r(t);return n},(a=se.selectors={cacheLength:50,createPseudo:ce,match:$,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&G.test(n)&&(t=i(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=L[e+" "];return t||(t=new RegExp("(^|"+A+")"+e+"("+A+"|$)"))&&L(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(a){var r=se.attr(a,e);return null==r?"!="===t:!t||(r+="","="===t?r===n:"!="===t?r!==n:"^="===t?n&&0===r.indexOf(n):"*="===t?n&&r.indexOf(n)>-1:"$="===t?n&&r.slice(-n.length)===n:"~="===t?(" "+r.replace(F," ")+" ").indexOf(n)>-1:"|="===t&&(r===n||r.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,a,r){var o="nth"!==e.slice(0,3),i="last"!==e.slice(-4),s="of-type"===t;return 1===a&&0===r?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,p,m,f,h=o!==i?"nextSibling":"previousSibling",b=t.parentNode,g=s&&t.nodeName.toLowerCase(),y=!l&&!s,_=!1;if(b){if(o){for(;h;){for(p=t;p=p[h];)if(s?p.nodeName.toLowerCase()===g:1===p.nodeType)return!1;f=h="only"===e&&!f&&"nextSibling"}return!0}if(f=[i?b.firstChild:b.lastChild],i&&y){for(_=(m=(c=(u=(d=(p=b)[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===v&&c[1])&&c[2],p=m&&b.childNodes[m];p=++m&&p&&p[h]||(_=m=0)||f.pop();)if(1===p.nodeType&&++_&&p===t){u[e]=[v,m,_];break}}else if(y&&(_=m=(c=(u=(d=(p=t)[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]||[])[0]===v&&c[1]),!1===_)for(;(p=++m&&p&&p[h]||(_=m=0)||f.pop())&&((s?p.nodeName.toLowerCase()!==g:1!==p.nodeType)||!++_||(y&&((u=(d=p[k]||(p[k]={}))[p.uniqueID]||(d[p.uniqueID]={}))[e]=[v,_]),p!==t)););return(_-=r)===a||_%a==0&&_/a>=0}}},PSEUDO:function(e,t){var n,r=a.pseudos[e]||a.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return r[k]?r(t):r.length>1?(n=[e,e,"",t],a.setFilters.hasOwnProperty(e.toLowerCase())?ce((function(e,n){for(var a,o=r(e,t),i=o.length;i--;)e[a=N(e,o[i])]=!(n[a]=o[i])})):function(e){return r(e,0,n)}):r}},pseudos:{not:ce((function(e){var t=[],n=[],a=s(e.replace(R,"$1"));return a[k]?ce((function(e,t,n,r){for(var o,i=a(e,null,r,[]),s=e.length;s--;)(o=i[s])&&(e[s]=!(t[s]=o))})):function(e,r,o){return t[0]=e,a(t,null,o,n),t[0]=null,!n.pop()}})),has:ce((function(e){return function(t){return se(e,t).length>0}})),contains:ce((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||r(t)).indexOf(e)>-1}})),lang:ce((function(e){return V.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===m.activeElement&&(!m.hasFocus||m.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:he(!1),disabled:he(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!a.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:be((function(){return[0]})),last:be((function(e,t){return[t-1]})),eq:be((function(e,t,n){return[n<0?n+t:n]})),even:be((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:be((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:be((function(e,t,n){for(var a=n<0?n+t:n>t?t:n;--a>=0;)e.push(a);return e})),gt:be((function(e,t,n){for(var a=n<0?n+t:n;++a<t;)e.push(a);return e}))}}).pseudos.nth=a.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})a.pseudos[t]=me(t);for(t in{submit:!0,reset:!0})a.pseudos[t]=fe(t);function ye(){}function _e(e){for(var t=0,n=e.length,a="";t<n;t++)a+=e[t].value;return a}function ke(e,t,n){var a=t.dir,r=t.next,o=r||a,i=n&&"parentNode"===o,s=M++;return t.first?function(t,n,r){for(;t=t[a];)if(1===t.nodeType||i)return e(t,n,r);return!1}:function(t,n,l){var c,u,d,p=[v,s];if(l){for(;t=t[a];)if((1===t.nodeType||i)&&e(t,n,l))return!0}else for(;t=t[a];)if(1===t.nodeType||i)if(u=(d=t[k]||(t[k]={}))[t.uniqueID]||(d[t.uniqueID]={}),r&&r===t.nodeName.toLowerCase())t=t[a]||t;else{if((c=u[o])&&c[0]===v&&c[1]===s)return p[2]=c[2];if(u[o]=p,p[2]=e(t,n,l))return!0}return!1}}function we(e){return e.length>1?function(t,n,a){for(var r=e.length;r--;)if(!e[r](t,n,a))return!1;return!0}:e[0]}function ve(e,t,n,a,r){for(var o,i=[],s=0,l=e.length,c=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,a,r)||(i.push(o),c&&t.push(s)));return i}function Me(e,t,n,a,r,o){return a&&!a[k]&&(a=Me(a)),r&&!r[k]&&(r=Me(r,o)),ce((function(o,i,s,l){var c,u,d,p=[],m=[],f=i.length,h=o||function(e,t,n){for(var a=0,r=t.length;a<r;a++)se(e,t[a],n);return n}(t||"*",s.nodeType?[s]:s,[]),b=!e||!o&&t?h:ve(h,p,e,s,l),g=n?r||(o?e:f||a)?[]:i:b;if(n&&n(b,g,s,l),a)for(c=ve(g,m),a(c,[],s,l),u=c.length;u--;)(d=c[u])&&(g[m[u]]=!(b[m[u]]=d));if(o){if(r||e){if(r){for(c=[],u=g.length;u--;)(d=g[u])&&c.push(b[u]=d);r(null,g=[],c,l)}for(u=g.length;u--;)(d=g[u])&&(c=r?N(o,d):p[u])>-1&&(o[c]=!(i[c]=d))}}else g=ve(g===i?g.splice(f,g.length):g),r?r(null,i,g,l):j.apply(i,g)}))}function Le(e){for(var t,n,r,o=e.length,i=a.relative[e[0].type],s=i||a.relative[" "],l=i?1:0,u=ke((function(e){return e===t}),s,!0),d=ke((function(e){return N(t,e)>-1}),s,!0),p=[function(e,n,a){var r=!i&&(a||n!==c)||((t=n).nodeType?u(e,n,a):d(e,n,a));return t=null,r}];l<o;l++)if(n=a.relative[e[l].type])p=[ke(we(p),n)];else{if((n=a.filter[e[l].type].apply(null,e[l].matches))[k]){for(r=++l;r<o&&!a.relative[e[r].type];r++);return Me(l>1&&we(p),l>1&&_e(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(R,"$1"),n,l<r&&Le(e.slice(l,r)),r<o&&Le(e=e.slice(r)),r<o&&_e(e))}p.push(n)}return we(p)}return ye.prototype=a.filters=a.pseudos,a.setFilters=new ye,i=se.tokenize=function(e,t){var n,r,o,i,s,l,c,u=T[e+" "];if(u)return t?0:u.slice(0);for(s=e,l=[],c=a.preFilter;s;){for(i in n&&!(r=W.exec(s))||(r&&(s=s.slice(r[0].length)||s),l.push(o=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(R," ")}),s=s.slice(n.length)),a.filter)!(r=$[i].exec(s))||c[i]&&!(r=c[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?se.error(e):T(e,l).slice(0)},s=se.compile=function(e,t){var n,r=[],o=[],s=E[e+" "];if(!s){for(t||(t=i(e)),n=t.length;n--;)(s=Le(t[n]))[k]?r.push(s):o.push(s);(s=E(e,function(e,t){var n=t.length>0,r=e.length>0,o=function(o,i,s,l,u){var d,f,b,g=0,y="0",_=o&&[],k=[],w=c,M=o||r&&a.find.TAG("*",u),L=v+=null==w?1:Math.random()||.1,T=M.length;for(u&&(c=i===m||i||u);y!==T&&null!=(d=M[y]);y++){if(r&&d){for(f=0,i||d.ownerDocument===m||(p(d),s=!h);b=e[f++];)if(b(d,i||m,s)){l.push(d);break}u&&(v=L)}n&&((d=!b&&d)&&g--,o&&_.push(d))}if(g+=y,n&&y!==g){for(f=0;b=t[f++];)b(_,k,i,s);if(o){if(g>0)for(;y--;)_[y]||k[y]||(k[y]=O.call(l));k=ve(k)}j.apply(l,k),u&&!o&&k.length>0&&g+t.length>1&&se.uniqueSort(l)}return u&&(v=L,c=w),_};return n?ce(o):o}(o,r))).selector=e}return s},l=se.select=function(e,t,n,r){var o,l,c,u,d,p="function"==typeof e&&e,m=!r&&i(e=p.selector||e);if(n=n||[],1===m.length){if((l=m[0]=m[0].slice(0)).length>2&&"ID"===(c=l[0]).type&&9===t.nodeType&&h&&a.relative[l[1].type]){if(!(t=(a.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(o=$.needsContext.test(e)?0:l.length;o--&&(c=l[o],!a.relative[u=c.type]);)if((d=a.find[u])&&(r=d(c.matches[0].replace(te,ne),ee.test(l[0].type)&&ge(t.parentNode)||t))){if(l.splice(o,1),!(e=r.length&&_e(l)))return j.apply(n,r),n;break}}return(p||s(e,m))(r,t,!h,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=k.split("").sort(x).join("")===k,n.detectDuplicates=!!d,p(),n.sortDetached=ue((function(e){return 1&e.compareDocumentPosition(m.createElement("fieldset"))})),ue((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||de("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ue((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||de("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ue((function(e){return null==e.getAttribute("disabled")}))||de(B,(function(e,t,n){var a;if(!n)return!0===e[t]?t.toLowerCase():(a=e.getAttributeNode(t))&&a.specified?a.value:null})),se}(n);M.find=E,M.expr=E.selectors,M.expr[":"]=M.expr.pseudos,M.uniqueSort=M.unique=E.uniqueSort,M.text=E.getText,M.isXMLDoc=E.isXML,M.contains=E.contains,M.escapeSelector=E.escape;var S=function(e,t,n){for(var a=[],r=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(r&&M(e).is(n))break;a.push(e)}return a},x=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},C=M.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var O=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Y(e,t,n){return y(t)?M.grep(e,(function(e,a){return!!t.call(e,a,e)!==n})):t.nodeType?M.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?M.grep(e,(function(e){return d.call(t,e)>-1!==n})):M.filter(t,e,n)}M.filter=function(e,t,n){var a=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===a.nodeType?M.find.matchesSelector(a,e)?[a]:[]:M.find.matches(e,M.grep(t,(function(e){return 1===e.nodeType})))},M.fn.extend({find:function(e){var t,n,a=this.length,r=this;if("string"!=typeof e)return this.pushStack(M(e).filter((function(){for(t=0;t<a;t++)if(M.contains(r[t],this))return!0})));for(n=this.pushStack([]),t=0;t<a;t++)M.find(e,r[t],n);return a>1?M.uniqueSort(n):n},filter:function(e){return this.pushStack(Y(this,e||[],!1))},not:function(e){return this.pushStack(Y(this,e||[],!0))},is:function(e){return!!Y(this,"string"==typeof e&&C.test(e)?M(e):e||[],!1).length}});var j,P=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(M.fn.init=function(e,t,n){var a,r;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(a="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:P.exec(e))||!a[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(a[1]){if(t=t instanceof M?t[0]:t,M.merge(this,M.parseHTML(a[1],t&&t.nodeType?t.ownerDocument||t:i,!0)),O.test(a[1])&&M.isPlainObject(t))for(a in t)y(this[a])?this[a](t[a]):this.attr(a,t[a]);return this}return(r=i.getElementById(a[2]))&&(this[0]=r,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(M):M.makeArray(e,this)}).prototype=M.fn,j=M(i);var N=/^(?:parents|prev(?:Until|All))/,B={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}M.fn.extend({has:function(e){var t=M(e,this),n=t.length;return this.filter((function(){for(var e=0;e<n;e++)if(M.contains(this,t[e]))return!0}))},closest:function(e,t){var n,a=0,r=this.length,o=[],i="string"!=typeof e&&M(e);if(!C.test(e))for(;a<r;a++)for(n=this[a];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(i?i.index(n)>-1:1===n.nodeType&&M.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?M.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?d.call(M(e),this[0]):d.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(M.uniqueSort(M.merge(this.get(),M(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),M.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,"parentNode")},parentsUntil:function(e,t,n){return S(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return S(e,"nextSibling")},prevAll:function(e){return S(e,"previousSibling")},nextUntil:function(e,t,n){return S(e,"nextSibling",n)},prevUntil:function(e,t,n){return S(e,"previousSibling",n)},siblings:function(e){return x((e.parentNode||{}).firstChild,e)},children:function(e){return x(e.firstChild)},contents:function(e){return void 0!==e.contentDocument?e.contentDocument:(D(e,"template")&&(e=e.content||e),M.merge([],e.childNodes))}},(function(e,t){M.fn[e]=function(n,a){var r=M.map(this,t,n);return"Until"!==e.slice(-5)&&(a=n),a&&"string"==typeof a&&(r=M.filter(a,r)),this.length>1&&(B[e]||M.uniqueSort(r),N.test(e)&&r.reverse()),this.pushStack(r)}}));var H=/[^\x20\t\r\n\f]+/g;function z(e){return e}function I(e){throw e}function F(e,t,n,a){var r;try{e&&y(r=e.promise)?r.call(e).done(t).fail(n):e&&y(r=e.then)?r.call(e,t,n):t.apply(void 0,[e].slice(a))}catch(e){n.apply(void 0,[e])}}M.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return M.each(e.match(H)||[],(function(e,n){t[n]=!0})),t}(e):M.extend({},e);var t,n,a,r,o=[],i=[],s=-1,l=function(){for(r=r||e.once,a=t=!0;i.length;s=-1)for(n=i.shift();++s<o.length;)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1);e.memory||(n=!1),t=!1,r&&(o=n?[]:"")},c={add:function(){return o&&(n&&!t&&(s=o.length-1,i.push(n)),function t(n){M.each(n,(function(n,a){y(a)?e.unique&&c.has(a)||o.push(a):a&&a.length&&"string"!==v(a)&&t(a)}))}(arguments),n&&!t&&l()),this},remove:function(){return M.each(arguments,(function(e,t){for(var n;(n=M.inArray(t,o,n))>-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?M.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=i=[],o=n="",this},disabled:function(){return!o},lock:function(){return r=i=[],n||t||(o=n=""),this},locked:function(){return!!r},fireWith:function(e,n){return r||(n=[e,(n=n||[]).slice?n.slice():n],i.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!a}};return c},M.extend({Deferred:function(e){var t=[["notify","progress",M.Callbacks("memory"),M.Callbacks("memory"),2],["resolve","done",M.Callbacks("once memory"),M.Callbacks("once memory"),0,"resolved"],["reject","fail",M.Callbacks("once memory"),M.Callbacks("once memory"),1,"rejected"]],a="pending",r={state:function(){return a},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return r.then(null,e)},pipe:function(){var e=arguments;return M.Deferred((function(n){M.each(t,(function(t,a){var r=y(e[a[4]])&&e[a[4]];o[a[1]]((function(){var e=r&&r.apply(this,arguments);e&&y(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[a[0]+"With"](this,r?[e]:arguments)}))})),e=null})).promise()},then:function(e,a,r){var o=0;function i(e,t,a,r){return function(){var s=this,l=arguments,c=function(){var n,c;if(!(e<o)){if((n=a.apply(s,l))===t.promise())throw new TypeError("Thenable self-resolution");c=n&&("object"==typeof n||"function"==typeof n)&&n.then,y(c)?r?c.call(n,i(o,t,z,r),i(o,t,I,r)):(o++,c.call(n,i(o,t,z,r),i(o,t,I,r),i(o,t,z,t.notifyWith))):(a!==z&&(s=void 0,l=[n]),(r||t.resolveWith)(s,l))}},u=r?c:function(){try{c()}catch(n){M.Deferred.exceptionHook&&M.Deferred.exceptionHook(n,u.stackTrace),e+1>=o&&(a!==I&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?u():(M.Deferred.getStackHook&&(u.stackTrace=M.Deferred.getStackHook()),n.setTimeout(u))}}return M.Deferred((function(n){t[0][3].add(i(0,n,y(r)?r:z,n.notifyWith)),t[1][3].add(i(0,n,y(e)?e:z)),t[2][3].add(i(0,n,y(a)?a:I))})).promise()},promise:function(e){return null!=e?M.extend(e,r):r}},o={};return M.each(t,(function(e,n){var i=n[2],s=n[5];r[n[1]]=i.add,s&&i.add((function(){a=s}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),i.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=i.fireWith})),r.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,a=Array(n),r=l.call(arguments),o=M.Deferred(),i=function(e){return function(n){a[e]=this,r[e]=arguments.length>1?l.call(arguments):n,--t||o.resolveWith(a,r)}};if(t<=1&&(F(e,o.done(i(n)).resolve,o.reject,!t),"pending"===o.state()||y(r[n]&&r[n].then)))return o.then();for(;n--;)F(r[n],i(n),o.reject);return o.promise()}});var R=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;M.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&R.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},M.readyException=function(e){n.setTimeout((function(){throw e}))};var W=M.Deferred();function U(){i.removeEventListener("DOMContentLoaded",U),n.removeEventListener("load",U),M.ready()}M.fn.ready=function(e){return W.then(e).catch((function(e){M.readyException(e)})),this},M.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--M.readyWait:M.isReady)||(M.isReady=!0,!0!==e&&--M.readyWait>0||W.resolveWith(i,[M]))}}),M.ready.then=W.then,"complete"===i.readyState||"loading"!==i.readyState&&!i.documentElement.doScroll?n.setTimeout(M.ready):(i.addEventListener("DOMContentLoaded",U),n.addEventListener("load",U));var q=function(e,t,n,a,r,o,i){var s=0,l=e.length,c=null==n;if("object"===v(n))for(s in r=!0,n)q(e,t,s,n[s],!0,o,i);else if(void 0!==a&&(r=!0,y(a)||(i=!0),c&&(i?(t.call(e,a),t=null):(c=t,t=function(e,t,n){return c.call(M(e),n)})),t))for(;s<l;s++)t(e[s],n,i?a:a.call(e[s],s,t(e[s],n)));return r?e:c?t.call(e):l?t(e[0],n):o},G=/^-ms-/,V=/-([a-z])/g;function $(e,t){return t.toUpperCase()}function J(e){return e.replace(G,"ms-").replace(V,$)}var X=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=M.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},X(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var a,r=this.cache(e);if("string"==typeof t)r[J(t)]=n;else for(a in t)r[J(a)]=t[a];return r},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][J(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,a=e[this.expando];if(void 0!==a){if(void 0!==t){n=(t=Array.isArray(t)?t.map(J):(t=J(t))in a?[t]:t.match(H)||[]).length;for(;n--;)delete a[t[n]]}(void 0===t||M.isEmptyObject(a))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!M.isEmptyObject(t)}};var K=new Q,Z=new Q,ee=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,te=/[A-Z]/g;function ne(e,t,n){var a;if(void 0===n&&1===e.nodeType)if(a="data-"+t.replace(te,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(a))){try{n=function(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:ee.test(e)?JSON.parse(e):e)}(n)}catch(e){}Z.set(e,t,n)}else n=void 0;return n}M.extend({hasData:function(e){return Z.hasData(e)||K.hasData(e)},data:function(e,t,n){return Z.access(e,t,n)},removeData:function(e,t){Z.remove(e,t)},_data:function(e,t,n){return K.access(e,t,n)},_removeData:function(e,t){K.remove(e,t)}}),M.fn.extend({data:function(e,t){var n,a,r,o=this[0],i=o&&o.attributes;if(void 0===e){if(this.length&&(r=Z.get(o),1===o.nodeType&&!K.get(o,"hasDataAttrs"))){for(n=i.length;n--;)i[n]&&0===(a=i[n].name).indexOf("data-")&&(a=J(a.slice(5)),ne(o,a,r[a]));K.set(o,"hasDataAttrs",!0)}return r}return"object"==typeof e?this.each((function(){Z.set(this,e)})):q(this,(function(t){var n;if(o&&void 0===t)return void 0!==(n=Z.get(o,e))||void 0!==(n=ne(o,e))?n:void 0;this.each((function(){Z.set(this,e,t)}))}),null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each((function(){Z.remove(this,e)}))}}),M.extend({queue:function(e,t,n){var a;if(e)return t=(t||"fx")+"queue",a=K.get(e,t),n&&(!a||Array.isArray(n)?a=K.access(e,t,M.makeArray(n)):a.push(n)),a||[]},dequeue:function(e,t){t=t||"fx";var n=M.queue(e,t),a=n.length,r=n.shift(),o=M._queueHooks(e,t);"inprogress"===r&&(r=n.shift(),a--),r&&("fx"===t&&n.unshift("inprogress"),delete o.stop,r.call(e,(function(){M.dequeue(e,t)}),o)),!a&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return K.get(e,n)||K.access(e,n,{empty:M.Callbacks("once memory").add((function(){K.remove(e,[t+"queue",n])}))})}}),M.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?M.queue(this[0],e):void 0===t?this:this.each((function(){var n=M.queue(this,e,t);M._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&M.dequeue(this,e)}))},dequeue:function(e){return this.each((function(){M.dequeue(this,e)}))},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,a=1,r=M.Deferred(),o=this,i=this.length,s=function(){--a||r.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";i--;)(n=K.get(o[i],e+"queueHooks"))&&n.empty&&(a++,n.empty.add(s));return s(),r.promise(t)}});var ae=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,re=new RegExp("^(?:([+-])=|)("+ae+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ie=i.documentElement,se=function(e){return M.contains(e.ownerDocument,e)},le={composed:!0};ie.getRootNode&&(se=function(e){return M.contains(e.ownerDocument,e)||e.getRootNode(le)===e.ownerDocument});var ce=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&se(e)&&"none"===M.css(e,"display")},ue=function(e,t,n,a){var r,o,i={};for(o in t)i[o]=e.style[o],e.style[o]=t[o];for(o in r=n.apply(e,a||[]),t)e.style[o]=i[o];return r};function de(e,t,n,a){var r,o,i=20,s=a?function(){return a.cur()}:function(){return M.css(e,t,"")},l=s(),c=n&&n[3]||(M.cssNumber[t]?"":"px"),u=e.nodeType&&(M.cssNumber[t]||"px"!==c&&+l)&&re.exec(M.css(e,t));if(u&&u[3]!==c){for(l/=2,c=c||u[3],u=+l||1;i--;)M.style(e,t,u+c),(1-o)*(1-(o=s()/l||.5))<=0&&(i=0),u/=o;u*=2,M.style(e,t,u+c),n=n||[]}return n&&(u=+u||+l||0,r=n[1]?u+(n[1]+1)*n[2]:+n[2],a&&(a.unit=c,a.start=u,a.end=r)),r}var pe={};function me(e){var t,n=e.ownerDocument,a=e.nodeName,r=pe[a];return r||(t=n.body.appendChild(n.createElement(a)),r=M.css(t,"display"),t.parentNode.removeChild(t),"none"===r&&(r="block"),pe[a]=r,r)}function fe(e,t){for(var n,a,r=[],o=0,i=e.length;o<i;o++)(a=e[o]).style&&(n=a.style.display,t?("none"===n&&(r[o]=K.get(a,"display")||null,r[o]||(a.style.display="")),""===a.style.display&&ce(a)&&(r[o]=me(a))):"none"!==n&&(r[o]="none",K.set(a,"display",n)));for(o=0;o<i;o++)null!=r[o]&&(e[o].style.display=r[o]);return e}M.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each((function(){ce(this)?M(this).show():M(this).hide()}))}});var he=/^(?:checkbox|radio)$/i,be=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ge=/^$|^module$|\/(?:java|ecma)script/i,ye={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function _e(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?M.merge([e],n):n}function ke(e,t){for(var n=0,a=e.length;n<a;n++)K.set(e[n],"globalEval",!t||K.get(t[n],"globalEval"))}ye.optgroup=ye.option,ye.tbody=ye.tfoot=ye.colgroup=ye.caption=ye.thead,ye.th=ye.td;var we,ve,Me=/<|&#?\w+;/;function Le(e,t,n,a,r){for(var o,i,s,l,c,u,d=t.createDocumentFragment(),p=[],m=0,f=e.length;m<f;m++)if((o=e[m])||0===o)if("object"===v(o))M.merge(p,o.nodeType?[o]:o);else if(Me.test(o)){for(i=i||d.appendChild(t.createElement("div")),s=(be.exec(o)||["",""])[1].toLowerCase(),l=ye[s]||ye._default,i.innerHTML=l[1]+M.htmlPrefilter(o)+l[2],u=l[0];u--;)i=i.lastChild;M.merge(p,i.childNodes),(i=d.firstChild).textContent=""}else p.push(t.createTextNode(o));for(d.textContent="",m=0;o=p[m++];)if(a&&M.inArray(o,a)>-1)r&&r.push(o);else if(c=se(o),i=_e(d.appendChild(o),"script"),c&&ke(i),n)for(u=0;o=i[u++];)ge.test(o.type||"")&&n.push(o);return d}we=i.createDocumentFragment().appendChild(i.createElement("div")),(ve=i.createElement("input")).setAttribute("type","radio"),ve.setAttribute("checked","checked"),ve.setAttribute("name","t"),we.appendChild(ve),g.checkClone=we.cloneNode(!0).cloneNode(!0).lastChild.checked,we.innerHTML="<textarea>x</textarea>",g.noCloneChecked=!!we.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Se=/^([^.]*)(?:\.(.+)|)/;function xe(){return!0}function Ce(){return!1}function De(e,t){return e===function(){try{return i.activeElement}catch(e){}}()==("focus"===t)}function Oe(e,t,n,a,r,o){var i,s;if("object"==typeof t){for(s in"string"!=typeof n&&(a=a||n,n=void 0),t)Oe(e,s,n,a,t[s],o);return e}if(null==a&&null==r?(r=n,a=n=void 0):null==r&&("string"==typeof n?(r=a,a=void 0):(r=a,a=n,n=void 0)),!1===r)r=Ce;else if(!r)return e;return 1===o&&(i=r,(r=function(e){return M().off(e),i.apply(this,arguments)}).guid=i.guid||(i.guid=M.guid++)),e.each((function(){M.event.add(this,t,r,a,n)}))}function Ye(e,t,n){n?(K.set(e,t,!1),M.event.add(e,t,{namespace:!1,handler:function(e){var a,r,o=K.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(M.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=l.call(arguments),K.set(this,t,o),a=n(this,t),this[t](),o!==(r=K.get(this,t))||a?K.set(this,t,!1):r={},o!==r)return e.stopImmediatePropagation(),e.preventDefault(),r.value}else o.length&&(K.set(this,t,{value:M.event.trigger(M.extend(o[0],M.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===K.get(e,t)&&M.event.add(e,t,xe)}M.event={global:{},add:function(e,t,n,a,r){var o,i,s,l,c,u,d,p,m,f,h,b=K.get(e);if(b)for(n.handler&&(n=(o=n).handler,r=o.selector),r&&M.find.matchesSelector(ie,r),n.guid||(n.guid=M.guid++),(l=b.events)||(l=b.events={}),(i=b.handle)||(i=b.handle=function(t){return void 0!==M&&M.event.triggered!==t.type?M.event.dispatch.apply(e,arguments):void 0}),c=(t=(t||"").match(H)||[""]).length;c--;)m=h=(s=Se.exec(t[c])||[])[1],f=(s[2]||"").split(".").sort(),m&&(d=M.event.special[m]||{},m=(r?d.delegateType:d.bindType)||m,d=M.event.special[m]||{},u=M.extend({type:m,origType:h,data:a,handler:n,guid:n.guid,selector:r,needsContext:r&&M.expr.match.needsContext.test(r),namespace:f.join(".")},o),(p=l[m])||((p=l[m]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,a,f,i)||e.addEventListener&&e.addEventListener(m,i)),d.add&&(d.add.call(e,u),u.handler.guid||(u.handler.guid=n.guid)),r?p.splice(p.delegateCount++,0,u):p.push(u),M.event.global[m]=!0)},remove:function(e,t,n,a,r){var o,i,s,l,c,u,d,p,m,f,h,b=K.hasData(e)&&K.get(e);if(b&&(l=b.events)){for(c=(t=(t||"").match(H)||[""]).length;c--;)if(m=h=(s=Se.exec(t[c])||[])[1],f=(s[2]||"").split(".").sort(),m){for(d=M.event.special[m]||{},p=l[m=(a?d.delegateType:d.bindType)||m]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=o=p.length;o--;)u=p[o],!r&&h!==u.origType||n&&n.guid!==u.guid||s&&!s.test(u.namespace)||a&&a!==u.selector&&("**"!==a||!u.selector)||(p.splice(o,1),u.selector&&p.delegateCount--,d.remove&&d.remove.call(e,u));i&&!p.length&&(d.teardown&&!1!==d.teardown.call(e,f,b.handle)||M.removeEvent(e,m,b.handle),delete l[m])}else for(m in l)M.event.remove(e,m+t[c],n,a,!0);M.isEmptyObject(l)&&K.remove(e,"handle events")}},dispatch:function(e){var t,n,a,r,o,i,s=M.event.fix(e),l=new Array(arguments.length),c=(K.get(this,"events")||{})[s.type]||[],u=M.event.special[s.type]||{};for(l[0]=s,t=1;t<arguments.length;t++)l[t]=arguments[t];if(s.delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,s)){for(i=M.event.handlers.call(this,s,c),t=0;(r=i[t++])&&!s.isPropagationStopped();)for(s.currentTarget=r.elem,n=0;(o=r.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(a=((M.event.special[o.origType]||{}).handle||o.handler).apply(r.elem,l))&&!1===(s.result=a)&&(s.preventDefault(),s.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,a,r,o,i,s=[],l=t.delegateCount,c=e.target;if(l&&c.nodeType&&!("click"===e.type&&e.button>=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||!0!==c.disabled)){for(o=[],i={},n=0;n<l;n++)void 0===i[r=(a=t[n]).selector+" "]&&(i[r]=a.needsContext?M(r,this).index(c)>-1:M.find(r,this,null,[c]).length),i[r]&&o.push(a);o.length&&s.push({elem:c,handlers:o})}return c=this,l<t.length&&s.push({elem:c,handlers:t.slice(l)}),s},addProp:function(e,t){Object.defineProperty(M.Event.prototype,e,{enumerable:!0,configurable:!0,get:y(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[M.expando]?e:new M.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return he.test(t.type)&&t.click&&D(t,"input")&&Ye(t,"click",xe),!1},trigger:function(e){var t=this||e;return he.test(t.type)&&t.click&&D(t,"input")&&Ye(t,"click"),!0},_default:function(e){var t=e.target;return he.test(t.type)&&t.click&&D(t,"input")&&K.get(t,"click")||D(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},M.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},M.Event=function(e,t){if(!(this instanceof M.Event))return new M.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?xe:Ce,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&M.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[M.expando]=!0},M.Event.prototype={constructor:M.Event,isDefaultPrevented:Ce,isPropagationStopped:Ce,isImmediatePropagationStopped:Ce,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=xe,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=xe,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=xe,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},M.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ee.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},M.event.addProp),M.each({focus:"focusin",blur:"focusout"},(function(e,t){M.event.special[e]={setup:function(){return Ye(this,e,De),!1},trigger:function(){return Ye(this,e),!0},delegateType:t}})),M.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},(function(e,t){M.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,a=this,r=e.relatedTarget,o=e.handleObj;return r&&(r===a||M.contains(a,r))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}})),M.fn.extend({on:function(e,t,n,a){return Oe(this,e,t,n,a)},one:function(e,t,n,a){return Oe(this,e,t,n,a,1)},off:function(e,t,n){var a,r;if(e&&e.preventDefault&&e.handleObj)return a=e.handleObj,M(e.delegateTarget).off(a.namespace?a.origType+"."+a.namespace:a.origType,a.selector,a.handler),this;if("object"==typeof e){for(r in e)this.off(r,t,e[r]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ce),this.each((function(){M.event.remove(this,e,n,t)}))}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Pe=/<script|<style|<link/i,Ne=/checked\s*(?:[^=]|=\s*.checked.)/i,Be=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ae(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")&&M(e).children("tbody")[0]||e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ze(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,a,r,o,i,s,l,c;if(1===t.nodeType){if(K.hasData(e)&&(o=K.access(e),i=K.set(t,o),c=o.events))for(r in delete i.handle,i.events={},c)for(n=0,a=c[r].length;n<a;n++)M.event.add(t,r,c[r][n]);Z.hasData(e)&&(s=Z.access(e),l=M.extend({},s),Z.set(t,l))}}function Fe(e,t){var n=t.nodeName.toLowerCase();"input"===n&&he.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,a){t=c.apply([],t);var r,o,i,s,l,u,d=0,p=e.length,m=p-1,f=t[0],h=y(f);if(h||p>1&&"string"==typeof f&&!g.checkClone&&Ne.test(f))return e.each((function(r){var o=e.eq(r);h&&(t[0]=f.call(this,r,o.html())),Re(o,t,n,a)}));if(p&&(o=(r=Le(t,e[0].ownerDocument,!1,e,a)).firstChild,1===r.childNodes.length&&(r=o),o||a)){for(s=(i=M.map(_e(r,"script"),He)).length;d<p;d++)l=r,d!==m&&(l=M.clone(l,!0,!0),s&&M.merge(i,_e(l,"script"))),n.call(e[d],l,d);if(s)for(u=i[i.length-1].ownerDocument,M.map(i,ze),d=0;d<s;d++)l=i[d],ge.test(l.type||"")&&!K.access(l,"globalEval")&&M.contains(u,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?M._evalUrl&&!l.noModule&&M._evalUrl(l.src,{nonce:l.nonce||l.getAttribute("nonce")}):w(l.textContent.replace(Be,""),l,u))}return e}function We(e,t,n){for(var a,r=t?M.filter(t,e):e,o=0;null!=(a=r[o]);o++)n||1!==a.nodeType||M.cleanData(_e(a)),a.parentNode&&(n&&se(a)&&ke(_e(a,"script")),a.parentNode.removeChild(a));return e}M.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var a,r,o,i,s=e.cloneNode(!0),l=se(e);if(!(g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||M.isXMLDoc(e)))for(i=_e(s),a=0,r=(o=_e(e)).length;a<r;a++)Fe(o[a],i[a]);if(t)if(n)for(o=o||_e(e),i=i||_e(s),a=0,r=o.length;a<r;a++)Ie(o[a],i[a]);else Ie(e,s);return(i=_e(s,"script")).length>0&&ke(i,!l&&_e(e,"script")),s},cleanData:function(e){for(var t,n,a,r=M.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[K.expando]){if(t.events)for(a in t.events)r[a]?M.event.remove(n,a):M.removeEvent(n,a,t.handle);n[K.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),M.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return q(this,(function(e){return void 0===e?M.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ae(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Ae(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(M.cleanData(_e(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return M.clone(this,e,t)}))},html:function(e){return q(this,(function(e){var t=this[0]||{},n=0,a=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Pe.test(e)&&!ye[(be.exec(e)||["",""])[1].toLowerCase()]){e=M.htmlPrefilter(e);try{for(;n<a;n++)1===(t=this[n]||{}).nodeType&&(M.cleanData(_e(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)}),null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,(function(t){var n=this.parentNode;M.inArray(this,e)<0&&(M.cleanData(_e(this)),n&&n.replaceChild(t,this))}),e)}}),M.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},(function(e,t){M.fn[e]=function(e){for(var n,a=[],r=M(e),o=r.length-1,i=0;i<=o;i++)n=i===o?this:this.clone(!0),M(r[i])[t](n),u.apply(a,n.get());return this.pushStack(a)}}));var Ue=new RegExp("^("+ae+")(?!px)[a-z%]+$","i"),qe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=n),t.getComputedStyle(e)},Ge=new RegExp(oe.join("|"),"i");function Ve(e,t,n){var a,r,o,i,s=e.style;return(n=n||qe(e))&&(""!==(i=n.getPropertyValue(t)||n[t])||se(e)||(i=M.style(e,t)),!g.pixelBoxStyles()&&Ue.test(i)&&Ge.test(t)&&(a=s.width,r=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=i,i=n.width,s.width=a,s.minWidth=r,s.maxWidth=o)),void 0!==i?i+"":i}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){c.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(c).appendChild(u);var e=n.getComputedStyle(u);a="1%"!==e.top,l=12===t(e.marginLeft),u.style.right="60%",s=36===t(e.right),r=36===t(e.width),u.style.position="absolute",o=12===t(u.offsetWidth/3),ie.removeChild(c),u=null}}function t(e){return Math.round(parseFloat(e))}var a,r,o,s,l,c=i.createElement("div"),u=i.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===u.style.backgroundClip,M.extend(g,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),s},pixelPosition:function(){return e(),a},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),o}}))}();var Je=["Webkit","Moz","ms"],Xe=i.createElement("div").style,Qe={};function Ke(e){var t=M.cssProps[e]||Qe[e];return t||(e in Xe?e:Qe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Je.length;n--;)if((e=Je[n]+t)in Xe)return e}(e)||e)}var Ze=/^(none|table(?!-c[ea]).+)/,et=/^--/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function at(e,t,n){var a=re.exec(t);return a?Math.max(0,a[2]-(n||0))+(a[3]||"px"):t}function rt(e,t,n,a,r,o){var i="width"===t?1:0,s=0,l=0;if(n===(a?"border":"content"))return 0;for(;i<4;i+=2)"margin"===n&&(l+=M.css(e,n+oe[i],!0,r)),a?("content"===n&&(l-=M.css(e,"padding"+oe[i],!0,r)),"margin"!==n&&(l-=M.css(e,"border"+oe[i]+"Width",!0,r))):(l+=M.css(e,"padding"+oe[i],!0,r),"padding"!==n?l+=M.css(e,"border"+oe[i]+"Width",!0,r):s+=M.css(e,"border"+oe[i]+"Width",!0,r));return!a&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function ot(e,t,n){var a=qe(e),r=(!g.boxSizingReliable()||n)&&"border-box"===M.css(e,"boxSizing",!1,a),o=r,i=Ve(e,t,a),s="offset"+t[0].toUpperCase()+t.slice(1);if(Ue.test(i)){if(!n)return i;i="auto"}return(!g.boxSizingReliable()&&r||"auto"===i||!parseFloat(i)&&"inline"===M.css(e,"display",!1,a))&&e.getClientRects().length&&(r="border-box"===M.css(e,"boxSizing",!1,a),(o=s in e)&&(i=e[s])),(i=parseFloat(i)||0)+rt(e,t,n||(r?"border":"content"),o,a,i)+"px"}function it(e,t,n,a,r){return new it.prototype.init(e,t,n,a,r)}M.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ve(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,a){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var r,o,i,s=J(t),l=et.test(t),c=e.style;if(l||(t=Ke(s)),i=M.cssHooks[t]||M.cssHooks[s],void 0===n)return i&&"get"in i&&void 0!==(r=i.get(e,!1,a))?r:c[t];"string"===(o=typeof n)&&(r=re.exec(n))&&r[1]&&(n=de(e,t,r),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=r&&r[3]||(M.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(c[t]="inherit"),i&&"set"in i&&void 0===(n=i.set(e,n,a))||(l?c.setProperty(t,n):c[t]=n))}},css:function(e,t,n,a){var r,o,i,s=J(t);return et.test(t)||(t=Ke(s)),(i=M.cssHooks[t]||M.cssHooks[s])&&"get"in i&&(r=i.get(e,!0,n)),void 0===r&&(r=Ve(e,t,a)),"normal"===r&&t in nt&&(r=nt[t]),""===n||n?(o=parseFloat(r),!0===n||isFinite(o)?o||0:r):r}}),M.each(["height","width"],(function(e,t){M.cssHooks[t]={get:function(e,n,a){if(n)return!Ze.test(M.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,t,a):ue(e,tt,(function(){return ot(e,t,a)}))},set:function(e,n,a){var r,o=qe(e),i=!g.scrollboxSize()&&"absolute"===o.position,s=(i||a)&&"border-box"===M.css(e,"boxSizing",!1,o),l=a?rt(e,t,a,s,o):0;return s&&i&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-rt(e,t,"border",!1,o)-.5)),l&&(r=re.exec(n))&&"px"!==(r[3]||"px")&&(e.style[t]=n,n=M.css(e,t)),at(0,n,l)}}})),M.cssHooks.marginLeft=$e(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ve(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),M.each({margin:"",padding:"",border:"Width"},(function(e,t){M.cssHooks[e+t]={expand:function(n){for(var a=0,r={},o="string"==typeof n?n.split(" "):[n];a<4;a++)r[e+oe[a]+t]=o[a]||o[a-2]||o[0];return r}},"margin"!==e&&(M.cssHooks[e+t].set=at)})),M.fn.extend({css:function(e,t){return q(this,(function(e,t,n){var a,r,o={},i=0;if(Array.isArray(t)){for(a=qe(e),r=t.length;i<r;i++)o[t[i]]=M.css(e,t[i],!1,a);return o}return void 0!==n?M.style(e,t,n):M.css(e,t)}),e,t,arguments.length>1)}}),M.Tween=it,it.prototype={constructor:it,init:function(e,t,n,a,r,o){this.elem=e,this.prop=n,this.easing=r||M.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=a,this.unit=o||(M.cssNumber[n]?"":"px")},cur:function(){var e=it.propHooks[this.prop];return e&&e.get?e.get(this):it.propHooks._default.get(this)},run:function(e){var t,n=it.propHooks[this.prop];return this.options.duration?this.pos=t=M.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):it.propHooks._default.set(this),this}},it.prototype.init.prototype=it.prototype,it.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=M.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){M.fx.step[e.prop]?M.fx.step[e.prop](e):1!==e.elem.nodeType||!M.cssHooks[e.prop]&&null==e.elem.style[Ke(e.prop)]?e.elem[e.prop]=e.now:M.style(e.elem,e.prop,e.now+e.unit)}}},it.propHooks.scrollTop=it.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},M.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},M.fx=it.prototype.init,M.fx.step={};var st,lt,ct=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function dt(){lt&&(!1===i.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(dt):n.setTimeout(dt,M.fx.interval),M.fx.tick())}function pt(){return n.setTimeout((function(){st=void 0})),st=Date.now()}function mt(e,t){var n,a=0,r={height:e};for(t=t?1:0;a<4;a+=2-t)r["margin"+(n=oe[a])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function ft(e,t,n){for(var a,r=(ht.tweeners[t]||[]).concat(ht.tweeners["*"]),o=0,i=r.length;o<i;o++)if(a=r[o].call(n,t,e))return a}function ht(e,t,n){var a,r,o=0,i=ht.prefilters.length,s=M.Deferred().always((function(){delete l.elem})),l=function(){if(r)return!1;for(var t=st||pt(),n=Math.max(0,c.startTime+c.duration-t),a=1-(n/c.duration||0),o=0,i=c.tweens.length;o<i;o++)c.tweens[o].run(a);return s.notifyWith(e,[c,a,n]),a<1&&i?n:(i||s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:M.extend({},t),opts:M.extend(!0,{specialEasing:{},easing:M.easing._default},n),originalProperties:t,originalOptions:n,startTime:st||pt(),duration:n.duration,tweens:[],createTween:function(t,n){var a=M.Tween(e,c.opts,t,n,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(a),a},stop:function(t){var n=0,a=t?c.tweens.length:0;if(r)return this;for(r=!0;n<a;n++)c.tweens[n].run(1);return t?(s.notifyWith(e,[c,1,0]),s.resolveWith(e,[c,t])):s.rejectWith(e,[c,t]),this}}),u=c.props;for(!function(e,t){var n,a,r,o,i;for(n in e)if(r=t[a=J(n)],o=e[n],Array.isArray(o)&&(r=o[1],o=e[n]=o[0]),n!==a&&(e[a]=o,delete e[n]),(i=M.cssHooks[a])&&"expand"in i)for(n in o=i.expand(o),delete e[a],o)n in e||(e[n]=o[n],t[n]=r);else t[a]=r}(u,c.opts.specialEasing);o<i;o++)if(a=ht.prefilters[o].call(c,e,u,c.opts))return y(a.stop)&&(M._queueHooks(c.elem,c.opts.queue).stop=a.stop.bind(a)),a;return M.map(u,ft,c),y(c.opts.start)&&c.opts.start.call(e,c),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always),M.fx.timer(M.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c}M.Animation=M.extend(ht,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return de(n.elem,e,re.exec(t),n),n}]},tweener:function(e,t){y(e)?(t=e,e=["*"]):e=e.match(H);for(var n,a=0,r=e.length;a<r;a++)n=e[a],ht.tweeners[n]=ht.tweeners[n]||[],ht.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var a,r,o,i,s,l,c,u,d="width"in t||"height"in t,p=this,m={},f=e.style,h=e.nodeType&&ce(e),b=K.get(e,"fxshow");for(a in n.queue||(null==(i=M._queueHooks(e,"fx")).unqueued&&(i.unqueued=0,s=i.empty.fire,i.empty.fire=function(){i.unqueued||s()}),i.unqueued++,p.always((function(){p.always((function(){i.unqueued--,M.queue(e,"fx").length||i.empty.fire()}))}))),t)if(r=t[a],ct.test(r)){if(delete t[a],o=o||"toggle"===r,r===(h?"hide":"show")){if("show"!==r||!b||void 0===b[a])continue;h=!0}m[a]=b&&b[a]||M.style(e,a)}if((l=!M.isEmptyObject(t))||!M.isEmptyObject(m))for(a in d&&1===e.nodeType&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],null==(c=b&&b.display)&&(c=K.get(e,"display")),"none"===(u=M.css(e,"display"))&&(c?u=c:(fe([e],!0),c=e.style.display||c,u=M.css(e,"display"),fe([e]))),("inline"===u||"inline-block"===u&&null!=c)&&"none"===M.css(e,"float")&&(l||(p.done((function(){f.display=c})),null==c&&(u=f.display,c="none"===u?"":u)),f.display="inline-block")),n.overflow&&(f.overflow="hidden",p.always((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]}))),l=!1,m)l||(b?"hidden"in b&&(h=b.hidden):b=K.access(e,"fxshow",{display:c}),o&&(b.hidden=!h),h&&fe([e],!0),p.done((function(){for(a in h||fe([e]),K.remove(e,"fxshow"),m)M.style(e,a,m[a])}))),l=ft(h?b[a]:0,a,p),a in b||(b[a]=l.start,h&&(l.end=l.start,l.start=0))}],prefilter:function(e,t){t?ht.prefilters.unshift(e):ht.prefilters.push(e)}}),M.speed=function(e,t,n){var a=e&&"object"==typeof e?M.extend({},e):{complete:n||!n&&t||y(e)&&e,duration:e,easing:n&&t||t&&!y(t)&&t};return M.fx.off?a.duration=0:"number"!=typeof a.duration&&(a.duration in M.fx.speeds?a.duration=M.fx.speeds[a.duration]:a.duration=M.fx.speeds._default),null!=a.queue&&!0!==a.queue||(a.queue="fx"),a.old=a.complete,a.complete=function(){y(a.old)&&a.old.call(this),a.queue&&M.dequeue(this,a.queue)},a},M.fn.extend({fadeTo:function(e,t,n,a){return this.filter(ce).css("opacity",0).show().end().animate({opacity:t},e,n,a)},animate:function(e,t,n,a){var r=M.isEmptyObject(e),o=M.speed(t,n,a),i=function(){var t=ht(this,M.extend({},e),o);(r||K.get(this,"finish"))&&t.stop(!0)};return i.finish=i,r||!1===o.queue?this.each(i):this.queue(o.queue,i)},stop:function(e,t,n){var a=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each((function(){var t=!0,r=null!=e&&e+"queueHooks",o=M.timers,i=K.get(this);if(r)i[r]&&i[r].stop&&a(i[r]);else for(r in i)i[r]&&i[r].stop&&ut.test(r)&&a(i[r]);for(r=o.length;r--;)o[r].elem!==this||null!=e&&o[r].queue!==e||(o[r].anim.stop(n),t=!1,o.splice(r,1));!t&&n||M.dequeue(this,e)}))},finish:function(e){return!1!==e&&(e=e||"fx"),this.each((function(){var t,n=K.get(this),a=n[e+"queue"],r=n[e+"queueHooks"],o=M.timers,i=a?a.length:0;for(n.finish=!0,M.queue(this,e,[]),r&&r.stop&&r.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<i;t++)a[t]&&a[t].finish&&a[t].finish.call(this);delete n.finish}))}}),M.each(["toggle","show","hide"],(function(e,t){var n=M.fn[t];M.fn[t]=function(e,a,r){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(mt(t,!0),e,a,r)}})),M.each({slideDown:mt("show"),slideUp:mt("hide"),slideToggle:mt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},(function(e,t){M.fn[e]=function(e,n,a){return this.animate(t,e,n,a)}})),M.timers=[],M.fx.tick=function(){var e,t=0,n=M.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||M.fx.stop(),st=void 0},M.fx.timer=function(e){M.timers.push(e),M.fx.start()},M.fx.interval=13,M.fx.start=function(){lt||(lt=!0,dt())},M.fx.stop=function(){lt=null},M.fx.speeds={slow:600,fast:200,_default:400},M.fn.delay=function(e,t){return e=M.fx&&M.fx.speeds[e]||e,t=t||"fx",this.queue(t,(function(t,a){var r=n.setTimeout(t,e);a.stop=function(){n.clearTimeout(r)}}))},function(){var e=i.createElement("input"),t=i.createElement("select").appendChild(i.createElement("option"));e.type="checkbox",g.checkOn=""!==e.value,g.optSelected=t.selected,(e=i.createElement("input")).value="t",e.type="radio",g.radioValue="t"===e.value}();var bt,gt=M.expr.attrHandle;M.fn.extend({attr:function(e,t){return q(this,M.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each((function(){M.removeAttr(this,e)}))}}),M.extend({attr:function(e,t,n){var a,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?M.prop(e,t,n):(1===o&&M.isXMLDoc(e)||(r=M.attrHooks[t.toLowerCase()]||(M.expr.match.bool.test(t)?bt:void 0)),void 0!==n?null===n?void M.removeAttr(e,t):r&&"set"in r&&void 0!==(a=r.set(e,n,t))?a:(e.setAttribute(t,n+""),n):r&&"get"in r&&null!==(a=r.get(e,t))?a:null==(a=M.find.attr(e,t))?void 0:a)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,a=0,r=t&&t.match(H);if(r&&1===e.nodeType)for(;n=r[a++];)e.removeAttribute(n)}}),bt={set:function(e,t,n){return!1===t?M.removeAttr(e,n):e.setAttribute(n,n),n}},M.each(M.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=gt[t]||M.find.attr;gt[t]=function(e,t,a){var r,o,i=t.toLowerCase();return a||(o=gt[i],gt[i]=r,r=null!=n(e,t,a)?i:null,gt[i]=o),r}}));var yt=/^(?:input|select|textarea|button)$/i,_t=/^(?:a|area)$/i;function kt(e){return(e.match(H)||[]).join(" ")}function wt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}M.fn.extend({prop:function(e,t){return q(this,M.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[M.propFix[e]||e]}))}}),M.extend({prop:function(e,t,n){var a,r,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&M.isXMLDoc(e)||(t=M.propFix[t]||t,r=M.propHooks[t]),void 0!==n?r&&"set"in r&&void 0!==(a=r.set(e,n,t))?a:e[t]=n:r&&"get"in r&&null!==(a=r.get(e,t))?a:e[t]},propHooks:{tabIndex:{get:function(e){var t=M.find.attr(e,"tabindex");return t?parseInt(t,10):yt.test(e.nodeName)||_t.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(M.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),M.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){M.propFix[this.toLowerCase()]=this})),M.fn.extend({addClass:function(e){var t,n,a,r,o,i,s,l=0;if(y(e))return this.each((function(t){M(this).addClass(e.call(this,t,wt(this)))}));if((t=vt(e)).length)for(;n=this[l++];)if(r=wt(n),a=1===n.nodeType&&" "+kt(r)+" "){for(i=0;o=t[i++];)a.indexOf(" "+o+" ")<0&&(a+=o+" ");r!==(s=kt(a))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,a,r,o,i,s,l=0;if(y(e))return this.each((function(t){M(this).removeClass(e.call(this,t,wt(this)))}));if(!arguments.length)return this.attr("class","");if((t=vt(e)).length)for(;n=this[l++];)if(r=wt(n),a=1===n.nodeType&&" "+kt(r)+" "){for(i=0;o=t[i++];)for(;a.indexOf(" "+o+" ")>-1;)a=a.replace(" "+o+" "," ");r!==(s=kt(a))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,a="string"===n||Array.isArray(e);return"boolean"==typeof t&&a?t?this.addClass(e):this.removeClass(e):y(e)?this.each((function(n){M(this).toggleClass(e.call(this,n,wt(this),t),t)})):this.each((function(){var t,r,o,i;if(a)for(r=0,o=M(this),i=vt(e);t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=wt(this))&&K.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":K.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,a=0;for(t=" "+e+" ";n=this[a++];)if(1===n.nodeType&&(" "+kt(wt(n))+" ").indexOf(t)>-1)return!0;return!1}});var Mt=/\r/g;M.fn.extend({val:function(e){var t,n,a,r=this[0];return arguments.length?(a=y(e),this.each((function(n){var r;1===this.nodeType&&(null==(r=a?e.call(this,n,M(this).val()):e)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=M.map(r,(function(e){return null==e?"":e+""}))),(t=M.valHooks[this.type]||M.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,r,"value")||(this.value=r))}))):r?(t=M.valHooks[r.type]||M.valHooks[r.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(r,"value"))?n:"string"==typeof(n=r.value)?n.replace(Mt,""):null==n?"":n:void 0}}),M.extend({valHooks:{option:{get:function(e){var t=M.find.attr(e,"value");return null!=t?t:kt(M.text(e))}},select:{get:function(e){var t,n,a,r=e.options,o=e.selectedIndex,i="select-one"===e.type,s=i?null:[],l=i?o+1:r.length;for(a=o<0?l:i?o:0;a<l;a++)if(((n=r[a]).selected||a===o)&&!n.disabled&&(!n.parentNode.disabled||!D(n.parentNode,"optgroup"))){if(t=M(n).val(),i)return t;s.push(t)}return s},set:function(e,t){for(var n,a,r=e.options,o=M.makeArray(t),i=r.length;i--;)((a=r[i]).selected=M.inArray(M.valHooks.option.get(a),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),M.each(["radio","checkbox"],(function(){M.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=M.inArray(M(e).val(),t)>-1}},g.checkOn||(M.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var Lt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};M.extend(M.event,{trigger:function(e,t,a,r){var o,s,l,c,u,d,p,m,h=[a||i],b=f.call(e,"type")?e.type:e,g=f.call(e,"namespace")?e.namespace.split("."):[];if(s=m=l=a=a||i,3!==a.nodeType&&8!==a.nodeType&&!Lt.test(b+M.event.triggered)&&(b.indexOf(".")>-1&&(g=b.split("."),b=g.shift(),g.sort()),u=b.indexOf(":")<0&&"on"+b,(e=e[M.expando]?e:new M.Event(b,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=a),t=null==t?[e]:M.makeArray(t,[e]),p=M.event.special[b]||{},r||!p.trigger||!1!==p.trigger.apply(a,t))){if(!r&&!p.noBubble&&!_(a)){for(c=p.delegateType||b,Lt.test(c+b)||(s=s.parentNode);s;s=s.parentNode)h.push(s),l=s;l===(a.ownerDocument||i)&&h.push(l.defaultView||l.parentWindow||n)}for(o=0;(s=h[o++])&&!e.isPropagationStopped();)m=s,e.type=o>1?c:p.bindType||b,(d=(K.get(s,"events")||{})[e.type]&&K.get(s,"handle"))&&d.apply(s,t),(d=u&&s[u])&&d.apply&&X(s)&&(e.result=d.apply(s,t),!1===e.result&&e.preventDefault());return e.type=b,r||e.isDefaultPrevented()||p._default&&!1!==p._default.apply(h.pop(),t)||!X(a)||u&&y(a[b])&&!_(a)&&((l=a[u])&&(a[u]=null),M.event.triggered=b,e.isPropagationStopped()&&m.addEventListener(b,Tt),a[b](),e.isPropagationStopped()&&m.removeEventListener(b,Tt),M.event.triggered=void 0,l&&(a[u]=l)),e.result}},simulate:function(e,t,n){var a=M.extend(new M.Event,n,{type:e,isSimulated:!0});M.event.trigger(a,null,t)}}),M.fn.extend({trigger:function(e,t){return this.each((function(){M.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return M.event.trigger(e,t,n,!0)}}),g.focusin||M.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){M.event.simulate(t,e.target,M.event.fix(e))};M.event.special[t]={setup:function(){var a=this.ownerDocument||this,r=K.access(a,t);r||a.addEventListener(e,n,!0),K.access(a,t,(r||0)+1)},teardown:function(){var a=this.ownerDocument||this,r=K.access(a,t)-1;r?K.access(a,t,r):(a.removeEventListener(e,n,!0),K.remove(a,t))}}}));var Et=n.location,St=Date.now(),xt=/\?/;M.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||M.error("Invalid XML: "+e),t};var Ct=/\[\]$/,Dt=/\r?\n/g,Ot=/^(?:submit|button|image|reset|file)$/i,Yt=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,a){var r;if(Array.isArray(t))M.each(t,(function(t,r){n||Ct.test(e)?a(e,r):jt(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,a)}));else if(n||"object"!==v(t))a(e,t);else for(r in t)jt(e+"["+r+"]",t[r],n,a)}M.param=function(e,t){var n,a=[],r=function(e,t){var n=y(t)?t():t;a[a.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!M.isPlainObject(e))M.each(e,(function(){r(this.name,this.value)}));else for(n in e)jt(n,e[n],t,r);return a.join("&")},M.fn.extend({serialize:function(){return M.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=M.prop(this,"elements");return e?M.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!M(this).is(":disabled")&&Yt.test(this.nodeName)&&!Ot.test(e)&&(this.checked||!he.test(e))})).map((function(e,t){var n=M(this).val();return null==n?null:Array.isArray(n)?M.map(n,(function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}})):{name:t.name,value:n.replace(Dt,"\r\n")}})).get()}});var Pt=/%20/g,Nt=/#.*$/,Bt=/([?&])_=[^&]*/,At=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,zt=/^\/\//,It={},Ft={},Rt="*/".concat("*"),Wt=i.createElement("a");function Ut(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var a,r=0,o=t.toLowerCase().match(H)||[];if(y(n))for(;a=o[r++];)"+"===a[0]?(a=a.slice(1)||"*",(e[a]=e[a]||[]).unshift(n)):(e[a]=e[a]||[]).push(n)}}function qt(e,t,n,a){var r={},o=e===Ft;function i(s){var l;return r[s]=!0,M.each(e[s]||[],(function(e,s){var c=s(t,n,a);return"string"!=typeof c||o||r[c]?o?!(l=c):void 0:(t.dataTypes.unshift(c),i(c),!1)})),l}return i(t.dataTypes[0])||!r["*"]&&i("*")}function Gt(e,t){var n,a,r=M.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((r[n]?e:a||(a={}))[n]=t[n]);return a&&M.extend(!0,e,a),e}Wt.href=Et.href,M.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":M.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,M.ajaxSettings),t):Gt(M.ajaxSettings,e)},ajaxPrefilter:Ut(It),ajaxTransport:Ut(Ft),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var a,r,o,s,l,c,u,d,p,m,f=M.ajaxSetup({},t),h=f.context||f,b=f.context&&(h.nodeType||h.jquery)?M(h):M.event,g=M.Deferred(),y=M.Callbacks("once memory"),_=f.statusCode||{},k={},w={},v="canceled",L={readyState:0,getResponseHeader:function(e){var t;if(u){if(!s)for(s={};t=At.exec(o);)s[t[1].toLowerCase()+" "]=(s[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=s[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,k[e]=t),this},overrideMimeType:function(e){return null==u&&(f.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)L.always(e[L.status]);else for(t in e)_[t]=[_[t],e[t]];return this},abort:function(e){var t=e||v;return a&&a.abort(t),T(0,t),this}};if(g.promise(L),f.url=((e||f.url||Et.href)+"").replace(zt,Et.protocol+"//"),f.type=t.method||t.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){c=i.createElement("a");try{c.href=f.url,c.href=c.href,f.crossDomain=Wt.protocol+"//"+Wt.host!=c.protocol+"//"+c.host}catch(e){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=M.param(f.data,f.traditional)),qt(It,f,t,L),u)return L;for(p in(d=M.event&&f.global)&&0==M.active++&&M.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ht.test(f.type),r=f.url.replace(Nt,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Pt,"+")):(m=f.url.slice(r.length),f.data&&(f.processData||"string"==typeof f.data)&&(r+=(xt.test(r)?"&":"?")+f.data,delete f.data),!1===f.cache&&(r=r.replace(Bt,"$1"),m=(xt.test(r)?"&":"?")+"_="+St+++m),f.url=r+m),f.ifModified&&(M.lastModified[r]&&L.setRequestHeader("If-Modified-Since",M.lastModified[r]),M.etag[r]&&L.setRequestHeader("If-None-Match",M.etag[r])),(f.data&&f.hasContent&&!1!==f.contentType||t.contentType)&&L.setRequestHeader("Content-Type",f.contentType),L.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Rt+"; q=0.01":""):f.accepts["*"]),f.headers)L.setRequestHeader(p,f.headers[p]);if(f.beforeSend&&(!1===f.beforeSend.call(h,L,f)||u))return L.abort();if(v="abort",y.add(f.complete),L.done(f.success),L.fail(f.error),a=qt(Ft,f,t,L)){if(L.readyState=1,d&&b.trigger("ajaxSend",[L,f]),u)return L;f.async&&f.timeout>0&&(l=n.setTimeout((function(){L.abort("timeout")}),f.timeout));try{u=!1,a.send(k,T)}catch(e){if(u)throw e;T(-1,e)}}else T(-1,"No Transport");function T(e,t,i,s){var c,p,m,k,w,v=t;u||(u=!0,l&&n.clearTimeout(l),a=void 0,o=s||"",L.readyState=e>0?4:0,c=e>=200&&e<300||304===e,i&&(k=function(e,t,n){for(var a,r,o,i,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===a&&(a=e.mimeType||t.getResponseHeader("Content-Type"));if(a)for(r in s)if(s[r]&&s[r].test(a)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){o=r;break}i||(i=r)}o=o||i}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,L,i)),k=function(e,t,n,a){var r,o,i,s,l,c={},u=e.dataTypes.slice();if(u[1])for(i in e.converters)c[i.toLowerCase()]=e.converters[i];for(o=u.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&a&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=u.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(i=c[l+" "+o]||c["* "+o]))for(r in c)if((s=r.split(" "))[1]===o&&(i=c[l+" "+s[0]]||c["* "+s[0]])){!0===i?i=c[r]:!0!==c[r]&&(o=s[0],u.unshift(s[1]));break}if(!0!==i)if(i&&e.throws)t=i(t);else try{t=i(t)}catch(e){return{state:"parsererror",error:i?e:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}(f,k,L,c),c?(f.ifModified&&((w=L.getResponseHeader("Last-Modified"))&&(M.lastModified[r]=w),(w=L.getResponseHeader("etag"))&&(M.etag[r]=w)),204===e||"HEAD"===f.type?v="nocontent":304===e?v="notmodified":(v=k.state,p=k.data,c=!(m=k.error))):(m=v,!e&&v||(v="error",e<0&&(e=0))),L.status=e,L.statusText=(t||v)+"",c?g.resolveWith(h,[p,v,L]):g.rejectWith(h,[L,v,m]),L.statusCode(_),_=void 0,d&&b.trigger(c?"ajaxSuccess":"ajaxError",[L,f,c?p:m]),y.fireWith(h,[L,v]),d&&(b.trigger("ajaxComplete",[L,f]),--M.active||M.event.trigger("ajaxStop")))}return L},getJSON:function(e,t,n){return M.get(e,t,n,"json")},getScript:function(e,t){return M.get(e,void 0,t,"script")}}),M.each(["get","post"],(function(e,t){M[t]=function(e,n,a,r){return y(n)&&(r=r||a,a=n,n=void 0),M.ajax(M.extend({url:e,type:t,dataType:r,data:n,success:a},M.isPlainObject(e)&&e))}})),M._evalUrl=function(e,t){return M.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){M.globalEval(e,t)}})},M.fn.extend({wrapAll:function(e){var t;return this[0]&&(y(e)&&(e=e.call(this[0])),t=M(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return y(e)?this.each((function(t){M(this).wrapInner(e.call(this,t))})):this.each((function(){var t=M(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=y(e);return this.each((function(n){M(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){M(this).replaceWith(this.childNodes)})),this}}),M.expr.pseudos.hidden=function(e){return!M.expr.pseudos.visible(e)},M.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},M.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},$t=M.ajaxSettings.xhr();g.cors=!!$t&&"withCredentials"in $t,g.ajax=$t=!!$t,M.ajaxTransport((function(e){var t,a;if(g.cors||$t&&!e.crossDomain)return{send:function(r,o){var i,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];for(i in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest"),r)s.setRequestHeader(i,r[i]);t=function(e){return function(){t&&(t=a=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),a=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=a:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&a()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),M.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),M.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return M.globalEval(e),e}}}),M.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),M.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(a,r){t=M("<script>").attr(e.scriptAttrs||{}).prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&r("error"===e.type?404:200,e.type)}),i.head.appendChild(t[0])},abort:function(){n&&n()}}}));var Jt,Xt=[],Qt=/(=)\?(?=&|$)|\?\?/;M.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||M.expando+"_"+St++;return this[e]=!0,e}}),M.ajaxPrefilter("json jsonp",(function(e,t,a){var r,o,i,s=!1!==e.jsonp&&(Qt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Qt,"$1"+r):!1!==e.jsonp&&(e.url+=(xt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return i||M.error(r+" was not called"),i[0]},e.dataTypes[0]="json",o=n[r],n[r]=function(){i=arguments},a.always((function(){void 0===o?M(n).removeProp(r):n[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),i&&y(o)&&o(i[0]),i=o=void 0})),"script"})),g.createHTMLDocument=((Jt=i.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),M.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(g.createHTMLDocument?((a=(t=i.implementation.createHTMLDocument("")).createElement("base")).href=i.location.href,t.head.appendChild(a)):t=i),o=!n&&[],(r=O.exec(e))?[t.createElement(r[1])]:(r=Le([e],t,o),o&&o.length&&M(o).remove(),M.merge([],r.childNodes)));var a,r,o},M.fn.load=function(e,t,n){var a,r,o,i=this,s=e.indexOf(" ");return s>-1&&(a=kt(e.slice(s)),e=e.slice(0,s)),y(t)?(n=t,t=void 0):t&&"object"==typeof t&&(r="POST"),i.length>0&&M.ajax({url:e,type:r||"GET",dataType:"html",data:t}).done((function(e){o=arguments,i.html(a?M("<div>").append(M.parseHTML(e)).find(a):e)})).always(n&&function(e,t){i.each((function(){n.apply(this,o||[e.responseText,t,e])}))}),this},M.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(e,t){M.fn[t]=function(e){return this.on(t,e)}})),M.expr.pseudos.animated=function(e){return M.grep(M.timers,(function(t){return e===t.elem})).length},M.offset={setOffset:function(e,t,n){var a,r,o,i,s,l,c=M.css(e,"position"),u=M(e),d={};"static"===c&&(e.style.position="relative"),s=u.offset(),o=M.css(e,"top"),l=M.css(e,"left"),("absolute"===c||"fixed"===c)&&(o+l).indexOf("auto")>-1?(i=(a=u.position()).top,r=a.left):(i=parseFloat(o)||0,r=parseFloat(l)||0),y(t)&&(t=t.call(e,n,M.extend({},s))),null!=t.top&&(d.top=t.top-s.top+i),null!=t.left&&(d.left=t.left-s.left+r),"using"in t?t.using.call(e,d):u.css(d)}},M.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each((function(t){M.offset.setOffset(this,e,t)}));var t,n,a=this[0];return a?a.getClientRects().length?(t=a.getBoundingClientRect(),n=a.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,a=this[0],r={top:0,left:0};if("fixed"===M.css(a,"position"))t=a.getBoundingClientRect();else{for(t=this.offset(),n=a.ownerDocument,e=a.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===M.css(e,"position");)e=e.parentNode;e&&e!==a&&1===e.nodeType&&((r=M(e).offset()).top+=M.css(e,"borderTopWidth",!0),r.left+=M.css(e,"borderLeftWidth",!0))}return{top:t.top-r.top-M.css(a,"marginTop",!0),left:t.left-r.left-M.css(a,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent;e&&"static"===M.css(e,"position");)e=e.offsetParent;return e||ie}))}}),M.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n="pageYOffset"===t;M.fn[e]=function(a){return q(this,(function(e,a,r){var o;if(_(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===r)return o?o[t]:e[a];o?o.scrollTo(n?o.pageXOffset:r,n?r:o.pageYOffset):e[a]=r}),e,a,arguments.length)}})),M.each(["top","left"],(function(e,t){M.cssHooks[t]=$e(g.pixelPosition,(function(e,n){if(n)return n=Ve(e,t),Ue.test(n)?M(e).position()[t]+"px":n}))})),M.each({Height:"height",Width:"width"},(function(e,t){M.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,a){M.fn[a]=function(r,o){var i=arguments.length&&(n||"boolean"!=typeof r),s=n||(!0===r||!0===o?"margin":"border");return q(this,(function(t,n,r){var o;return _(t)?0===a.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===r?M.css(t,n,s):M.style(t,n,r,s)}),t,i?r:void 0,i)}}))})),M.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(e,t){M.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}})),M.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),M.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,a){return this.on(t,e,n,a)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),M.proxy=function(e,t){var n,a,r;if("string"==typeof t&&(n=e[t],t=e,e=n),y(e))return a=l.call(arguments,2),(r=function(){return e.apply(t||this,a.concat(l.call(arguments)))}).guid=e.guid=e.guid||M.guid++,r},M.holdReady=function(e){e?M.readyWait++:M.ready(!0)},M.isArray=Array.isArray,M.parseJSON=JSON.parse,M.nodeName=D,M.isFunction=y,M.isWindow=_,M.camelCase=J,M.type=v,M.now=Date.now,M.isNumeric=function(e){var t=M.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},void 0===(a=function(){return M}.apply(t,[]))||(e.exports=a);var Kt=n.jQuery,Zt=n.$;return M.noConflict=function(e){return n.$===M&&(n.$=Zt),e&&n.jQuery===M&&(n.jQuery=Kt),M},r||(n.jQuery=n.$=M),M}))},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var a=n(20),r=n(263),o=n(322),i=n(15),s=n(12),l=n(331),c=n(111),u=n(80),d=c((function(e,t){var n={};if(null==e)return n;var c=!1;t=a(t,(function(t){return t=i(t,e),c||(c=t.length>1),t})),s(e,u(e),n),c&&(n=r(n,7,l));for(var d=t.length;d--;)o(n,t[d]);return n}));e.exports=d},function(e,t,n){var a=n(274),r=n(279);e.exports=function(e,t){var n=r(e,t);return a(n)?n:void 0}},function(e,t,n){var a=n(11),r=n(275),o=n(276),i=a?a.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?r(e):o(e)}},function(e,t,n){var a=n(4).Symbol;e.exports=a},function(e,t,n){var a=n(26),r=n(98);e.exports=function(e,t,n,o){var i=!n;n||(n={});for(var s=-1,l=t.length;++s<l;){var c=t[s],u=o?o(n[c],e[c],c,n,e):void 0;void 0===u&&(u=e[c]),i?r(n,c,u):a(n,c,u)}return n}},function(e,t,n){var a=n(100),r=n(297),o=n(14);e.exports=function(e){return o(e)?a(e):r(e)}},function(e,t,n){var a=n(95),r=n(74);e.exports=function(e){return null!=e&&r(e.length)&&!a(e)}},function(e,t,n){var a=n(3),r=n(82),o=n(323),i=n(326);e.exports=function(e,t){return a(e)?e:r(e,t)?[e]:o(i(e))}},function(e,t,n){var a=n(31);e.exports=function(e){if("string"==typeof e||a(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){var a=n(105),r=n(345),o=n(34),i=n(3);e.exports=function(e,t){return(i(e)?a:r)(e,o(t,3))}},function(e,t){e.exports=function(e){for(var t=-1,n=null==e?0:e.length,a=0,r=[];++t<n;){var o=e[t];o&&(r[a++]=o)}return r}},function(e,t,n){var a=n(20),r=n(34),o=n(369),i=n(3);e.exports=function(e,t){return(i(e)?a:o)(e,r(t,3))}},function(e,t){e.exports=function(e,t){for(var n=-1,a=null==e?0:e.length,r=Array(a);++n<a;)r[n]=t(e[n],n,e);return r}},function(e,t,n){var a=n(264),r=n(265),o=n(266),i=n(267),s=n(268);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}l.prototype.clear=a,l.prototype.delete=r,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var a=n(23);e.exports=function(e,t){for(var n=e.length;n--;)if(a(e[n][0],t))return n;return-1}},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var a=n(9)(Object,"create");e.exports=a},function(e,t,n){var a=n(288);e.exports=function(e,t){var n=e.__data__;return a(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var a=n(98),r=n(23),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];o.call(e,t)&&r(i,n)&&(void 0!==n||t in e)||a(e,t,n)}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var a=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==a||"symbol"!=a&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var a=n(306),r=n(69),o=n(307),i=n(308),s=n(309),l=n(10),c=n(97),u=c(a),d=c(r),p=c(o),m=c(i),f=c(s),h=l;(a&&"[object DataView]"!=h(new a(new ArrayBuffer(1)))||r&&"[object Map]"!=h(new r)||o&&"[object Promise]"!=h(o.resolve())||i&&"[object Set]"!=h(new i)||s&&"[object WeakMap]"!=h(new s))&&(h=function(e){var t=l(e),n="[object Object]"==t?e.constructor:void 0,a=n?c(n):"";if(a)switch(a){case u:return"[object DataView]";case d:return"[object Map]";case p:return"[object Promise]";case m:return"[object Set]";case f:return"[object WeakMap]"}return t}),e.exports=h},function(e,t,n){var a=n(10),r=n(7);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==a(e)}},function(e,t,n){var a=n(15),r=n(16);e.exports=function(e,t){for(var n=0,o=(t=a(t,e)).length;null!=e&&n<o;)e=e[r(t[n++])];return n&&n==o?e:void 0}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var a=n(350),r=n(363),o=n(33),i=n(3),s=n(366);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?r(e[0],e[1]):a(e):s(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canUseDOM=t.slidesOnLeft=t.slidesOnRight=t.siblingDirection=t.getTotalSlides=t.getPostClones=t.getPreClones=t.getTrackLeft=t.getTrackAnimateCSS=t.getTrackCSS=t.checkSpecKeys=t.getSlideCount=t.checkNavigable=t.getNavigableIndexes=t.swipeEnd=t.swipeMove=t.swipeStart=t.keyHandler=t.changeSlide=t.slideHandler=t.initializedState=t.extractObject=t.canGoNext=t.getSwipeDirection=t.getHeight=t.getWidth=t.lazySlidesOnRight=t.lazySlidesOnLeft=t.lazyEndIndex=t.lazyStartIndex=t.getRequiredLazySlides=t.getOnDemandLazySlides=void 0;var a=o(n(2)),r=o(n(121));function o(e){return e&&e.__esModule?e:{default:e}}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){s(e,t,n[t])}))}return e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l=function(e){for(var t=[],n=c(e),a=u(e),r=n;r<a;r++)e.lazyLoadedList.indexOf(r)<0&&t.push(r);return t};t.getOnDemandLazySlides=l;t.getRequiredLazySlides=function(e){for(var t=[],n=c(e),a=u(e),r=n;r<a;r++)t.push(r);return t};var c=function(e){return e.currentSlide-d(e)};t.lazyStartIndex=c;var u=function(e){return e.currentSlide+p(e)};t.lazyEndIndex=u;var d=function(e){return e.centerMode?Math.floor(e.slidesToShow/2)+(parseInt(e.centerPadding)>0?1:0):0};t.lazySlidesOnLeft=d;var p=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow};t.lazySlidesOnRight=p;var m=function(e){return e&&e.offsetWidth||0};t.getWidth=m;var f=function(e){return e&&e.offsetHeight||0};t.getHeight=f;var h=function(e){var t,n,a,r,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=e.startX-e.curX,n=e.startY-e.curY,a=Math.atan2(n,t),(r=Math.round(180*a/Math.PI))<0&&(r=360-Math.abs(r)),r<=45&&r>=0||r<=360&&r>=315?"left":r>=135&&r<=225?"right":!0===o?r>=35&&r<=135?"up":"down":"vertical"};t.getSwipeDirection=h;var b=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t};t.canGoNext=b;t.extractObject=function(e,t){var n={};return t.forEach((function(t){return n[t]=e[t]})),n};t.initializedState=function(e){var t,n=a.default.Children.count(e.children),o=Math.ceil(m(r.default.findDOMNode(e.listRef))),i=Math.ceil(m(r.default.findDOMNode(e.trackRef)));if(e.vertical)t=o;else{var s=e.centerMode&&2*parseInt(e.centerPadding);"string"==typeof e.centerPadding&&"%"===e.centerPadding.slice(-1)&&(s*=o/100),t=Math.ceil((o-s)/e.slidesToShow)}var c=r.default.findDOMNode(e.listRef)&&f(r.default.findDOMNode(e.listRef).querySelector('[data-index="0"]')),u=c*e.slidesToShow,d=void 0===e.currentSlide?e.initialSlide:e.currentSlide;e.rtl&&void 0===e.currentSlide&&(d=n-1-e.initialSlide);var p=e.lazyLoadedList||[],h=l({currentSlide:d,lazyLoadedList:p});p.concat(h);var b={slideCount:n,slideWidth:t,listWidth:o,trackWidth:i,currentSlide:d,slideHeight:c,listHeight:u,lazyLoadedList:p};return null===e.autoplaying&&e.autoplay&&(b.autoplaying="playing"),b};t.slideHandler=function(e){var t=e.waitForAnimate,n=e.animating,a=e.fade,r=e.infinite,o=e.index,s=e.slideCount,c=e.lazyLoadedList,u=e.lazyLoad,d=e.currentSlide,p=e.centerMode,m=e.slidesToScroll,f=e.slidesToShow,h=e.useCSS;if(t&&n)return{};var g,y,_,k=o,L={},T={};if(a){if(!r&&(o<0||o>=s))return{};o<0?k=o+s:o>=s&&(k=o-s),u&&c.indexOf(k)<0&&c.push(k),L={animating:!0,currentSlide:k,lazyLoadedList:c},T={animating:!1}}else g=k,k<0?(g=k+s,r?s%m!=0&&(g=s-s%m):g=0):!b(e)&&k>d?k=g=d:p&&k>=s?(k=r?s:s-1,g=r?0:s-1):k>=s&&(g=k-s,r?s%m!=0&&(g=0):g=s-f),y=M(i({},e,{slideIndex:k})),_=M(i({},e,{slideIndex:g})),r||(y===_&&(k=g),y=_),u&&c.concat(l(i({},e,{currentSlide:k}))),h?(L={animating:!0,currentSlide:g,trackStyle:v(i({},e,{left:y})),lazyLoadedList:c},T={animating:!1,currentSlide:g,trackStyle:w(i({},e,{left:_})),swipeLeft:null}):L={currentSlide:g,trackStyle:w(i({},e,{left:_})),lazyLoadedList:c};return{state:L,nextState:T}};t.changeSlide=function(e,t){var n,a,r,o,s=e.slidesToScroll,l=e.slidesToShow,c=e.slideCount,u=e.currentSlide,d=e.lazyLoad,p=e.infinite;if(n=c%s!=0?0:(c-u)%s,"previous"===t.message)o=u-(r=0===n?s:l-n),d&&!p&&(o=-1===(a=u-r)?c-1:a);else if("next"===t.message)o=u+(r=0===n?s:n),d&&!p&&(o=(u+s)%c+n);else if("dots"===t.message){if((o=t.index*t.slidesToScroll)===t.currentSlide)return null}else if("children"===t.message){if((o=t.index)===t.currentSlide)return null;if(p){var m=S(i({},e,{targetSlide:o}));o>t.currentSlide&&"left"===m?o-=c:o<t.currentSlide&&"right"===m&&(o+=c)}}else if("index"===t.message&&(o=Number(t.index))===t.currentSlide)return null;return o};t.keyHandler=function(e,t,n){return e.target.tagName.match("TEXTAREA|INPUT|SELECT")||!t?"":37===e.keyCode?n?"next":"previous":39===e.keyCode?n?"previous":"next":""};t.swipeStart=function(e,t,n){return"IMG"===e.target.tagName&&e.preventDefault(),!t||!n&&-1!==e.type.indexOf("mouse")?"":{dragging:!0,touchObject:{startX:e.touches?e.touches[0].pageX:e.clientX,startY:e.touches?e.touches[0].pageY:e.clientY,curX:e.touches?e.touches[0].pageX:e.clientX,curY:e.touches?e.touches[0].pageY:e.clientY}}};t.swipeMove=function(e,t){var n=t.scrolling,a=t.animating,r=t.vertical,o=t.swipeToSlide,s=t.verticalSwiping,l=t.rtl,c=t.currentSlide,u=t.edgeFriction,d=t.edgeDragged,p=t.onEdge,m=t.swiped,f=t.swiping,g=t.slideCount,y=t.slidesToScroll,_=t.infinite,k=t.touchObject,v=t.swipeEvent,L=t.listHeight,T=t.listWidth;if(!n){if(a)return e.preventDefault();r&&o&&s&&e.preventDefault();var E,S={},x=M(t);k.curX=e.touches?e.touches[0].pageX:e.clientX,k.curY=e.touches?e.touches[0].pageY:e.clientY,k.swipeLength=Math.round(Math.sqrt(Math.pow(k.curX-k.startX,2)));var C=Math.round(Math.sqrt(Math.pow(k.curY-k.startY,2)));if(!s&&!f&&C>10)return{scrolling:!0};s&&(k.swipeLength=C);var D=(l?-1:1)*(k.curX>k.startX?1:-1);s&&(D=k.curY>k.startY?1:-1);var O=Math.ceil(g/y),Y=h(t.touchObject,s),j=k.swipeLength;return _||(0===c&&"right"===Y||c+1>=O&&"left"===Y||!b(t)&&"left"===Y)&&(j=k.swipeLength*u,!1===d&&p&&(p(Y),S.edgeDragged=!0)),!m&&v&&(v(Y),S.swiped=!0),E=r?x+j*(L/T)*D:l?x-j*D:x+j*D,s&&(E=x+j*D),S=i({},S,{touchObject:k,swipeLeft:E,trackStyle:w(i({},t,{left:E}))}),Math.abs(k.curX-k.startX)<.8*Math.abs(k.curY-k.startY)?S:(k.swipeLength>10&&(S.swiping=!0,e.preventDefault()),S)}};t.swipeEnd=function(e,t){var n=t.dragging,a=t.swipe,r=t.touchObject,o=t.listWidth,s=t.touchThreshold,l=t.verticalSwiping,c=t.listHeight,u=t.currentSlide,d=t.swipeToSlide,p=t.scrolling,m=t.onSwipe;if(!n)return a&&e.preventDefault(),{};var f=l?c/s:o/s,b=h(r,l),g={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(p)return g;if(!r.swipeLength)return g;if(r.swipeLength>f){var k,w;switch(e.preventDefault(),m&&m(b),b){case"left":case"up":w=u+_(t),k=d?y(t,w):w,g.currentDirection=0;break;case"right":case"down":w=u-_(t),k=d?y(t,w):w,g.currentDirection=1;break;default:k=u}g.triggerSlideHandler=k}else{var L=M(t);g.trackStyle=v(i({},t,{left:L}))}return g};var g=function(e){for(var t=e.infinite?2*e.slideCount:e.slideCount,n=e.infinite?-1*e.slidesToShow:0,a=e.infinite?-1*e.slidesToShow:0,r=[];n<t;)r.push(n),n=a+e.slidesToScroll,a+=Math.min(e.slidesToScroll,e.slidesToShow);return r};t.getNavigableIndexes=g;var y=function(e,t){var n=g(e),a=0;if(t>n[n.length-1])t=n[n.length-1];else for(var r in n){if(t<n[r]){t=a;break}a=n[r]}return t};t.checkNavigable=y;var _=function(e){var t=e.centerMode?e.slideWidth*Math.floor(e.slidesToShow/2):0;if(e.swipeToSlide){var n,a=r.default.findDOMNode(e.listRef).querySelectorAll(".slick-slide");if(Array.from(a).every((function(a){if(e.vertical){if(a.offsetTop+f(a)/2>-1*e.swipeLeft)return n=a,!1}else if(a.offsetLeft-t+m(a)/2>-1*e.swipeLeft)return n=a,!1;return!0})),!n)return 0;var o=!0===e.rtl?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-o)||1}return e.slidesToScroll};t.getSlideCount=_;var k=function(e,t){return t.reduce((function(t,n){return t&&e.hasOwnProperty(n)}),!0)?null:console.error("Keys Missing:",e)};t.checkSpecKeys=k;var w=function(e){var t,n;k(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var a=e.slideCount+2*e.slidesToShow;e.vertical?n=a*e.slideHeight:t=E(e)*e.slideWidth;var r={opacity:1,transition:"",WebkitTransition:""};e.useTransform?r=i({},r,{WebkitTransform:e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",transform:e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",msTransform:e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)"}):e.vertical?r.top=e.left:r.left=e.left;return e.fade&&(r={opacity:1}),t&&(r.width=t),n&&(r.height=n),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?r.marginTop=e.left+"px":r.marginLeft=e.left+"px"),r};t.getTrackCSS=w;var v=function(e){k(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=w(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t};t.getTrackAnimateCSS=v;var M=function(e){if(e.unslick)return 0;k(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t,n,a=e.slideIndex,o=e.trackRef,i=e.infinite,s=e.centerMode,l=e.slideCount,c=e.slidesToShow,u=e.slidesToScroll,d=e.slideWidth,p=e.listWidth,m=e.variableWidth,f=e.slideHeight,h=e.fade,b=e.vertical;if(h||1===e.slideCount)return 0;var g=0;if(i?(g=-L(e),l%u!=0&&a+u>l&&(g=-(a>l?c-(a-l):l%u)),s&&(g+=parseInt(c/2))):(l%u!=0&&a+u>l&&(g=c-l%u),s&&(g=parseInt(c/2))),t=b?a*f*-1+g*f:a*d*-1+g*d,!0===m){var y,_=r.default.findDOMNode(o);if(y=a+L(e),t=(n=_&&_.childNodes[y])?-1*n.offsetLeft:0,!0===s){y=i?a+L(e):a,n=_&&_.children[y],t=0;for(var w=0;w<y;w++)t-=_&&_.children[w]&&_.children[w].offsetWidth;t-=parseInt(e.centerPadding),t+=n&&(p-n.offsetWidth)/2}}return t};t.getTrackLeft=M;var L=function(e){return e.unslick||!e.infinite?0:e.variableWidth?e.slideCount:e.slidesToShow+(e.centerMode?1:0)};t.getPreClones=L;var T=function(e){return e.unslick||!e.infinite?0:e.slideCount};t.getPostClones=T;var E=function(e){return 1===e.slideCount?1:L(e)+e.slideCount+T(e)};t.getTotalSlides=E;var S=function(e){return e.targetSlide>e.currentSlide?e.targetSlide>e.currentSlide+x(e)?"left":"right":e.targetSlide<e.currentSlide-C(e)?"right":"left"};t.siblingDirection=S;var x=function(e){var t=e.slidesToShow,n=e.centerMode,a=e.rtl,r=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(r)>0&&(o+=1),a&&t%2==0&&(o+=1),o}return a?0:t-1};t.slidesOnRight=x;var C=function(e){var t=e.slidesToShow,n=e.centerMode,a=e.rtl,r=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(r)>0&&(o+=1),a||t%2!=0||(o+=1),o}return a?t-1:0};t.slidesOnLeft=C;t.canUseDOM=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},function(e,t,n){var a=n(32);e.exports=function(e,t,n){var r=null==e?void 0:a(e,t);return void 0===r?n:r}},function(e,t){e.exports=function(e){return void 0===e}},function(e,t,n){var a=n(20),r=n(34),o=n(123),i=n(80);e.exports=function(e,t){if(null==e)return{};var n=a(i(e),(function(e){return[e]}));return t=r(t),o(e,n,(function(e,n){return t(e,n[0])}))}},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-accordion","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3},"itemToggle":{"type":"boolean","default":true}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-call-to-action","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"center"},"showImage":{"type":"boolean","default":true},"imgURL":{"type":"string"},"imgID":{"type":"number"},"imgAlt":{"type":"string"},"opacityRatio":{"type":"number","default":75},"ctaBackGroundColor":{"type":"string","default":"#0e0e0e"},"borderRadius":{"type":"number","default":0},"headerTagOption":{"type":"string","default":"h2"},"backgroundFix":{"type":"boolean","default":false},"headertitleColor":{"type":"string","default":"#fff"},"headersubtitleColor":{"type":"string","default":"#fff"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/content-box","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"left"},"sectionDescription":{"type":"string","default":"Add your description here..."},"showContentImg":{"type":"boolean","default":true},"imgURL":{"type":"string","default":false},"imgID":{"type":"number"},"imgAlt":{"type":"string","source":"attribute","attribute":"alt","selector":"img"},"showButton":{"type":"boolean","default":false},"enableBackgroundColor":{"type":"boolean","default":true},"backGroundColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":0},"titleColor":{"type":"string","default":"#000"},"descriptionColor":{"type":"string","default":"#6d6d6d"},"layoutOption":{"type":"boolean","default":false},"imageShape":{"type":"string","default":""},"design":{"type":"string","default":"style-1"},"headerpaddingTop":{"type":"number","default":0},"headerpaddingRight":{"type":"number","default":0},"headerpaddingBottom":{"type":"number","default":0},"headerpaddingLeft":{"type":"number","default":0},"headermarginTop":{"type":"number","default":0},"headermarginBottom":{"type":"number","default":0},"paddingTop":{"type":"number","default":0},"paddingRight":{"type":"number","default":0},"paddingBottom":{"type":"number","default":0},"paddingLeft":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-container","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"imgURL":{"type":"string"},"imgID":{"type":"number"},"imgAlt":{"type":"string"},"opacityRatio":{"type":"number","default":100},"backGroundColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":0},"backgroundFix":{"type":"boolean","default":false},"separatorEnable":{"type":"boolean","default":false},"showFront":{"type":"boolean","default":false},"zindexDivider":{"type":"number","default":20},"verticalFlip":{"type":"boolean","default":true},"horizontalFlip":{"type":"boolean","default":false},"dividerPosition":{"type":"string","default":"has-separator-top"},"topDividerMargin":{"type":"number","default":0},"bottomDividerMargin":{"type":"number","default":0},"enableGap":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-counter","category":"blockspare","attributes":{"className":{"type":"string"},"counter":{"type":"number","default":25},"counterFontColor":{"type":"string","default":"#000"},"backGroundColor":{"type":"string","default":"#fff"},"imageSize":{"type":"string","default":"full"},"showImage":{"type":"boolean","default":true},"imgIconOption":{"type":"string","default":"icon"},"name":{"type":"string","default":"fas fa-chart-line"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string"},"iconBorderColor":{"type":"string","default":"#000"},"iconColor":{"type":"string"},"borderRadius":{"type":"number","default":50},"design":{"type":"string","default":"blockspare-layout1"},"blockBorderRadius":{"type":"number","default":0},"headertitleColor":{"type":"string","default":"#000"},"headersubtitleColor":{"type":"string","default":"#000"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5},"paddingTop":{"type":"number","default":20},"paddingBottom":{"type":"number","default":20},"openPopover":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-iconset","category":"blockspare","attributes":{"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"center"},"name":{"type":"string","default":"fas fa-rocket"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string","default":"#8b249c"},"iconBorderColor":{"type":"string","default":"#8b249c"},"iconColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":50}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-carousel","category":"blockspare","attributes":{"align":{"type":"string"},"images":{"type":"array","default":[],"selector":"img","query":{"url":{"type":"string","source":"attribute","attribute":"src"},"alt":{"type":"string","source":"attribute","attribute":"alt","default":""},"id":{"type":"string","source":"attribute","attribute":"data-id"},"width":{"type":"string","source":"attribute","attribute":"data-width"}}},"imageSize":{"type":"string","default":"thumbnail"},"showsliderNextPrev":{"type":"boolean","default":true},"showDots":{"type":"boolean","default":false},"numberofSlide":{"type":"number","default":2},"enableAutoPlay":{"type":"boolean","default":true},"carouselSpeed":{"type":"number","default":"1000"},"carouselNextIcon":{"type":"string","default":"fas fa-chevron-right"},"navigationColor":{"type":"string","default":"#fff"},"gutterSpace":{"type":"number","default":1},"colorFilter":{"type":"string","default":"blockspare-original"},"showOriginalOnHover":{"type":"boolean","default":false},"navigationSize":{"type":"string","default":"blockspare-navigation-small"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-linearprogressbar","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-skillbar","category":"blockspare","attributes":{"className":{"type":"string"},"blockID":{"type":"string","default":""},"title":{"type":"string","default":"Enter title"},"textColor":{"type":"string","default":"#404040"},"percentageTextColor":{"type":"string","default":"#8b249c"},"textSize":{"type":"number","default":20},"percentage":{"type":"number","default":25},"sectionAlignment":{"type":"string","default":"left"},"barColor":{"type":"string","default":"#3c1a5b"},"backgroundColor":{"type":"string","default":"#f6f6f6"},"barThickness":{"type":"number","default":2}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-list","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"left"},"listBackGroundColor":{"type":"string"},"name":{"type":"string","default":"blockspare-list-check"},"listData":{"type":"string","source":"html","selector":"ol,ul","multiline":"li","default":"<li>Vestibulum ac diam sit amet</li> <li>Vestibulum ac diam sit amet</li> <li>Vestibulum ac diam sit amet</li>"},"listType":{"type":"string","default":"ul"},"orderListStyle":{"type":"string","default":"blockspare-style1"},"color":{"type":"string","default":"#404040"},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-logos","category":"blockspare","attributes":{"align":{"type":"string"},"images":{"type":"array","default":[],"selector":"img","query":{"url":{"type":"string","source":"attribute","attribute":"src"},"alt":{"type":"string","source":"attribute","attribute":"alt","default":""},"id":{"type":"string","source":"attribute","attribute":"data-id"},"width":{"type":"string","source":"attribute","attribute":"data-width"}}}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-masonry","category":"blockspare","attributes":{"gridSize":{"type":"string","default":"xlrg"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-notice-bar","category":"blockspare","attributes":{"className":{"type":"string"},"align":{"type":"string","default":"center"},"sectionAlignment":{"type":"string","default":"left"},"textsColor":{"type":"string","default":"#4c4c4c"},"fontSize":{"type":"number","default":18},"backGroundColor":{"type":"string","default":"#fff"},"boxBorderColor":{"type":"string","default":"#cc0000"},"noticeContent":{"type":"string","default":"Add your notice here...."},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30},"enableButton":{"type":"boolean","default":false},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-price-list","category":"blockspare","attributes":{"align":{"type":"string"},"sectionAlignment":{"type":"string","default":"wide"},"uniqueId":{"type":"string","default":""},"defaultItems":{"type":"number","default":3},"backgroundColor":{"type":"string","default":"#fff"},"backgroundTransparent":{"type":"boolean","default":false}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing","category":"blockspare","attributes":{"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string","default":"center"},"defaultItems":{"type":"number","default":2},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner","category":"blockspare","attributes":{"borderWidth":{"type":"number","default":1},"borderColor":{"type":"string","default":"#ececec"},"borderRadius":{"type":"number","default":0},"backgroundColor":{"type":"string","default":"#fff"},"alignment":{"type":"string"},"padding":{"type":"number","default":0},"sectionScale":{"type":"number","default":0},"enableBadge":{"type":"boolean","default":false},"badgeText":{"type":"string","default":"Badge Text"},"badgeStyle":{"type":"string","default":"blockspare-badge-style1"},"badgeOption":{"type":"string","default":"badge-text"},"imgURL1":{"type":"string"},"imgID1":{"type":"number"},"imgAlt1":{"type":"string"},"badgeTextColor":{"type":"string","default":"#fff"},"badgeBackGroundColor":{"type":"string","default":"#af0000"},"badgeImgSize":{"type":"number","default":100}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-price","category":"blockspare","attributes":{"sectionAlignment":{"type":"string","default":"center"},"price":{"type":"string"},"currency":{"type":"string"},"fontSize":{"type":"string"},"customFontSize":{"type":"number","default":32},"textColor":{"type":"string","default":"#af0000"},"customTextColor":{"type":"string","default":"#af0000"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"term":{"type":"string"},"showTerm":{"type":"boolean","default":true},"showCurrency":{"type":"boolean","default":true},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-description","category":"blockspare","attributes":{"features":{"type":"string","source":"html","selector":"ol,ul","multiline":"li"},"sectionAlignment":{"type":"string","default":"center"},"fontSize":{"type":"string"},"customFontSize":{"type":"number"},"textColor":{"type":"string"},"customTextColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"borderStyle":{"type":"string","default":"blockspare-list-border-none"},"borderColor":{"type":"string"},"borderWidth":{"type":"number","default":1},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20},"name":{"type":"string","default":"blockspare-list-check"},"listType":{"type":"string","default":"ul"},"orderListStyle":{"type":"string","default":"blockspare-style1"},"color":{"type":"string","default":"#6d6d6d"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-button","category":"blockspare","attributes":{"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-social-links","category":"blockspare","attributes":{"sectionAlignment":{"type":"string","default":"center"},"facebookTitle":{"type":"string","default":"Facebook"},"facebookUrl":{"type":"url","default":"https://facebook.com"},"twitterTitle":{"type":"string","default":"Twitter"},"twitterUrl":{"type":"url","default":"https://twitter.com"},"instagramTitle":{"type":"string","default":"Instagram"},"instagramUrl":{"type":"url","default":"https://instagram.com"},"youtubeTitle":{"type":"string","default":"YouTube"},"youtubeUrl":{"type":"url","default":""},"linkedinTitle":{"type":"string","default":"LinkedIn"},"linkedinUrl":{"type":"url"},"pinterestTitle":{"type":"string","default":"Pinterest"},"pinterestUrl":{"type":"url"},"tumblrTitle":{"type":"string","default":"Tumblr"},"tumblrUrl":{"type":"url"},"telegramTitle":{"type":"string","default":"Telegram"},"telegramUrl":{"type":"url"},"redditTitle":{"type":"string","default":"Reddit"},"redditUrl":{"type":"url"},"flickrTitle":{"type":"string","default":"Flickr"},"flickrUrl":{"type":"url"},"dribbbleTitle":{"type":"string","default":"Dribbble"},"dribbbleUrl":{"type":"url"},"vkTitle":{"type":"string","default":"VK"},"vkUrl":{"type":"url"},"yelpTitle":{"type":"string","default":"Yelp"},"yelpUrl":{"type":"url"},"quoraTitle":{"type":"string","default":"Quora"},"quoraUrl":{"type":"url"},"meetupTitle":{"type":"string","default":"Meetup"},"meetupUrl":{"type":"url"},"githubTitle":{"type":"url","default":"Git hub"},"githubUrl":{"type":"url"},"buttonOptions":{"type":"string","default":"blockspare-icon-only"},"buttonFills":{"type":"string","default":"blockspare-social-icon-solid"},"iconColorOption":{"type":"string","default":"blockspare-default-official-color"},"customfontColorOption":{"type":"string","default":"#fff"},"custombackgroundColorOption":{"type":"string","default":"#404040"},"buttonShapes":{"type":"string","default":"blockspare-social-icon-square"},"buttonSizes":{"type":"string","default":"blockspare-social-icon-small"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services","category":"blockspare","attributes":{"serviceItems":{"type":"number","default":2},"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string"},"defaultItems":{"type":"number","default":2},"sectionAlignment":{"type":"string","default":"center"},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner-description","category":"blockspare","attributes":{"features":{"type":"string","source":"html","selector":"p"},"fontSize":{"type":"string"},"customFontSize":{"type":"number"},"textColor":{"type":"string","default":"#6d6d6d"},"customTextColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string"},"customBackgroundColor":{"type":"string"},"paddingTop":{"type":"number","default":10},"paddingRight":{"type":"number","default":20},"paddingBottom":{"type":"number","default":10},"paddingLeft":{"type":"number","default":20}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-service-inner-button","category":"blockspare","attributes":{"paddingTop":{"type":"number","default":10},"paddingBottom":{"type":"number","default":10}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-star-ratings","category":"blockspare","attributes":{"className":{"type":"string"},"starAlign":{"type":"string","default":"center"},"blockID":{"type":"string","default":""},"starCount":{"type":"number","default":5},"starSize":{"type":"number","default":20},"starColor":{"type":"string","default":"#fbd012"},"selectedStars":{"type":"number","default":5},"emptyStarColor":{"type":"string","default":"#d5d3d3"},"backgroundColor":{"type":"string","default":"transparent"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-tabs","category":"blockspare","attributes":{"className":{"type":"string"},"tabs":{"type":"number","default":3},"tabTitles":{"type":"array","default":[{"title":"Tab 1"},{"title":"Tab 2"},{"title":"Tab 3"}]},"tabStyle":{"type":"string","default":"blockspare-horizontal"},"tabLayout":{"type":"string","default":"blockspare-layout1"},"tabBackGroundColor":{"type":"string","default":"#3c1a5b"},"activeTabBackgroundColor":{"type":"string","default":"#8b249c"},"tabTextColor":{"type":"string","default":"#fff"},"activetabTextColor":{"type":"string","default":"#fff"},"tabAlignment":{"type":"string","default":"blockspare-left"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-testimonial","category":"blockspare","attributes":{"serviceItems":{"type":"number","default":2},"columns":{"type":"number","default":2},"columnsGap":{"type":"number","default":1},"align":{"type":"string","default":"center"},"defaultItems":{"type":"number","default":2}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/user-profile","category":"blockspare","attributes":{"profileContent":{"type":"string","default":"Add your content..."},"profileContentFontSize":{"type":"number","default":18},"sectionAlignment":{"type":"string","default":"left"},"profileBackgroundColor":{"type":"string","default":"#fff"},"profileTextColor":{"type":"string","default":"#6d6d6d"},"facebook":{"type":"url","default":"facebook.com"},"twitter":{"type":"url","default":"twitter.com"},"instagram":{"type":"url"},"linkedin":{"type":"url","default":"linkedin.com"},"youtube":{"type":"url"},"paddingTop":{"type":"number","default":0},"paddingRight":{"type":"number","default":0},"paddingBottom":{"type":"number","default":0},"paddingLeft":{"type":"number","default":0},"marginTop":{"type":"number","default":0},"marginBottom":{"type":"number","default":0},"iconColorOption":{"type":"string","default":"blockspare-default-official-color"},"customfontColorOption":{"type":"string","default":"#fff"},"custombackgroundColorOption":{"type":"string","default":"#404040"},"buttonShapes":{"type":"string","default":"blockspare-social-icon-square"},"buttonSizes":{"type":"string","default":"blockspare-social-icon-small"},"buttonFills":{"type":"string","default":"blockspare-social-icon-solid"},"headerpaddingTop":{"type":"number","default":0},"headerpaddingRight":{"type":"number","default":0},"headerpaddingBottom":{"type":"number","default":0},"headerpaddingLeft":{"type":"number","default":0},"headermarginTop":{"type":"number","default":0},"headermarginBottom":{"type":"number","default":0},"borderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/shape-divider","category":"blockspare","attributes":{"align":{"type":"string","default":"full"},"design":{"type":"string","default":"double-wave"},"layer1Shadow":{"type":"boolean","default":false},"width":{"type":"number","default":1},"height":{"type":"number","default":150},"verticalFlip":{"type":"boolean","default":false},"horizontalFlip":{"type":"boolean","default":false},"color":{"type":"string","default":"#3c1a5b"},"marginTop":{"type":"number","default":30},"marginBottom":{"type":"number","default":30}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-empty-section","category":"blockspare","attributes":{"className":{"type":"string"},"height":{"type":"number","default":10},"backGroundColor":{"type":"string","default":"#fff"}}}')},function(e,t,n){var a=n(21),r=n(269),o=n(270),i=n(271),s=n(272),l=n(273);function c(e){var t=this.__data__=new a(e);this.size=t.size}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=s,c.prototype.set=l,e.exports=c},function(e,t,n){var a=n(9)(n(4),"Map");e.exports=a},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var a=n(280),r=n(287),o=n(289),i=n(290),s=n(291);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}l.prototype.clear=a,l.prototype.delete=r,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var a=n(294),r=n(7),o=Object.prototype,i=o.hasOwnProperty,s=o.propertyIsEnumerable,l=a(function(){return arguments}())?a:function(e){return r(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){(function(e){var a=n(4),r=n(295),o=t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,s=i&&i.exports===o?a.Buffer:void 0,l=(s?s.isBuffer:void 0)||r;e.exports=l}).call(this,n(27)(e))},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var a=n(96),r=t&&!t.nodeType&&t,o=r&&"object"==typeof e&&e&&!e.nodeType&&e,i=o&&o.exports===r&&a.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s}).call(this,n(27)(e))},function(e,t,n){var a=n(105),r=n(106),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),a(i(e),(function(t){return o.call(e,t)})))}:r;e.exports=s},function(e,t){e.exports=function(e,t){for(var n=-1,a=t.length,r=e.length;++n<a;)e[r+n]=t[n];return e}},function(e,t,n){var a=n(103)(Object.getPrototypeOf,Object);e.exports=a},function(e,t,n){var a=n(109),r=n(107),o=n(104);e.exports=function(e){return a(e,o,r)}},function(e,t,n){var a=n(110);e.exports=function(e){var t=new e.constructor(e.byteLength);return new a(t).set(new a(e)),t}},function(e,t,n){var a=n(3),r=n(31),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(a(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!r(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){"use strict"; |
| 31 |
/* |
| 32 |
object-assign |
| 33 |
(c) Sindre Sorhus |
| 34 |
@license MIT |
| 35 |
*/var a=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach((function(e){a[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},a)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=i(e),c=1;c<arguments.length;c++){for(var u in n=Object(arguments[c]))r.call(n,u)&&(l[u]=n[u]);if(a){s=a(n);for(var d=0;d<s.length;d++)o.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){var a,r;"undefined"!=typeof window&&window,void 0===(r="function"==typeof(a=function(){"use strict";function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var n=this._events=this._events||{},a=n[e]=n[e]||[];return-1==a.indexOf(t)&&a.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var n=this._onceEvents=this._onceEvents||{};return(n[e]=n[e]||{})[t]=!0,this}},t.off=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){var a=n.indexOf(t);return-1!=a&&n.splice(a,1),this}},t.emitEvent=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];for(var a=this._onceEvents&&this._onceEvents[e],r=0;r<n.length;r++){var o=n[r];a&&a[o]&&(this.off(e,o),delete a[o]),o.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e})?a.call(t,n,t,e):a)||(e.exports=r)},function(e,t,n){var a,r; |
| 36 |
/*! |
| 37 |
* getSize v2.0.3 |
| 38 |
* measure size of elements |
| 39 |
* MIT license |
| 40 |
*/window,void 0===(r="function"==typeof(a=function(){"use strict";function e(e){var t=parseFloat(e);return-1==e.indexOf("%")&&!isNaN(t)&&t}var t="undefined"==typeof console?function(){}:function(e){console.error(e)},n=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],a=n.length;function r(e){var n=getComputedStyle(e);return n||t("Style returned "+n+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),n}var o,i=!1;function s(t){if(function(){if(!i){i=!0;var t=document.createElement("div");t.style.width="200px",t.style.padding="1px 2px 3px 4px",t.style.borderStyle="solid",t.style.borderWidth="1px 2px 3px 4px",t.style.boxSizing="border-box";var n=document.body||document.documentElement;n.appendChild(t);var a=r(t);o=200==Math.round(e(a.width)),s.isBoxSizeOuter=o,n.removeChild(t)}}(),"string"==typeof t&&(t=document.querySelector(t)),t&&"object"==typeof t&&t.nodeType){var l=r(t);if("none"==l.display)return function(){for(var e={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},t=0;t<a;t++)e[n[t]]=0;return e}();var c={};c.width=t.offsetWidth,c.height=t.offsetHeight;for(var u=c.isBorderBox="border-box"==l.boxSizing,d=0;d<a;d++){var p=n[d],m=l[p],f=parseFloat(m);c[p]=isNaN(f)?0:f}var h=c.paddingLeft+c.paddingRight,b=c.paddingTop+c.paddingBottom,g=c.marginLeft+c.marginRight,y=c.marginTop+c.marginBottom,_=c.borderLeftWidth+c.borderRightWidth,k=c.borderTopWidth+c.borderBottomWidth,w=u&&o,v=e(l.width);!1!==v&&(c.width=v+(w?0:h+_));var M=e(l.height);return!1!==M&&(c.height=M+(w?0:b+k)),c.innerWidth=c.width-(h+_),c.innerHeight=c.height-(b+k),c.outerWidth=c.width+g,c.outerHeight=c.height+y,c}}return s})?a.call(t,n,t,e):a)||(e.exports=r)},function(e){e.exports=JSON.parse('{"category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"itemNumber":{"type":"number"},"heading":{"type":"string","default":"Accordion Item"},"active":{"type":"boolean","default":false},"defaultText":{"type":"string","default":""},"fillType":{"type":"string","default":"fill"},"openFirstItem":{"type":"boolean","default":true},"name":{"type":"string","default":"fa fa-plus"},"iconPosition":{"type":"string","default":"blockspare-right"},"panelColor":{"type":"string","default":"#3c1a5b"},"panelActiveColor":{"type":"string","default":"#8b249c"},"textColor":{"type":"string","default":"#fff"},"marginBottom":{"type":"number","default":"10"},"activeTextColor":{"type":"string","default":"#fff"},"panelBackGroundColor":{"type":"string","default":"#fff"}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-buttons","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-price-list-item","category":"blockspare","attributes":{"className":{"type":"string"},"sectionAlignment":{"type":"string","default":"left"},"priceTitle":{"type":"string","default":"Enter Title"},"priceDescription":{"type":"string","default":"Add you item description..."},"priceUnit":{"type":"string","default":"$"},"price":{"type":"string","default":"100"},"ImgURL":{"type":"string"},"ImgAlt":{"type":"string","source":"attribute","selector":"figure img","attribute":"alt","default":""},"ImgID":{"type":"number"},"layoutOptions":{"type":"string","default":"blockspare-layout1"},"imageOption":{"type":"string","default":"blockspare-img-square"},"priceUnitPosition":{"type":"string","default":"blockspare-before-price"},"showDots":{"type":"boolean","default":true},"priceTitleColor":{"type":"string","default":"#404040"},"priceColor":{"type":"string","default":"#af0000"},"priceUnitColor":{"type":"string","default":"#af0000"},"priceDescriptionColor":{"type":"string","default":"#6d6d6d"},"backgroundColor":{"type":"string","default":"#fff"},"showImage":{"type":"boolean","default":true},"imgIconOption":{"type":"string","default":"image"},"name":{"type":"string","default":"fas fa-rocket"},"iconSize":{"type":"string","default":"blockspare-icon-size-small"},"iconStyles":{"type":"string","default":"blockspare-icon-style2"},"iconBackgroundColor":{"type":"string","default":"#8b249c"},"iconBorderColor":{"type":"string","default":"#8b249c"},"iconColor":{"type":"string","default":"#fff"},"borderRadius":{"type":"number","default":50},"blockBorderRadius":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-pricing-inner-title","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-section-header","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner","category":"blockspare","attributes":{"borderWidth":{"type":"number","default":1},"borderColor":{"type":"string","default":"#ececec"},"borderRadius":{"type":"number","default":0},"backgroundColor":{"type":"string","default":"#fff"},"alignment":{"type":"string"},"padding":{"type":"number","default":0}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-services-inner-title","category":"blockspare"}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-tab","category":"blockspare","attributes":{"uniqueId":{"type":"string","default":""},"id":{"type":"number","default":1},"customClassName":{"type":"string","default":""}}}')},function(e){e.exports=JSON.parse('{"name":"blockspare/blockspare-testimonial-item","category":"blockspare","attributes":{"className":{"type":"string"},"testimonialDescription":{"type":"string","default":"Donec odit magni, nesciunt pariatur! Nec, purus voluptate ridiculus odit nobis euismod, ac laudantium facere perferendis! "},"testimonialDescriptionTextSize":{"type":"number","default":18},"testimonialDescriptionTextColor":{"type":"string","default":"#6d6d6d"},"blockID":{"type":"string","default":""},"starCount":{"type":"number","default":5},"starSize":{"type":"number","default":20},"starColor":{"type":"string","default":"#fbd012"},"selectedStars":{"type":"number","default":3},"emptyStarColor":{"type":"string","default":"#d5d3d3"},"enableRatings":{"type":"boolean","default":false},"backGroundColor":{"type":"string","default":"#fff"},"headermarginTop":{"type":"number","default":5},"headermarginBottom":{"type":"number","default":5},"borderRadius":{"type":"number","default":0}}}')},function(e,t,n){var a=n(10),r=n(5);e.exports=function(e){if(!r(e))return!1;var t=a(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(70))},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var a=n(99);e.exports=function(e,t,n){"__proto__"==t&&a?a(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var a=n(9),r=function(){try{var e=a(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=r},function(e,t,n){var a=n(101),r=n(72),o=n(3),i=n(73),s=n(28),l=n(102),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&r(e),d=!n&&!u&&i(e),p=!n&&!u&&!d&&l(e),m=n||u||d||p,f=m?a(e.length,String):[],h=f.length;for(var b in e)!t&&!c.call(e,b)||m&&("length"==b||d&&("offset"==b||"parent"==b)||p&&("buffer"==b||"byteLength"==b||"byteOffset"==b)||s(b,h))||f.push(b);return f}},function(e,t){e.exports=function(e,t){for(var n=-1,a=Array(e);++n<e;)a[n]=t(n);return a}},function(e,t,n){var a=n(296),r=n(75),o=n(76),i=o&&o.isTypedArray,s=i?r(i):a;e.exports=s},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var a=n(100),r=n(300),o=n(14);e.exports=function(e){return o(e)?a(e,!0):r(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,a=null==e?0:e.length,r=0,o=[];++n<a;){var i=e[n];t(i,n,e)&&(o[r++]=i)}return o}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var a=n(78),r=n(79),o=n(77),i=n(106),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)a(t,o(e)),e=r(e);return t}:i;e.exports=s},function(e,t,n){var a=n(109),r=n(77),o=n(13);e.exports=function(e){return a(e,o,r)}},function(e,t,n){var a=n(78),r=n(3);e.exports=function(e,t,n){var o=t(e);return r(e)?o:a(o,n(e))}},function(e,t,n){var a=n(4).Uint8Array;e.exports=a},function(e,t,n){var a=n(333),r=n(112),o=n(113);e.exports=function(e){return o(r(e,void 0,a),e+"")}},function(e,t,n){var a=n(336),r=Math.max;e.exports=function(e,t,n){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,s=r(o.length-t,0),l=Array(s);++i<s;)l[i]=o[t+i];i=-1;for(var c=Array(t+1);++i<t;)c[i]=o[i];return c[t]=n(l),a(e,this,c)}}},function(e,t,n){var a=n(337),r=n(339)(a);e.exports=r},function(e,t,n){e.exports=n(341)()},function(e,t,n){var a=n(346),r=n(349)(a);e.exports=r},function(e,t,n){var a=n(352),r=n(7);e.exports=function e(t,n,o,i,s){return t===n||(null==t||null==n||!r(t)&&!r(n)?t!=t&&n!=n:a(t,n,o,i,e,s))}},function(e,t,n){var a=n(353),r=n(356),o=n(357);e.exports=function(e,t,n,i,s,l){var c=1&n,u=e.length,d=t.length;if(u!=d&&!(c&&d>u))return!1;var p=l.get(e);if(p&&l.get(t))return p==t;var m=-1,f=!0,h=2&n?new a:void 0;for(l.set(e,t),l.set(t,e);++m<u;){var b=e[m],g=t[m];if(i)var y=c?i(g,b,m,t,e,l):i(b,g,m,e,t,l);if(void 0!==y){if(y)continue;f=!1;break}if(h){if(!r(t,(function(e,t){if(!o(h,t)&&(b===e||s(b,e,n,i,l)))return h.push(t)}))){f=!1;break}}else if(b!==g&&!s(b,g,n,i,l)){f=!1;break}}return l.delete(e),l.delete(t),f}},function(e,t,n){var a=n(5);e.exports=function(e){return e==e&&!a(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var a=n(364),r=n(365);e.exports=function(e,t){return null!=e&&r(e,t,a)}},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(372)},function(e,t){e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,a=e.length;n<a&&!1!==t(e[n],n);n++);}}},function(e,t,n){var a=n(32),r=n(389),o=n(15);e.exports=function(e,t,n){for(var i=-1,s=t.length,l={};++i<s;){var c=t[i],u=a(e,c);n(u,c)&&r(l,o(c,e),u)}return l}},function(e,t,n){var a=n(391);e.exports=function(e){var t=a(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var a=n(5),r=n(31),o=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(r(e))return NaN;if(a(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=a(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=s.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?NaN:+e}},function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(t,n,o,i){var s=a(t),l=r[e][a(t)];return 2===s&&(l=l[n?0:1]),l.replace(/%d/i,t)}},i=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:i,monthsShort:i,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},a={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,o,i){var s=n(t),l=a[e][n(t)];return 2===s&&(l=l[r?0:1]),l.replace(/%d/i,t)}},o=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a,r;return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(a=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a=e+" ";switch(n){case"ss":return a+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return a+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return a+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return a+=1===e?"dan":"dana";case"MM":return a+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return a+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),a=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function o(e){return e>1&&e<5&&1!=~~(e/10)}function i(e,t,n,a){var r=e+" ";switch(n){case"s":return t||a?"pár sekund":"pár sekundami";case"ss":return t||a?r+(o(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":a?"minutu":"minutou";case"mm":return t||a?r+(o(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":return t||a?r+(o(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||a?"den":"dnem";case"dd":return t||a?r+(o(e)?"dny":"dní"):r+"dny";case"M":return t||a?"měsíc":"měsícem";case"MM":return t||a?r+(o(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||a?"rok":"rokem";case"yy":return t||a?r+(o(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,a=this._calendarEl[e],r=t&&t.hours();return((n=a)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(a=a.apply(t)),a.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),a=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:a?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function a(e,a,r,o){var i="";switch(r){case"s":return o?"muutaman sekunnin":"muutama sekunti";case"ss":return o?"sekunnin":"sekuntia";case"m":return o?"minuutin":"minuutti";case"mm":i=o?"minuutin":"minuuttia";break;case"h":return o?"tunnin":"tunti";case"hh":i=o?"tunnin":"tuntia";break;case"d":return o?"päivän":"päivä";case"dd":i=o?"päivän":"päivää";break;case"M":return o?"kuukauden":"kuukausi";case"MM":i=o?"kuukauden":"kuukautta";break;case"y":return o?"vuoden":"vuosi";case"yy":i=o?"vuoden":"vuotta"}return i=function(e,a){return e<10?a?n[e]:t[e]:e}(e,o)+" "+i}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voranim",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return t?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokalli"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a=e+" ";switch(n){case"ss":return a+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return a+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return a+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return a+=1===e?"dan":"dana";case"MM":return a+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return a+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,a){var r=e;switch(n){case"s":return a||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(a||t)?" másodperc":" másodperce";case"m":return"egy"+(a||t?" perc":" perce");case"mm":return r+(a||t?" perc":" perce");case"h":return"egy"+(a||t?" óra":" órája");case"hh":return r+(a||t?" óra":" órája");case"d":return"egy"+(a||t?" nap":" napja");case"dd":return r+(a||t?" nap":" napja");case"M":return"egy"+(a||t?" hónap":" hónapja");case"MM":return r+(a||t?" hónap":" hónapja");case"y":return"egy"+(a||t?" év":" éve");case"yy":return r+(a||t?" év":" éve")}return""}function a(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,a,r){var o=e+" ";switch(a){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?o+(n||r?"sekúndur":"sekúndum"):o+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?o+(n||r?"mínútur":"mínútum"):n?o+"mínúta":o+"mínútu";case"hh":return t(e)?o+(n||r?"klukkustundir":"klukkustundum"):o+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?o+"dagar":o+(r?"daga":"dögum"):n?o+"dagur":o+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?o+"mánuðir":o+(r?"mánuði":"mánuðum"):n?o+"mánuður":o+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?o+(n||r?"ár":"árum"):o+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()<this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()<e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},a=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:a,monthsShort:a,weekdays:"یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه".split("_"),weekdaysShort:"یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره|بهیانی/,isPM:function(e){return/ئێواره/.test(e)},meridiem:function(e,t,n){return e<12?"بهیانی":"ئێواره"},calendar:{sameDay:"[ئهمرۆ كاتژمێر] LT",nextDay:"[بهیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له %s",past:"%s",s:"چهند چركهیهك",ss:"چركه %d",m:"یهك خولهك",mm:"%d خولهك",h:"یهك كاتژمێر",hh:"%d كاتژمێر",d:"یهك ڕۆژ",dd:"%d ڕۆژ",M:"یهك مانگ",MM:"%d مانگ",y:"یهك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,a){return t?r(n)[0]:a?r(n)[1]:r(n)[2]}function a(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function o(e,t,o,i){var s=e+" ";return 1===e?s+n(0,t,o[0],i):t?s+(a(e)?r(o)[1]:r(o)[0]):i?s+r(o)[1]:s+(a(e)?r(o)[1]:r(o)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,a){return t?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},ss:o,m:n,mm:o,h:n,hh:o,d:n,dd:o,M:n,MM:o,y:n,yy:o},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function a(e,a,r){return e+" "+n(t[r],e,a)}function r(e,a,r){return n(t[r],e,a)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:a,m:r,mm:a,h:r,hh:a,d:r,dd:a,M:r,MM:a,y:r,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,a){var r=t.words[a];return 1===a.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function a(e,t,n,a){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),a=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:a,longMonthsParse:a,shortMonthsParse:a,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function r(e,t,n){var r=e+" ";switch(n){case"ss":return r+(a(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return r+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return r+(a(e)?"godziny":"godzin");case"MM":return r+(a(e)?"miesiące":"miesięcy");case"yy":return r+(a(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+n[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(a)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a=" ";return(e%100>=20||e>=100&&e%100==0)&&(a=" de "),e+a+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a,r;return"m"===n?t?"минута":"минуту":e+" "+(a=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function a(e){return e>1&&e<5}function r(e,t,n,r){var o=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?o+(a(e)?"sekundy":"sekúnd"):o+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?o+(a(e)?"minúty":"minút"):o+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?o+(a(e)?"hodiny":"hodín"):o+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?o+(a(e)?"dni":"dní"):o+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?o+(a(e)?"mesiace":"mesiacov"):o+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?o+(a(e)?"roky":"rokov"):o+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r=e+" ";switch(n){case"s":return t||a?"nekaj sekund":"nekaj sekundami";case"ss":return r+=1===e?t?"sekundo":"sekundi":2===e?t||a?"sekundi":"sekundah":e<5?t||a?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return r+=1===e?t?"minuta":"minuto":2===e?t||a?"minuti":"minutama":e<5?t||a?"minute":"minutami":t||a?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return r+=1===e?t?"ura":"uro":2===e?t||a?"uri":"urama":e<5?t||a?"ure":"urami":t||a?"ur":"urami";case"d":return t||a?"en dan":"enim dnem";case"dd":return r+=1===e?t||a?"dan":"dnem":2===e?t||a?"dni":"dnevoma":t||a?"dni":"dnevi";case"M":return t||a?"en mesec":"enim mesecem";case"MM":return r+=1===e?t||a?"mesec":"mesecem":2===e?t||a?"meseca":"mesecema":e<5?t||a?"mesece":"meseci":t||a?"mesecev":"meseci";case"y":return t||a?"eno leto":"enim letom";case"yy":return r+=1===e?t||a?"leto":"letom":2===e?t||a?"leti":"letoma":e<5?t||a?"leta":"leti":t||a?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,a){var r=t.words[a];return 1===a.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,a){var r=t.words[a];return 1===a.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"e":1===t||2===t?"a":"e")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,a,r){var o=function(e){var n=Math.floor(e%1e3/100),a=Math.floor(e%100/10),r=e%10,o="";return n>0&&(o+=t[n]+"vatlh"),a>0&&(o+=(""!==o?" ":"")+t[a]+"maH"),r>0&&(o+=(""!==o?" ":"")+t[r]),""===o?"pagh":o}(e);switch(a){case"ss":return o+" lup";case"mm":return o+" tup";case"hh":return o+" rep";case"dd":return o+" jaj";case"MM":return o+" jar";case"yy":return o+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var a=e%10;return e+(t[a]||t[e%100-a]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,a){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return a||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var a=100*e+t;return a<600?"يېرىم كېچە":a<900?"سەھەر":a<1130?"چۈشتىن بۇرۇن":a<1230?"چۈش":a<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var a,r;return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(a=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),a%10==1&&a%100!=11?r[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?r[1]:r[2])}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var a=100*e+t;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var a=100*e+t;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var a=100*e+t;return a<600?"凌晨":a<900?"早上":a<1130?"上午":a<1230?"中午":a<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){"use strict";(e.exports={}).forEach=function(e,t){for(var n=0;n<e.length;n++){var a=t(e[n]);if(a)return a}}},function(e,t,n){"use strict";var a=e.exports={};a.isIE=function(e){return(-1!==(t=navigator.userAgent.toLowerCase()).indexOf("msie")||-1!==t.indexOf("trident")||-1!==t.indexOf(" edge/"))&&(!e||e===function(){var e=3,t=document.createElement("div"),n=t.getElementsByTagName("i");do{t.innerHTML="\x3c!--[if gt IE "+ ++e+"]><i></i><![endif]--\x3e"}while(n[0]);return e>4?e:void 0}());var t},a.isLegacyOpera=function(){return!!window.opera}},function(e,t,n){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(114)),o=n(2),i=a(o),s=a(n(343)),l=a(n(344));function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?h(e):t}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e))&&"[object Arguments]"!==Object.prototype.toString.call(e))return;var n=[],a=!0,r=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(a=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);a=!0);}catch(e){r=!0,o=e}finally{try{a||null==s.return||s.return()}finally{if(r)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var y=function(e,t){var n=t.decimal,a=t.decimals,r=t.duration,o=t.easingFn,i=t.end,s=t.formattingFn,c=t.prefix,u=t.separator,d=t.start,p=t.suffix,m=t.useEasing;return new l(e,d,i,a,r,{decimal:n,easingFn:o,formattingFn:s,separator:u,prefix:c,suffix:p,useEasing:m,useGrouping:!!u})},_=function(e){function t(){var e,n;c(this,t);for(var a=arguments.length,r=new Array(a),o=0;o<a;o++)r[o]=arguments[o];return d(h(n=b(this,(e=m(t)).call.apply(e,[this].concat(r)))),"createInstance",(function(){return"function"==typeof n.props.children&&s(n.containerRef.current&&(n.containerRef.current instanceof HTMLElement||n.containerRef.current instanceof SVGTextElement||n.containerRef.current instanceof SVGTSpanElement),'Couldn\'t find attached element to hook the CountUp instance into! Try to attach "containerRef" from the render prop to a an HTMLElement, eg. <span ref={containerRef} />.'),y(n.containerRef.current,n.props)})),d(h(n),"pauseResume",(function(){var e=h(n),t=e.reset,a=e.restart,r=e.update,o=n.props.onPauseResume;n.instance.pauseResume(),o({reset:t,start:a,update:r})})),d(h(n),"reset",(function(){var e=h(n),t=e.pauseResume,a=e.restart,r=e.update,o=n.props.onReset;n.instance.reset(),o({pauseResume:t,start:a,update:r})})),d(h(n),"restart",(function(){n.reset(),n.start()})),d(h(n),"start",(function(){var e=h(n),t=e.pauseResume,a=e.reset,r=e.restart,o=e.update,i=n.props,s=i.delay,l=i.onEnd,c=i.onStart,u=function(){return n.instance.start((function(){return l({pauseResume:t,reset:a,start:r,update:o})}))};s>0?n.timeoutId=setTimeout(u,1e3*s):u(),c({pauseResume:t,reset:a,update:o})})),d(h(n),"update",(function(e){var t=h(n),a=t.pauseResume,r=t.reset,o=t.restart,i=n.props.onUpdate;n.instance.update(e),i({pauseResume:a,reset:r,start:o})})),d(h(n),"containerRef",i.createRef()),n}var n,a,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,(a=[{key:"componentDidMount",value:function(){var e=this.props,t=e.children,n=e.delay;this.instance=this.createInstance(),"function"==typeof t&&0!==n||this.start()}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,n=t.end,a=t.start,r=t.suffix,o=t.prefix,i=t.redraw,s=t.duration,l=t.separator,c=t.decimals,u=t.decimal;return s!==e.duration||n!==e.end||a!==e.start||r!==e.suffix||o!==e.prefix||l!==e.separator||c!==e.decimals||u!==e.decimal||i}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.end,a=t.start,r=t.suffix,o=t.prefix,i=t.duration,s=t.separator,l=t.decimals,c=t.decimal,u=t.preserveValue;i===e.duration&&a===e.start&&r===e.suffix&&o===e.prefix&&s===e.separator&&l===e.decimals&&c===e.decimal||(this.instance.reset(),this.instance=this.createInstance(),this.start()),n!==e.end&&(u||this.instance.reset(),this.instance.update(n))}},{key:"componentWillUnmount",value:function(){this.timeoutId&&clearTimeout(this.timeoutId),this.instance.reset()}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.className,a=e.style,r=this.containerRef,o=this.pauseResume,s=this.reset,l=this.restart,c=this.update;return"function"==typeof t?t({countUpRef:r,pauseResume:o,reset:s,start:l,update:c}):i.createElement("span",{className:n,ref:r,style:a})}}])&&u(n.prototype,a),r&&u(n,r),t}(o.Component);d(_,"propTypes",{decimal:r.string,decimals:r.number,delay:r.number,easingFn:r.func,end:r.number.isRequired,formattingFn:r.func,onEnd:r.func,onStart:r.func,prefix:r.string,redraw:r.bool,separator:r.string,start:r.number,startOnMount:r.bool,suffix:r.string,style:r.object,useEasing:r.bool,preserveValue:r.bool}),d(_,"defaultProps",{decimal:".",decimals:0,delay:null,duration:null,easingFn:null,formattingFn:null,onEnd:function(){},onPauseResume:function(){},onReset:function(){},onStart:function(){},onUpdate:function(){},prefix:"",redraw:!1,separator:"",start:0,startOnMount:!0,suffix:"",style:void 0,useEasing:!0,preserveValue:!1});var k={innerHTML:null};t.default=_,t.useCountUp=function(e){var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},_.defaultProps,{},e),n=t.start,a=t.formattingFn,r=g(o.useState("function"==typeof a?a(n):n),2),i=r[0],s=r[1],l=o.useRef(null),c=function(){var e=l.current;if(null!==e)return e;var n=function(){var e=y(k,t),n=e.options.formattingFn;return e.options.formattingFn=function(){var e=n.apply(void 0,arguments);s(e)},e}();return l.current=n,n},u=function(){var e=t.onReset;c().reset(),e({pauseResume:f,start:m,update:h})},m=function e(){var n=t.onStart,a=t.onEnd;c().reset(),c().start((function(){a({pauseResume:f,reset:u,start:e,update:h})})),n({pauseResume:f,reset:u,update:h})},f=function(){var e=t.onPauseResume;c().pauseResume(),e({reset:u,start:m,update:h})},h=function(e){var n=t.onUpdate;c().update(e),n({pauseResume:f,reset:u,start:m})};return o.useEffect((function(){var e=t.delay,n=t.onStart,a=t.onEnd;if(t.startOnMount)var r=setTimeout((function(){n({pauseResume:f,reset:u,update:h}),c().start((function(){clearTimeout(r),a({pauseResume:f,reset:u,start:m,update:h})}))}),1e3*e);return u}),[]),{countUp:i,start:m,pauseResume:f,reset:u,update:h}}},function(e,t,n){"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=((a=n(370))&&a.__esModule?a:{default:a}).default;t.default=r},function(e,t,n){var a=n(388),r=n(111)((function(e,t){return null==e?{}:a(e,t)}));e.exports=r},function(e,t,n){var a=n(390),r=n(34),o=n(124),i=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return-1;var l=null==n?0:o(n);return l<0&&(l=i(s+l,0)),a(e,r(t,3),l)}},function(e,t,n){var a="undefined"!=typeof window,r=a?window.Masonry||n(393):null,o=a?n(398):null,i=n(399),s=n(403),l=n(414),c=n(8),u=n(114),d=n(2),p=n(416),m={enableResizableChildren:u.bool,disableImagesLoaded:u.bool,onImagesLoaded:u.func,updateOnEachImageLoad:u.bool,options:u.object,imagesLoadedOptions:u.object,elementType:u.string,onLayoutComplete:u.func,onRemoveComplete:u.func},f=p({masonry:!1,erd:void 0,latestKnownDomChildren:[],displayName:"MasonryComponent",imagesLoadedCancelRef:void 0,propTypes:m,getDefaultProps:function(){return{enableResizableChildren:!1,disableImagesLoaded:!1,updateOnEachImageLoad:!1,options:{},imagesLoadedOptions:{},className:"",elementType:"div",onLayoutComplete:function(){},onRemoveComplete:function(){}}},initializeMasonry:function(e){this.masonry&&!e||(this.masonry=new r(this.masonryContainer,this.props.options),this.props.onLayoutComplete&&this.masonry.on("layoutComplete",this.props.onLayoutComplete),this.props.onRemoveComplete&&this.masonry.on("removeComplete",this.props.onRemoveComplete),this.latestKnownDomChildren=this.getCurrentDomChildren())},getCurrentDomChildren:function(){var e=this.masonryContainer,t=this.props.options.itemSelector?e.querySelectorAll(this.props.options.itemSelector):e.children;return Array.prototype.slice.call(t)},diffDomChildren:function(){var e=!1,t=this.latestKnownDomChildren.filter((function(e){return!!e.parentNode}));t.length!==this.latestKnownDomChildren.length&&(e=!0);var n=this.getCurrentDomChildren(),a=t.filter((function(e){return!~n.indexOf(e)})),r=n.filter((function(e){return!~t.indexOf(e)})),o=0,i=r.filter((function(e){var t=o===n.indexOf(e);return t&&o++,t})),s=r.filter((function(e){return-1===i.indexOf(e)})),l=[];return 0===a.length&&(l=t.filter((function(e,t){return t!==n.indexOf(e)}))),this.latestKnownDomChildren=n,{old:t,new:n,removed:a,appended:s,prepended:i,moved:l,forceItemReload:e}},performLayout:function(){var e=this.diffDomChildren(),t=e.forceItemReload||e.moved.length>0;e.removed.length>0&&(this.props.enableResizableChildren&&e.removed.forEach(this.erd.removeAllListeners,this.erd),this.masonry.remove(e.removed),t=!0),e.appended.length>0&&(this.masonry.appended(e.appended),0===e.prepended.length&&(t=!0),this.props.enableResizableChildren&&e.appended.forEach(this.listenToElementResize,this)),e.prepended.length>0&&(this.masonry.prepended(e.prepended),this.props.enableResizableChildren&&e.prepended.forEach(this.listenToElementResize,this)),t&&this.masonry.reloadItems(),this.masonry.layout()},derefImagesLoaded:function(){this.imagesLoadedCancelRef(),this.imagesLoadedCancelRef=void 0},imagesLoaded:function(){if(!this.props.disableImagesLoaded){this.imagesLoadedCancelRef&&this.derefImagesLoaded();var e=this.props.updateOnEachImageLoad?"progress":"always",t=l(function(e){this.props.onImagesLoaded&&this.props.onImagesLoaded(e),this.masonry.layout()}.bind(this),100),n=o(this.masonryContainer,this.props.imagesLoadedOptions).on(e,t);this.imagesLoadedCancelRef=function(){n.off(e,t),t.cancel()}}},initializeResizableChildren:function(){this.props.enableResizableChildren&&(this.erd=s({strategy:"scroll"}),this.latestKnownDomChildren.forEach(this.listenToElementResize,this))},listenToElementResize:function(e){this.erd.listenTo(e,function(){this.masonry.layout()}.bind(this))},destroyErd:function(){this.erd&&this.latestKnownDomChildren.forEach(this.erd.uninstall,this.erd)},componentDidMount:function(){this.initializeMasonry(),this.initializeResizableChildren(),this.imagesLoaded()},componentDidUpdate:function(){this.performLayout(),this.imagesLoaded()},componentWillUnmount:function(){this.destroyErd(),this.props.onLayoutComplete&&this.masonry.off("layoutComplete",this.props.onLayoutComplete),this.props.onRemoveComplete&&this.masonry.off("removeComplete",this.props.onRemoveComplete),this.imagesLoadedCancelRef&&this.derefImagesLoaded(),this.masonry.destroy()},setRef:function(e){this.masonryContainer=e},render:function(){var e=c(this.props,Object.keys(m));return d.createElement(this.props.elementType,i({},e,{ref:this.setRef}),this.props.children)}});e.exports=f,e.exports.default=f},function(e,t,n){e.exports=function(e,t){var n,a,r=0;function o(){var o,i,s=n,l=arguments.length;e:for(;s;){if(s.args.length===arguments.length){for(i=0;i<l;i++)if(s.args[i]!==arguments[i]){s=s.next;continue e}return s!==n&&(s===a&&(a=s.prev),s.prev.next=s.next,s.next&&(s.next.prev=s.prev),s.next=n,s.prev=null,n.prev=s,n=s),s.val}s=s.next}for(o=new Array(l),i=0;i<l;i++)o[i]=arguments[i];return s={args:o,val:e.apply(null,o)},n?(n.prev=s,s.next=n):a=s,r===t.maxSize?(a=a.prev).next=null:r++,n=s,s.val}return t=t||{},o.clear=function(){n=null,a=null,r=0},o}},function(e,t,n){var a=n(101),r=n(420),o=n(124),i=Math.min;e.exports=function(e,t){if((e=o(e))<1||e>9007199254740991)return[];var n=4294967295,s=i(e,4294967295);t=r(t),e-=4294967295;for(var l=a(s,t);++n<e;)t(n);return l}},function(e,t){const n=wp.element.createElement,a=n("svg",{width:20,height:20},n("path",{fill:"#474745",d:"M0.1,10.7C-0.2,7.4,1.4,3,5.8,1C9.7-0.9,14.5,0.1,17,2.8c-0.4,0-0.8-0.1-1.2-0.1 c-1.5,0-2.7,1.1-3,2.6c0,0.2,0,0.4,0,0.6c0,3.2,0,6.4,0,9.5c0,1.1,0,2.3,0,3.4c0,0.6-0.3,1-0.8,1.1c-0.6,0.2-1.2-0.2-1.3-0.9 c0-0.1,0-0.2,0-0.2c0-1.4,0-2.8,0-4.2c0-0.7,0-1.5-0.1-2.2c-0.3-2.2-2.1-4-4.3-4.5C4,7.4,1.8,8.3,0.5,10.3 C0.4,10.4,0.3,10.5,0.1,10.7z"}),n("path",{fill:"#474745",d:"M14.5,18.9c0-0.7,0-1.3,0-1.9c0-1.1,0-2.3,0-3.4c0-0.2,0.1-0.3,0.3-0.3c0.7,0,1.4,0,2,0 c0.6,0,1-0.4,1-0.9c0-0.6-0.4-1-1-1c-0.7,0-1.4,0-2,0c-0.3,0-0.4-0.1-0.4-0.3c0-1.7,0-3.5,0-5.2c0-0.7,0.3-1.1,0.9-1.3 c0.5-0.1,1.1,0.2,1.2,0.7c0.1,0.2,0.1,0.4,0.1,0.6c0.1,0.6,0.5,0.9,1.1,0.9c0.6,0,1-0.5,0.9-1.2c0,0,0-0.1,0-0.2 c1.2,1.7,1.6,4.7,0.8,7.5C18.7,15.6,17.1,17.6,14.5,18.9z"}),n("path",{fill:"#474745",d:"M8.9,13.5c0,2.1-1.7,3.7-3.7,3.7s-3.7-1.7-3.7-3.8c0-2.1,1.7-3.7,3.8-3.7 C7.2,9.7,8.9,11.3,8.9,13.5z"}),n("path",{fill:"#474745",d:"M5.8,19.1c1.1-0.2,2.1-0.6,3-1.3C8.9,18.5,8.9,19.3,9,20C7.9,19.9,6.8,19.6,5.8,19.1z"}));wp.blocks.updateCategory("blockspare",{icon:a})},function(e,t,n){var a=n(68),r=n(292),o=n(26),i=n(293),s=n(299),l=n(302),c=n(303),u=n(304),d=n(305),p=n(108),m=n(80),f=n(30),h=n(310),b=n(311),g=n(316),y=n(3),_=n(73),k=n(318),w=n(5),v=n(320),M=n(13),L={};L["[object Arguments]"]=L["[object Array]"]=L["[object ArrayBuffer]"]=L["[object DataView]"]=L["[object Boolean]"]=L["[object Date]"]=L["[object Float32Array]"]=L["[object Float64Array]"]=L["[object Int8Array]"]=L["[object Int16Array]"]=L["[object Int32Array]"]=L["[object Map]"]=L["[object Number]"]=L["[object Object]"]=L["[object RegExp]"]=L["[object Set]"]=L["[object String]"]=L["[object Symbol]"]=L["[object Uint8Array]"]=L["[object Uint8ClampedArray]"]=L["[object Uint16Array]"]=L["[object Uint32Array]"]=!0,L["[object Error]"]=L["[object Function]"]=L["[object WeakMap]"]=!1,e.exports=function e(t,n,T,E,S,x){var C,D=1&n,O=2&n,Y=4&n;if(T&&(C=S?T(t,E,S,x):T(t)),void 0!==C)return C;if(!w(t))return t;var j=y(t);if(j){if(C=h(t),!D)return c(t,C)}else{var P=f(t),N="[object Function]"==P||"[object GeneratorFunction]"==P;if(_(t))return l(t,D);if("[object Object]"==P||"[object Arguments]"==P||N&&!S){if(C=O||N?{}:g(t),!D)return O?d(t,s(C,t)):u(t,i(C,t))}else{if(!L[P])return S?t:{};C=b(t,P,D)}}x||(x=new a);var B=x.get(t);if(B)return B;x.set(t,C),v(t)?t.forEach((function(a){C.add(e(a,n,T,a,t,x))})):k(t)&&t.forEach((function(a,r){C.set(r,e(a,n,T,r,t,x))}));var A=Y?O?m:p:O?keysIn:M,H=j?void 0:A(t);return r(H||t,(function(a,r){H&&(a=t[r=a]),o(C,r,e(a,n,T,r,t,x))})),C}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var a=n(22),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=a(t,e);return!(n<0)&&(n==t.length-1?t.pop():r.call(t,n,1),--this.size,!0)}},function(e,t,n){var a=n(22);e.exports=function(e){var t=this.__data__,n=a(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var a=n(22);e.exports=function(e){return a(this.__data__,e)>-1}},function(e,t,n){var a=n(22);e.exports=function(e,t){var n=this.__data__,r=a(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}},function(e,t,n){var a=n(21);e.exports=function(){this.__data__=new a,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var a=n(21),r=n(69),o=n(71);e.exports=function(e,t){var n=this.__data__;if(n instanceof a){var i=n.__data__;if(!r||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var a=n(95),r=n(277),o=n(5),i=n(97),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,d=c.hasOwnProperty,p=RegExp("^"+u.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||r(e))&&(a(e)?p:s).test(i(e))}},function(e,t,n){var a=n(11),r=Object.prototype,o=r.hasOwnProperty,i=r.toString,s=a?a.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var a=!0}catch(e){}var r=i.call(e);return a&&(t?e[s]=n:delete e[s]),r}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var a,r=n(278),o=(a=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var a=n(4)["__core-js_shared__"];e.exports=a},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var a=n(281),r=n(21),o=n(69);e.exports=function(){this.size=0,this.__data__={hash:new a,map:new(o||r),string:new a}}},function(e,t,n){var a=n(282),r=n(283),o=n(284),i=n(285),s=n(286);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var a=e[t];this.set(a[0],a[1])}}l.prototype.clear=a,l.prototype.delete=r,l.prototype.get=o,l.prototype.has=i,l.prototype.set=s,e.exports=l},function(e,t,n){var a=n(24);e.exports=function(){this.__data__=a?a(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var a=n(24),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(a){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return r.call(t,e)?t[e]:void 0}},function(e,t,n){var a=n(24),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return a?void 0!==t[e]:r.call(t,e)}},function(e,t,n){var a=n(24);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=a&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var a=n(25);e.exports=function(e){var t=a(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var a=n(25);e.exports=function(e){return a(this,e).get(e)}},function(e,t,n){var a=n(25);e.exports=function(e){return a(this,e).has(e)}},function(e,t,n){var a=n(25);e.exports=function(e,t){var n=a(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}},function(e,t){e.exports=function(e,t){for(var n=-1,a=null==e?0:e.length;++n<a&&!1!==t(e[n],n,e););return e}},function(e,t,n){var a=n(12),r=n(13);e.exports=function(e,t){return e&&a(t,r(t),e)}},function(e,t,n){var a=n(10),r=n(7);e.exports=function(e){return r(e)&&"[object Arguments]"==a(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var a=n(10),r=n(74),o=n(7),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&r(e.length)&&!!i[a(e)]}},function(e,t,n){var a=n(29),r=n(298),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!a(e))return r(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t,n){var a=n(103)(Object.keys,Object);e.exports=a},function(e,t,n){var a=n(12),r=n(104);e.exports=function(e,t){return e&&a(t,r(t),e)}},function(e,t,n){var a=n(5),r=n(29),o=n(301),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!a(e))return o(e);var t=r(e),n=[];for(var s in e)("constructor"!=s||!t&&i.call(e,s))&&n.push(s);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t,n){(function(e){var a=n(4),r=t&&!t.nodeType&&t,o=r&&"object"==typeof e&&e&&!e.nodeType&&e,i=o&&o.exports===r?a.Buffer:void 0,s=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,a=s?s(n):new e.constructor(n);return e.copy(a),a}}).call(this,n(27)(e))},function(e,t){e.exports=function(e,t){var n=-1,a=e.length;for(t||(t=Array(a));++n<a;)t[n]=e[n];return t}},function(e,t,n){var a=n(12),r=n(77);e.exports=function(e,t){return a(e,r(e),t)}},function(e,t,n){var a=n(12),r=n(107);e.exports=function(e,t){return a(e,r(e),t)}},function(e,t,n){var a=n(9)(n(4),"DataView");e.exports=a},function(e,t,n){var a=n(9)(n(4),"Promise");e.exports=a},function(e,t,n){var a=n(9)(n(4),"Set");e.exports=a},function(e,t,n){var a=n(9)(n(4),"WeakMap");e.exports=a},function(e,t){var n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=e.length,a=new e.constructor(t);return t&&"string"==typeof e[0]&&n.call(e,"index")&&(a.index=e.index,a.input=e.input),a}},function(e,t,n){var a=n(81),r=n(312),o=n(313),i=n(314),s=n(315);e.exports=function(e,t,n){var l=e.constructor;switch(t){case"[object ArrayBuffer]":return a(e);case"[object Boolean]":case"[object Date]":return new l(+e);case"[object DataView]":return r(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,n);case"[object Map]":return new l;case"[object Number]":case"[object String]":return new l(e);case"[object RegExp]":return o(e);case"[object Set]":return new l;case"[object Symbol]":return i(e)}}},function(e,t,n){var a=n(81);e.exports=function(e,t){var n=t?a(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},function(e,t){var n=/\w*$/;e.exports=function(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}},function(e,t,n){var a=n(11),r=a?a.prototype:void 0,o=r?r.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},function(e,t,n){var a=n(81);e.exports=function(e,t){var n=t?a(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},function(e,t,n){var a=n(317),r=n(79),o=n(29);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:a(r(e))}},function(e,t,n){var a=n(5),r=Object.create,o=function(){function e(){}return function(t){if(!a(t))return{};if(r)return r(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},function(e,t,n){var a=n(319),r=n(75),o=n(76),i=o&&o.isMap,s=i?r(i):a;e.exports=s},function(e,t,n){var a=n(30),r=n(7);e.exports=function(e){return r(e)&&"[object Map]"==a(e)}},function(e,t,n){var a=n(321),r=n(75),o=n(76),i=o&&o.isSet,s=i?r(i):a;e.exports=s},function(e,t,n){var a=n(30),r=n(7);e.exports=function(e){return r(e)&&"[object Set]"==a(e)}},function(e,t,n){var a=n(15),r=n(328),o=n(329),i=n(16);e.exports=function(e,t){return t=a(t,e),null==(e=o(e,t))||delete e[i(r(t))]}},function(e,t,n){var a=n(324),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=a((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(r,(function(e,n,a,r){t.push(a?r.replace(o,"$1"):n||e)})),t}));e.exports=i},function(e,t,n){var a=n(325);e.exports=function(e){var t=a(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var a=n(71);function r(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var a=arguments,r=t?t.apply(this,a):a[0],o=n.cache;if(o.has(r))return o.get(r);var i=e.apply(this,a);return n.cache=o.set(r,i)||o,i};return n.cache=new(r.Cache||a),n}r.Cache=a,e.exports=r},function(e,t,n){var a=n(327);e.exports=function(e){return null==e?"":a(e)}},function(e,t,n){var a=n(11),r=n(20),o=n(3),i=n(31),s=a?a.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return r(t,e)+"";if(i(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var a=n(32),r=n(330);e.exports=function(e,t){return t.length<2?e:a(e,r(t,0,-1))}},function(e,t){e.exports=function(e,t,n){var a=-1,r=e.length;t<0&&(t=-t>r?0:r+t),(n=n>r?r:n)<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(r);++a<r;)o[a]=e[a+t];return o}},function(e,t,n){var a=n(332);e.exports=function(e){return a(e)?void 0:e}},function(e,t,n){var a=n(10),r=n(79),o=n(7),i=Function.prototype,s=Object.prototype,l=i.toString,c=s.hasOwnProperty,u=l.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=a(e))return!1;var t=r(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},function(e,t,n){var a=n(334);e.exports=function(e){return(null==e?0:e.length)?a(e,1):[]}},function(e,t,n){var a=n(78),r=n(335);e.exports=function e(t,n,o,i,s){var l=-1,c=t.length;for(o||(o=r),s||(s=[]);++l<c;){var u=t[l];n>0&&o(u)?n>1?e(u,n-1,o,i,s):a(s,u):i||(s[s.length]=u)}return s}},function(e,t,n){var a=n(11),r=n(72),o=n(3),i=a?a.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||r(e)||!!(i&&e&&e[i])}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var a=n(338),r=n(99),o=n(33),i=r?function(e,t){return r(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:o;e.exports=i},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t){var n=Date.now;e.exports=function(e){var t=0,a=0;return function(){var r=n(),o=16-(r-a);if(a=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){"use strict"; |
| 41 |
/** @license React v16.13.1 |
| 42 |
* react.production.min.js |
| 43 |
* |
| 44 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 45 |
* |
| 46 |
* This source code is licensed under the MIT license found in the |
| 47 |
* LICENSE file in the root directory of this source tree. |
| 48 |
*/var a=n(83),r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,c=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,f=r?Symbol.for("react.memo"):60115,h=r?Symbol.for("react.lazy"):60116,b="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_={};function k(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||y}function w(){}function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||y}k.prototype.isReactComponent={},k.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(g(85));this.updater.enqueueSetState(this,e,t,"setState")},k.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},w.prototype=k.prototype;var M=v.prototype=new w;M.constructor=v,a(M,k.prototype),M.isPureReactComponent=!0;var L={current:null},T=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var a,r={},i=null,s=null;if(null!=t)for(a in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)T.call(t,a)&&!E.hasOwnProperty(a)&&(r[a]=t[a]);var l=arguments.length-2;if(1===l)r.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];r.children=c}if(e&&e.defaultProps)for(a in l=e.defaultProps)void 0===r[a]&&(r[a]=l[a]);return{$$typeof:o,type:e,key:i,ref:s,props:r,_owner:L.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var C=/\/+/g,D=[];function O(e,t,n,a){if(D.length){var r=D.pop();return r.result=e,r.keyPrefix=t,r.func=n,r.context=a,r.count=0,r}return{result:e,keyPrefix:t,func:n,context:a,count:0}}function Y(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>D.length&&D.push(e)}function j(e,t,n){return null==e?0:function e(t,n,a,r){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case o:case i:l=!0}}if(l)return a(r,t,""===n?"."+P(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c<t.length;c++){var u=n+P(s=t[c],c);l+=e(s,u,a,r)}else if(null===t||"object"!=typeof t?u=null:u="function"==typeof(u=b&&t[b]||t["@@iterator"])?u:null,"function"==typeof u)for(t=u.call(t),c=0;!(s=t.next()).done;)l+=e(s=s.value,u=n+P(s,c++),a,r);else if("object"===s)throw a=""+t,Error(g(31,"[object Object]"===a?"object with keys {"+Object.keys(t).join(", ")+"}":a,""));return l}(e,"",t,n)}function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function N(e,t){e.func.call(e.context,t,e.count++)}function B(e,t,n){var a=e.result,r=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?A(e,a,n,(function(e){return e})):null!=e&&(x(e)&&(e=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,r+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(C,"$&/")+"/")+n)),a.push(e))}function A(e,t,n,a,r){var o="";null!=n&&(o=(""+n).replace(C,"$&/")+"/"),j(e,B,t=O(t,o,a,r)),Y(t)}var H={current:null};function z(){var e=H.current;if(null===e)throw Error(g(321));return e}var I={ReactCurrentDispatcher:H,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:L,IsSomeRendererActing:{current:!1},assign:a};t.Children={map:function(e,t,n){if(null==e)return e;var a=[];return A(e,a,null,t,n),a},forEach:function(e,t,n){if(null==e)return e;j(e,N,t=O(null,null,t,n)),Y(t)},count:function(e){return j(e,(function(){return null}),null)},toArray:function(e){var t=[];return A(e,t,null,(function(e){return e})),t},only:function(e){if(!x(e))throw Error(g(143));return e}},t.Component=k,t.Fragment=s,t.Profiler=c,t.PureComponent=v,t.StrictMode=l,t.Suspense=m,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null==e)throw Error(g(267,e));var r=a({},e.props),i=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=L.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)T.call(t,u)&&!E.hasOwnProperty(u)&&(r[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)r.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];r.children=c}return{$$typeof:o,type:e.type,key:i,ref:s,props:r,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:d,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:u,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:p,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return z().useCallback(e,t)},t.useContext=function(e,t){return z().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return z().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return z().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return z().useLayoutEffect(e,t)},t.useMemo=function(e,t){return z().useMemo(e,t)},t.useReducer=function(e,t,n){return z().useReducer(e,t,n)},t.useRef=function(e){return z().useRef(e)},t.useState=function(e){return z().useState(e)},t.version="16.13.1"},function(e,t,n){"use strict";var a=n(342);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,i){if(i!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";var a=function(){};e.exports=a},function(e,t,n){var a,r;void 0===(r="function"==typeof(a=function(e,t,n){return function(e,t,n,a,r,o){function i(e){return"number"==typeof e&&!isNaN(e)}var s=this;if(s.version=function(){return"1.9.3"},s.options={useEasing:!0,useGrouping:!0,separator:",",decimal:".",easingFn:function(e,t,n,a){return n*(1-Math.pow(2,-10*e/a))*1024/1023+t},formattingFn:function(e){var t,n,a,r,o,i,l=e<0;if(e=Math.abs(e).toFixed(s.decimals),n=(t=(e+="").split("."))[0],a=t.length>1?s.options.decimal+t[1]:"",s.options.useGrouping){for(r="",o=0,i=n.length;o<i;++o)0!==o&&o%3==0&&(r=s.options.separator+r),r=n[i-o-1]+r;n=r}return s.options.numerals.length&&(n=n.replace(/[0-9]/g,(function(e){return s.options.numerals[+e]})),a=a.replace(/[0-9]/g,(function(e){return s.options.numerals[+e]}))),(l?"-":"")+s.options.prefix+n+a+s.options.suffix},prefix:"",suffix:"",numerals:[]},o&&"object"==typeof o)for(var l in s.options)o.hasOwnProperty(l)&&null!==o[l]&&(s.options[l]=o[l]);""===s.options.separator?s.options.useGrouping=!1:s.options.separator=""+s.options.separator;for(var c=0,u=["webkit","moz","ms","o"],d=0;d<u.length&&!window.requestAnimationFrame;++d)window.requestAnimationFrame=window[u[d]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[u[d]+"CancelAnimationFrame"]||window[u[d]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var n=(new Date).getTime(),a=Math.max(0,16-(n-c)),r=window.setTimeout((function(){e(n+a)}),a);return c=n+a,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)}),s.initialize=function(){return!(!s.initialized&&(s.error="",s.d="string"==typeof e?document.getElementById(e):e,s.d?(s.startVal=Number(t),s.endVal=Number(n),i(s.startVal)&&i(s.endVal)?(s.decimals=Math.max(0,a||0),s.dec=Math.pow(10,s.decimals),s.duration=1e3*Number(r)||2e3,s.countDown=s.startVal>s.endVal,s.frameVal=s.startVal,s.initialized=!0,0):(s.error="[CountUp] startVal ("+t+") or endVal ("+n+") is not a number",1)):(s.error="[CountUp] target is null or undefined",1)))},s.printValue=function(e){var t=s.options.formattingFn(e);"INPUT"===s.d.tagName?this.d.value=t:"text"===s.d.tagName||"tspan"===s.d.tagName?this.d.textContent=t:this.d.innerHTML=t},s.count=function(e){s.startTime||(s.startTime=e),s.timestamp=e;var t=e-s.startTime;s.remaining=s.duration-t,s.options.useEasing?s.countDown?s.frameVal=s.startVal-s.options.easingFn(t,0,s.startVal-s.endVal,s.duration):s.frameVal=s.options.easingFn(t,s.startVal,s.endVal-s.startVal,s.duration):s.countDown?s.frameVal=s.startVal-(s.startVal-s.endVal)*(t/s.duration):s.frameVal=s.startVal+(s.endVal-s.startVal)*(t/s.duration),s.countDown?s.frameVal=s.frameVal<s.endVal?s.endVal:s.frameVal:s.frameVal=s.frameVal>s.endVal?s.endVal:s.frameVal,s.frameVal=Math.round(s.frameVal*s.dec)/s.dec,s.printValue(s.frameVal),t<s.duration?s.rAF=requestAnimationFrame(s.count):s.callback&&s.callback()},s.start=function(e){s.initialize()&&(s.callback=e,s.rAF=requestAnimationFrame(s.count))},s.pauseResume=function(){s.paused?(s.paused=!1,delete s.startTime,s.duration=s.remaining,s.startVal=s.frameVal,requestAnimationFrame(s.count)):(s.paused=!0,cancelAnimationFrame(s.rAF))},s.reset=function(){s.paused=!1,delete s.startTime,s.initialized=!1,s.initialize()&&(cancelAnimationFrame(s.rAF),s.printValue(s.startVal))},s.update=function(e){if(s.initialize()){if(!i(e=Number(e)))return void(s.error="[CountUp] update() - new endVal is not a number: "+e);s.error="",e!==s.frameVal&&(cancelAnimationFrame(s.rAF),s.paused=!1,delete s.startTime,s.startVal=s.frameVal,s.endVal=e,s.countDown=s.startVal>s.endVal,s.rAF=requestAnimationFrame(s.count))}},s.initialize()&&s.printValue(s.startVal)}})?a.call(t,n,t,e):a)||(e.exports=r)},function(e,t,n){var a=n(115);e.exports=function(e,t){var n=[];return a(e,(function(e,a,r){t(e,a,r)&&n.push(e)})),n}},function(e,t,n){var a=n(347),r=n(13);e.exports=function(e,t){return e&&a(e,t,r)}},function(e,t,n){var a=n(348)();e.exports=a},function(e,t){e.exports=function(e){return function(t,n,a){for(var r=-1,o=Object(t),i=a(t),s=i.length;s--;){var l=i[e?s:++r];if(!1===n(o[l],l,o))break}return t}}},function(e,t,n){var a=n(14);e.exports=function(e,t){return function(n,r){if(null==n)return n;if(!a(n))return e(n,r);for(var o=n.length,i=t?o:-1,s=Object(n);(t?i--:++i<o)&&!1!==r(s[i],i,s););return n}}},function(e,t,n){var a=n(351),r=n(362),o=n(119);e.exports=function(e){var t=r(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||a(n,e,t)}}},function(e,t,n){var a=n(68),r=n(116);e.exports=function(e,t,n,o){var i=n.length,s=i,l=!o;if(null==e)return!s;for(e=Object(e);i--;){var c=n[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i<s;){var u=(c=n[i])[0],d=e[u],p=c[1];if(l&&c[2]){if(void 0===d&&!(u in e))return!1}else{var m=new a;if(o)var f=o(d,p,u,e,t,m);if(!(void 0===f?r(p,d,3,o,m):f))return!1}}return!0}},function(e,t,n){var a=n(68),r=n(117),o=n(358),i=n(361),s=n(30),l=n(3),c=n(73),u=n(102),d="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,f,h){var b=l(e),g=l(t),y=b?"[object Array]":s(e),_=g?"[object Array]":s(t),k=(y="[object Arguments]"==y?d:y)==d,w=(_="[object Arguments]"==_?d:_)==d,v=y==_;if(v&&c(e)){if(!c(t))return!1;b=!0,k=!1}if(v&&!k)return h||(h=new a),b||u(e)?r(e,t,n,m,f,h):o(e,t,y,n,m,f,h);if(!(1&n)){var M=k&&p.call(e,"__wrapped__"),L=w&&p.call(t,"__wrapped__");if(M||L){var T=M?e.value():e,E=L?t.value():t;return h||(h=new a),f(T,E,n,m,h)}}return!!v&&(h||(h=new a),i(e,t,n,m,f,h))}},function(e,t,n){var a=n(71),r=n(354),o=n(355);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new a;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=r,i.prototype.has=o,e.exports=i},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,a=null==e?0:e.length;++n<a;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var a=n(11),r=n(110),o=n(23),i=n(117),s=n(359),l=n(360),c=a?a.prototype:void 0,u=c?c.valueOf:void 0;e.exports=function(e,t,n,a,c,d,p){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new r(e),new r(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var m=s;case"[object Set]":var f=1&a;if(m||(m=l),e.size!=t.size&&!f)return!1;var h=p.get(e);if(h)return h==t;a|=2,p.set(e,t);var b=i(m(e),m(t),a,c,d,p);return p.delete(e),b;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,a){n[++t]=[a,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var a=n(108),r=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,s){var l=1&n,c=a(e),u=c.length;if(u!=a(t).length&&!l)return!1;for(var d=u;d--;){var p=c[d];if(!(l?p in t:r.call(t,p)))return!1}var m=s.get(e);if(m&&s.get(t))return m==t;var f=!0;s.set(e,t),s.set(t,e);for(var h=l;++d<u;){var b=e[p=c[d]],g=t[p];if(o)var y=l?o(g,b,p,t,e,s):o(b,g,p,e,t,s);if(!(void 0===y?b===g||i(b,g,n,o,s):y)){f=!1;break}h||(h="constructor"==p)}if(f&&!h){var _=e.constructor,k=t.constructor;_==k||!("constructor"in e)||!("constructor"in t)||"function"==typeof _&&_ instanceof _&&"function"==typeof k&&k instanceof k||(f=!1)}return s.delete(e),s.delete(t),f}},function(e,t,n){var a=n(118),r=n(13);e.exports=function(e){for(var t=r(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,a(i)]}return t}},function(e,t,n){var a=n(116),r=n(36),o=n(120),i=n(82),s=n(118),l=n(119),c=n(16);e.exports=function(e,t){return i(e)&&s(t)?l(c(e),t):function(n){var i=r(n,e);return void 0===i&&i===t?o(n,e):a(t,i,3)}}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var a=n(15),r=n(72),o=n(3),i=n(28),s=n(74),l=n(16);e.exports=function(e,t,n){for(var c=-1,u=(t=a(t,e)).length,d=!1;++c<u;){var p=l(t[c]);if(!(d=null!=e&&n(e,p)))break;e=e[p]}return d||++c!=u?d:!!(u=null==e?0:e.length)&&s(u)&&i(p,u)&&(o(e)||r(e))}},function(e,t,n){var a=n(367),r=n(368),o=n(82),i=n(16);e.exports=function(e){return o(e)?a(i(e)):r(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var a=n(32);e.exports=function(e){return function(t){return a(t,e)}}},function(e,t,n){var a=n(115),r=n(14);e.exports=function(e,t){var n=-1,o=r(e)?Array(e.length):[];return a(e,(function(e,a,r){o[++n]=t(e,a,r)})),o}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=l(n(2)),r=n(371),o=l(n(381)),i=l(n(383)),s=n(35);function l(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="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})(e)}function u(){return(u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){b(e,t,n[t])}))}return e}function p(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function m(e){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function f(e,t){return(f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=(0,s.canUseDOM)()&&n(384),y=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?h(e):t}(this,m(t).call(this,e)),b(h(h(n)),"innerSliderRefHandler",(function(e){return n.innerSlider=e})),b(h(h(n)),"slickPrev",(function(){return n.innerSlider.slickPrev()})),b(h(h(n)),"slickNext",(function(){return n.innerSlider.slickNext()})),b(h(h(n)),"slickGoTo",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return n.innerSlider.slickGoTo(e,t)})),b(h(h(n)),"slickPause",(function(){return n.innerSlider.pause("paused")})),b(h(h(n)),"slickPlay",(function(){return n.innerSlider.autoPlay("play")})),n.state={breakpoint:null},n._responsiveMediaHandlers=[],n}var n,l,y;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(t,e),n=t,(l=[{key:"media",value:function(e,t){g.register(e,t),this._responsiveMediaHandlers.push({query:e,handler:t})}},{key:"componentWillMount",value:function(){var e=this;if(this.props.responsive){var t=this.props.responsive.map((function(e){return e.breakpoint}));t.sort((function(e,t){return e-t})),t.forEach((function(n,a){var r;r=0===a?(0,o.default)({minWidth:0,maxWidth:n}):(0,o.default)({minWidth:t[a-1]+1,maxWidth:n}),(0,s.canUseDOM)()&&e.media(r,(function(){e.setState({breakpoint:n})}))}));var n=(0,o.default)({minWidth:t.slice(-1)[0]});(0,s.canUseDOM)()&&this.media(n,(function(){e.setState({breakpoint:null})}))}}},{key:"componentWillUnmount",value:function(){this._responsiveMediaHandlers.forEach((function(e){g.unregister(e.query,e.handler)}))}},{key:"render",value:function(){var e,t,n=this;(e=this.state.breakpoint?"unslick"===(t=this.props.responsive.filter((function(e){return e.breakpoint===n.state.breakpoint})))[0].settings?"unslick":d({},i.default,this.props,t[0].settings):d({},i.default,this.props)).centerMode&&(e.slidesToScroll,e.slidesToScroll=1),e.fade&&(e.slidesToShow,e.slidesToScroll,e.slidesToShow=1,e.slidesToScroll=1);var o=a.default.Children.toArray(this.props.children);o=o.filter((function(e){return"string"==typeof e?!!e.trim():!!e})),e.variableWidth&&(e.rows>1||e.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),e.variableWidth=!1);for(var s=[],l=null,c=0;c<o.length;c+=e.rows*e.slidesPerRow){for(var p=[],m=c;m<c+e.rows*e.slidesPerRow;m+=e.slidesPerRow){for(var f=[],h=m;h<m+e.slidesPerRow&&(e.variableWidth&&o[h].props.style&&(l=o[h].props.style.width),!(h>=o.length));h+=1)f.push(a.default.cloneElement(o[h],{key:100*c+10*m+h,tabIndex:-1,style:{width:"".concat(100/e.slidesPerRow,"%"),display:"inline-block"}}));p.push(a.default.createElement("div",{key:10*c+m},f))}e.variableWidth?s.push(a.default.createElement("div",{key:c,style:{width:l}},p)):s.push(a.default.createElement("div",{key:c},p))}if("unslick"===e){var b="regular slider "+(this.props.className||"");return a.default.createElement("div",{className:b},s)}return s.length<=e.slidesToShow&&(e.unslick=!0),a.default.createElement(r.InnerSlider,u({ref:this.innerSliderRefHandler},e),s)}}])&&p(n.prototype,l),y&&p(n,y),t}(a.default.Component);t.default=y},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InnerSlider=void 0;var a=m(n(2)),r=m(n(121)),o=m(n(375)),i=m(n(376)),s=m(n(0)),l=n(35),c=n(377),u=n(378),d=n(379),p=m(n(380));function m(e){return e&&e.__esModule?e:{default:e}}function f(){return(f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function h(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function b(e){return(b="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})(e)}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){w(e,t,n[t])}))}return e}function y(e){return(y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),n=function(e,t){return!t||"object"!==b(t)&&"function"!=typeof t?k(e):t}(this,y(t).call(this,e)),w(k(k(n)),"listRefHandler",(function(e){return n.list=e})),w(k(k(n)),"trackRefHandler",(function(e){return n.track=e})),w(k(k(n)),"adaptHeight",(function(){if(n.props.adaptiveHeight&&n.list){var e=n.list.querySelector('[data-index="'.concat(n.state.currentSlide,'"]'));n.list.style.height=(0,l.getHeight)(e)+"px"}})),w(k(k(n)),"componentWillMount",(function(){if(n.ssrInit(),n.props.onInit&&n.props.onInit(),n.props.lazyLoad){var e=(0,l.getOnDemandLazySlides)(g({},n.props,n.state));e.length>0&&(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e))}})),w(k(k(n)),"componentDidMount",(function(){var e=g({listRef:n.list,trackRef:n.track},n.props);n.updateState(e,!0,(function(){n.adaptHeight(),n.props.autoplay&&n.autoPlay("update")})),"progressive"===n.props.lazyLoad&&(n.lazyLoadTimer=setInterval(n.progressiveLazyLoad,1e3)),n.ro=new p.default((function(){n.state.animating?(n.onWindowResized(!1),n.callbackTimers.push(setTimeout((function(){return n.onWindowResized()}),n.props.speed))):n.onWindowResized()})),n.ro.observe(n.list),Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),(function(e){e.onfocus=n.props.pauseOnFocus?n.onSlideFocus:null,e.onblur=n.props.pauseOnFocus?n.onSlideBlur:null})),window&&(window.addEventListener?window.addEventListener("resize",n.onWindowResized):window.attachEvent("onresize",n.onWindowResized))})),w(k(k(n)),"componentWillUnmount",(function(){n.animationEndCallback&&clearTimeout(n.animationEndCallback),n.lazyLoadTimer&&clearInterval(n.lazyLoadTimer),n.callbackTimers.length&&(n.callbackTimers.forEach((function(e){return clearTimeout(e)})),n.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",n.onWindowResized):window.detachEvent("onresize",n.onWindowResized),n.autoplayTimer&&clearInterval(n.autoplayTimer)})),w(k(k(n)),"componentWillReceiveProps",(function(e){for(var t=g({listRef:n.list,trackRef:n.track},e,n.state),r=!1,o=Object.keys(n.props),i=0;i<o.length;i++){var s=o[i];if(!e.hasOwnProperty(s)){r=!0;break}if("object"!==b(e[s])&&"function"!=typeof e[s]&&e[s]!==n.props[s]){r=!0;break}}n.updateState(t,r,(function(){n.state.currentSlide>=a.default.Children.count(e.children)&&n.changeSlide({message:"index",index:a.default.Children.count(e.children)-e.slidesToShow,currentSlide:n.state.currentSlide}),e.autoplay?n.autoPlay("update"):n.pause("paused")}))})),w(k(k(n)),"componentDidUpdate",(function(){if(n.checkImagesLoad(),n.props.onReInit&&n.props.onReInit(),n.props.lazyLoad){var e=(0,l.getOnDemandLazySlides)(g({},n.props,n.state));e.length>0&&(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e))}n.adaptHeight()})),w(k(k(n)),"onWindowResized",(function(e){n.debouncedResize&&n.debouncedResize.cancel(),n.debouncedResize=(0,i.default)((function(){return n.resizeWindow(e)}),50),n.debouncedResize()})),w(k(k(n)),"resizeWindow",(function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(r.default.findDOMNode(n.track)){var t=g({listRef:n.list,trackRef:n.track},n.props,n.state);n.updateState(t,e,(function(){n.props.autoplay?n.autoPlay("update"):n.pause("paused")})),n.setState({animating:!1}),clearTimeout(n.animationEndCallback),delete n.animationEndCallback}})),w(k(k(n)),"updateState",(function(e,t,r){var o=(0,l.initializedState)(e);e=g({},e,o,{slideIndex:o.currentSlide}),e=g({},e,{left:(0,l.getTrackLeft)(e)});var i=(0,l.getTrackCSS)(e);(t||a.default.Children.count(n.props.children)!==a.default.Children.count(e.children))&&(o.trackStyle=i),n.setState(o,r)})),w(k(k(n)),"ssrInit",(function(){if(n.props.variableWidth){var e=0,t=0,r=[],o=(0,l.getPreClones)(g({},n.props,n.state,{slideCount:n.props.children.length})),i=(0,l.getPostClones)(g({},n.props,n.state,{slideCount:n.props.children.length}));n.props.children.forEach((function(t){r.push(t.props.style.width),e+=t.props.style.width}));for(var s=0;s<o;s++)t+=r[r.length-1-s],e+=r[r.length-1-s];for(var c=0;c<i;c++)e+=r[c];for(var u=0;u<n.state.currentSlide;u++)t+=r[u];var d={width:e+"px",left:-t+"px"};if(n.props.centerMode){var p="".concat(r[n.state.currentSlide],"px");d.left="calc(".concat(d.left," + (100% - ").concat(p,") / 2 ) ")}n.setState({trackStyle:d})}else{var m=a.default.Children.count(n.props.children),f=g({},n.props,n.state,{slideCount:m}),h=(0,l.getPreClones)(f)+(0,l.getPostClones)(f)+m,b=100/n.props.slidesToShow*h,y=100/h,_=-y*((0,l.getPreClones)(f)+n.state.currentSlide)*b/100;n.props.centerMode&&(_+=(100-y*b/100)/2);var k={width:b+"%",left:_+"%"};n.setState({slideWidth:y+"%",trackStyle:k})}})),w(k(k(n)),"checkImagesLoad",(function(){var e=document.querySelectorAll(".slick-slide img"),t=e.length,a=0;Array.prototype.forEach.call(e,(function(e){var r=function(){return++a&&a>=t&&n.onWindowResized()};if(e.onclick){var o=e.onclick;e.onclick=function(){o(),e.parentNode.focus()}}else e.onclick=function(){return e.parentNode.focus()};e.onload||(n.props.lazyLoad?e.onload=function(){n.adaptHeight(),n.callbackTimers.push(setTimeout(n.onWindowResized,n.props.speed))}:(e.onload=r,e.onerror=function(){r(),n.props.onLazyLoadError&&n.props.onLazyLoadError()}))}))})),w(k(k(n)),"progressiveLazyLoad",(function(){for(var e=[],t=g({},n.props,n.state),a=n.state.currentSlide;a<n.state.slideCount+(0,l.getPostClones)(t);a++)if(n.state.lazyLoadedList.indexOf(a)<0){e.push(a);break}for(var r=n.state.currentSlide-1;r>=-(0,l.getPreClones)(t);r--)if(n.state.lazyLoadedList.indexOf(r)<0){e.push(r);break}e.length>0?(n.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),n.props.onLazyLoad&&n.props.onLazyLoad(e)):n.lazyLoadTimer&&(clearInterval(n.lazyLoadTimer),delete n.lazyLoadTimer)})),w(k(k(n)),"slideHandler",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=n.props,r=a.asNavFor,o=a.beforeChange,i=a.onLazyLoad,s=a.speed,c=a.afterChange,u=n.state.currentSlide,d=(0,l.slideHandler)(g({index:e},n.props,n.state,{trackRef:n.track,useCSS:n.props.useCSS&&!t})),p=d.state,m=d.nextState;if(p){o&&o(u,p.currentSlide);var f=p.lazyLoadedList.filter((function(e){return n.state.lazyLoadedList.indexOf(e)<0}));i&&f.length>0&&i(f),n.setState(p,(function(){r&&r.innerSlider.state.currentSlide!==n.state.currentSlide&&r.innerSlider.slideHandler(e),m&&(n.animationEndCallback=setTimeout((function(){var e=m.animating,t=h(m,["animating"]);n.setState(t,(function(){n.callbackTimers.push(setTimeout((function(){return n.setState({animating:e})}),10)),c&&c(p.currentSlide),delete n.animationEndCallback}))}),s))}))}})),w(k(k(n)),"changeSlide",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=g({},n.props,n.state),r=(0,l.changeSlide)(a,e);(0===r||r)&&(!0===t?n.slideHandler(r,t):n.slideHandler(r))})),w(k(k(n)),"clickHandler",(function(e){!1===n.clickable&&(e.stopPropagation(),e.preventDefault()),n.clickable=!0})),w(k(k(n)),"keyHandler",(function(e){var t=(0,l.keyHandler)(e,n.props.accessibility,n.props.rtl);""!==t&&n.changeSlide({message:t})})),w(k(k(n)),"selectHandler",(function(e){n.changeSlide(e)})),w(k(k(n)),"disableBodyScroll",(function(){window.ontouchmove=function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1}})),w(k(k(n)),"enableBodyScroll",(function(){window.ontouchmove=null})),w(k(k(n)),"swipeStart",(function(e){n.props.verticalSwiping&&n.disableBodyScroll();var t=(0,l.swipeStart)(e,n.props.swipe,n.props.draggable);""!==t&&n.setState(t)})),w(k(k(n)),"swipeMove",(function(e){var t=(0,l.swipeMove)(e,g({},n.props,n.state,{trackRef:n.track,listRef:n.list,slideIndex:n.state.currentSlide}));t&&(t.swiping&&(n.clickable=!1),n.setState(t))})),w(k(k(n)),"swipeEnd",(function(e){var t=(0,l.swipeEnd)(e,g({},n.props,n.state,{trackRef:n.track,listRef:n.list,slideIndex:n.state.currentSlide}));if(t){var a=t.triggerSlideHandler;delete t.triggerSlideHandler,n.setState(t),void 0!==a&&(n.slideHandler(a),n.props.verticalSwiping&&n.enableBodyScroll())}})),w(k(k(n)),"slickPrev",(function(){n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"previous"})}),0))})),w(k(k(n)),"slickNext",(function(){n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"next"})}),0))})),w(k(k(n)),"slickGoTo",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e=Number(e),isNaN(e))return"";n.callbackTimers.push(setTimeout((function(){return n.changeSlide({message:"index",index:e,currentSlide:n.state.currentSlide},t)}),0))})),w(k(k(n)),"play",(function(){var e;if(n.props.rtl)e=n.state.currentSlide-n.props.slidesToScroll;else{if(!(0,l.canGoNext)(g({},n.props,n.state)))return!1;e=n.state.currentSlide+n.props.slidesToScroll}n.slideHandler(e)})),w(k(k(n)),"autoPlay",(function(e){n.autoplayTimer&&clearInterval(n.autoplayTimer);var t=n.state.autoplaying;if("update"===e){if("hovered"===t||"focused"===t||"paused"===t)return}else if("leave"===e){if("paused"===t||"focused"===t)return}else if("blur"===e&&("paused"===t||"hovered"===t))return;n.autoplayTimer=setInterval(n.play,n.props.autoplaySpeed+50),n.setState({autoplaying:"playing"})})),w(k(k(n)),"pause",(function(e){n.autoplayTimer&&(clearInterval(n.autoplayTimer),n.autoplayTimer=null);var t=n.state.autoplaying;"paused"===e?n.setState({autoplaying:"paused"}):"focused"===e?"hovered"!==t&&"playing"!==t||n.setState({autoplaying:"focused"}):"playing"===t&&n.setState({autoplaying:"hovered"})})),w(k(k(n)),"onDotsOver",(function(){return n.props.autoplay&&n.pause("hovered")})),w(k(k(n)),"onDotsLeave",(function(){return n.props.autoplay&&"hovered"===n.state.autoplaying&&n.autoPlay("leave")})),w(k(k(n)),"onTrackOver",(function(){return n.props.autoplay&&n.pause("hovered")})),w(k(k(n)),"onTrackLeave",(function(){return n.props.autoplay&&"hovered"===n.state.autoplaying&&n.autoPlay("leave")})),w(k(k(n)),"onSlideFocus",(function(){return n.props.autoplay&&n.pause("focused")})),w(k(k(n)),"onSlideBlur",(function(){return n.props.autoplay&&"focused"===n.state.autoplaying&&n.autoPlay("blur")})),w(k(k(n)),"render",(function(){var e,t,r,o=(0,s.default)("slick-slider",n.props.className,{"slick-vertical":n.props.vertical,"slick-initialized":!0}),i=g({},n.props,n.state),p=(0,l.extractObject)(i,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding"]),m=n.props.pauseOnHover;if(p=g({},p,{onMouseEnter:m?n.onTrackOver:null,onMouseLeave:m?n.onTrackLeave:null,onMouseOver:m?n.onTrackOver:null,focusOnSelect:n.props.focusOnSelect?n.selectHandler:null}),!0===n.props.dots&&n.state.slideCount>=n.props.slidesToShow){var h=(0,l.extractObject)(i,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","customPaging","infinite","appendDots"]),b=n.props.pauseOnDotsHover;h=g({},h,{clickHandler:n.changeSlide,onMouseEnter:b?n.onDotsLeave:null,onMouseOver:b?n.onDotsOver:null,onMouseLeave:b?n.onDotsLeave:null}),e=a.default.createElement(u.Dots,h)}var y=(0,l.extractObject)(i,["infinite","centerMode","currentSlide","slideCount","slidesToShow","prevArrow","nextArrow"]);y.clickHandler=n.changeSlide,n.props.arrows&&(t=a.default.createElement(d.PrevArrow,y),r=a.default.createElement(d.NextArrow,y));var _=null;n.props.vertical&&(_={height:n.state.listHeight});var k=null;!1===n.props.vertical?!0===n.props.centerMode&&(k={padding:"0px "+n.props.centerPadding}):!0===n.props.centerMode&&(k={padding:n.props.centerPadding+" 0px"});var w=g({},_,k),v=n.props.touchMove,M={className:"slick-list",style:w,onClick:n.clickHandler,onMouseDown:v?n.swipeStart:null,onMouseMove:n.state.dragging&&v?n.swipeMove:null,onMouseUp:v?n.swipeEnd:null,onMouseLeave:n.state.dragging&&v?n.swipeEnd:null,onTouchStart:v?n.swipeStart:null,onTouchMove:n.state.dragging&&v?n.swipeMove:null,onTouchEnd:v?n.swipeEnd:null,onTouchCancel:n.state.dragging&&v?n.swipeEnd:null,onKeyDown:n.props.accessibility?n.keyHandler:null},L={className:o,dir:"ltr"};return n.props.unslick&&(M={className:"slick-list"},L={className:o}),a.default.createElement("div",L,n.props.unslick?"":t,a.default.createElement("div",f({ref:n.listRefHandler},M),a.default.createElement(c.Track,f({ref:n.trackRefHandler},p),n.props.children)),n.props.unslick?"":r,n.props.unslick?"":e)})),n.list=null,n.track=null,n.state=g({},o.default,{currentSlide:n.props.initialSlide,slideCount:a.default.Children.count(n.props.children)}),n.callbackTimers=[],n.clickable=!0,n.debouncedResize=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_(e,t)}(t,e),t}(a.default.Component);t.InnerSlider=v},function(e,t,n){"use strict"; |
| 49 |
/** @license React v16.13.1 |
| 50 |
* react-dom.production.min.js |
| 51 |
* |
| 52 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 53 |
* |
| 54 |
* This source code is licensed under the MIT license found in the |
| 55 |
* LICENSE file in the root directory of this source tree. |
| 56 |
*/var a=n(2),r=n(83),o=n(373);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!a)throw Error(i(227));function s(e,t,n,a,r,o,i,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}var l=!1,c=null,u=!1,d=null,p={onError:function(e){l=!0,c=e}};function m(e,t,n,a,r,o,i,u,d){l=!1,c=null,s.apply(p,arguments)}var f=null,h=null,b=null;function g(e,t,n){var a=e.type||"unknown-event";e.currentTarget=b(n),function(e,t,n,a,r,o,s,p,f){if(m.apply(this,arguments),l){if(!l)throw Error(i(198));var h=c;l=!1,c=null,u||(u=!0,d=h)}}(a,t,void 0,e),e.currentTarget=null}var y=null,_={};function k(){if(y)for(var e in _){var t=_[e],n=y.indexOf(e);if(!(-1<n))throw Error(i(96,e));if(!v[n]){if(!t.extractEvents)throw Error(i(97,e));for(var a in v[n]=t,n=t.eventTypes){var r=void 0,o=n[a],s=t,l=a;if(M.hasOwnProperty(l))throw Error(i(99,l));M[l]=o;var c=o.phasedRegistrationNames;if(c){for(r in c)c.hasOwnProperty(r)&&w(c[r],s,l);r=!0}else o.registrationName?(w(o.registrationName,s,l),r=!0):r=!1;if(!r)throw Error(i(98,a,e))}}}}function w(e,t,n){if(L[e])throw Error(i(100,e));L[e]=t,T[e]=t.eventTypes[n].dependencies}var v=[],M={},L={},T={};function E(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var a=e[t];if(!_.hasOwnProperty(t)||_[t]!==a){if(_[t])throw Error(i(102,t));_[t]=a,n=!0}}n&&k()}var S=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),x=null,C=null,D=null;function O(e){if(e=h(e)){if("function"!=typeof x)throw Error(i(280));var t=e.stateNode;t&&(t=f(t),x(e.stateNode,e.type,t))}}function Y(e){C?D?D.push(e):D=[e]:C=e}function j(){if(C){var e=C,t=D;if(D=C=null,O(e),t)for(e=0;e<t.length;e++)O(t[e])}}function P(e,t){return e(t)}function N(e,t,n,a,r){return e(t,n,a,r)}function B(){}var A=P,H=!1,z=!1;function I(){null===C&&null===D||(B(),j())}function F(e,t,n){if(z)return e(t,n);z=!0;try{return A(e,t,n)}finally{z=!1,I()}}var R=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,W=Object.prototype.hasOwnProperty,U={},q={};function G(e,t,n,a,r,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=a,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o}var V={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){V[e]=new G(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];V[t]=new G(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){V[e]=new G(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){V[e]=new G(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){V[e]=new G(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){V[e]=new G(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){V[e]=new G(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){V[e]=new G(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){V[e]=new G(e,5,!1,e.toLowerCase(),null,!1)}));var $=/[\-:]([a-z])/g;function J(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace($,J);V[t]=new G(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){V[e]=new G(e,1,!1,e.toLowerCase(),null,!1)})),V.xlinkHref=new G("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){V[e]=new G(e,1,!1,e.toLowerCase(),null,!0)}));var X=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function Q(e,t,n,a){var r=V.hasOwnProperty(t)?V[t]:null;(null!==r?0===r.type:!a&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,a){if(null==t||function(e,t,n,a){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!a&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,a))return!0;if(a)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,a)&&(n=null),a||null===r?function(e){return!!W.call(q,e)||!W.call(U,e)&&(R.test(e)?q[e]=!0:(U[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,a=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,a?e.setAttributeNS(a,t,n):e.setAttribute(t,n))))}X.hasOwnProperty("ReactCurrentDispatcher")||(X.ReactCurrentDispatcher={current:null}),X.hasOwnProperty("ReactCurrentBatchConfig")||(X.ReactCurrentBatchConfig={suspense:null});var K=/^(.*)[\\\/]/,Z="function"==typeof Symbol&&Symbol.for,ee=Z?Symbol.for("react.element"):60103,te=Z?Symbol.for("react.portal"):60106,ne=Z?Symbol.for("react.fragment"):60107,ae=Z?Symbol.for("react.strict_mode"):60108,re=Z?Symbol.for("react.profiler"):60114,oe=Z?Symbol.for("react.provider"):60109,ie=Z?Symbol.for("react.context"):60110,se=Z?Symbol.for("react.concurrent_mode"):60111,le=Z?Symbol.for("react.forward_ref"):60112,ce=Z?Symbol.for("react.suspense"):60113,ue=Z?Symbol.for("react.suspense_list"):60120,de=Z?Symbol.for("react.memo"):60115,pe=Z?Symbol.for("react.lazy"):60116,me=Z?Symbol.for("react.block"):60121,fe="function"==typeof Symbol&&Symbol.iterator;function he(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=fe&&e[fe]||e["@@iterator"])?e:null}function be(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ne:return"Fragment";case te:return"Portal";case re:return"Profiler";case ae:return"StrictMode";case ce:return"Suspense";case ue:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ie:return"Context.Consumer";case oe:return"Context.Provider";case le:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case de:return be(e.type);case me:return be(e.render);case pe:if(e=1===e._status?e._result:null)return be(e)}return null}function ge(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var a=e._debugOwner,r=e._debugSource,o=be(e.type);n=null,a&&(n=be(a.type)),a=o,o="",r?o=" (at "+r.fileName.replace(K,"")+":"+r.lineNumber+")":n&&(o=" (created by "+n+")"),n="\n in "+(a||"Unknown")+o}t+=n,e=e.return}while(e);return t}function ye(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function _e(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function ke(e){e._valueTracker||(e._valueTracker=function(e){var t=_e(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){a=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return a},setValue:function(e){a=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function we(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=_e(e)?e.checked?"true":"false":e.value),(e=a)!==n&&(t.setValue(e),!0)}function ve(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Me(e,t){var n=null==t.defaultValue?"":t.defaultValue,a=null!=t.checked?t.checked:t.defaultChecked;n=ye(null!=t.value?t.value:n),e._wrapperState={initialChecked:a,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Le(e,t){null!=(t=t.checked)&&Q(e,"checked",t,!1)}function Te(e,t){Le(e,t);var n=ye(t.value),a=t.type;if(null!=n)"number"===a?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===a||"reset"===a)return void e.removeAttribute("value");t.hasOwnProperty("value")?Se(e,t.type,n):t.hasOwnProperty("defaultValue")&&Se(e,t.type,ye(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Ee(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var a=t.type;if(!("submit"!==a&&"reset"!==a||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function Se(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function xe(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return a.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ce(e,t,n,a){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&a&&(e[n].defaultSelected=!0)}else{for(n=""+ye(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(a&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function De(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:ye(n)}}function Ye(e,t){var n=ye(t.value),a=ye(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=a&&(e.defaultValue=""+a)}function je(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var Pe="http://www.w3.org/1999/xhtml",Ne="http://www.w3.org/2000/svg";function Be(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ae(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Be(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var He,ze=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,a,r){MSApp.execUnsafeLocalFunction((function(){return e(t,n)}))}:e}((function(e,t){if(e.namespaceURI!==Ne||"innerHTML"in e)e.innerHTML=t;else{for((He=He||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=He.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}));function Ie(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function Fe(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Re={animationend:Fe("Animation","AnimationEnd"),animationiteration:Fe("Animation","AnimationIteration"),animationstart:Fe("Animation","AnimationStart"),transitionend:Fe("Transition","TransitionEnd")},We={},Ue={};function qe(e){if(We[e])return We[e];if(!Re[e])return e;var t,n=Re[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ue)return We[e]=n[t];return e}S&&(Ue=document.createElement("div").style,"AnimationEvent"in window||(delete Re.animationend.animation,delete Re.animationiteration.animation,delete Re.animationstart.animation),"TransitionEvent"in window||delete Re.transitionend.transition);var Ge=qe("animationend"),Ve=qe("animationiteration"),$e=qe("animationstart"),Je=qe("transitionend"),Xe="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Qe=new("function"==typeof WeakMap?WeakMap:Map);function Ke(e){var t=Qe.get(e);return void 0===t&&(t=new Map,Qe.set(e,t)),t}function Ze(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function et(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function tt(e){if(Ze(e)!==e)throw Error(i(188))}function nt(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ze(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,a=t;;){var r=n.return;if(null===r)break;var o=r.alternate;if(null===o){if(null!==(a=r.return)){n=a;continue}break}if(r.child===o.child){for(o=r.child;o;){if(o===n)return tt(r),e;if(o===a)return tt(r),t;o=o.sibling}throw Error(i(188))}if(n.return!==a.return)n=r,a=o;else{for(var s=!1,l=r.child;l;){if(l===n){s=!0,n=r,a=o;break}if(l===a){s=!0,a=r,n=o;break}l=l.sibling}if(!s){for(l=o.child;l;){if(l===n){s=!0,n=o,a=r;break}if(l===a){s=!0,a=o,n=r;break}l=l.sibling}if(!s)throw Error(i(189))}}if(n.alternate!==a)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function at(e,t){if(null==t)throw Error(i(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function rt(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var ot=null;function it(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var a=0;a<t.length&&!e.isPropagationStopped();a++)g(e,t[a],n[a]);else t&&g(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function st(e){if(null!==e&&(ot=at(ot,e)),e=ot,ot=null,e){if(rt(e,it),ot)throw Error(i(95));if(u)throw e=d,u=!1,d=null,e}}function lt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function ct(e){if(!S)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"==typeof t[e]),t}var ut=[];function dt(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>ut.length&&ut.push(e)}function pt(e,t,n,a){if(ut.length){var r=ut.pop();return r.topLevelType=e,r.eventSystemFlags=a,r.nativeEvent=t,r.targetInst=n,r}return{topLevelType:e,eventSystemFlags:a,nativeEvent:t,targetInst:n,ancestors:[]}}function mt(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var a=n;if(3===a.tag)a=a.stateNode.containerInfo;else{for(;a.return;)a=a.return;a=3!==a.tag?null:a.stateNode.containerInfo}if(!a)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=Sn(a)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var r=lt(e.nativeEvent);a=e.topLevelType;var o=e.nativeEvent,i=e.eventSystemFlags;0===n&&(i|=64);for(var s=null,l=0;l<v.length;l++){var c=v[l];c&&(c=c.extractEvents(a,t,o,r,i))&&(s=at(s,c))}st(s)}}function ft(e,t,n){if(!n.has(e)){switch(e){case"scroll":$t(t,"scroll",!0);break;case"focus":case"blur":$t(t,"focus",!0),$t(t,"blur",!0),n.set("blur",null),n.set("focus",null);break;case"cancel":case"close":ct(e)&&$t(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===Xe.indexOf(e)&&Vt(e,t)}n.set(e,null)}}var ht,bt,gt,yt=!1,_t=[],kt=null,wt=null,vt=null,Mt=new Map,Lt=new Map,Tt=[],Et="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),St="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function xt(e,t,n,a,r){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:r,container:a}}function Ct(e,t){switch(e){case"focus":case"blur":kt=null;break;case"dragenter":case"dragleave":wt=null;break;case"mouseover":case"mouseout":vt=null;break;case"pointerover":case"pointerout":Mt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Lt.delete(t.pointerId)}}function Dt(e,t,n,a,r,o){return null===e||e.nativeEvent!==o?(e=xt(t,n,a,r,o),null!==t&&(null!==(t=xn(t))&&bt(t)),e):(e.eventSystemFlags|=a,e)}function Ot(e){var t=Sn(e.target);if(null!==t){var n=Ze(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=et(n)))return e.blockedOn=t,void o.unstable_runWithPriority(e.priority,(function(){gt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Yt(e){if(null!==e.blockedOn)return!1;var t=Kt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(null!==t){var n=xn(t);return null!==n&&bt(n),e.blockedOn=t,!1}return!0}function jt(e,t,n){Yt(e)&&n.delete(t)}function Pt(){for(yt=!1;0<_t.length;){var e=_t[0];if(null!==e.blockedOn){null!==(e=xn(e.blockedOn))&&ht(e);break}var t=Kt(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);null!==t?e.blockedOn=t:_t.shift()}null!==kt&&Yt(kt)&&(kt=null),null!==wt&&Yt(wt)&&(wt=null),null!==vt&&Yt(vt)&&(vt=null),Mt.forEach(jt),Lt.forEach(jt)}function Nt(e,t){e.blockedOn===t&&(e.blockedOn=null,yt||(yt=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Pt)))}function Bt(e){function t(t){return Nt(t,e)}if(0<_t.length){Nt(_t[0],e);for(var n=1;n<_t.length;n++){var a=_t[n];a.blockedOn===e&&(a.blockedOn=null)}}for(null!==kt&&Nt(kt,e),null!==wt&&Nt(wt,e),null!==vt&&Nt(vt,e),Mt.forEach(t),Lt.forEach(t),n=0;n<Tt.length;n++)(a=Tt[n]).blockedOn===e&&(a.blockedOn=null);for(;0<Tt.length&&null===(n=Tt[0]).blockedOn;)Ot(n),null===n.blockedOn&&Tt.shift()}var At={},Ht=new Map,zt=new Map,It=["abort","abort",Ge,"animationEnd",Ve,"animationIteration",$e,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Je,"transitionEnd","waiting","waiting"];function Ft(e,t){for(var n=0;n<e.length;n+=2){var a=e[n],r=e[n+1],o="on"+(r[0].toUpperCase()+r.slice(1));o={phasedRegistrationNames:{bubbled:o,captured:o+"Capture"},dependencies:[a],eventPriority:t},zt.set(a,t),Ht.set(a,o),At[r]=o}}Ft("blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Ft("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Ft(It,2);for(var Rt="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Wt=0;Wt<Rt.length;Wt++)zt.set(Rt[Wt],0);var Ut=o.unstable_UserBlockingPriority,qt=o.unstable_runWithPriority,Gt=!0;function Vt(e,t){$t(t,e,!1)}function $t(e,t,n){var a=zt.get(t);switch(void 0===a?2:a){case 0:a=Jt.bind(null,t,1,e);break;case 1:a=Xt.bind(null,t,1,e);break;default:a=Qt.bind(null,t,1,e)}n?e.addEventListener(t,a,!0):e.addEventListener(t,a,!1)}function Jt(e,t,n,a){H||B();var r=Qt,o=H;H=!0;try{N(r,e,t,n,a)}finally{(H=o)||I()}}function Xt(e,t,n,a){qt(Ut,Qt.bind(null,e,t,n,a))}function Qt(e,t,n,a){if(Gt)if(0<_t.length&&-1<Et.indexOf(e))e=xt(null,e,t,n,a),_t.push(e);else{var r=Kt(e,t,n,a);if(null===r)Ct(e,a);else if(-1<Et.indexOf(e))e=xt(r,e,t,n,a),_t.push(e);else if(!function(e,t,n,a,r){switch(t){case"focus":return kt=Dt(kt,e,t,n,a,r),!0;case"dragenter":return wt=Dt(wt,e,t,n,a,r),!0;case"mouseover":return vt=Dt(vt,e,t,n,a,r),!0;case"pointerover":var o=r.pointerId;return Mt.set(o,Dt(Mt.get(o)||null,e,t,n,a,r)),!0;case"gotpointercapture":return o=r.pointerId,Lt.set(o,Dt(Lt.get(o)||null,e,t,n,a,r)),!0}return!1}(r,e,t,n,a)){Ct(e,a),e=pt(e,a,null,t);try{F(mt,e)}finally{dt(e)}}}}function Kt(e,t,n,a){if(null!==(n=Sn(n=lt(a)))){var r=Ze(n);if(null===r)n=null;else{var o=r.tag;if(13===o){if(null!==(n=et(r)))return n;n=null}else if(3===o){if(r.stateNode.hydrate)return 3===r.tag?r.stateNode.containerInfo:null;n=null}else r!==n&&(n=null)}}e=pt(e,a,n,t);try{F(mt,e)}finally{dt(e)}return null}var Zt={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},en=["Webkit","ms","Moz","O"];function tn(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||Zt.hasOwnProperty(e)&&Zt[e]?(""+t).trim():t+"px"}function nn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var a=0===n.indexOf("--"),r=tn(n,t[n],a);"float"===n&&(n="cssFloat"),a?e.setProperty(n,r):e[n]=r}}Object.keys(Zt).forEach((function(e){en.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Zt[t]=Zt[e]}))}));var an=r({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function rn(e,t){if(t){if(an[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62,""))}}function on(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var sn=Pe;function ln(e,t){var n=Ke(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=T[t];for(var a=0;a<t.length;a++)ft(t[a],e,n)}function cn(){}function un(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function dn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pn(e,t){var n,a=dn(e);for(e=0;a;){if(3===a.nodeType){if(n=e+a.textContent.length,e<=t&&n>=t)return{node:a,offset:t-e};e=n}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=dn(a)}}function mn(){for(var e=window,t=un();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=un((e=t.contentWindow).document)}return t}function fn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var hn=null,bn=null;function gn(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function yn(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var _n="function"==typeof setTimeout?setTimeout:void 0,kn="function"==typeof clearTimeout?clearTimeout:void 0;function wn(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function vn(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Mn=Math.random().toString(36).slice(2),Ln="__reactInternalInstance$"+Mn,Tn="__reactEventHandlers$"+Mn,En="__reactContainere$"+Mn;function Sn(e){var t=e[Ln];if(t)return t;for(var n=e.parentNode;n;){if(t=n[En]||n[Ln]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=vn(e);null!==e;){if(n=e[Ln])return n;e=vn(e)}return t}n=(e=n).parentNode}return null}function xn(e){return!(e=e[Ln]||e[En])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function Cn(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function Dn(e){return e[Tn]||null}function On(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function Yn(e,t){var n=e.stateNode;if(!n)return null;var a=f(n);if(!a)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(a=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!a;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}function jn(e,t,n){(t=Yn(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=at(n._dispatchListeners,t),n._dispatchInstances=at(n._dispatchInstances,e))}function Pn(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=On(t);for(t=n.length;0<t--;)jn(n[t],"captured",e);for(t=0;t<n.length;t++)jn(n[t],"bubbled",e)}}function Nn(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=Yn(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=at(n._dispatchListeners,t),n._dispatchInstances=at(n._dispatchInstances,e))}function Bn(e){e&&e.dispatchConfig.registrationName&&Nn(e._targetInst,null,e)}function An(e){rt(e,Pn)}var Hn=null,zn=null,In=null;function Fn(){if(In)return In;var e,t,n=zn,a=n.length,r="value"in Hn?Hn.value:Hn.textContent,o=r.length;for(e=0;e<a&&n[e]===r[e];e++);var i=a-e;for(t=1;t<=i&&n[a-t]===r[o-t];t++);return In=r.slice(e,1<t?1-t:void 0)}function Rn(){return!0}function Wn(){return!1}function Un(e,t,n,a){for(var r in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(r)&&((t=e[r])?this[r]=t(n):"target"===r?this.target=a:this[r]=n[r]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?Rn:Wn,this.isPropagationStopped=Wn,this}function qn(e,t,n,a){if(this.eventPool.length){var r=this.eventPool.pop();return this.call(r,e,t,n,a),r}return new this(e,t,n,a)}function Gn(e){if(!(e instanceof this))throw Error(i(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Vn(e){e.eventPool=[],e.getPooled=qn,e.release=Gn}r(Un.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Rn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Rn)},persist:function(){this.isPersistent=Rn},isPersistent:Wn,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Wn,this._dispatchInstances=this._dispatchListeners=null}}),Un.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Un.extend=function(e){function t(){}function n(){return a.apply(this,arguments)}var a=this;t.prototype=a.prototype;var o=new t;return r(o,n.prototype),n.prototype=o,n.prototype.constructor=n,n.Interface=r({},a.Interface,e),n.extend=a.extend,Vn(n),n},Vn(Un);var $n=Un.extend({data:null}),Jn=Un.extend({data:null}),Xn=[9,13,27,32],Qn=S&&"CompositionEvent"in window,Kn=null;S&&"documentMode"in document&&(Kn=document.documentMode);var Zn=S&&"TextEvent"in window&&!Kn,ea=S&&(!Qn||Kn&&8<Kn&&11>=Kn),ta=String.fromCharCode(32),na={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},aa=!1;function ra(e,t){switch(e){case"keyup":return-1!==Xn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function oa(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ia=!1;var sa={eventTypes:na,extractEvents:function(e,t,n,a){var r;if(Qn)e:{switch(e){case"compositionstart":var o=na.compositionStart;break e;case"compositionend":o=na.compositionEnd;break e;case"compositionupdate":o=na.compositionUpdate;break e}o=void 0}else ia?ra(e,n)&&(o=na.compositionEnd):"keydown"===e&&229===n.keyCode&&(o=na.compositionStart);return o?(ea&&"ko"!==n.locale&&(ia||o!==na.compositionStart?o===na.compositionEnd&&ia&&(r=Fn()):(zn="value"in(Hn=a)?Hn.value:Hn.textContent,ia=!0)),o=$n.getPooled(o,t,n,a),r?o.data=r:null!==(r=oa(n))&&(o.data=r),An(o),r=o):r=null,(e=Zn?function(e,t){switch(e){case"compositionend":return oa(t);case"keypress":return 32!==t.which?null:(aa=!0,ta);case"textInput":return(e=t.data)===ta&&aa?null:e;default:return null}}(e,n):function(e,t){if(ia)return"compositionend"===e||!Qn&&ra(e,t)?(e=Fn(),In=zn=Hn=null,ia=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ea&&"ko"!==t.locale?null:t.data;default:return null}}(e,n))?((t=Jn.getPooled(na.beforeInput,t,n,a)).data=e,An(t)):t=null,null===r?t:null===t?r:[r,t]}},la={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ca(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!la[e.type]:"textarea"===t}var ua={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function da(e,t,n){return(e=Un.getPooled(ua.change,e,t,n)).type="change",Y(n),An(e),e}var pa=null,ma=null;function fa(e){st(e)}function ha(e){if(we(Cn(e)))return e}function ba(e,t){if("change"===e)return t}var ga=!1;function ya(){pa&&(pa.detachEvent("onpropertychange",_a),ma=pa=null)}function _a(e){if("value"===e.propertyName&&ha(ma))if(e=da(ma,e,lt(e)),H)st(e);else{H=!0;try{P(fa,e)}finally{H=!1,I()}}}function ka(e,t,n){"focus"===e?(ya(),ma=n,(pa=t).attachEvent("onpropertychange",_a)):"blur"===e&&ya()}function wa(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return ha(ma)}function va(e,t){if("click"===e)return ha(t)}function Ma(e,t){if("input"===e||"change"===e)return ha(t)}S&&(ga=ct("input")&&(!document.documentMode||9<document.documentMode));var La={eventTypes:ua,_isInputEventSupported:ga,extractEvents:function(e,t,n,a){var r=t?Cn(t):window,o=r.nodeName&&r.nodeName.toLowerCase();if("select"===o||"input"===o&&"file"===r.type)var i=ba;else if(ca(r))if(ga)i=Ma;else{i=wa;var s=ka}else(o=r.nodeName)&&"input"===o.toLowerCase()&&("checkbox"===r.type||"radio"===r.type)&&(i=va);if(i&&(i=i(e,t)))return da(i,n,a);s&&s(e,r,t),"blur"===e&&(e=r._wrapperState)&&e.controlled&&"number"===r.type&&Se(r,"number",r.value)}},Ta=Un.extend({view:null,detail:null}),Ea={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Sa(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Ea[e])&&!!t[e]}function xa(){return Sa}var Ca=0,Da=0,Oa=!1,Ya=!1,ja=Ta.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:xa,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Ca;return Ca=e.screenX,Oa?"mousemove"===e.type?e.screenX-t:0:(Oa=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Da;return Da=e.screenY,Ya?"mousemove"===e.type?e.screenY-t:0:(Ya=!0,0)}}),Pa=ja.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Na={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]},pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Ba={eventTypes:Na,extractEvents:function(e,t,n,a,r){var o="mouseover"===e||"pointerover"===e,i="mouseout"===e||"pointerout"===e;if(o&&0==(32&r)&&(n.relatedTarget||n.fromElement)||!i&&!o)return null;(o=a.window===a?a:(o=a.ownerDocument)?o.defaultView||o.parentWindow:window,i)?(i=t,null!==(t=(t=n.relatedTarget||n.toElement)?Sn(t):null)&&(t!==Ze(t)||5!==t.tag&&6!==t.tag)&&(t=null)):i=null;if(i===t)return null;if("mouseout"===e||"mouseover"===e)var s=ja,l=Na.mouseLeave,c=Na.mouseEnter,u="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=Pa,l=Na.pointerLeave,c=Na.pointerEnter,u="pointer");if(e=null==i?o:Cn(i),o=null==t?o:Cn(t),(l=s.getPooled(l,i,n,a)).type=u+"leave",l.target=e,l.relatedTarget=o,(n=s.getPooled(c,t,n,a)).type=u+"enter",n.target=o,n.relatedTarget=e,u=t,(a=i)&&u)e:{for(c=u,i=0,e=s=a;e;e=On(e))i++;for(e=0,t=c;t;t=On(t))e++;for(;0<i-e;)s=On(s),i--;for(;0<e-i;)c=On(c),e--;for(;i--;){if(s===c||s===c.alternate)break e;s=On(s),c=On(c)}s=null}else s=null;for(c=s,s=[];a&&a!==c&&(null===(i=a.alternate)||i!==c);)s.push(a),a=On(a);for(a=[];u&&u!==c&&(null===(i=u.alternate)||i!==c);)a.push(u),u=On(u);for(u=0;u<s.length;u++)Nn(s[u],"bubbled",l);for(u=a.length;0<u--;)Nn(a[u],"captured",n);return 0==(64&r)?[l]:[l,n]}};var Aa="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Ha=Object.prototype.hasOwnProperty;function za(e,t){if(Aa(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++)if(!Ha.call(t,n[a])||!Aa(e[n[a]],t[n[a]]))return!1;return!0}var Ia=S&&"documentMode"in document&&11>=document.documentMode,Fa={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Ra=null,Wa=null,Ua=null,qa=!1;function Ga(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return qa||null==Ra||Ra!==un(n)?null:("selectionStart"in(n=Ra)&&fn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Ua&&za(Ua,n)?null:(Ua=n,(e=Un.getPooled(Fa.select,Wa,e,t)).type="select",e.target=Ra,An(e),e))}var Va={eventTypes:Fa,extractEvents:function(e,t,n,a,r,o){if(!(o=!(r=o||(a.window===a?a.document:9===a.nodeType?a:a.ownerDocument)))){e:{r=Ke(r),o=T.onSelect;for(var i=0;i<o.length;i++)if(!r.has(o[i])){r=!1;break e}r=!0}o=!r}if(o)return null;switch(r=t?Cn(t):window,e){case"focus":(ca(r)||"true"===r.contentEditable)&&(Ra=r,Wa=t,Ua=null);break;case"blur":Ua=Wa=Ra=null;break;case"mousedown":qa=!0;break;case"contextmenu":case"mouseup":case"dragend":return qa=!1,Ga(n,a);case"selectionchange":if(Ia)break;case"keydown":case"keyup":return Ga(n,a)}return null}},$a=Un.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Ja=Un.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Xa=Ta.extend({relatedTarget:null});function Qa(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var Ka={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Za={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},er=Ta.extend({key:function(e){if(e.key){var t=Ka[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Qa(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Za[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:xa,charCode:function(e){return"keypress"===e.type?Qa(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Qa(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),tr=ja.extend({dataTransfer:null}),nr=Ta.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:xa}),ar=Un.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),rr=ja.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),or={eventTypes:At,extractEvents:function(e,t,n,a){var r=Ht.get(e);if(!r)return null;switch(e){case"keypress":if(0===Qa(n))return null;case"keydown":case"keyup":e=er;break;case"blur":case"focus":e=Xa;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=ja;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=tr;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=nr;break;case Ge:case Ve:case $e:e=$a;break;case Je:e=ar;break;case"scroll":e=Ta;break;case"wheel":e=rr;break;case"copy":case"cut":case"paste":e=Ja;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=Pa;break;default:e=Un}return An(t=e.getPooled(r,t,n,a)),t}};if(y)throw Error(i(101));y=Array.prototype.slice.call("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),k(),f=Dn,h=xn,b=Cn,E({SimpleEventPlugin:or,EnterLeaveEventPlugin:Ba,ChangeEventPlugin:La,SelectEventPlugin:Va,BeforeInputEventPlugin:sa});var ir=[],sr=-1;function lr(e){0>sr||(e.current=ir[sr],ir[sr]=null,sr--)}function cr(e,t){sr++,ir[sr]=e.current,e.current=t}var ur={},dr={current:ur},pr={current:!1},mr=ur;function fr(e,t){var n=e.type.contextTypes;if(!n)return ur;var a=e.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===t)return a.__reactInternalMemoizedMaskedChildContext;var r,o={};for(r in n)o[r]=t[r];return a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function hr(e){return null!=(e=e.childContextTypes)}function br(){lr(pr),lr(dr)}function gr(e,t,n){if(dr.current!==ur)throw Error(i(168));cr(dr,t),cr(pr,n)}function yr(e,t,n){var a=e.stateNode;if(e=t.childContextTypes,"function"!=typeof a.getChildContext)return n;for(var o in a=a.getChildContext())if(!(o in e))throw Error(i(108,be(t)||"Unknown",o));return r({},n,{},a)}function _r(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ur,mr=dr.current,cr(dr,e),cr(pr,pr.current),!0}function kr(e,t,n){var a=e.stateNode;if(!a)throw Error(i(169));n?(e=yr(e,t,mr),a.__reactInternalMemoizedMergedChildContext=e,lr(pr),lr(dr),cr(dr,e)):lr(pr),cr(pr,n)}var wr=o.unstable_runWithPriority,vr=o.unstable_scheduleCallback,Mr=o.unstable_cancelCallback,Lr=o.unstable_requestPaint,Tr=o.unstable_now,Er=o.unstable_getCurrentPriorityLevel,Sr=o.unstable_ImmediatePriority,xr=o.unstable_UserBlockingPriority,Cr=o.unstable_NormalPriority,Dr=o.unstable_LowPriority,Or=o.unstable_IdlePriority,Yr={},jr=o.unstable_shouldYield,Pr=void 0!==Lr?Lr:function(){},Nr=null,Br=null,Ar=!1,Hr=Tr(),zr=1e4>Hr?Tr:function(){return Tr()-Hr};function Ir(){switch(Er()){case Sr:return 99;case xr:return 98;case Cr:return 97;case Dr:return 96;case Or:return 95;default:throw Error(i(332))}}function Fr(e){switch(e){case 99:return Sr;case 98:return xr;case 97:return Cr;case 96:return Dr;case 95:return Or;default:throw Error(i(332))}}function Rr(e,t){return e=Fr(e),wr(e,t)}function Wr(e,t,n){return e=Fr(e),vr(e,t,n)}function Ur(e){return null===Nr?(Nr=[e],Br=vr(Sr,Gr)):Nr.push(e),Yr}function qr(){if(null!==Br){var e=Br;Br=null,Mr(e)}Gr()}function Gr(){if(!Ar&&null!==Nr){Ar=!0;var e=0;try{var t=Nr;Rr(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Nr=null}catch(t){throw null!==Nr&&(Nr=Nr.slice(e+1)),vr(Sr,qr),t}finally{Ar=!1}}}function Vr(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function $r(e,t){if(e&&e.defaultProps)for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var Jr={current:null},Xr=null,Qr=null,Kr=null;function Zr(){Kr=Qr=Xr=null}function eo(e){var t=Jr.current;lr(Jr),e.type._context._currentValue=t}function to(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function no(e,t){Xr=e,Kr=Qr=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Di=!0),e.firstContext=null)}function ao(e,t){if(Kr!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(Kr=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Qr){if(null===Xr)throw Error(i(308));Qr=t,Xr.dependencies={expirationTime:0,firstContext:t,responders:null}}else Qr=Qr.next=t;return e._currentValue}var ro=!1;function oo(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function io(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function so(e,t){return(e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null}).next=e}function lo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function co(e,t){var n=e.alternate;null!==n&&io(n,e),null===(n=(e=e.updateQueue).baseQueue)?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function uo(e,t,n,a){var o=e.updateQueue;ro=!1;var i=o.baseQueue,s=o.shared.pending;if(null!==s){if(null!==i){var l=i.next;i.next=s.next,s.next=l}i=s,o.shared.pending=null,null!==(l=e.alternate)&&(null!==(l=l.updateQueue)&&(l.baseQueue=s))}if(null!==i){l=i.next;var c=o.baseState,u=0,d=null,p=null,m=null;if(null!==l)for(var f=l;;){if((s=f.expirationTime)<a){var h={expirationTime:f.expirationTime,suspenseConfig:f.suspenseConfig,tag:f.tag,payload:f.payload,callback:f.callback,next:null};null===m?(p=m=h,d=c):m=m.next=h,s>u&&(u=s)}else{null!==m&&(m=m.next={expirationTime:1073741823,suspenseConfig:f.suspenseConfig,tag:f.tag,payload:f.payload,callback:f.callback,next:null}),ol(s,f.suspenseConfig);e:{var b=e,g=f;switch(s=t,h=n,g.tag){case 1:if("function"==typeof(b=g.payload)){c=b.call(h,c,s);break e}c=b;break e;case 3:b.effectTag=-4097&b.effectTag|64;case 0:if(null==(s="function"==typeof(b=g.payload)?b.call(h,c,s):b))break e;c=r({},c,s);break e;case 2:ro=!0}}null!==f.callback&&(e.effectTag|=32,null===(s=o.effects)?o.effects=[f]:s.push(f))}if(null===(f=f.next)||f===l){if(null===(s=o.shared.pending))break;f=i.next=s.next,s.next=l,o.baseQueue=i=s,o.shared.pending=null}}null===m?d=c:m.next=p,o.baseState=d,o.baseQueue=m,il(u),e.expirationTime=u,e.memoizedState=c}}function po(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var a=e[t],r=a.callback;if(null!==r){if(a.callback=null,a=r,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=X.ReactCurrentBatchConfig,fo=(new a.Component).refs;function ho(e,t,n,a){n=null==(n=n(a,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,0===e.expirationTime&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternalFiber)&&Ze(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var a=Gs(),r=mo.suspense;(r=so(a=Vs(a,e,r),r)).payload=t,null!=n&&(r.callback=n),lo(e,r),$s(e,a)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var a=Gs(),r=mo.suspense;(r=so(a=Vs(a,e,r),r)).tag=1,r.payload=t,null!=n&&(r.callback=n),lo(e,r),$s(e,a)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Gs(),a=mo.suspense;(a=so(n=Vs(n,e,a),a)).tag=2,null!=t&&(a.callback=t),lo(e,a),$s(e,n)}};function go(e,t,n,a,r,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(a,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!za(n,a)||!za(r,o))}function yo(e,t,n){var a=!1,r=ur,o=t.contextType;return"object"==typeof o&&null!==o?o=ao(o):(r=hr(t)?mr:dr.current,o=(a=null!=(a=t.contextTypes))?fr(e,r):ur),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternalFiber=e,a&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=o),t}function _o(e,t,n,a){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,a),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&bo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,a){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=fo,oo(e);var o=t.contextType;"object"==typeof o&&null!==o?r.context=ao(o):(o=hr(t)?mr:dr.current,r.context=fr(e,o)),uo(e,n,r,a),r.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(ho(e,t,o,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&bo.enqueueReplaceState(r,r.state,null),uo(e,n,r,a),r.state=e.memoizedState),"function"==typeof r.componentDidMount&&(e.effectTag|=4)}var wo=Array.isArray;function vo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var a=n.stateNode}if(!a)throw Error(i(147,e));var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:((t=function(e){var t=a.refs;t===fo&&(t=a.refs={}),null===e?delete t[r]:t[r]=e})._stringRef=r,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Mo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Lo(e){function t(t,n){if(e){var a=t.lastEffect;null!==a?(a.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,a){if(!e)return null;for(;null!==a;)t(n,a),a=a.sibling;return null}function a(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t){return(e=El(e,t)).index=0,e.sibling=null,e}function o(t,n,a){return t.index=a,e?null!==(a=t.alternate)?(a=a.index)<n?(t.effectTag=2,n):a:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,a){return null===t||6!==t.tag?((t=Cl(n,e.mode,a)).return=e,t):((t=r(t,n)).return=e,t)}function c(e,t,n,a){return null!==t&&t.elementType===n.type?((a=r(t,n.props)).ref=vo(e,t,n),a.return=e,a):((a=Sl(n.type,n.key,n.props,null,e.mode,a)).ref=vo(e,t,n),a.return=e,a)}function u(e,t,n,a){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Dl(n,e.mode,a)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function d(e,t,n,a,o){return null===t||7!==t.tag?((t=xl(n,e.mode,a,o)).return=e,t):((t=r(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Cl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case ee:return(n=Sl(t.type,t.key,t.props,null,e.mode,n)).ref=vo(e,null,t),n.return=e,n;case te:return(t=Dl(t,e.mode,n)).return=e,t}if(wo(t)||he(t))return(t=xl(t,e.mode,n,null)).return=e,t;Mo(e,t)}return null}function m(e,t,n,a){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:l(e,t,""+n,a);if("object"==typeof n&&null!==n){switch(n.$$typeof){case ee:return n.key===r?n.type===ne?d(e,t,n.props.children,a,r):c(e,t,n,a):null;case te:return n.key===r?u(e,t,n,a):null}if(wo(n)||he(n))return null!==r?null:d(e,t,n,a,null);Mo(e,n)}return null}function f(e,t,n,a,r){if("string"==typeof a||"number"==typeof a)return l(t,e=e.get(n)||null,""+a,r);if("object"==typeof a&&null!==a){switch(a.$$typeof){case ee:return e=e.get(null===a.key?n:a.key)||null,a.type===ne?d(t,e,a.props.children,r,a.key):c(t,e,a,r);case te:return u(t,e=e.get(null===a.key?n:a.key)||null,a,r)}if(wo(a)||he(a))return d(t,e=e.get(n)||null,a,r,null);Mo(t,a)}return null}function h(r,i,s,l){for(var c=null,u=null,d=i,h=i=0,b=null;null!==d&&h<s.length;h++){d.index>h?(b=d,d=null):b=d.sibling;var g=m(r,d,s[h],l);if(null===g){null===d&&(d=b);break}e&&d&&null===g.alternate&&t(r,d),i=o(g,i,h),null===u?c=g:u.sibling=g,u=g,d=b}if(h===s.length)return n(r,d),c;if(null===d){for(;h<s.length;h++)null!==(d=p(r,s[h],l))&&(i=o(d,i,h),null===u?c=d:u.sibling=d,u=d);return c}for(d=a(r,d);h<s.length;h++)null!==(b=f(d,r,h,s[h],l))&&(e&&null!==b.alternate&&d.delete(null===b.key?h:b.key),i=o(b,i,h),null===u?c=b:u.sibling=b,u=b);return e&&d.forEach((function(e){return t(r,e)})),c}function b(r,s,l,c){var u=he(l);if("function"!=typeof u)throw Error(i(150));if(null==(l=u.call(l)))throw Error(i(151));for(var d=u=null,h=s,b=s=0,g=null,y=l.next();null!==h&&!y.done;b++,y=l.next()){h.index>b?(g=h,h=null):g=h.sibling;var _=m(r,h,y.value,c);if(null===_){null===h&&(h=g);break}e&&h&&null===_.alternate&&t(r,h),s=o(_,s,b),null===d?u=_:d.sibling=_,d=_,h=g}if(y.done)return n(r,h),u;if(null===h){for(;!y.done;b++,y=l.next())null!==(y=p(r,y.value,c))&&(s=o(y,s,b),null===d?u=y:d.sibling=y,d=y);return u}for(h=a(r,h);!y.done;b++,y=l.next())null!==(y=f(h,r,b,y.value,c))&&(e&&null!==y.alternate&&h.delete(null===y.key?b:y.key),s=o(y,s,b),null===d?u=y:d.sibling=y,d=y);return e&&h.forEach((function(e){return t(r,e)})),u}return function(e,a,o,l){var c="object"==typeof o&&null!==o&&o.type===ne&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case ee:e:{for(u=o.key,c=a;null!==c;){if(c.key===u){switch(c.tag){case 7:if(o.type===ne){n(e,c.sibling),(a=r(c,o.props.children)).return=e,e=a;break e}break;default:if(c.elementType===o.type){n(e,c.sibling),(a=r(c,o.props)).ref=vo(e,c,o),a.return=e,e=a;break e}}n(e,c);break}t(e,c),c=c.sibling}o.type===ne?((a=xl(o.props.children,e.mode,l,o.key)).return=e,e=a):((l=Sl(o.type,o.key,o.props,null,e.mode,l)).ref=vo(e,a,o),l.return=e,e=l)}return s(e);case te:e:{for(c=o.key;null!==a;){if(a.key===c){if(4===a.tag&&a.stateNode.containerInfo===o.containerInfo&&a.stateNode.implementation===o.implementation){n(e,a.sibling),(a=r(a,o.children||[])).return=e,e=a;break e}n(e,a);break}t(e,a),a=a.sibling}(a=Dl(o,e.mode,l)).return=e,e=a}return s(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==a&&6===a.tag?(n(e,a.sibling),(a=r(a,o)).return=e,e=a):(n(e,a),(a=Cl(o,e.mode,l)).return=e,e=a),s(e);if(wo(o))return h(e,a,o,l);if(he(o))return b(e,a,o,l);if(u&&Mo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 0:throw e=e.type,Error(i(152,e.displayName||e.name||"Component"))}return n(e,a)}}var To=Lo(!0),Eo=Lo(!1),So={},xo={current:So},Co={current:So},Do={current:So};function Oo(e){if(e===So)throw Error(i(174));return e}function Yo(e,t){switch(cr(Do,t),cr(Co,e),cr(xo,So),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ae(null,"");break;default:t=Ae(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}lr(xo),cr(xo,t)}function jo(){lr(xo),lr(Co),lr(Do)}function Po(e){Oo(Do.current);var t=Oo(xo.current),n=Ae(t,e.type);t!==n&&(cr(Co,e),cr(xo,n))}function No(e){Co.current===e&&(lr(xo),lr(Co))}var Bo={current:0};function Ao(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Ho(e,t){return{responder:e,props:t}}var zo=X.ReactCurrentDispatcher,Io=X.ReactCurrentBatchConfig,Fo=0,Ro=null,Wo=null,Uo=null,qo=!1;function Go(){throw Error(i(321))}function Vo(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Aa(e[n],t[n]))return!1;return!0}function $o(e,t,n,a,r,o){if(Fo=o,Ro=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,zo.current=null===e||null===e.memoizedState?gi:yi,e=n(a,r),t.expirationTime===Fo){o=0;do{if(t.expirationTime=0,!(25>o))throw Error(i(301));o+=1,Uo=Wo=null,t.updateQueue=null,zo.current=_i,e=n(a,r)}while(t.expirationTime===Fo)}if(zo.current=bi,t=null!==Wo&&null!==Wo.next,Fo=0,Uo=Wo=Ro=null,qo=!1,t)throw Error(i(300));return e}function Jo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Uo?Ro.memoizedState=Uo=e:Uo=Uo.next=e,Uo}function Xo(){if(null===Wo){var e=Ro.alternate;e=null!==e?e.memoizedState:null}else e=Wo.next;var t=null===Uo?Ro.memoizedState:Uo.next;if(null!==t)Uo=t,Wo=e;else{if(null===e)throw Error(i(310));e={memoizedState:(Wo=e).memoizedState,baseState:Wo.baseState,baseQueue:Wo.baseQueue,queue:Wo.queue,next:null},null===Uo?Ro.memoizedState=Uo=e:Uo=Uo.next=e}return Uo}function Qo(e,t){return"function"==typeof t?t(e):t}function Ko(e){var t=Xo(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var a=Wo,r=a.baseQueue,o=n.pending;if(null!==o){if(null!==r){var s=r.next;r.next=o.next,o.next=s}a.baseQueue=r=o,n.pending=null}if(null!==r){r=r.next,a=a.baseState;var l=s=o=null,c=r;do{var u=c.expirationTime;if(u<Fo){var d={expirationTime:c.expirationTime,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=d,o=a):l=l.next=d,u>Ro.expirationTime&&(Ro.expirationTime=u,il(u))}else null!==l&&(l=l.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),ol(u,c.suspenseConfig),a=c.eagerReducer===e?c.eagerState:e(a,c.action);c=c.next}while(null!==c&&c!==r);null===l?o=a:l.next=s,Aa(a,t.memoizedState)||(Di=!0),t.memoizedState=a,t.baseState=o,t.baseQueue=l,n.lastRenderedState=a}return[t.memoizedState,n.dispatch]}function Zo(e){var t=Xo(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var a=n.dispatch,r=n.pending,o=t.memoizedState;if(null!==r){n.pending=null;var s=r=r.next;do{o=e(o,s.action),s=s.next}while(s!==r);Aa(o,t.memoizedState)||(Di=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,a]}function ei(e){var t=Jo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:Qo,lastRenderedState:e}).dispatch=hi.bind(null,Ro,e),[t.memoizedState,e]}function ti(e,t,n,a){return e={tag:e,create:t,destroy:n,deps:a,next:null},null===(t=Ro.updateQueue)?(t={lastEffect:null},Ro.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function ni(){return Xo().memoizedState}function ai(e,t,n,a){var r=Jo();Ro.effectTag|=e,r.memoizedState=ti(1|t,n,void 0,void 0===a?null:a)}function ri(e,t,n,a){var r=Xo();a=void 0===a?null:a;var o=void 0;if(null!==Wo){var i=Wo.memoizedState;if(o=i.destroy,null!==a&&Vo(a,i.deps))return void ti(t,n,o,a)}Ro.effectTag|=e,r.memoizedState=ti(1|t,n,o,a)}function oi(e,t){return ai(516,4,e,t)}function ii(e,t){return ri(516,4,e,t)}function si(e,t){return ri(4,2,e,t)}function li(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ci(e,t,n){return n=null!=n?n.concat([e]):null,ri(4,2,li.bind(null,t,e),n)}function ui(){}function di(e,t){return Jo().memoizedState=[e,void 0===t?null:t],e}function pi(e,t){var n=Xo();t=void 0===t?null:t;var a=n.memoizedState;return null!==a&&null!==t&&Vo(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function mi(e,t){var n=Xo();t=void 0===t?null:t;var a=n.memoizedState;return null!==a&&null!==t&&Vo(t,a[1])?a[0]:(e=e(),n.memoizedState=[e,t],e)}function fi(e,t,n){var a=Ir();Rr(98>a?98:a,(function(){e(!0)})),Rr(97<a?97:a,(function(){var a=Io.suspense;Io.suspense=void 0===t?null:t;try{e(!1),n()}finally{Io.suspense=a}}))}function hi(e,t,n){var a=Gs(),r=mo.suspense;r={expirationTime:a=Vs(a,e,r),suspenseConfig:r,action:n,eagerReducer:null,eagerState:null,next:null};var o=t.pending;if(null===o?r.next=r:(r.next=o.next,o.next=r),t.pending=r,o=e.alternate,e===Ro||null!==o&&o===Ro)qo=!0,r.expirationTime=Fo,Ro.expirationTime=Fo;else{if(0===e.expirationTime&&(null===o||0===o.expirationTime)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,s=o(i,n);if(r.eagerReducer=o,r.eagerState=s,Aa(s,i))return}catch(e){}$s(e,a)}}var bi={readContext:ao,useCallback:Go,useContext:Go,useEffect:Go,useImperativeHandle:Go,useLayoutEffect:Go,useMemo:Go,useReducer:Go,useRef:Go,useState:Go,useDebugValue:Go,useResponder:Go,useDeferredValue:Go,useTransition:Go},gi={readContext:ao,useCallback:di,useContext:ao,useEffect:oi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ai(4,2,li.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ai(4,2,e,t)},useMemo:function(e,t){var n=Jo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var a=Jo();return t=void 0!==n?n(t):t,a.memoizedState=a.baseState=t,e=(e=a.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=hi.bind(null,Ro,e),[a.memoizedState,e]},useRef:function(e){return e={current:e},Jo().memoizedState=e},useState:ei,useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=ei(e),a=n[0],r=n[1];return oi((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{r(e)}finally{Io.suspense=n}}),[e,t]),a},useTransition:function(e){var t=ei(!1),n=t[0];return t=t[1],[di(fi.bind(null,t,e),[t,e]),n]}},yi={readContext:ao,useCallback:pi,useContext:ao,useEffect:ii,useImperativeHandle:ci,useLayoutEffect:si,useMemo:mi,useReducer:Ko,useRef:ni,useState:function(){return Ko(Qo)},useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=Ko(Qo),a=n[0],r=n[1];return ii((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{r(e)}finally{Io.suspense=n}}),[e,t]),a},useTransition:function(e){var t=Ko(Qo),n=t[0];return t=t[1],[pi(fi.bind(null,t,e),[t,e]),n]}},_i={readContext:ao,useCallback:pi,useContext:ao,useEffect:ii,useImperativeHandle:ci,useLayoutEffect:si,useMemo:mi,useReducer:Zo,useRef:ni,useState:function(){return Zo(Qo)},useDebugValue:ui,useResponder:Ho,useDeferredValue:function(e,t){var n=Zo(Qo),a=n[0],r=n[1];return ii((function(){var n=Io.suspense;Io.suspense=void 0===t?null:t;try{r(e)}finally{Io.suspense=n}}),[e,t]),a},useTransition:function(e){var t=Zo(Qo),n=t[0];return t=t[1],[pi(fi.bind(null,t,e),[t,e]),n]}},ki=null,wi=null,vi=!1;function Mi(e,t){var n=Ll(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Li(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Ti(e){if(vi){var t=wi;if(t){var n=t;if(!Li(e,t)){if(!(t=wn(n.nextSibling))||!Li(e,t))return e.effectTag=-1025&e.effectTag|2,vi=!1,void(ki=e);Mi(ki,n)}ki=e,wi=wn(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,vi=!1,ki=e}}function Ei(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ki=e}function Si(e){if(e!==ki)return!1;if(!vi)return Ei(e),vi=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!yn(t,e.memoizedProps))for(t=wi;t;)Mi(e,t),t=wn(t.nextSibling);if(Ei(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){wi=wn(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}wi=null}}else wi=ki?wn(e.stateNode.nextSibling):null;return!0}function xi(){wi=ki=null,vi=!1}var Ci=X.ReactCurrentOwner,Di=!1;function Oi(e,t,n,a){t.child=null===e?Eo(t,null,n,a):To(t,e.child,n,a)}function Yi(e,t,n,a,r){n=n.render;var o=t.ref;return no(t,r),a=$o(e,t,n,a,o,r),null===e||Di?(t.effectTag|=1,Oi(e,t,a,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),$i(e,t,r))}function ji(e,t,n,a,r,o){if(null===e){var i=n.type;return"function"!=typeof i||Tl(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Sl(n.type,null,a,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Pi(e,t,i,a,r,o))}return i=e.child,r<o&&(r=i.memoizedProps,(n=null!==(n=n.compare)?n:za)(r,a)&&e.ref===t.ref)?$i(e,t,o):(t.effectTag|=1,(e=El(i,a)).ref=t.ref,e.return=t,t.child=e)}function Pi(e,t,n,a,r,o){return null!==e&&za(e.memoizedProps,a)&&e.ref===t.ref&&(Di=!1,r<o)?(t.expirationTime=e.expirationTime,$i(e,t,o)):Bi(e,t,n,a,o)}function Ni(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Bi(e,t,n,a,r){var o=hr(n)?mr:dr.current;return o=fr(t,o),no(t,r),n=$o(e,t,n,a,o,r),null===e||Di?(t.effectTag|=1,Oi(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=r&&(e.expirationTime=0),$i(e,t,r))}function Ai(e,t,n,a,r){if(hr(n)){var o=!0;_r(t)}else o=!1;if(no(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),yo(t,n,a),ko(t,n,a,r),a=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=ao(c):c=fr(t,c=hr(n)?mr:dr.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==a||l!==c)&&_o(t,i,a,c),ro=!1;var p=t.memoizedState;i.state=p,uo(t,a,i,r),l=t.memoizedState,s!==a||p!==l||pr.current||ro?("function"==typeof u&&(ho(t,n,u,a),l=t.memoizedState),(s=ro||go(t,n,s,a,p,l,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.effectTag|=4)):("function"==typeof i.componentDidMount&&(t.effectTag|=4),t.memoizedProps=a,t.memoizedState=l),i.props=a,i.state=l,i.context=c,a=s):("function"==typeof i.componentDidMount&&(t.effectTag|=4),a=!1)}else i=t.stateNode,io(e,t),s=t.memoizedProps,i.props=t.type===t.elementType?s:$r(t.type,s),l=i.context,"object"==typeof(c=n.contextType)&&null!==c?c=ao(c):c=fr(t,c=hr(n)?mr:dr.current),(d="function"==typeof(u=n.getDerivedStateFromProps)||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==a||l!==c)&&_o(t,i,a,c),ro=!1,l=t.memoizedState,i.state=l,uo(t,a,i,r),p=t.memoizedState,s!==a||l!==p||pr.current||ro?("function"==typeof u&&(ho(t,n,u,a),p=t.memoizedState),(u=ro||go(t,n,s,a,l,p,c))?(d||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(a,p,c),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(a,p,c)),"function"==typeof i.componentDidUpdate&&(t.effectTag|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=a,t.memoizedState=p),i.props=a,i.state=p,i.context=c,a=u):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),a=!1);return Hi(e,t,n,a,o,r)}function Hi(e,t,n,a,r,o){Ni(e,t);var i=0!=(64&t.effectTag);if(!a&&!i)return r&&kr(t,n,!1),$i(e,t,o);a=t.stateNode,Ci.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:a.render();return t.effectTag|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,s,o)):Oi(e,t,s,o),t.memoizedState=a.state,r&&kr(t,n,!0),t.child}function zi(e){var t=e.stateNode;t.pendingContext?gr(0,t.pendingContext,t.pendingContext!==t.context):t.context&&gr(0,t.context,!1),Yo(e,t.containerInfo)}var Ii,Fi,Ri,Wi={dehydrated:null,retryTime:0};function Ui(e,t,n){var a,r=t.mode,o=t.pendingProps,i=Bo.current,s=!1;if((a=0!=(64&t.effectTag))||(a=0!=(2&i)&&(null===e||null!==e.memoizedState)),a?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(i|=1),cr(Bo,1&i),null===e){if(void 0!==o.fallback&&Ti(t),s){if(s=o.fallback,(o=xl(null,r,0,null)).return=t,0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=xl(s,r,n,null)).return=t,o.sibling=n,t.memoizedState=Wi,t.child=o,n}return r=o.children,t.memoizedState=null,t.child=Eo(t,null,r,n)}if(null!==e.memoizedState){if(r=(e=e.child).sibling,s){if(o=o.fallback,(n=El(e,e.pendingProps)).return=t,0==(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(r=El(r,o)).return=t,n.sibling=r,n.childExpirationTime=0,t.memoizedState=Wi,t.child=n,r}return n=To(t,e.child,o.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=o.fallback,(o=xl(null,r,0,null)).return=t,o.child=e,null!==e&&(e.return=o),0==(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,o.child=e;null!==e;)e.return=o,e=e.sibling;return(n=xl(s,r,n,null)).return=t,o.sibling=n,n.effectTag|=2,o.childExpirationTime=0,t.memoizedState=Wi,t.child=o,n}return t.memoizedState=null,t.child=To(t,e,o.children,n)}function qi(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),to(e.return,t)}function Gi(e,t,n,a,r,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailExpiration:0,tailMode:r,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=a,i.tail=n,i.tailExpiration=0,i.tailMode=r,i.lastEffect=o)}function Vi(e,t,n){var a=t.pendingProps,r=a.revealOrder,o=a.tail;if(Oi(e,t,a.children,n),0!=(2&(a=Bo.current)))a=1&a|2,t.effectTag|=64;else{if(null!==e&&0!=(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&qi(e,n);else if(19===e.tag)qi(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}if(cr(Bo,a),0==(2&t.mode))t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;null!==n;)null!==(e=n.alternate)&&null===Ao(e)&&(r=n),n=n.sibling;null===(n=r)?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),Gi(t,!1,r,n,o,t.lastEffect);break;case"backwards":for(n=null,r=t.child,t.child=null;null!==r;){if(null!==(e=r.alternate)&&null===Ao(e)){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}Gi(t,!0,n,null,o,t.lastEffect);break;case"together":Gi(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function $i(e,t,n){null!==e&&(t.dependencies=e.dependencies);var a=t.expirationTime;if(0!==a&&il(a),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=El(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=El(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Ji(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;null!==n;)null!==n.alternate&&(a=n),n=n.sibling;null===a?t||null===e.tail?e.tail=null:e.tail.sibling=null:a.sibling=null}}function Xi(e,t,n){var a=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return hr(t.type)&&br(),null;case 3:return jo(),lr(pr),lr(dr),(n=t.stateNode).pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||!Si(t)||(t.effectTag|=4),null;case 5:No(t),n=Oo(Do.current);var o=t.type;if(null!==e&&null!=t.stateNode)Fi(e,t,o,a,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!a){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oo(xo.current),Si(t)){a=t.stateNode,o=t.type;var s=t.memoizedProps;switch(a[Ln]=t,a[Tn]=s,o){case"iframe":case"object":case"embed":Vt("load",a);break;case"video":case"audio":for(e=0;e<Xe.length;e++)Vt(Xe[e],a);break;case"source":Vt("error",a);break;case"img":case"image":case"link":Vt("error",a),Vt("load",a);break;case"form":Vt("reset",a),Vt("submit",a);break;case"details":Vt("toggle",a);break;case"input":Me(a,s),Vt("invalid",a),ln(n,"onChange");break;case"select":a._wrapperState={wasMultiple:!!s.multiple},Vt("invalid",a),ln(n,"onChange");break;case"textarea":Oe(a,s),Vt("invalid",a),ln(n,"onChange")}for(var l in rn(o,s),e=null,s)if(s.hasOwnProperty(l)){var c=s[l];"children"===l?"string"==typeof c?a.textContent!==c&&(e=["children",c]):"number"==typeof c&&a.textContent!==""+c&&(e=["children",""+c]):L.hasOwnProperty(l)&&null!=c&&ln(n,l)}switch(o){case"input":ke(a),Ee(a,s,!0);break;case"textarea":ke(a),je(a);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(a.onclick=cn)}n=e,t.updateQueue=n,null!==n&&(t.effectTag|=4)}else{switch(l=9===n.nodeType?n:n.ownerDocument,e===sn&&(e=Be(o)),e===sn?"script"===o?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof a.is?e=l.createElement(o,{is:a.is}):(e=l.createElement(o),"select"===o&&(l=e,a.multiple?l.multiple=!0:a.size&&(l.size=a.size))):e=l.createElementNS(e,o),e[Ln]=t,e[Tn]=a,Ii(e,t),t.stateNode=e,l=on(o,a),o){case"iframe":case"object":case"embed":Vt("load",e),c=a;break;case"video":case"audio":for(c=0;c<Xe.length;c++)Vt(Xe[c],e);c=a;break;case"source":Vt("error",e),c=a;break;case"img":case"image":case"link":Vt("error",e),Vt("load",e),c=a;break;case"form":Vt("reset",e),Vt("submit",e),c=a;break;case"details":Vt("toggle",e),c=a;break;case"input":Me(e,a),c=ve(e,a),Vt("invalid",e),ln(n,"onChange");break;case"option":c=xe(e,a);break;case"select":e._wrapperState={wasMultiple:!!a.multiple},c=r({},a,{value:void 0}),Vt("invalid",e),ln(n,"onChange");break;case"textarea":Oe(e,a),c=De(e,a),Vt("invalid",e),ln(n,"onChange");break;default:c=a}rn(o,c);var u=c;for(s in u)if(u.hasOwnProperty(s)){var d=u[s];"style"===s?nn(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&ze(e,d):"children"===s?"string"==typeof d?("textarea"!==o||""!==d)&&Ie(e,d):"number"==typeof d&&Ie(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(L.hasOwnProperty(s)?null!=d&&ln(n,s):null!=d&&Q(e,s,d,l))}switch(o){case"input":ke(e),Ee(e,a,!1);break;case"textarea":ke(e),je(e);break;case"option":null!=a.value&&e.setAttribute("value",""+ye(a.value));break;case"select":e.multiple=!!a.multiple,null!=(n=a.value)?Ce(e,!!a.multiple,n,!1):null!=a.defaultValue&&Ce(e,!!a.multiple,a.defaultValue,!0);break;default:"function"==typeof c.onClick&&(e.onclick=cn)}gn(o,a)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Ri(0,t,e.memoizedProps,a);else{if("string"!=typeof a&&null===t.stateNode)throw Error(i(166));n=Oo(Do.current),Oo(xo.current),Si(t)?(n=t.stateNode,a=t.memoizedProps,n[Ln]=t,n.nodeValue!==a&&(t.effectTag|=4)):((n=(9===n.nodeType?n:n.ownerDocument).createTextNode(a))[Ln]=t,t.stateNode=n)}return null;case 13:return lr(Bo),a=t.memoizedState,0!=(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==a,a=!1,null===e?void 0!==t.memoizedProps.fallback&&Si(t):(a=null!==(o=e.memoizedState),n||null===o||null!==(o=e.child.sibling)&&(null!==(s=t.firstEffect)?(t.firstEffect=o,o.nextEffect=s):(t.firstEffect=t.lastEffect=o,o.nextEffect=null),o.effectTag=8)),n&&!a&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Bo.current)?Ss===ks&&(Ss=ws):(Ss!==ks&&Ss!==ws||(Ss=vs),0!==Ys&&null!==Ls&&(jl(Ls,Es),Pl(Ls,Ys)))),(n||a)&&(t.effectTag|=4),null);case 4:return jo(),null;case 10:return eo(t),null;case 17:return hr(t.type)&&br(),null;case 19:if(lr(Bo),null===(a=t.memoizedState))return null;if(o=0!=(64&t.effectTag),null===(s=a.rendering)){if(o)Ji(a,!1);else if(Ss!==ks||null!==e&&0!=(64&e.effectTag))for(s=t.child;null!==s;){if(null!==(e=Ao(s))){for(t.effectTag|=64,Ji(a,!1),null!==(o=e.updateQueue)&&(t.updateQueue=o,t.effectTag|=4),null===a.lastEffect&&(t.firstEffect=null),t.lastEffect=a.lastEffect,a=t.child;null!==a;)s=n,(o=a).effectTag&=2,o.nextEffect=null,o.firstEffect=null,o.lastEffect=null,null===(e=o.alternate)?(o.childExpirationTime=0,o.expirationTime=s,o.child=null,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null):(o.childExpirationTime=e.childExpirationTime,o.expirationTime=e.expirationTime,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,s=e.dependencies,o.dependencies=null===s?null:{expirationTime:s.expirationTime,firstContext:s.firstContext,responders:s.responders}),a=a.sibling;return cr(Bo,1&Bo.current|2),t.child}s=s.sibling}}else{if(!o)if(null!==(e=Ao(s))){if(t.effectTag|=64,o=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Ji(a,!0),null===a.tail&&"hidden"===a.tailMode&&!s.alternate)return null!==(t=t.lastEffect=a.lastEffect)&&(t.nextEffect=null),null}else 2*zr()-a.renderingStartTime>a.tailExpiration&&1<n&&(t.effectTag|=64,o=!0,Ji(a,!1),t.expirationTime=t.childExpirationTime=n-1);a.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=a.last)?n.sibling=s:t.child=s,a.last=s)}return null!==a.tail?(0===a.tailExpiration&&(a.tailExpiration=zr()+500),n=a.tail,a.rendering=n,a.tail=n.sibling,a.lastEffect=t.lastEffect,a.renderingStartTime=zr(),n.sibling=null,t=Bo.current,cr(Bo,o?1&t|2:1&t),n):null}throw Error(i(156,t.tag))}function Qi(e){switch(e.tag){case 1:hr(e.type)&&br();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(jo(),lr(pr),lr(dr),0!=(64&(t=e.effectTag)))throw Error(i(285));return e.effectTag=-4097&t|64,e;case 5:return No(e),null;case 13:return lr(Bo),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return lr(Bo),null;case 4:return jo(),null;case 10:return eo(e),null;default:return null}}function Ki(e,t){return{value:e,source:t,stack:ge(t)}}Ii=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Fi=function(e,t,n,a,o){var i=e.memoizedProps;if(i!==a){var s,l,c=t.stateNode;switch(Oo(xo.current),e=null,n){case"input":i=ve(c,i),a=ve(c,a),e=[];break;case"option":i=xe(c,i),a=xe(c,a),e=[];break;case"select":i=r({},i,{value:void 0}),a=r({},a,{value:void 0}),e=[];break;case"textarea":i=De(c,i),a=De(c,a),e=[];break;default:"function"!=typeof i.onClick&&"function"==typeof a.onClick&&(c.onclick=cn)}for(s in rn(n,a),n=null,i)if(!a.hasOwnProperty(s)&&i.hasOwnProperty(s)&&null!=i[s])if("style"===s)for(l in c=i[s])c.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(L.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in a){var u=a[s];if(c=null!=i?i[s]:void 0,a.hasOwnProperty(s)&&u!==c&&(null!=u||null!=c))if("style"===s)if(c){for(l in c)!c.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in u)u.hasOwnProperty(l)&&c[l]!==u[l]&&(n||(n={}),n[l]=u[l])}else n||(e||(e=[]),e.push(s,n)),n=u;else"dangerouslySetInnerHTML"===s?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(e=e||[]).push(s,u)):"children"===s?c===u||"string"!=typeof u&&"number"!=typeof u||(e=e||[]).push(s,""+u):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(L.hasOwnProperty(s)?(null!=u&&ln(o,s),e||c===u||(e=[])):(e=e||[]).push(s,u))}n&&(e=e||[]).push("style",n),o=e,(t.updateQueue=o)&&(t.effectTag|=4)}},Ri=function(e,t,n,a){n!==a&&(t.effectTag|=4)};var Zi="function"==typeof WeakSet?WeakSet:Set;function es(e,t){var n=t.source,a=t.stack;null===a&&null!==n&&(a=ge(n)),null!==n&&be(n.type),t=t.value,null!==e&&1===e.tag&&be(e.type);try{console.error(t)}catch(e){setTimeout((function(){throw e}))}}function ts(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){yl(e,t)}else t.current=null}function ns(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,a=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:$r(t.type,n),a),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(i(163))}function as(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var a=n.destroy;n.destroy=void 0,void 0!==a&&a()}n=n.next}while(n!==t)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var a=n.create;n.destroy=a()}n=n.next}while(n!==t)}}function os(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:return void rs(3,n);case 1:if(e=n.stateNode,4&n.effectTag)if(null===t)e.componentDidMount();else{var a=n.elementType===n.type?t.memoizedProps:$r(n.type,t.memoizedProps);e.componentDidUpdate(a,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}return void(null!==(t=n.updateQueue)&&po(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}po(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.effectTag&&gn(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Bt(n)))));case 19:case 17:case 20:case 21:return}throw Error(i(163))}function is(e,t,n){switch("function"==typeof vl&&vl(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var a=e.next;Rr(97<n?97:n,(function(){var e=a;do{var n=e.destroy;if(void 0!==n){var r=t;try{n()}catch(e){yl(r,e)}}e=e.next}while(e!==a)}))}break;case 1:ts(t),"function"==typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(t){yl(e,t)}}(t,n);break;case 5:ts(t);break;case 4:us(e,t,n)}}function ss(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,null!==t&&ss(t)}function ls(e){return 5===e.tag||3===e.tag||4===e.tag}function cs(e){e:{for(var t=e.return;null!==t;){if(ls(t)){var n=t;break e}t=t.return}throw Error(i(160))}switch(t=n.stateNode,n.tag){case 5:var a=!1;break;case 3:case 4:t=t.containerInfo,a=!0;break;default:throw Error(i(161))}16&n.effectTag&&(Ie(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ls(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}a?function e(t,n,a){var r=t.tag,o=5===r||6===r;if(o)t=o?t.stateNode:t.stateNode.instance,n?8===a.nodeType?a.parentNode.insertBefore(t,n):a.insertBefore(t,n):(8===a.nodeType?(n=a.parentNode).insertBefore(t,a):(n=a).appendChild(t),null!==(a=a._reactRootContainer)&&void 0!==a||null!==n.onclick||(n.onclick=cn));else if(4!==r&&null!==(t=t.child))for(e(t,n,a),t=t.sibling;null!==t;)e(t,n,a),t=t.sibling}(e,n,t):function e(t,n,a){var r=t.tag,o=5===r||6===r;if(o)t=o?t.stateNode:t.stateNode.instance,n?a.insertBefore(t,n):a.appendChild(t);else if(4!==r&&null!==(t=t.child))for(e(t,n,a),t=t.sibling;null!==t;)e(t,n,a),t=t.sibling}(e,n,t)}function us(e,t,n){for(var a,r,o=t,s=!1;;){if(!s){s=o.return;e:for(;;){if(null===s)throw Error(i(160));switch(a=s.stateNode,s.tag){case 5:r=!1;break e;case 3:case 4:a=a.containerInfo,r=!0;break e}s=s.return}s=!0}if(5===o.tag||6===o.tag){e:for(var l=e,c=o,u=n,d=c;;)if(is(l,d,u),null!==d.child&&4!==d.tag)d.child.return=d,d=d.child;else{if(d===c)break e;for(;null===d.sibling;){if(null===d.return||d.return===c)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}r?(l=a,c=o.stateNode,8===l.nodeType?l.parentNode.removeChild(c):l.removeChild(c)):a.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){a=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(is(e,o,n),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(s=!1)}o.sibling.return=o.return,o=o.sibling}}function ds(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:return void as(3,t);case 1:return;case 5:var n=t.stateNode;if(null!=n){var a=t.memoizedProps,r=null!==e?e.memoizedProps:a;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Tn]=a,"input"===e&&"radio"===a.type&&null!=a.name&&Le(n,a),on(e,r),t=on(e,a),r=0;r<o.length;r+=2){var s=o[r],l=o[r+1];"style"===s?nn(n,l):"dangerouslySetInnerHTML"===s?ze(n,l):"children"===s?Ie(n,l):Q(n,s,l,t)}switch(e){case"input":Te(n,a);break;case"textarea":Ye(n,a);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!a.multiple,null!=(e=a.value)?Ce(n,!!a.multiple,e,!1):t!==!!a.multiple&&(null!=a.defaultValue?Ce(n,!!a.multiple,a.defaultValue,!0):Ce(n,!!a.multiple,a.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((t=t.stateNode).hydrate&&(t.hydrate=!1,Bt(t.containerInfo)));case 12:return;case 13:if(n=t,null===t.memoizedState?a=!1:(a=!0,n=t.child,Ps=zr()),null!==n)e:for(e=n;;){if(5===e.tag)o=e.stateNode,a?"function"==typeof(o=o.style).setProperty?o.setProperty("display","none","important"):o.display="none":(o=e.stateNode,r=null!=(r=e.memoizedProps.style)&&r.hasOwnProperty("display")?r.display:null,o.style.display=tn("display",r));else if(6===e.tag)e.stateNode.nodeValue=a?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(o=e.child.sibling).return=e,e=o;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}return void ps(t);case 19:return void ps(t);case 17:return}throw Error(i(163))}function ps(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zi),t.forEach((function(t){var a=kl.bind(null,e,t);n.has(t)||(n.add(t),t.then(a,a))}))}}var ms="function"==typeof WeakMap?WeakMap:Map;function fs(e,t,n){(n=so(n,null)).tag=3,n.payload={element:null};var a=t.value;return n.callback=function(){Bs||(Bs=!0,As=a),es(e,t)},n}function hs(e,t,n){(n=so(n,null)).tag=3;var a=e.type.getDerivedStateFromError;if("function"==typeof a){var r=t.value;n.payload=function(){return es(e,t),a(r)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof a&&(null===Hs?Hs=new Set([this]):Hs.add(this),es(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var bs,gs=Math.ceil,ys=X.ReactCurrentDispatcher,_s=X.ReactCurrentOwner,ks=0,ws=3,vs=4,Ms=0,Ls=null,Ts=null,Es=0,Ss=ks,xs=null,Cs=1073741823,Ds=1073741823,Os=null,Ys=0,js=!1,Ps=0,Ns=null,Bs=!1,As=null,Hs=null,zs=!1,Is=null,Fs=90,Rs=null,Ws=0,Us=null,qs=0;function Gs(){return 0!=(48&Ms)?1073741821-(zr()/10|0):0!==qs?qs:qs=1073741821-(zr()/10|0)}function Vs(e,t,n){if(0==(2&(t=t.mode)))return 1073741823;var a=Ir();if(0==(4&t))return 99===a?1073741823:1073741822;if(0!=(16&Ms))return Es;if(null!==n)e=Vr(e,0|n.timeoutMs||5e3,250);else switch(a){case 99:e=1073741823;break;case 98:e=Vr(e,150,100);break;case 97:case 96:e=Vr(e,5e3,250);break;case 95:e=2;break;default:throw Error(i(326))}return null!==Ls&&e===Es&&--e,e}function $s(e,t){if(50<Ws)throw Ws=0,Us=null,Error(i(185));if(null!==(e=Js(e,t))){var n=Ir();1073741823===t?0!=(8&Ms)&&0==(48&Ms)?Zs(e):(Qs(e),0===Ms&&qr()):Qs(e),0==(4&Ms)||98!==n&&99!==n||(null===Rs?Rs=new Map([[e,t]]):(void 0===(n=Rs.get(e))||n>t)&&Rs.set(e,t))}}function Js(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var a=e.return,r=null;if(null===a&&3===e.tag)r=e.stateNode;else for(;null!==a;){if(n=a.alternate,a.childExpirationTime<t&&(a.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===a.return&&3===a.tag){r=a.stateNode;break}a=a.return}return null!==r&&(Ls===r&&(il(t),Ss===vs&&jl(r,Es)),Pl(r,t)),r}function Xs(e){var t=e.lastExpiredTime;if(0!==t)return t;if(!Yl(e,t=e.firstPendingTime))return t;var n=e.lastPingedTime;return 2>=(e=n>(e=e.nextKnownPendingLevel)?n:e)&&t!==e?0:e}function Qs(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Ur(Zs.bind(null,e));else{var t=Xs(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var a=Gs();if(1073741823===t?a=99:1===t||2===t?a=95:a=0>=(a=10*(1073741821-t)-10*(1073741821-a))?99:250>=a?98:5250>=a?97:95,null!==n){var r=e.callbackPriority;if(e.callbackExpirationTime===t&&r>=a)return;n!==Yr&&Mr(n)}e.callbackExpirationTime=t,e.callbackPriority=a,t=1073741823===t?Ur(Zs.bind(null,e)):Wr(a,Ks.bind(null,e),{timeout:10*(1073741821-t)-zr()}),e.callbackNode=t}}}function Ks(e,t){if(qs=0,t)return Nl(e,t=Gs()),Qs(e),null;var n=Xs(e);if(0!==n){if(t=e.callbackNode,0!=(48&Ms))throw Error(i(327));if(hl(),e===Ls&&n===Es||nl(e,n),null!==Ts){var a=Ms;Ms|=16;for(var r=rl();;)try{ll();break}catch(t){al(e,t)}if(Zr(),Ms=a,ys.current=r,1===Ss)throw t=xs,nl(e,n),jl(e,n),Qs(e),t;if(null===Ts)switch(r=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,a=Ss,Ls=null,a){case ks:case 1:throw Error(i(345));case 2:Nl(e,2<n?2:n);break;case ws:if(jl(e,n),n===(a=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=dl(r)),1073741823===Cs&&10<(r=Ps+500-zr())){if(js){var o=e.lastPingedTime;if(0===o||o>=n){e.lastPingedTime=n,nl(e,n);break}}if(0!==(o=Xs(e))&&o!==n)break;if(0!==a&&a!==n){e.lastPingedTime=a;break}e.timeoutHandle=_n(pl.bind(null,e),r);break}pl(e);break;case vs:if(jl(e,n),n===(a=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=dl(r)),js&&(0===(r=e.lastPingedTime)||r>=n)){e.lastPingedTime=n,nl(e,n);break}if(0!==(r=Xs(e))&&r!==n)break;if(0!==a&&a!==n){e.lastPingedTime=a;break}if(1073741823!==Ds?a=10*(1073741821-Ds)-zr():1073741823===Cs?a=0:(a=10*(1073741821-Cs)-5e3,0>(a=(r=zr())-a)&&(a=0),(n=10*(1073741821-n)-r)<(a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*gs(a/1960))-a)&&(a=n)),10<a){e.timeoutHandle=_n(pl.bind(null,e),a);break}pl(e);break;case 5:if(1073741823!==Cs&&null!==Os){o=Cs;var s=Os;if(0>=(a=0|s.busyMinDurationMs)?a=0:(r=0|s.busyDelayMs,a=(o=zr()-(10*(1073741821-o)-(0|s.timeoutMs||5e3)))<=r?0:r+a-o),10<a){jl(e,n),e.timeoutHandle=_n(pl.bind(null,e),a);break}}pl(e);break;default:throw Error(i(329))}if(Qs(e),e.callbackNode===t)return Ks.bind(null,e)}}return null}function Zs(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,0!=(48&Ms))throw Error(i(327));if(hl(),e===Ls&&t===Es||nl(e,t),null!==Ts){var n=Ms;Ms|=16;for(var a=rl();;)try{sl();break}catch(t){al(e,t)}if(Zr(),Ms=n,ys.current=a,1===Ss)throw n=xs,nl(e,t),jl(e,t),Qs(e),n;if(null!==Ts)throw Error(i(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ls=null,pl(e),Qs(e)}return null}function el(e,t){var n=Ms;Ms|=1;try{return e(t)}finally{0===(Ms=n)&&qr()}}function tl(e,t){var n=Ms;Ms&=-2,Ms|=8;try{return e(t)}finally{0===(Ms=n)&&qr()}}function nl(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,kn(n)),null!==Ts)for(n=Ts.return;null!==n;){var a=n;switch(a.tag){case 1:null!=(a=a.type.childContextTypes)&&br();break;case 3:jo(),lr(pr),lr(dr);break;case 5:No(a);break;case 4:jo();break;case 13:case 19:lr(Bo);break;case 10:eo(a)}n=n.return}Ls=e,Ts=El(e.current,null),Es=t,Ss=ks,xs=null,Ds=Cs=1073741823,Os=null,Ys=0,js=!1}function al(e,t){for(;;){try{if(Zr(),zo.current=bi,qo)for(var n=Ro.memoizedState;null!==n;){var a=n.queue;null!==a&&(a.pending=null),n=n.next}if(Fo=0,Uo=Wo=Ro=null,qo=!1,null===Ts||null===Ts.return)return Ss=1,xs=t,Ts=null;e:{var r=e,o=Ts.return,i=Ts,s=t;if(t=Es,i.effectTag|=2048,i.firstEffect=i.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var l=s;if(0==(2&i.mode)){var c=i.alternate;c?(i.updateQueue=c.updateQueue,i.memoizedState=c.memoizedState,i.expirationTime=c.expirationTime):(i.updateQueue=null,i.memoizedState=null)}var u=0!=(1&Bo.current),d=o;do{var p;if(p=13===d.tag){var m=d.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var f=d.memoizedProps;p=void 0!==f.fallback&&(!0!==f.unstable_avoidThisFallback||!u)}}if(p){var h=d.updateQueue;if(null===h){var b=new Set;b.add(l),d.updateQueue=b}else h.add(l);if(0==(2&d.mode)){if(d.effectTag|=64,i.effectTag&=-2981,1===i.tag)if(null===i.alternate)i.tag=17;else{var g=so(1073741823,null);g.tag=2,lo(i,g)}i.expirationTime=1073741823;break e}s=void 0,i=t;var y=r.pingCache;if(null===y?(y=r.pingCache=new ms,s=new Set,y.set(l,s)):void 0===(s=y.get(l))&&(s=new Set,y.set(l,s)),!s.has(i)){s.add(i);var _=_l.bind(null,r,l,i);l.then(_,_)}d.effectTag|=4096,d.expirationTime=t;break e}d=d.return}while(null!==d);s=Error((be(i.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+ge(i))}5!==Ss&&(Ss=2),s=Ki(s,i),d=o;do{switch(d.tag){case 3:l=s,d.effectTag|=4096,d.expirationTime=t,co(d,fs(d,l,t));break e;case 1:l=s;var k=d.type,w=d.stateNode;if(0==(64&d.effectTag)&&("function"==typeof k.getDerivedStateFromError||null!==w&&"function"==typeof w.componentDidCatch&&(null===Hs||!Hs.has(w)))){d.effectTag|=4096,d.expirationTime=t,co(d,hs(d,l,t));break e}}d=d.return}while(null!==d)}Ts=ul(Ts)}catch(e){t=e;continue}break}}function rl(){var e=ys.current;return ys.current=bi,null===e?bi:e}function ol(e,t){e<Cs&&2<e&&(Cs=e),null!==t&&e<Ds&&2<e&&(Ds=e,Os=t)}function il(e){e>Ys&&(Ys=e)}function sl(){for(;null!==Ts;)Ts=cl(Ts)}function ll(){for(;null!==Ts&&!jr();)Ts=cl(Ts)}function cl(e){var t=bs(e.alternate,e,Es);return e.memoizedProps=e.pendingProps,null===t&&(t=ul(e)),_s.current=null,t}function ul(e){Ts=e;do{var t=Ts.alternate;if(e=Ts.return,0==(2048&Ts.effectTag)){if(t=Xi(t,Ts,Es),1===Es||1!==Ts.childExpirationTime){for(var n=0,a=Ts.child;null!==a;){var r=a.expirationTime,o=a.childExpirationTime;r>n&&(n=r),o>n&&(n=o),a=a.sibling}Ts.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Ts.firstEffect),null!==Ts.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Ts.firstEffect),e.lastEffect=Ts.lastEffect),1<Ts.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Ts:e.firstEffect=Ts,e.lastEffect=Ts))}else{if(null!==(t=Qi(Ts)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Ts.sibling))return t;Ts=e}while(null!==Ts);return Ss===ks&&(Ss=5),null}function dl(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function pl(e){var t=Ir();return Rr(99,ml.bind(null,e,t)),null}function ml(e,t){do{hl()}while(null!==Is);if(0!=(48&Ms))throw Error(i(327));var n=e.finishedWork,a=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(i(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var r=dl(n);if(e.firstPendingTime=r,a<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:a<=e.firstSuspendedTime&&(e.firstSuspendedTime=a-1),a<=e.lastPingedTime&&(e.lastPingedTime=0),a<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ls&&(Ts=Ls=null,Es=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){var o=Ms;Ms|=32,_s.current=null,hn=Gt;var s=mn();if(fn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var c=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(c&&0!==c.rangeCount){l=c.anchorNode;var u=c.anchorOffset,d=c.focusNode;c=c.focusOffset;try{l.nodeType,d.nodeType}catch(e){l=null;break e}var p=0,m=-1,f=-1,h=0,b=0,g=s,y=null;t:for(;;){for(var _;g!==l||0!==u&&3!==g.nodeType||(m=p+u),g!==d||0!==c&&3!==g.nodeType||(f=p+c),3===g.nodeType&&(p+=g.nodeValue.length),null!==(_=g.firstChild);)y=g,g=_;for(;;){if(g===s)break t;if(y===l&&++h===u&&(m=p),y===d&&++b===c&&(f=p),null!==(_=g.nextSibling))break;y=(g=y).parentNode}g=_}l=-1===m||-1===f?null:{start:m,end:f}}else l=null}l=l||{start:0,end:0}}else l=null;bn={activeElementDetached:null,focusedElem:s,selectionRange:l},Gt=!1,Ns=r;do{try{fl()}catch(e){if(null===Ns)throw Error(i(330));yl(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);Ns=r;do{try{for(s=e,l=t;null!==Ns;){var k=Ns.effectTag;if(16&k&&Ie(Ns.stateNode,""),128&k){var w=Ns.alternate;if(null!==w){var v=w.ref;null!==v&&("function"==typeof v?v(null):v.current=null)}}switch(1038&k){case 2:cs(Ns),Ns.effectTag&=-3;break;case 6:cs(Ns),Ns.effectTag&=-3,ds(Ns.alternate,Ns);break;case 1024:Ns.effectTag&=-1025;break;case 1028:Ns.effectTag&=-1025,ds(Ns.alternate,Ns);break;case 4:ds(Ns.alternate,Ns);break;case 8:us(s,u=Ns,l),ss(u)}Ns=Ns.nextEffect}}catch(e){if(null===Ns)throw Error(i(330));yl(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);if(v=bn,w=mn(),k=v.focusedElem,l=v.selectionRange,w!==k&&k&&k.ownerDocument&&function e(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?e(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}(k.ownerDocument.documentElement,k)){null!==l&&fn(k)&&(w=l.start,void 0===(v=l.end)&&(v=w),"selectionStart"in k?(k.selectionStart=w,k.selectionEnd=Math.min(v,k.value.length)):(v=(w=k.ownerDocument||document)&&w.defaultView||window).getSelection&&(v=v.getSelection(),u=k.textContent.length,s=Math.min(l.start,u),l=void 0===l.end?s:Math.min(l.end,u),!v.extend&&s>l&&(u=l,l=s,s=u),u=pn(k,s),d=pn(k,l),u&&d&&(1!==v.rangeCount||v.anchorNode!==u.node||v.anchorOffset!==u.offset||v.focusNode!==d.node||v.focusOffset!==d.offset)&&((w=w.createRange()).setStart(u.node,u.offset),v.removeAllRanges(),s>l?(v.addRange(w),v.extend(d.node,d.offset)):(w.setEnd(d.node,d.offset),v.addRange(w))))),w=[];for(v=k;v=v.parentNode;)1===v.nodeType&&w.push({element:v,left:v.scrollLeft,top:v.scrollTop});for("function"==typeof k.focus&&k.focus(),k=0;k<w.length;k++)(v=w[k]).element.scrollLeft=v.left,v.element.scrollTop=v.top}Gt=!!hn,bn=hn=null,e.current=n,Ns=r;do{try{for(k=e;null!==Ns;){var M=Ns.effectTag;if(36&M&&os(k,Ns.alternate,Ns),128&M){w=void 0;var L=Ns.ref;if(null!==L){var T=Ns.stateNode;switch(Ns.tag){case 5:w=T;break;default:w=T}"function"==typeof L?L(w):L.current=w}}Ns=Ns.nextEffect}}catch(e){if(null===Ns)throw Error(i(330));yl(Ns,e),Ns=Ns.nextEffect}}while(null!==Ns);Ns=null,Pr(),Ms=o}else e.current=n;if(zs)zs=!1,Is=e,Fs=t;else for(Ns=r;null!==Ns;)t=Ns.nextEffect,Ns.nextEffect=null,Ns=t;if(0===(t=e.firstPendingTime)&&(Hs=null),1073741823===t?e===Us?Ws++:(Ws=0,Us=e):Ws=0,"function"==typeof wl&&wl(n.stateNode,a),Qs(e),Bs)throw Bs=!1,e=As,As=null,e;return 0!=(8&Ms)||qr(),null}function fl(){for(;null!==Ns;){var e=Ns.effectTag;0!=(256&e)&&ns(Ns.alternate,Ns),0==(512&e)||zs||(zs=!0,Wr(97,(function(){return hl(),null}))),Ns=Ns.nextEffect}}function hl(){if(90!==Fs){var e=97<Fs?97:Fs;return Fs=90,Rr(e,bl)}}function bl(){if(null===Is)return!1;var e=Is;if(Is=null,0!=(48&Ms))throw Error(i(331));var t=Ms;for(Ms|=32,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!=(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:case 22:as(5,n),rs(5,n)}}catch(t){if(null===e)throw Error(i(330));yl(e,t)}n=e.nextEffect,e.nextEffect=null,e=n}return Ms=t,qr(),!0}function gl(e,t,n){lo(e,t=fs(e,t=Ki(n,t),1073741823)),null!==(e=Js(e,1073741823))&&Qs(e)}function yl(e,t){if(3===e.tag)gl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){gl(n,e,t);break}if(1===n.tag){var a=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof a.componentDidCatch&&(null===Hs||!Hs.has(a))){lo(n,e=hs(n,e=Ki(t,e),1073741823)),null!==(n=Js(n,1073741823))&&Qs(n);break}}n=n.return}}function _l(e,t,n){var a=e.pingCache;null!==a&&a.delete(t),Ls===e&&Es===n?Ss===vs||Ss===ws&&1073741823===Cs&&zr()-Ps<500?nl(e,Es):js=!0:Yl(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,Qs(e)))}function kl(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=Vs(t=Gs(),e,null)),null!==(e=Js(e,t))&&Qs(e)}bs=function(e,t,n){var a=t.expirationTime;if(null!==e){var r=t.pendingProps;if(e.memoizedProps!==r||pr.current)Di=!0;else{if(a<n){switch(Di=!1,t.tag){case 3:zi(t),xi();break;case 5:if(Po(t),4&t.mode&&1!==n&&r.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:hr(t.type)&&_r(t);break;case 4:Yo(t,t.stateNode.containerInfo);break;case 10:a=t.memoizedProps.value,r=t.type._context,cr(Jr,r._currentValue),r._currentValue=a;break;case 13:if(null!==t.memoizedState)return 0!==(a=t.child.childExpirationTime)&&a>=n?Ui(e,t,n):(cr(Bo,1&Bo.current),null!==(t=$i(e,t,n))?t.sibling:null);cr(Bo,1&Bo.current);break;case 19:if(a=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(a)return Vi(e,t,n);t.effectTag|=64}if(null!==(r=t.memoizedState)&&(r.rendering=null,r.tail=null),cr(Bo,Bo.current),!a)return null}return $i(e,t,n)}Di=!1}}else Di=!1;switch(t.expirationTime=0,t.tag){case 2:if(a=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,r=fr(t,dr.current),no(t,n),r=$o(null,t,a,e,r,n),t.effectTag|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,hr(a)){var o=!0;_r(t)}else o=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null,oo(t);var s=a.getDerivedStateFromProps;"function"==typeof s&&ho(t,a,s,e),r.updater=bo,t.stateNode=r,r._reactInternalFiber=t,ko(t,a,e,n),t=Hi(null,t,a,!0,o,n)}else t.tag=0,Oi(null,t,r,n),t=t.child;return t;case 16:e:{if(r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(r),1!==r._status)throw r._result;switch(r=r._result,t.type=r,o=t.tag=function(e){if("function"==typeof e)return Tl(e)?1:0;if(null!=e){if((e=e.$$typeof)===le)return 11;if(e===de)return 14}return 2}(r),e=$r(r,e),o){case 0:t=Bi(null,t,r,e,n);break e;case 1:t=Ai(null,t,r,e,n);break e;case 11:t=Yi(null,t,r,e,n);break e;case 14:t=ji(null,t,r,$r(r.type,e),a,n);break e}throw Error(i(306,r,""))}return t;case 0:return a=t.type,r=t.pendingProps,Bi(e,t,a,r=t.elementType===a?r:$r(a,r),n);case 1:return a=t.type,r=t.pendingProps,Ai(e,t,a,r=t.elementType===a?r:$r(a,r),n);case 3:if(zi(t),a=t.updateQueue,null===e||null===a)throw Error(i(282));if(a=t.pendingProps,r=null!==(r=t.memoizedState)?r.element:null,io(e,t),uo(t,a,null,n),(a=t.memoizedState.element)===r)xi(),t=$i(e,t,n);else{if((r=t.stateNode.hydrate)&&(wi=wn(t.stateNode.containerInfo.firstChild),ki=t,r=vi=!0),r)for(n=Eo(t,null,a,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Oi(e,t,a,n),xi();t=t.child}return t;case 5:return Po(t),null===e&&Ti(t),a=t.type,r=t.pendingProps,o=null!==e?e.memoizedProps:null,s=r.children,yn(a,r)?s=null:null!==o&&yn(a,o)&&(t.effectTag|=16),Ni(e,t),4&t.mode&&1!==n&&r.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Oi(e,t,s,n),t=t.child),t;case 6:return null===e&&Ti(t),null;case 13:return Ui(e,t,n);case 4:return Yo(t,t.stateNode.containerInfo),a=t.pendingProps,null===e?t.child=To(t,null,a,n):Oi(e,t,a,n),t.child;case 11:return a=t.type,r=t.pendingProps,Yi(e,t,a,r=t.elementType===a?r:$r(a,r),n);case 7:return Oi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Oi(e,t,t.pendingProps.children,n),t.child;case 10:e:{a=t.type._context,r=t.pendingProps,s=t.memoizedProps,o=r.value;var l=t.type._context;if(cr(Jr,l._currentValue),l._currentValue=o,null!==s)if(l=s.value,0===(o=Aa(l,o)?0:0|("function"==typeof a._calculateChangedBits?a._calculateChangedBits(l,o):1073741823))){if(s.children===r.children&&!pr.current){t=$i(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===a&&0!=(u.observedBits&o)){1===l.tag&&((u=so(n,null)).tag=2,lo(l,u)),l.expirationTime<n&&(l.expirationTime=n),null!==(u=l.alternate)&&u.expirationTime<n&&(u.expirationTime=n),to(l.return,n),c.expirationTime<n&&(c.expirationTime=n);break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}Oi(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,a=(o=t.pendingProps).children,no(t,n),a=a(r=ao(r,o.unstable_observedBits)),t.effectTag|=1,Oi(e,t,a,n),t.child;case 14:return o=$r(r=t.type,t.pendingProps),ji(e,t,r,o=$r(r.type,o),a,n);case 15:return Pi(e,t,t.type,t.pendingProps,a,n);case 17:return a=t.type,r=t.pendingProps,r=t.elementType===a?r:$r(a,r),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,hr(a)?(e=!0,_r(t)):e=!1,no(t,n),yo(t,a,r),ko(t,a,r,n),Hi(null,t,a,!0,e,n);case 19:return Vi(e,t,n)}throw Error(i(156,t.tag))};var wl=null,vl=null;function Ml(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Ll(e,t,n,a){return new Ml(e,t,n,a)}function Tl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function El(e,t){var n=e.alternate;return null===n?((n=Ll(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Sl(e,t,n,a,r,o){var s=2;if(a=e,"function"==typeof e)Tl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case ne:return xl(n.children,r,o,t);case se:s=8,r|=7;break;case ae:s=8,r|=1;break;case re:return(e=Ll(12,n,t,8|r)).elementType=re,e.type=re,e.expirationTime=o,e;case ce:return(e=Ll(13,n,t,r)).type=ce,e.elementType=ce,e.expirationTime=o,e;case ue:return(e=Ll(19,n,t,r)).elementType=ue,e.expirationTime=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case oe:s=10;break e;case ie:s=9;break e;case le:s=11;break e;case de:s=14;break e;case pe:s=16,a=null;break e;case me:s=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Ll(s,n,t,r)).elementType=e,t.type=a,t.expirationTime=o,t}function xl(e,t,n,a){return(e=Ll(7,e,a,t)).expirationTime=n,e}function Cl(e,t,n){return(e=Ll(6,e,null,t)).expirationTime=n,e}function Dl(e,t,n){return(t=Ll(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ol(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Yl(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function jl(e,t){var n=e.firstSuspendedTime,a=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(a>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Pl(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function Nl(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Bl(e,t,n,a){var r=t.current,o=Gs(),s=mo.suspense;o=Vs(o,r,s);e:if(n){t:{if(Ze(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(i(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(hr(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(i(171))}if(1===n.tag){var c=n.type;if(hr(c)){n=yr(n,c,l);break e}}n=l}else n=ur;return null===t.context?t.context=n:t.pendingContext=n,(t=so(o,s)).payload={element:e},null!==(a=void 0===a?null:a)&&(t.callback=a),lo(r,t),$s(r,o),o}function Al(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Hl(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function zl(e,t){Hl(e,t),(e=e.alternate)&&Hl(e,t)}function Il(e,t,n){var a=new Ol(e,t,n=null!=n&&!0===n.hydrate),r=Ll(3,null,null,2===t?7:1===t?3:0);a.current=r,r.stateNode=a,oo(r),e[En]=a.current,n&&0!==t&&function(e,t){var n=Ke(t);Et.forEach((function(e){ft(e,t,n)})),St.forEach((function(e){ft(e,t,n)}))}(0,9===e.nodeType?e:e.ownerDocument),this._internalRoot=a}function Fl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Rl(e,t,n,a,r){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof r){var s=r;r=function(){var e=Al(i);s.call(e)}}Bl(t,i,e,r)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Il(e,0,t?{hydrate:!0}:void 0)}(n,a),i=o._internalRoot,"function"==typeof r){var l=r;r=function(){var e=Al(i);l.call(e)}}tl((function(){Bl(t,i,e,r)}))}return Al(i)}function Wl(e,t,n){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:te,key:null==a?null:""+a,children:e,containerInfo:t,implementation:n}}function Ul(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Fl(t))throw Error(i(200));return Wl(e,t,null,n)}Il.prototype.render=function(e){Bl(e,this._internalRoot,null,null)},Il.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Bl(null,e,null,(function(){t[En]=null}))},ht=function(e){if(13===e.tag){var t=Vr(Gs(),150,100);$s(e,t),zl(e,t)}},bt=function(e){13===e.tag&&($s(e,3),zl(e,3))},gt=function(e){if(13===e.tag){var t=Gs();$s(e,t=Vs(t,e,null)),zl(e,t)}},x=function(e,t,n){switch(t){case"input":if(Te(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var r=Dn(a);if(!r)throw Error(i(90));we(a),Te(a,r)}}}break;case"textarea":Ye(e,n);break;case"select":null!=(t=n.value)&&Ce(e,!!n.multiple,t,!1)}},P=el,N=function(e,t,n,a,r){var o=Ms;Ms|=4;try{return Rr(98,e.bind(null,t,n,a,r))}finally{0===(Ms=o)&&qr()}},B=function(){0==(49&Ms)&&(function(){if(null!==Rs){var e=Rs;Rs=null,e.forEach((function(e,t){Nl(t,e),Qs(t)})),qr()}}(),hl())},A=function(e,t){var n=Ms;Ms|=2;try{return e(t)}finally{0===(Ms=n)&&qr()}};var ql,Gl,Vl={Events:[xn,Cn,Dn,E,M,An,function(e){rt(e,Bn)},Y,j,Qt,st,hl,{current:!1}]};Gl=(ql={findFiberByHostInstance:Sn,bundleType:0,version:"16.13.1",rendererPackageName:"react-dom"}).findFiberByHostInstance,function(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);wl=function(e){try{t.onCommitFiberRoot(n,e,void 0,64==(64&e.current.effectTag))}catch(e){}},vl=function(e){try{t.onCommitFiberUnmount(n,e)}catch(e){}}}catch(e){}}(r({},ql,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:X.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=nt(e))?null:e.stateNode},findFiberByHostInstance:function(e){return Gl?Gl(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null})),t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Vl,t.createPortal=Ul,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw Error(i(268,Object.keys(e)))}return e=null===(e=nt(t))?null:e.stateNode},t.flushSync=function(e,t){if(0!=(48&Ms))throw Error(i(187));var n=Ms;Ms|=1;try{return Rr(99,e.bind(null,t))}finally{Ms=n,qr()}},t.hydrate=function(e,t,n){if(!Fl(t))throw Error(i(200));return Rl(null,e,t,!0,n)},t.render=function(e,t,n){if(!Fl(t))throw Error(i(200));return Rl(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Fl(e))throw Error(i(40));return!!e._reactRootContainer&&(tl((function(){Rl(null,null,e,!1,(function(){e._reactRootContainer=null,e[En]=null}))})),!0)},t.unstable_batchedUpdates=el,t.unstable_createPortal=function(e,t){return Ul(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,a){if(!Fl(n))throw Error(i(200));if(null==e||void 0===e._reactInternalFiber)throw Error(i(38));return Rl(e,t,n,!1,a)},t.version="16.13.1"},function(e,t,n){"use strict";e.exports=n(374)},function(e,t,n){"use strict"; |
| 57 |
/** @license React v0.19.1 |
| 58 |
* scheduler.production.min.js |
| 59 |
* |
| 60 |
* Copyright (c) Facebook, Inc. and its affiliates. |
| 61 |
* |
| 62 |
* This source code is licensed under the MIT license found in the |
| 63 |
* LICENSE file in the root directory of this source tree. |
| 64 |
*/var a,r,o,i,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,c=null,u=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(u,0),e}},d=Date.now();t.unstable_now=function(){return Date.now()-d},a=function(e){null!==l?setTimeout(a,0,e):(l=e,setTimeout(u,0))},r=function(e,t){c=setTimeout(e,t)},o=function(){clearTimeout(c)},i=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var p=window.performance,m=window.Date,f=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var b=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof b&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof p&&"function"==typeof p.now)t.unstable_now=function(){return p.now()};else{var g=m.now();t.unstable_now=function(){return m.now()-g}}var y=!1,_=null,k=-1,w=5,v=0;i=function(){return t.unstable_now()>=v},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):w=0<e?Math.floor(1e3/e):5};var M=new MessageChannel,L=M.port2;M.port1.onmessage=function(){if(null!==_){var e=t.unstable_now();v=e+w;try{_(!0,e)?L.postMessage(null):(y=!1,_=null)}catch(e){throw L.postMessage(null),e}}else y=!1},a=function(e){_=e,y||(y=!0,L.postMessage(null))},r=function(e,n){k=f((function(){e(t.unstable_now())}),n)},o=function(){h(k),k=-1}}function T(e,t){var n=e.length;e.push(t);e:for(;;){var a=n-1>>>1,r=e[a];if(!(void 0!==r&&0<x(r,t)))break e;e[a]=t,e[n]=r,n=a}}function E(e){return void 0===(e=e[0])?null:e}function S(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,r=e.length;a<r;){var o=2*(a+1)-1,i=e[o],s=o+1,l=e[s];if(void 0!==i&&0>x(i,n))void 0!==l&&0>x(l,i)?(e[a]=l,e[s]=n,a=s):(e[a]=i,e[o]=n,a=o);else{if(!(void 0!==l&&0>x(l,n)))break e;e[a]=l,e[s]=n,a=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],D=[],O=1,Y=null,j=3,P=!1,N=!1,B=!1;function A(e){for(var t=E(D);null!==t;){if(null===t.callback)S(D);else{if(!(t.startTime<=e))break;S(D),t.sortIndex=t.expirationTime,T(C,t)}t=E(D)}}function H(e){if(B=!1,A(e),!N)if(null!==E(C))N=!0,a(z);else{var t=E(D);null!==t&&r(H,t.startTime-e)}}function z(e,n){N=!1,B&&(B=!1,o()),P=!0;var a=j;try{for(A(n),Y=E(C);null!==Y&&(!(Y.expirationTime>n)||e&&!i());){var s=Y.callback;if(null!==s){Y.callback=null,j=Y.priorityLevel;var l=s(Y.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?Y.callback=l:Y===E(C)&&S(C),A(n)}else S(C);Y=E(C)}if(null!==Y)var c=!0;else{var u=E(D);null!==u&&r(H,u.startTime-n),c=!1}return c}finally{Y=null,j=a,P=!1}}function I(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var F=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||P||(N=!0,a(z))},t.unstable_getCurrentPriorityLevel=function(){return j},t.unstable_getFirstCallbackNode=function(){return E(C)},t.unstable_next=function(e){switch(j){case 1:case 2:case 3:var t=3;break;default:t=j}var n=j;j=t;try{return e()}finally{j=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=j;j=e;try{return t()}finally{j=n}},t.unstable_scheduleCallback=function(e,n,i){var s=t.unstable_now();if("object"==typeof i&&null!==i){var l=i.delay;l="number"==typeof l&&0<l?s+l:s,i="number"==typeof i.timeout?i.timeout:I(e)}else i=I(e),l=s;return e={id:O++,callback:n,priorityLevel:e,startTime:l,expirationTime:i=l+i,sortIndex:-1},l>s?(e.sortIndex=l,T(D,e),null===E(C)&&e===E(D)&&(B?o():B=!0,r(H,l-s))):(e.sortIndex=i,T(C,e),N||P||(N=!0,a(z))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();A(e);var n=E(C);return n!==Y&&null!==Y&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<Y.expirationTime||i()},t.unstable_wrapCallback=function(e){var t=j;return function(){var n=j;j=t;try{return e.apply(this,arguments)}finally{j=n}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0};t.default=a},function(e,t,n){(function(t){var n=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,s="object"==typeof t&&t&&t.Object===Object&&t,l="object"==typeof self&&self&&self.Object===Object&&self,c=s||l||Function("return this")(),u=Object.prototype.toString,d=Math.max,p=Math.min,m=function(){return c.Date.now()};function f(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function h(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==u.call(e)}(e))return NaN;if(f(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=f(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var s=r.test(e);return s||o.test(e)?i(e.slice(2),s?2:8):a.test(e)?NaN:+e}e.exports=function(e,t,n){var a,r,o,i,s,l,c=0,u=!1,b=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=a,o=r;return a=r=void 0,c=t,i=e.apply(o,n)}function _(e){return c=e,s=setTimeout(w,t),u?y(e):i}function k(e){var n=e-l;return void 0===l||n>=t||n<0||b&&e-c>=o}function w(){var e=m();if(k(e))return v(e);s=setTimeout(w,function(e){var n=t-(e-l);return b?p(n,o-(e-c)):n}(e))}function v(e){return s=void 0,g&&a?y(e):(a=r=void 0,i)}function M(){var e=m(),n=k(e);if(a=arguments,r=this,l=e,n){if(void 0===s)return _(l);if(b)return s=setTimeout(w,t),y(l)}return void 0===s&&(s=setTimeout(w,t)),i}return t=h(t)||0,f(n)&&(u=!!n.leading,o=(b="maxWait"in n)?d(h(n.maxWait)||0,t):o,g="trailing"in n?!!n.trailing:g),M.cancel=function(){void 0!==s&&clearTimeout(s),c=0,a=l=r=s=void 0},M.flush=function(){return void 0===s?i:v(m())},M}}).call(this,n(70))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Track=void 0;var a=i(n(2)),r=i(n(0)),o=n(35);function i(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="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})(e)}function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function d(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){h(e,t,n[t])}))}return e}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=function(e){var t,n,a,r,o;return a=(o=e.rtl?e.slideCount-1-e.index:e.index)<0||o>=e.slideCount,e.centerMode?(r=Math.floor(e.slidesToShow/2),n=(o-e.currentSlide)%e.slideCount==0,o>e.currentSlide-r-1&&o<=e.currentSlide+r&&(t=!0)):t=e.currentSlide<=o&&o<e.currentSlide+e.slidesToShow,{"slick-slide":!0,"slick-active":t,"slick-center":n,"slick-cloned":a,"slick-current":o===e.currentSlide}},g=function(e,t){return e.key||t},y=function(e){var t,n=[],i=[],s=[],l=a.default.Children.count(e.children),c=(0,o.lazyStartIndex)(e),u=(0,o.lazyEndIndex)(e);return a.default.Children.forEach(e.children,(function(d,p){var m,h={message:"children",index:p,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};m=!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(p)>=0?d:a.default.createElement("div",null);var y=function(e){var t={};return void 0!==e.variableWidth&&!1!==e.variableWidth||(t.width=e.slideWidth),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight):t.left=-e.index*parseInt(e.slideWidth),t.opacity=e.currentSlide===e.index?1:0,t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase,t.WebkitTransition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase),t}(f({},e,{index:p})),_=m.props.className||"",k=b(f({},e,{index:p}));if(n.push(a.default.cloneElement(m,{key:"original"+g(m,p),"data-index":p,className:(0,r.default)(k,_),tabIndex:"-1","aria-hidden":!k["slick-active"],style:f({outline:"none"},m.props.style||{},y),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})),e.infinite&&!1===e.fade){var w=l-p;w<=(0,o.getPreClones)(e)&&l!==e.slidesToShow&&((t=-w)>=c&&(m=d),k=b(f({},e,{index:t})),i.push(a.default.cloneElement(m,{key:"precloned"+g(m,t),"data-index":t,tabIndex:"-1",className:(0,r.default)(k,_),"aria-hidden":!k["slick-active"],style:f({},m.props.style||{},y),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}}))),l!==e.slidesToShow&&((t=l+p)<u&&(m=d),k=b(f({},e,{index:t})),s.push(a.default.cloneElement(m,{key:"postcloned"+g(m,t),"data-index":t,tabIndex:"-1",className:(0,r.default)(k,_),"aria-hidden":!k["slick-active"],style:f({},m.props.style||{},y),onClick:function(t){m.props&&m.props.onClick&&m.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})))}})),e.rtl?i.concat(n,s).reverse():i.concat(n,s)},_=function(e){function t(){return c(this,t),d(this,p(t).apply(this,arguments))}var n,r,o;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){var e=y(this.props),t=this.props,n={onMouseEnter:t.onMouseEnter,onMouseOver:t.onMouseOver,onMouseLeave:t.onMouseLeave};return a.default.createElement("div",l({className:"slick-track",style:this.props.trackStyle},n),e)}}])&&u(n.prototype,r),o&&u(n,o),t}(a.default.PureComponent);t.Track=_},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Dots=void 0;var a=o(n(2)),r=o(n(0));function o(e){return e&&e.__esModule?e:{default:e}}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function u(e,t){return!t||"object"!==i(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var m=function(e){function t(){return l(this,t),u(this,d(t).apply(this,arguments))}var n,o,i;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&p(e,t)}(t,e),n=t,(o=[{key:"clickHandler",value:function(e,t){t.preventDefault(),this.props.clickHandler(e)}},{key:"render",value:function(){var e,t=this,n=(e={slideCount:this.props.slideCount,slidesToScroll:this.props.slidesToScroll,slidesToShow:this.props.slidesToShow,infinite:this.props.infinite}).infinite?Math.ceil(e.slideCount/e.slidesToScroll):Math.ceil((e.slideCount-e.slidesToShow)/e.slidesToScroll)+1,o=this.props,i={onMouseEnter:o.onMouseEnter,onMouseOver:o.onMouseOver,onMouseLeave:o.onMouseLeave},l=Array.apply(null,Array(n+1).join("0").split("")).map((function(e,n){var o=n*t.props.slidesToScroll,i=n*t.props.slidesToScroll+(t.props.slidesToScroll-1),s=(0,r.default)({"slick-active":t.props.currentSlide>=o&&t.props.currentSlide<=i}),l={message:"dots",index:n,slidesToScroll:t.props.slidesToScroll,currentSlide:t.props.currentSlide},c=t.clickHandler.bind(t,l);return a.default.createElement("li",{key:n,className:s},a.default.cloneElement(t.props.customPaging(n),{onClick:c}))}));return a.default.cloneElement(this.props.appendDots(l),function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){s(e,t,n[t])}))}return e}({className:this.props.dotsClass},i))}}])&&c(n.prototype,o),i&&c(n,i),t}(a.default.PureComponent);t.Dots=m},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NextArrow=t.PrevArrow=void 0;var a=i(n(2)),r=i(n(0)),o=n(35);function i(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="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})(e)}function l(){return(l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){u(e,t,n[t])}))}return e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function m(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),e}function f(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function b(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&g(e,t)}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var y=function(e){function t(){return d(this,t),f(this,h(t).apply(this,arguments))}return b(t,e),m(t,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-prev":!0},t=this.clickHandler.bind(this,{message:"previous"});!this.props.infinite&&(0===this.props.currentSlide||this.props.slideCount<=this.props.slidesToShow)&&(e["slick-disabled"]=!0,t=null);var n={key:"0","data-role":"none",className:(0,r.default)(e),style:{display:"block"},onClick:t},o={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.prevArrow?a.default.cloneElement(this.props.prevArrow,c({},n,o)):a.default.createElement("button",l({key:"0",type:"button"},n)," ","Previous")}}]),t}(a.default.PureComponent);t.PrevArrow=y;var _=function(e){function t(){return d(this,t),f(this,h(t).apply(this,arguments))}return b(t,e),m(t,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-next":!0},t=this.clickHandler.bind(this,{message:"next"});(0,o.canGoNext)(this.props)||(e["slick-disabled"]=!0,t=null);var n={key:"1","data-role":"none",className:(0,r.default)(e),style:{display:"block"},onClick:t},i={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.nextArrow?a.default.cloneElement(this.props.nextArrow,c({},n,i)):a.default.createElement("button",l({key:"1",type:"button"},n)," ","Next")}}]),t}(a.default.PureComponent);t.NextArrow=_},function(e,t,n){"use strict";n.r(t),function(e){var n=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,a){return e[0]===t&&(n=a,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),a=this.__entries__[n];return a&&a[1]},t.prototype.set=function(t,n){var a=e(this.__entries__,t);~a?this.__entries__[a][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,a=e(n,t);~a&&n.splice(a,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,a=this.__entries__;n<a.length;n++){var r=a[n];e.call(t,r[1],r[0])}},t}()}(),a="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,r=void 0!==e&&e.Math===Math?e:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),o="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(r):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)};var i=["top","right","bottom","left","width","height","size","weight"],s="undefined"!=typeof MutationObserver,l=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,a=!1,r=0;function i(){n&&(n=!1,e()),a&&l()}function s(){o(i)}function l(){var e=Date.now();if(n){if(e-r<2)return;a=!0}else n=!0,a=!1,setTimeout(s,t);r=e}return l}(this.refresh.bind(this),20)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){a&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),s?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){a&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;i.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),c=function(e,t){for(var n=0,a=Object.keys(t);n<a.length;n++){var r=a[n];Object.defineProperty(e,r,{value:t[r],enumerable:!1,writable:!1,configurable:!0})}return e},u=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||r},d=g(0,0,0,0);function p(e){return parseFloat(e)||0}function m(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+p(e["border-"+n+"-width"])}),0)}function f(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return d;var a=u(e).getComputedStyle(e),r=function(e){for(var t={},n=0,a=["top","right","bottom","left"];n<a.length;n++){var r=a[n],o=e["padding-"+r];t[r]=p(o)}return t}(a),o=r.left+r.right,i=r.top+r.bottom,s=p(a.width),l=p(a.height);if("border-box"===a.boxSizing&&(Math.round(s+o)!==t&&(s-=m(a,"left","right")+o),Math.round(l+i)!==n&&(l-=m(a,"top","bottom")+i)),!function(e){return e===u(e).document.documentElement}(e)){var c=Math.round(s+o)-t,f=Math.round(l+i)-n;1!==Math.abs(c)&&(s-=c),1!==Math.abs(f)&&(l-=f)}return g(r.left,r.top,s,l)}var h="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof u(e).SVGGraphicsElement}:function(e){return e instanceof u(e).SVGElement&&"function"==typeof e.getBBox};function b(e){return a?h(e)?function(e){var t=e.getBBox();return g(0,0,t.width,t.height)}(e):f(e):d}function g(e,t,n,a){return{x:e,y:t,width:n,height:a}}var y=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=g(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=b(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),_=function(e,t){var n,a,r,o,i,s,l,u=(a=(n=t).x,r=n.y,o=n.width,i=n.height,s="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(s.prototype),c(l,{x:a,y:r,width:o,height:i,top:r,right:a+o,bottom:i+r,left:a}),l);c(this,{target:e,contentRect:u})},k=function(){function e(e,t,a){if(this.activeObservations_=[],this.observations_=new n,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=a}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof u(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new y(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof u(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new _(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),w="undefined"!=typeof WeakMap?new WeakMap:new n,v=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),a=new k(t,n,this);w.set(this,a)};["observe","unobserve","disconnect"].forEach((function(e){v.prototype[e]=function(){var t;return(t=w.get(this))[e].apply(t,arguments)}}));var M=void 0!==r.ResizeObserver?r.ResizeObserver:v;t.default=M}.call(this,n(70))},function(e,t,n){var a=n(382),r=function(e){var t="",n=Object.keys(e);return n.forEach((function(r,o){var i=e[r];(function(e){return/[height|width]$/.test(e)})(r=a(r))&&"number"==typeof i&&(i+="px"),t+=!0===i?r:!1===i?"not "+r:"("+r+": "+i+")",o<n.length-1&&(t+=" and ")})),t};e.exports=function(e){var t="";return"string"==typeof e?e:e instanceof Array?(e.forEach((function(n,a){t+=r(n),a<e.length-1&&(t+=", ")})),t):r(e)}},function(e,t){e.exports=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()})).toLowerCase()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a,r=(a=n(2))&&a.__esModule?a:{default:a};var o={accessibility:!0,adaptiveHeight:!1,afterChange:null,appendDots:function(e){return r.default.createElement("ul",{style:{display:"block"}},e)},arrows:!0,autoplay:!1,autoplaySpeed:3e3,beforeChange:null,centerMode:!1,centerPadding:"50px",className:"",cssEase:"ease",customPaging:function(e){return r.default.createElement("button",null,e+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:null,nextArrow:null,onEdge:null,onInit:null,onLazyLoadError:null,onReInit:null,pauseOnDotsHover:!1,pauseOnFocus:!1,pauseOnHover:!0,prevArrow:null,responsive:null,rows:1,rtl:!1,slide:"div",slidesPerRow:1,slidesToScroll:1,slidesToShow:1,speed:500,swipe:!0,swipeEvent:null,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,waitForAnimate:!0};t.default=o},function(e,t,n){var a=n(385);e.exports=new a},function(e,t,n){var a=n(386),r=n(122),o=r.each,i=r.isFunction,s=r.isArray;function l(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}l.prototype={constructor:l,register:function(e,t,n){var r=this.queries,l=n&&this.browserIsIncapable;return r[e]||(r[e]=new a(e,l)),i(t)&&(t={match:t}),s(t)||(t=[t]),o(t,(function(t){i(t)&&(t={match:t}),r[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=l},function(e,t,n){var a=n(387),r=n(122).each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new a(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;r(t,(function(n,a){if(n.equals(e))return n.destroy(),!t.splice(a,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){r(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";r(this.handlers,(function(t){t[e]()}))}},e.exports=o},function(e,t){function n(e){this.options=e,!e.deferSetup&&this.setup()}n.prototype={constructor:n,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=n},function(e,t,n){var a=n(123),r=n(120);e.exports=function(e,t){return a(e,t,(function(t,n){return r(e,n)}))}},function(e,t,n){var a=n(26),r=n(15),o=n(28),i=n(5),s=n(16);e.exports=function(e,t,n,l){if(!i(e))return e;for(var c=-1,u=(t=r(t,e)).length,d=u-1,p=e;null!=p&&++c<u;){var m=s(t[c]),f=n;if(c!=d){var h=p[m];void 0===(f=l?l(h,m,p):void 0)&&(f=i(h)?h:o(t[c+1])?[]:{})}a(p,m,f),p=p[m]}return e}},function(e,t){e.exports=function(e,t,n,a){for(var r=e.length,o=n+(a?1:-1);a?o--:++o<r;)if(t(e[o],o,e))return o;return-1}},function(e,t,n){var a=n(125);e.exports=function(e){return e?(e=a(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var a={"./af":126,"./af.js":126,"./ar":127,"./ar-dz":128,"./ar-dz.js":128,"./ar-kw":129,"./ar-kw.js":129,"./ar-ly":130,"./ar-ly.js":130,"./ar-ma":131,"./ar-ma.js":131,"./ar-sa":132,"./ar-sa.js":132,"./ar-tn":133,"./ar-tn.js":133,"./ar.js":127,"./az":134,"./az.js":134,"./be":135,"./be.js":135,"./bg":136,"./bg.js":136,"./bm":137,"./bm.js":137,"./bn":138,"./bn.js":138,"./bo":139,"./bo.js":139,"./br":140,"./br.js":140,"./bs":141,"./bs.js":141,"./ca":142,"./ca.js":142,"./cs":143,"./cs.js":143,"./cv":144,"./cv.js":144,"./cy":145,"./cy.js":145,"./da":146,"./da.js":146,"./de":147,"./de-at":148,"./de-at.js":148,"./de-ch":149,"./de-ch.js":149,"./de.js":147,"./dv":150,"./dv.js":150,"./el":151,"./el.js":151,"./en-SG":152,"./en-SG.js":152,"./en-au":153,"./en-au.js":153,"./en-ca":154,"./en-ca.js":154,"./en-gb":155,"./en-gb.js":155,"./en-ie":156,"./en-ie.js":156,"./en-il":157,"./en-il.js":157,"./en-nz":158,"./en-nz.js":158,"./eo":159,"./eo.js":159,"./es":160,"./es-do":161,"./es-do.js":161,"./es-us":162,"./es-us.js":162,"./es.js":160,"./et":163,"./et.js":163,"./eu":164,"./eu.js":164,"./fa":165,"./fa.js":165,"./fi":166,"./fi.js":166,"./fo":167,"./fo.js":167,"./fr":168,"./fr-ca":169,"./fr-ca.js":169,"./fr-ch":170,"./fr-ch.js":170,"./fr.js":168,"./fy":171,"./fy.js":171,"./ga":172,"./ga.js":172,"./gd":173,"./gd.js":173,"./gl":174,"./gl.js":174,"./gom-latn":175,"./gom-latn.js":175,"./gu":176,"./gu.js":176,"./he":177,"./he.js":177,"./hi":178,"./hi.js":178,"./hr":179,"./hr.js":179,"./hu":180,"./hu.js":180,"./hy-am":181,"./hy-am.js":181,"./id":182,"./id.js":182,"./is":183,"./is.js":183,"./it":184,"./it-ch":185,"./it-ch.js":185,"./it.js":184,"./ja":186,"./ja.js":186,"./jv":187,"./jv.js":187,"./ka":188,"./ka.js":188,"./kk":189,"./kk.js":189,"./km":190,"./km.js":190,"./kn":191,"./kn.js":191,"./ko":192,"./ko.js":192,"./ku":193,"./ku.js":193,"./ky":194,"./ky.js":194,"./lb":195,"./lb.js":195,"./lo":196,"./lo.js":196,"./lt":197,"./lt.js":197,"./lv":198,"./lv.js":198,"./me":199,"./me.js":199,"./mi":200,"./mi.js":200,"./mk":201,"./mk.js":201,"./ml":202,"./ml.js":202,"./mn":203,"./mn.js":203,"./mr":204,"./mr.js":204,"./ms":205,"./ms-my":206,"./ms-my.js":206,"./ms.js":205,"./mt":207,"./mt.js":207,"./my":208,"./my.js":208,"./nb":209,"./nb.js":209,"./ne":210,"./ne.js":210,"./nl":211,"./nl-be":212,"./nl-be.js":212,"./nl.js":211,"./nn":213,"./nn.js":213,"./pa-in":214,"./pa-in.js":214,"./pl":215,"./pl.js":215,"./pt":216,"./pt-br":217,"./pt-br.js":217,"./pt.js":216,"./ro":218,"./ro.js":218,"./ru":219,"./ru.js":219,"./sd":220,"./sd.js":220,"./se":221,"./se.js":221,"./si":222,"./si.js":222,"./sk":223,"./sk.js":223,"./sl":224,"./sl.js":224,"./sq":225,"./sq.js":225,"./sr":226,"./sr-cyrl":227,"./sr-cyrl.js":227,"./sr.js":226,"./ss":228,"./ss.js":228,"./sv":229,"./sv.js":229,"./sw":230,"./sw.js":230,"./ta":231,"./ta.js":231,"./te":232,"./te.js":232,"./tet":233,"./tet.js":233,"./tg":234,"./tg.js":234,"./th":235,"./th.js":235,"./tl-ph":236,"./tl-ph.js":236,"./tlh":237,"./tlh.js":237,"./tr":238,"./tr.js":238,"./tzl":239,"./tzl.js":239,"./tzm":240,"./tzm-latn":241,"./tzm-latn.js":241,"./tzm.js":240,"./ug-cn":242,"./ug-cn.js":242,"./uk":243,"./uk.js":243,"./ur":244,"./ur.js":244,"./uz":245,"./uz-latn":246,"./uz-latn.js":246,"./uz.js":245,"./vi":247,"./vi.js":247,"./x-pseudo":248,"./x-pseudo.js":248,"./yo":249,"./yo.js":249,"./zh-cn":250,"./zh-cn.js":250,"./zh-hk":251,"./zh-hk.js":251,"./zh-tw":252,"./zh-tw.js":252};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id=392},function(e,t,n){var a,r,o; |
| 65 |
/*! |
| 66 |
* Masonry v4.2.2 |
| 67 |
* Cascading grid layout library |
| 68 |
* https://masonry.desandro.com |
| 69 |
* MIT License |
| 70 |
* by David DeSandro |
| 71 |
*/window,r=[n(394),n(85)],void 0===(o="function"==typeof(a=function(e,t){"use strict";var n=e.create("masonry");n.compatOptions.fitWidth="isFitWidth";var a=n.prototype;return a._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var e=0;e<this.cols;e++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},a.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var e=this.items[0],n=e&&e.element;this.columnWidth=n&&t(n).outerWidth||this.containerWidth}var a=this.columnWidth+=this.gutter,r=this.containerWidth+this.gutter,o=r/a,i=a-r%a;o=Math[i&&i<1?"round":"floor"](o),this.cols=Math.max(o,1)},a.getContainerWidth=function(){var e=this._getOption("fitWidth")?this.element.parentNode:this.element,n=t(e);this.containerWidth=n&&n.innerWidth},a._getItemLayoutPosition=function(e){e.getSize();var t=e.size.outerWidth%this.columnWidth,n=Math[t&&t<1?"round":"ceil"](e.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var a=this[this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition"](n,e),r={x:this.columnWidth*a.col,y:a.y},o=a.y+e.size.outerHeight,i=n+a.col,s=a.col;s<i;s++)this.colYs[s]=o;return r},a._getTopColPosition=function(e){var t=this._getTopColGroup(e),n=Math.min.apply(Math,t);return{col:t.indexOf(n),y:n}},a._getTopColGroup=function(e){if(e<2)return this.colYs;for(var t=[],n=this.cols+1-e,a=0;a<n;a++)t[a]=this._getColGroupY(a,e);return t},a._getColGroupY=function(e,t){if(t<2)return this.colYs[e];var n=this.colYs.slice(e,e+t);return Math.max.apply(Math,n)},a._getHorizontalColPosition=function(e,t){var n=this.horizontalColIndex%this.cols;n=e>1&&n+e>this.cols?0:n;var a=t.size.outerWidth&&t.size.outerHeight;return this.horizontalColIndex=a?n+e:this.horizontalColIndex,{col:n,y:this._getColGroupY(n,e)}},a._manageStamp=function(e){var n=t(e),a=this._getElementOffset(e),r=this._getOption("originLeft")?a.left:a.right,o=r+n.outerWidth,i=Math.floor(r/this.columnWidth);i=Math.max(0,i);var s=Math.floor(o/this.columnWidth);s-=o%this.columnWidth?0:1,s=Math.min(this.cols-1,s);for(var l=(this._getOption("originTop")?a.top:a.bottom)+n.outerHeight,c=i;c<=s;c++)this.colYs[c]=Math.max(l,this.colYs[c])},a._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var e={height:this.maxY};return this._getOption("fitWidth")&&(e.width=this._getContainerFitWidth()),e},a._getContainerFitWidth=function(){for(var e=0,t=this.cols;--t&&0===this.colYs[t];)e++;return(this.cols-e)*this.columnWidth-this.gutter},a.needsResizeLayout=function(){var e=this.containerWidth;return this.getContainerWidth(),e!=this.containerWidth},n})?a.apply(t,r):a)||(e.exports=o)},function(e,t,n){var a,r; |
| 72 |
/*! |
| 73 |
* Outlayer v2.1.1 |
| 74 |
* the brains and guts of a layout library |
| 75 |
* MIT license |
| 76 |
*/!function(o,i){"use strict";a=[n(84),n(85),n(395),n(397)],void 0===(r=function(e,t,n,a){return function(e,t,n,a,r){var o=e.console,i=e.jQuery,s=function(){},l=0,c={};function u(e,t){var n=a.getQueryElement(e);if(n){this.element=n,i&&(this.$element=i(this.element)),this.options=a.extend({},this.constructor.defaults),this.option(t);var r=++l;this.element.outlayerGUID=r,c[r]=this,this._create(),this._getOption("initLayout")&&this.layout()}else o&&o.error("Bad element for "+this.constructor.namespace+": "+(n||e))}u.namespace="outlayer",u.Item=r,u.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var d=u.prototype;function p(e){function t(){e.apply(this,arguments)}return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t}a.extend(d,t.prototype),d.option=function(e){a.extend(this.options,e)},d._getOption=function(e){var t=this.constructor.compatOptions[e];return t&&void 0!==this.options[t]?this.options[t]:this.options[e]},u.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},d._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),a.extend(this.element.style,this.options.containerStyle),this._getOption("resize")&&this.bindResize()},d.reloadItems=function(){this.items=this._itemize(this.element.children)},d._itemize=function(e){for(var t=this._filterFindItemElements(e),n=this.constructor.Item,a=[],r=0;r<t.length;r++){var o=new n(t[r],this);a.push(o)}return a},d._filterFindItemElements=function(e){return a.filterFindElements(e,this.options.itemSelector)},d.getItemElements=function(){return this.items.map((function(e){return e.element}))},d.layout=function(){this._resetLayout(),this._manageStamps();var e=this._getOption("layoutInstant"),t=void 0!==e?e:!this._isLayoutInited;this.layoutItems(this.items,t),this._isLayoutInited=!0},d._init=d.layout,d._resetLayout=function(){this.getSize()},d.getSize=function(){this.size=n(this.element)},d._getMeasurement=function(e,t){var a,r=this.options[e];r?("string"==typeof r?a=this.element.querySelector(r):r instanceof HTMLElement&&(a=r),this[e]=a?n(a)[t]:r):this[e]=0},d.layoutItems=function(e,t){e=this._getItemsForLayout(e),this._layoutItems(e,t),this._postLayout()},d._getItemsForLayout=function(e){return e.filter((function(e){return!e.isIgnored}))},d._layoutItems=function(e,t){if(this._emitCompleteOnItems("layout",e),e&&e.length){var n=[];e.forEach((function(e){var a=this._getItemLayoutPosition(e);a.item=e,a.isInstant=t||e.isLayoutInstant,n.push(a)}),this),this._processLayoutQueue(n)}},d._getItemLayoutPosition=function(){return{x:0,y:0}},d._processLayoutQueue=function(e){this.updateStagger(),e.forEach((function(e,t){this._positionItem(e.item,e.x,e.y,e.isInstant,t)}),this)},d.updateStagger=function(){var e=this.options.stagger;if(null!=e)return this.stagger=function(e){if("number"==typeof e)return e;var t=e.match(/(^\d*\.?\d*)(\w*)/),n=t&&t[1],a=t&&t[2];if(!n.length)return 0;return(n=parseFloat(n))*(m[a]||1)}(e),this.stagger;this.stagger=0},d._positionItem=function(e,t,n,a,r){a?e.goTo(t,n):(e.stagger(r*this.stagger),e.moveTo(t,n))},d._postLayout=function(){this.resizeContainer()},d.resizeContainer=function(){if(this._getOption("resizeContainer")){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},d._getContainerSize=s,d._setContainerMeasure=function(e,t){if(void 0!==e){var n=this.size;n.isBorderBox&&(e+=t?n.paddingLeft+n.paddingRight+n.borderLeftWidth+n.borderRightWidth:n.paddingBottom+n.paddingTop+n.borderTopWidth+n.borderBottomWidth),e=Math.max(e,0),this.element.style[t?"width":"height"]=e+"px"}},d._emitCompleteOnItems=function(e,t){var n=this;function a(){n.dispatchEvent(e+"Complete",null,[t])}var r=t.length;if(t&&r){var o=0;t.forEach((function(t){t.once(e,i)}))}else a();function i(){++o==r&&a()}},d.dispatchEvent=function(e,t,n){var a=t?[t].concat(n):n;if(this.emitEvent(e,a),i)if(this.$element=this.$element||i(this.element),t){var r=i.Event(t);r.type=e,this.$element.trigger(r,n)}else this.$element.trigger(e,n)},d.ignore=function(e){var t=this.getItem(e);t&&(t.isIgnored=!0)},d.unignore=function(e){var t=this.getItem(e);t&&delete t.isIgnored},d.stamp=function(e){(e=this._find(e))&&(this.stamps=this.stamps.concat(e),e.forEach(this.ignore,this))},d.unstamp=function(e){(e=this._find(e))&&e.forEach((function(e){a.removeFrom(this.stamps,e),this.unignore(e)}),this)},d._find=function(e){if(e)return"string"==typeof e&&(e=this.element.querySelectorAll(e)),e=a.makeArray(e)},d._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},d._getBoundingRect=function(){var e=this.element.getBoundingClientRect(),t=this.size;this._boundingRect={left:e.left+t.paddingLeft+t.borderLeftWidth,top:e.top+t.paddingTop+t.borderTopWidth,right:e.right-(t.paddingRight+t.borderRightWidth),bottom:e.bottom-(t.paddingBottom+t.borderBottomWidth)}},d._manageStamp=s,d._getElementOffset=function(e){var t=e.getBoundingClientRect(),a=this._boundingRect,r=n(e);return{left:t.left-a.left-r.marginLeft,top:t.top-a.top-r.marginTop,right:a.right-t.right-r.marginRight,bottom:a.bottom-t.bottom-r.marginBottom}},d.handleEvent=a.handleEvent,d.bindResize=function(){e.addEventListener("resize",this),this.isResizeBound=!0},d.unbindResize=function(){e.removeEventListener("resize",this),this.isResizeBound=!1},d.onresize=function(){this.resize()},a.debounceMethod(u,"onresize",100),d.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},d.needsResizeLayout=function(){var e=n(this.element);return this.size&&e&&e.innerWidth!==this.size.innerWidth},d.addItems=function(e){var t=this._itemize(e);return t.length&&(this.items=this.items.concat(t)),t},d.appended=function(e){var t=this.addItems(e);t.length&&(this.layoutItems(t,!0),this.reveal(t))},d.prepended=function(e){var t=this._itemize(e);if(t.length){var n=this.items.slice(0);this.items=t.concat(n),this._resetLayout(),this._manageStamps(),this.layoutItems(t,!0),this.reveal(t),this.layoutItems(n)}},d.reveal=function(e){if(this._emitCompleteOnItems("reveal",e),e&&e.length){var t=this.updateStagger();e.forEach((function(e,n){e.stagger(n*t),e.reveal()}))}},d.hide=function(e){if(this._emitCompleteOnItems("hide",e),e&&e.length){var t=this.updateStagger();e.forEach((function(e,n){e.stagger(n*t),e.hide()}))}},d.revealItemElements=function(e){var t=this.getItems(e);this.reveal(t)},d.hideItemElements=function(e){var t=this.getItems(e);this.hide(t)},d.getItem=function(e){for(var t=0;t<this.items.length;t++){var n=this.items[t];if(n.element==e)return n}},d.getItems=function(e){e=a.makeArray(e);var t=[];return e.forEach((function(e){var n=this.getItem(e);n&&t.push(n)}),this),t},d.remove=function(e){var t=this.getItems(e);this._emitCompleteOnItems("remove",t),t&&t.length&&t.forEach((function(e){e.remove(),a.removeFrom(this.items,e)}),this)},d.destroy=function(){var e=this.element.style;e.height="",e.position="",e.width="",this.items.forEach((function(e){e.destroy()})),this.unbindResize();var t=this.element.outlayerGUID;delete c[t],delete this.element.outlayerGUID,i&&i.removeData(this.element,this.constructor.namespace)},u.data=function(e){var t=(e=a.getQueryElement(e))&&e.outlayerGUID;return t&&c[t]},u.create=function(e,t){var n=p(u);return n.defaults=a.extend({},u.defaults),a.extend(n.defaults,t),n.compatOptions=a.extend({},u.compatOptions),n.namespace=e,n.data=u.data,n.Item=p(r),a.htmlInit(n,e),i&&i.bridget&&i.bridget(e,n),n};var m={ms:1,s:1e3};return u.Item=r,u}(o,e,t,n,a)}.apply(t,a))||(e.exports=r)}(window)},function(e,t,n){var a,r;!function(o,i){a=[n(396)],void 0===(r=function(e){return function(e,t){"use strict";var n={extend:function(e,t){for(var n in t)e[n]=t[n];return e},modulo:function(e,t){return(e%t+t)%t}},a=Array.prototype.slice;n.makeArray=function(e){return Array.isArray(e)?e:null==e?[]:"object"==typeof e&&"number"==typeof e.length?a.call(e):[e]},n.removeFrom=function(e,t){var n=e.indexOf(t);-1!=n&&e.splice(n,1)},n.getParent=function(e,n){for(;e.parentNode&&e!=document.body;)if(e=e.parentNode,t(e,n))return e},n.getQueryElement=function(e){return"string"==typeof e?document.querySelector(e):e},n.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},n.filterFindElements=function(e,a){e=n.makeArray(e);var r=[];return e.forEach((function(e){if(e instanceof HTMLElement)if(a){t(e,a)&&r.push(e);for(var n=e.querySelectorAll(a),o=0;o<n.length;o++)r.push(n[o])}else r.push(e)})),r},n.debounceMethod=function(e,t,n){n=n||100;var a=e.prototype[t],r=t+"Timeout";e.prototype[t]=function(){var e=this[r];clearTimeout(e);var t=arguments,o=this;this[r]=setTimeout((function(){a.apply(o,t),delete o[r]}),n)}},n.docReady=function(e){var t=document.readyState;"complete"==t||"interactive"==t?setTimeout(e):document.addEventListener("DOMContentLoaded",e)},n.toDashed=function(e){return e.replace(/(.)([A-Z])/g,(function(e,t,n){return t+"-"+n})).toLowerCase()};var r=e.console;return n.htmlInit=function(t,a){n.docReady((function(){var o=n.toDashed(a),i="data-"+o,s=document.querySelectorAll("["+i+"]"),l=document.querySelectorAll(".js-"+o),c=n.makeArray(s).concat(n.makeArray(l)),u=i+"-options",d=e.jQuery;c.forEach((function(e){var n,o=e.getAttribute(i)||e.getAttribute(u);try{n=o&&JSON.parse(o)}catch(t){return void(r&&r.error("Error parsing "+i+" on "+e.className+": "+t))}var s=new t(e,n);d&&d.data(e,a,s)}))}))},n}(o,e)}.apply(t,a))||(e.exports=r)}(window)},function(e,t,n){var a,r;!function(o,i){"use strict";void 0===(r="function"==typeof(a=i)?a.call(t,n,t,e):a)||(e.exports=r)}(window,(function(){"use strict";var e=function(){var e=window.Element.prototype;if(e.matches)return"matches";if(e.matchesSelector)return"matchesSelector";for(var t=["webkit","moz","ms","o"],n=0;n<t.length;n++){var a=t[n]+"MatchesSelector";if(e[a])return a}}();return function(t,n){return t[e](n)}}))},function(e,t,n){var a,r,o;window,r=[n(84),n(85)],void 0===(o="function"==typeof(a=function(e,t){"use strict";var n=document.documentElement.style,a="string"==typeof n.transition?"transition":"WebkitTransition",r="string"==typeof n.transform?"transform":"WebkitTransform",o={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[a],i={transform:r,transition:a,transitionDuration:a+"Duration",transitionProperty:a+"Property",transitionDelay:a+"Delay"};function s(e,t){e&&(this.element=e,this.layout=t,this.position={x:0,y:0},this._create())}var l=s.prototype=Object.create(e.prototype);l.constructor=s,l._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},l.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},l.getSize=function(){this.size=t(this.element)},l.css=function(e){var t=this.element.style;for(var n in e)t[i[n]||n]=e[n]},l.getPosition=function(){var e=getComputedStyle(this.element),t=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),a=e[t?"left":"right"],r=e[n?"top":"bottom"],o=parseFloat(a),i=parseFloat(r),s=this.layout.size;-1!=a.indexOf("%")&&(o=o/100*s.width),-1!=r.indexOf("%")&&(i=i/100*s.height),o=isNaN(o)?0:o,i=isNaN(i)?0:i,o-=t?s.paddingLeft:s.paddingRight,i-=n?s.paddingTop:s.paddingBottom,this.position.x=o,this.position.y=i},l.layoutPosition=function(){var e=this.layout.size,t={},n=this.layout._getOption("originLeft"),a=this.layout._getOption("originTop"),r=n?"paddingLeft":"paddingRight",o=n?"left":"right",i=n?"right":"left",s=this.position.x+e[r];t[o]=this.getXValue(s),t[i]="";var l=a?"paddingTop":"paddingBottom",c=a?"top":"bottom",u=a?"bottom":"top",d=this.position.y+e[l];t[c]=this.getYValue(d),t[u]="",this.css(t),this.emitEvent("layout",[this])},l.getXValue=function(e){var t=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!t?e/this.layout.size.width*100+"%":e+"px"},l.getYValue=function(e){var t=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&t?e/this.layout.size.height*100+"%":e+"px"},l._transitionTo=function(e,t){this.getPosition();var n=this.position.x,a=this.position.y,r=e==this.position.x&&t==this.position.y;if(this.setPosition(e,t),!r||this.isTransitioning){var o=e-n,i=t-a,s={};s.transform=this.getTranslate(o,i),this.transition({to:s,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})}else this.layoutPosition()},l.getTranslate=function(e,t){return"translate3d("+(e=this.layout._getOption("originLeft")?e:-e)+"px, "+(t=this.layout._getOption("originTop")?t:-t)+"px, 0)"},l.goTo=function(e,t){this.setPosition(e,t),this.layoutPosition()},l.moveTo=l._transitionTo,l.setPosition=function(e,t){this.position.x=parseFloat(e),this.position.y=parseFloat(t)},l._nonTransition=function(e){for(var t in this.css(e.to),e.isCleaning&&this._removeStyles(e.to),e.onTransitionEnd)e.onTransitionEnd[t].call(this)},l.transition=function(e){if(parseFloat(this.layout.options.transitionDuration)){var t=this._transn;for(var n in e.onTransitionEnd)t.onEnd[n]=e.onTransitionEnd[n];for(n in e.to)t.ingProperties[n]=!0,e.isCleaning&&(t.clean[n]=!0);e.from&&(this.css(e.from),this.element.offsetHeight),this.enableTransition(e.to),this.css(e.to),this.isTransitioning=!0}else this._nonTransition(e)};var c="opacity,"+r.replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}));l.enableTransition=function(){if(!this.isTransitioning){var e=this.layout.options.transitionDuration;e="number"==typeof e?e+"ms":e,this.css({transitionProperty:c,transitionDuration:e,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(o,this,!1)}},l.onwebkitTransitionEnd=function(e){this.ontransitionend(e)},l.onotransitionend=function(e){this.ontransitionend(e)};var u={"-webkit-transform":"transform"};l.ontransitionend=function(e){if(e.target===this.element){var t=this._transn,n=u[e.propertyName]||e.propertyName;delete t.ingProperties[n],function(e){for(var t in e)return!1;return!0}(t.ingProperties)&&this.disableTransition(),n in t.clean&&(this.element.style[e.propertyName]="",delete t.clean[n]),n in t.onEnd&&(t.onEnd[n].call(this),delete t.onEnd[n]),this.emitEvent("transitionEnd",[this])}},l.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(o,this,!1),this.isTransitioning=!1},l._removeStyles=function(e){var t={};for(var n in e)t[n]="";this.css(t)};var d={transitionProperty:"",transitionDuration:"",transitionDelay:""};return l.removeTransitionStyles=function(){this.css(d)},l.stagger=function(e){e=isNaN(e)?0:e,this.staggerDelay=e+"ms"},l.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},l.remove=function(){a&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",(function(){this.removeElem()})),this.hide()):this.removeElem()},l.reveal=function(){delete this.isHidden,this.css({display:""});var e=this.layout.options,t={};t[this.getHideRevealTransitionEndProperty("visibleStyle")]=this.onRevealTransitionEnd,this.transition({from:e.hiddenStyle,to:e.visibleStyle,isCleaning:!0,onTransitionEnd:t})},l.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},l.getHideRevealTransitionEndProperty=function(e){var t=this.layout.options[e];if(t.opacity)return"opacity";for(var n in t)return n},l.hide=function(){this.isHidden=!0,this.css({display:""});var e=this.layout.options,t={};t[this.getHideRevealTransitionEndProperty("hiddenStyle")]=this.onHideTransitionEnd,this.transition({from:e.visibleStyle,to:e.hiddenStyle,isCleaning:!0,onTransitionEnd:t})},l.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},l.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},s})?a.apply(t,r):a)||(e.exports=o)},function(e,t,n){var a,r; |
| 77 |
/*! |
| 78 |
* imagesLoaded v4.1.4 |
| 79 |
* JavaScript is all like "You images are done yet or what?" |
| 80 |
* MIT License |
| 81 |
*/!function(o,i){"use strict";a=[n(84)],void 0===(r=function(e){return function(e,t){var n=e.jQuery,a=e.console;function r(e,t){for(var n in t)e[n]=t[n];return e}var o=Array.prototype.slice;function i(e,t,s){if(!(this instanceof i))return new i(e,t,s);var l,c=e;("string"==typeof e&&(c=document.querySelectorAll(e)),c)?(this.elements=(l=c,Array.isArray(l)?l:"object"==typeof l&&"number"==typeof l.length?o.call(l):[l]),this.options=r({},this.options),"function"==typeof t?s=t:r(this.options,t),s&&this.on("always",s),this.getImages(),n&&(this.jqDeferred=new n.Deferred),setTimeout(this.check.bind(this))):a.error("Bad element for imagesLoaded "+(c||e))}i.prototype=Object.create(t.prototype),i.prototype.options={},i.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},i.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),!0===this.options.background&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&s[t]){for(var n=e.querySelectorAll("img"),a=0;a<n.length;a++){var r=n[a];this.addImage(r)}if("string"==typeof this.options.background){var o=e.querySelectorAll(this.options.background);for(a=0;a<o.length;a++){var i=o[a];this.addElementBackgroundImages(i)}}}};var s={1:!0,9:!0,11:!0};function l(e){this.img=e}function c(e,t){this.url=e,this.element=t,this.img=new Image}return i.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var n=/url\((['"])?(.*?)\1\)/gi,a=n.exec(t.backgroundImage);null!==a;){var r=a&&a[2];r&&this.addBackground(r,e),a=n.exec(t.backgroundImage)}},i.prototype.addImage=function(e){var t=new l(e);this.images.push(t)},i.prototype.addBackground=function(e,t){var n=new c(e,t);this.images.push(n)},i.prototype.check=function(){var e=this;function t(t,n,a){setTimeout((function(){e.progress(t,n,a)}))}this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?this.images.forEach((function(e){e.once("progress",t),e.check()})):this.complete()},i.prototype.progress=function(e,t,n){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+n,e,t)},i.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},l.prototype=Object.create(t.prototype),l.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.src)},l.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},l.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},l.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},l.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},l.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},l.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},c.prototype=Object.create(l.prototype),c.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},c.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},c.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},i.makeJQueryPlugin=function(t){(t=t||e.jQuery)&&((n=t).fn.imagesLoaded=function(e,t){return new i(this,e,t).jqDeferred.promise(n(this))})},i.makeJQueryPlugin(),i}(o,e)}.apply(t,a))||(e.exports=r)}("undefined"!=typeof window?window:this)},function(e,t,n){var a=n(26),r=n(12),o=n(400),i=n(14),s=n(29),l=n(13),c=Object.prototype.hasOwnProperty,u=o((function(e,t){if(s(t)||i(t))r(t,l(t),e);else for(var n in t)c.call(t,n)&&a(e,n,t[n])}));e.exports=u},function(e,t,n){var a=n(401),r=n(402);e.exports=function(e){return a((function(t,n){var a=-1,o=n.length,i=o>1?n[o-1]:void 0,s=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,s&&r(n[0],n[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++a<o;){var l=n[a];l&&e(t,l,a,i)}return t}))}},function(e,t,n){var a=n(33),r=n(112),o=n(113);e.exports=function(e,t){return o(r(e,t,a),e+"")}},function(e,t,n){var a=n(23),r=n(14),o=n(28),i=n(5);e.exports=function(e,t,n){if(!i(n))return!1;var s=typeof t;return!!("number"==s?r(n)&&o(t,n.length):"string"==s&&t in n)&&a(n[t],e)}},function(e,t,n){"use strict";var a=n(253).forEach,r=n(404),o=n(405),i=n(406),s=n(407),l=n(408),c=n(254),u=n(409),d=n(411),p=n(412),m=n(413);function f(e){return Array.isArray(e)||void 0!==e.length}function h(e){if(Array.isArray(e))return e;var t=[];return a(e,(function(e){t.push(e)})),t}function b(e){return e&&1===e.nodeType}function g(e,t,n){var a=e[t];return null==a&&void 0!==n?n:a}e.exports=function(e){var t;if((e=e||{}).idHandler)t={get:function(t){return e.idHandler.get(t,!0)},set:e.idHandler.set};else{var n=i(),y=s({idGenerator:n,stateHandler:d});t=y}var _=e.reporter;_||(_=l(!1===_));var k=g(e,"batchProcessor",u({reporter:_})),w={};w.callOnAdd=!!g(e,"callOnAdd",!0),w.debug=!!g(e,"debug",!1);var v,M=o(t),L=r({stateHandler:d}),T=g(e,"strategy","object"),E=g(e,"important",!1),S={reporter:_,batchProcessor:k,stateHandler:d,idHandler:t,important:E};if("scroll"===T&&(c.isLegacyOpera()?(_.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy."),T="object"):c.isIE(9)&&(_.warn("Scroll strategy is not supported on IE9. Changing to object strategy."),T="object")),"scroll"===T)v=m(S);else{if("object"!==T)throw new Error("Invalid strategy name: "+T);v=p(S)}var x={};return{listenTo:function(e,n,r){function o(e){var t=M.get(e);a(t,(function(t){t(e)}))}function i(e,t,n){M.add(t,n),e&&n(t)}if(r||(r=n,n=e,e={}),!n)throw new Error("At least one element required.");if(!r)throw new Error("Listener required.");if(b(n))n=[n];else{if(!f(n))return _.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");n=h(n)}var s=0,l=g(e,"callOnAdd",w.callOnAdd),c=g(e,"onReady",(function(){})),u=g(e,"debug",w.debug);a(n,(function(e){d.getState(e)||(d.initState(e),t.set(e));var p=t.get(e);if(u&&_.log("Attaching listener to element",p,e),!L.isDetectable(e))return u&&_.log(p,"Not detectable."),L.isBusy(e)?(u&&_.log(p,"System busy making it detectable"),i(l,e,r),x[p]=x[p]||[],void x[p].push((function(){++s===n.length&&c()}))):(u&&_.log(p,"Making detectable..."),L.markBusy(e,!0),v.makeDetectable({debug:u,important:E},e,(function(e){if(u&&_.log(p,"onElementDetectable"),d.getState(e)){L.markAsDetectable(e),L.markBusy(e,!1),v.addListener(e,o),i(l,e,r);var t=d.getState(e);if(t&&t.startSize){var m=e.offsetWidth,f=e.offsetHeight;t.startSize.width===m&&t.startSize.height===f||o(e)}x[p]&&a(x[p],(function(e){e()}))}else u&&_.log(p,"Element uninstalled before being detectable.");delete x[p],++s===n.length&&c()})));u&&_.log(p,"Already detecable, adding listener."),i(l,e,r),s++})),s===n.length&&c()},removeListener:M.removeListener,removeAllListeners:M.removeAllListeners,uninstall:function(e){if(!e)return _.error("At least one element is required.");if(b(e))e=[e];else{if(!f(e))return _.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");e=h(e)}a(e,(function(e){M.removeAllListeners(e),v.uninstall(e),d.cleanState(e)}))},initDocument:function(e){v.initDocument&&v.initDocument(e)}}}},function(e,t,n){"use strict";e.exports=function(e){var t=e.stateHandler.getState;return{isDetectable:function(e){var n=t(e);return n&&!!n.isDetectable},markAsDetectable:function(e){t(e).isDetectable=!0},isBusy:function(e){return!!t(e).busy},markBusy:function(e,n){t(e).busy=!!n}}}},function(e,t,n){"use strict";e.exports=function(e){var t={};function n(n){var a=e.get(n);return void 0===a?[]:t[a]||[]}return{get:n,add:function(n,a){var r=e.get(n);t[r]||(t[r]=[]),t[r].push(a)},removeListener:function(e,t){for(var a=n(e),r=0,o=a.length;r<o;++r)if(a[r]===t){a.splice(r,1);break}},removeAllListeners:function(e){var t=n(e);t&&(t.length=0)}}}},function(e,t,n){"use strict";e.exports=function(){var e=1;return{generate:function(){return e++}}}},function(e,t,n){"use strict";e.exports=function(e){var t=e.idGenerator,n=e.stateHandler.getState;return{get:function(e){var t=n(e);return t&&void 0!==t.id?t.id:null},set:function(e){var a=n(e);if(!a)throw new Error("setId required the element to have a resize detection state.");var r=t.generate();return a.id=r,r}}}},function(e,t,n){"use strict";e.exports=function(e){function t(){}var n={log:t,warn:t,error:t};if(!e&&window.console){var a=function(e,t){e[t]=function(){var e=console[t];if(e.apply)e.apply(console,arguments);else for(var n=0;n<arguments.length;n++)e(arguments[n])}};a(n,"log"),a(n,"warn"),a(n,"error")}return n}},function(e,t,n){"use strict";var a=n(410);function r(){var e={},t=0,n=0,a=0;return{add:function(r,o){o||(o=r,r=0),r>n?n=r:r<a&&(a=r),e[r]||(e[r]=[]),e[r].push(o),t++},process:function(){for(var t=a;t<=n;t++)for(var r=e[t],o=0;o<r.length;o++){(0,r[o])()}},size:function(){return t}}}e.exports=function(e){var t=(e=e||{}).reporter,n=a.getOption(e,"async",!0),o=a.getOption(e,"auto",!0);o&&!n&&(t&&t.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true."),n=!0);var i,s=r(),l=!1;function c(){for(l=!0;s.size();){var e=s;s=r(),e.process()}l=!1}function u(){var e;e=c,i=setTimeout(e,0)}return{add:function(e,t){!l&&o&&n&&0===s.size()&&u(),s.add(e,t)},force:function(e){l||(void 0===e&&(e=n),i&&(clearTimeout(i),i=null),e?u():c())}}}},function(e,t,n){"use strict";(e.exports={}).getOption=function(e,t,n){var a=e[t];if(null==a&&void 0!==n)return n;return a}},function(e,t,n){"use strict";function a(e){return e._erd}e.exports={initState:function(e){return e._erd={},a(e)},getState:a,cleanState:function(e){delete e._erd}}},function(e,t,n){"use strict";var a=n(254);e.exports=function(e){var t=(e=e||{}).reporter,n=e.batchProcessor,r=e.stateHandler.getState;if(!t)throw new Error("Missing required dependency: reporter.");function o(t){var n=e.important?" !important; ":"; ";return(t.join(n)+n).trim()}function i(e){return r(e).object}return{makeDetectable:function(e,i,s){s||(s=i,i=e,e=null),(e=e||{}).debug,a.isIE(8)?s(i):function(i,s){var l=o(["display: block","position: absolute","top: 0","left: 0","width: 100%","height: 100%","border: none","padding: 0","margin: 0","opacity: 0","z-index: -1000","pointer-events: none"]),c=!1,u=window.getComputedStyle(i),d=i.offsetWidth,p=i.offsetHeight;function m(){function n(){if("static"===u.position){i.style.setProperty("position","relative",e.important?"important":"");var n=function(t,n,a,r){var o=a[r];"auto"!==o&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(o)&&(t.warn("An element that is positioned static has style."+r+"="+o+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+r+" will be set to 0. Element: ",n),n.style.setProperty(r,"0",e.important?"important":""))};n(t,i,u,"top"),n(t,i,u,"right"),n(t,i,u,"bottom"),n(t,i,u,"left")}}""!==u.position&&(n(),c=!0);var o=document.createElement("object");o.style.cssText=l,o.tabIndex=-1,o.type="text/html",o.setAttribute("aria-hidden","true"),o.onload=function(){c||n(),function e(t,n){if(!t.contentDocument){var a=r(t);return a.checkForObjectDocumentTimeoutId&&window.clearTimeout(a.checkForObjectDocumentTimeoutId),void(a.checkForObjectDocumentTimeoutId=setTimeout((function(){a.checkForObjectDocumentTimeoutId=0,e(t,n)}),100))}n(t.contentDocument)}(this,(function(e){s(i)}))},a.isIE()||(o.data="about:blank"),r(i)&&(i.appendChild(o),r(i).object=o,a.isIE()&&(o.data="about:blank"))}r(i).startSize={width:d,height:p},n?n.add(m):m()}(i,s)},addListener:function(e,t){function n(){t(e)}if(a.isIE(8))r(e).object={proxy:n},e.attachEvent("onresize",n);else{var o=i(e);if(!o)throw new Error("Element is not detectable by this strategy.");o.contentDocument.defaultView.addEventListener("resize",n)}},uninstall:function(e){if(r(e)){var t=i(e);t&&(a.isIE(8)?e.detachEvent("onresize",t.proxy):e.removeChild(t),r(e).checkForObjectDocumentTimeoutId&&window.clearTimeout(r(e).checkForObjectDocumentTimeoutId),delete r(e).object)}}}}},function(e,t,n){"use strict";var a=n(253).forEach;e.exports=function(e){var t=(e=e||{}).reporter,n=e.batchProcessor,r=e.stateHandler.getState,o=(e.stateHandler.hasState,e.idHandler);if(!n)throw new Error("Missing required dependency: batchProcessor");if(!t)throw new Error("Missing required dependency: reporter.");var i=function(){var e=document.createElement("div");e.style.cssText=l(["position: absolute","width: 1000px","height: 1000px","visibility: hidden","margin: 0","padding: 0"]);var t=document.createElement("div");t.style.cssText=l(["position: absolute","width: 500px","height: 500px","overflow: scroll","visibility: none","top: -1500px","left: -1500px","visibility: hidden","margin: 0","padding: 0"]),t.appendChild(e),document.body.insertBefore(t,document.body.firstChild);var n=500-t.clientWidth,a=500-t.clientHeight;return document.body.removeChild(t),{width:n,height:a}}();function s(e){!function(e,t,n){if(!e.getElementById(t)){var a=n+"_animation",r=n+"_animation_active",o="/* Created by the element-resize-detector library. */\n";o+="."+n+" > div::-webkit-scrollbar { "+l(["display: none"])+" }\n\n",o+="."+r+" { "+l(["-webkit-animation-duration: 0.1s","animation-duration: 0.1s","-webkit-animation-name: "+a,"animation-name: "+a])+" }\n",o+="@-webkit-keyframes "+a+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n",function(n,a){a=a||function(t){e.head.appendChild(t)};var r=e.createElement("style");r.innerHTML=n,r.id=t,a(r)}(o+="@keyframes "+a+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }")}}(e,"erd_scroll_detection_scrollbar_style","erd_scroll_detection_container")}function l(t){var n=e.important?" !important; ":"; ";return(t.join(n)+n).trim()}function c(e,n,a){if(e.addEventListener)e.addEventListener(n,a);else{if(!e.attachEvent)return t.error("[scroll] Don't know how to add event listeners.");e.attachEvent("on"+n,a)}}function u(e,n,a){if(e.removeEventListener)e.removeEventListener(n,a);else{if(!e.detachEvent)return t.error("[scroll] Don't know how to remove event listeners.");e.detachEvent("on"+n,a)}}function d(e){return r(e).container.childNodes[0].childNodes[0].childNodes[0]}function p(e){return r(e).container.childNodes[0].childNodes[0].childNodes[1]}return s(window.document),{makeDetectable:function(e,s,u){function m(){if(e.debug){var n=Array.prototype.slice.call(arguments);if(n.unshift(o.get(s),"Scroll: "),t.log.apply)t.log.apply(null,n);else for(var a=0;a<n.length;a++)t.log(n[a])}}function f(e){var t=r(e).container.childNodes[0],n=window.getComputedStyle(t);return!n.width||-1===n.width.indexOf("px")}function h(){var e=window.getComputedStyle(s),t={};return t.position=e.position,t.width=s.offsetWidth,t.height=s.offsetHeight,t.top=e.top,t.right=e.right,t.bottom=e.bottom,t.left=e.left,t.widthCSS=e.width,t.heightCSS=e.height,t}function b(){if(m("storeStyle invoked."),r(s)){var e=h();r(s).style=e}else m("Aborting because element has been uninstalled")}function g(e,t,n){r(e).lastWidth=t,r(e).lastHeight=n}function y(){return 2*i.width+1}function _(){return 2*i.height+1}function k(e){return e+10+y()}function w(e){return e+10+_()}function v(e,t,n){var a=d(e),r=p(e),o=k(t),i=w(n),s=function(e){return 2*e+y()}(t),l=function(e){return 2*e+_()}(n);a.scrollLeft=o,a.scrollTop=i,r.scrollLeft=s,r.scrollTop=l}function M(){var e=r(s).container;if(!e){(e=document.createElement("div")).className="erd_scroll_detection_container",e.style.cssText=l(["visibility: hidden","display: inline","width: 0px","height: 0px","z-index: -1","overflow: hidden","margin: 0","padding: 0"]),r(s).container=e,function(e){e.className+=" erd_scroll_detection_container_animation_active"}(e),s.appendChild(e);var t=function(){r(s).onRendered&&r(s).onRendered()};c(e,"animationstart",t),r(s).onAnimationStart=t}return e}function L(){if(m("Injecting elements"),r(s)){!function(){var n=r(s).style;if("static"===n.position){s.style.setProperty("position","relative",e.important?"important":"");var a=function(e,t,n,a){var r=n[a];"auto"!==r&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(r)&&(e.warn("An element that is positioned static has style."+a+"="+r+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+a+" will be set to 0. Element: ",t),t.style[a]=0)};a(t,s,n,"top"),a(t,s,n,"right"),a(t,s,n,"bottom"),a(t,s,n,"left")}}();var n=r(s).container;n||(n=M());var a,o,u,d,p=i.width,f=i.height,h=l(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden","width: 100%","height: 100%","left: 0px","top: 0px"]),b=l(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden"].concat(["left: "+(a=(a=-(1+p))?a+"px":"0"),"top: "+(o=(o=-(1+f))?o+"px":"0"),"right: "+(d=(d=-p)?d+"px":"0"),"bottom: "+(u=(u=-f)?u+"px":"0")])),g=l(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),y=l(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),_=l(["position: absolute","left: 0","top: 0"]),k=l(["position: absolute","width: 200%","height: 200%"]),w=document.createElement("div"),v=document.createElement("div"),L=document.createElement("div"),T=document.createElement("div"),E=document.createElement("div"),S=document.createElement("div");w.dir="ltr",w.style.cssText=h,w.className="erd_scroll_detection_container",v.className="erd_scroll_detection_container",v.style.cssText=b,L.style.cssText=g,T.style.cssText=_,E.style.cssText=y,S.style.cssText=k,L.appendChild(T),E.appendChild(S),v.appendChild(L),v.appendChild(E),w.appendChild(v),n.appendChild(w),c(L,"scroll",x),c(E,"scroll",C),r(s).onExpandScroll=x,r(s).onShrinkScroll=C}else m("Aborting because element has been uninstalled");function x(){r(s).onExpand&&r(s).onExpand()}function C(){r(s).onShrink&&r(s).onShrink()}}function T(){function i(t,n,a){var r=function(e){return d(e).childNodes[0]}(t),o=k(n),i=w(a);r.style.setProperty("width",o+"px",e.important?"important":""),r.style.setProperty("height",i+"px",e.important?"important":"")}function l(a){var l=s.offsetWidth,u=s.offsetHeight,d=l!==r(s).lastWidth||u!==r(s).lastHeight;m("Storing current size",l,u),g(s,l,u),n.add(0,(function(){if(d)if(r(s))if(c()){if(e.debug){var n=s.offsetWidth,a=s.offsetHeight;n===l&&a===u||t.warn(o.get(s),"Scroll: Size changed before updating detector elements.")}i(s,l,u)}else m("Aborting because element container has not been initialized");else m("Aborting because element has been uninstalled")})),n.add(1,(function(){r(s)?c()?v(s,l,u):m("Aborting because element container has not been initialized"):m("Aborting because element has been uninstalled")})),d&&a&&n.add(2,(function(){r(s)?c()?a():m("Aborting because element container has not been initialized"):m("Aborting because element has been uninstalled")}))}function c(){return!!r(s).container}function u(){m("notifyListenersIfNeeded invoked");var e=r(s);return void 0===r(s).lastNotifiedWidth&&e.lastWidth===e.startSize.width&&e.lastHeight===e.startSize.height?m("Not notifying: Size is the same as the start size, and there has been no notification yet."):e.lastWidth===e.lastNotifiedWidth&&e.lastHeight===e.lastNotifiedHeight?m("Not notifying: Size already notified"):(m("Current size not notified, notifying..."),e.lastNotifiedWidth=e.lastWidth,e.lastNotifiedHeight=e.lastHeight,void a(r(s).listeners,(function(e){e(s)})))}function h(){m("Scroll detected."),f(s)?m("Scroll event fired while unrendered. Ignoring..."):l(u)}if(m("registerListenersAndPositionElements invoked."),r(s)){r(s).onRendered=function(){if(m("startanimation triggered."),f(s))m("Ignoring since element is still unrendered...");else{m("Element rendered.");var e=d(s),t=p(s);0!==e.scrollLeft&&0!==e.scrollTop&&0!==t.scrollLeft&&0!==t.scrollTop||(m("Scrollbars out of sync. Updating detector elements..."),l(u))}},r(s).onExpand=h,r(s).onShrink=h;var b=r(s).style;i(s,b.width,b.height)}else m("Aborting because element has been uninstalled")}function E(){if(m("finalizeDomMutation invoked."),r(s)){var e=r(s).style;g(s,e.width,e.height),v(s,e.width,e.height)}else m("Aborting because element has been uninstalled")}function S(){u(s)}function x(){var e;m("Installing..."),r(s).listeners=[],e=h(),r(s).startSize={width:e.width,height:e.height},m("Element start size",r(s).startSize),n.add(0,b),n.add(1,L),n.add(2,T),n.add(3,E),n.add(4,S)}u||(u=s,s=e,e=null),e=e||{},m("Making detectable..."),!function(e){return!function(e){return e===e.ownerDocument.body||e.ownerDocument.body.contains(e)}(e)||null===window.getComputedStyle(e)}(s)?x():(m("Element is detached"),M(),m("Waiting until element is attached..."),r(s).onRendered=function(){m("Element is now attached"),x()})},addListener:function(e,t){if(!r(e).listeners.push)throw new Error("Cannot add listener to an element that is not detectable.");r(e).listeners.push(t)},uninstall:function(e){var t=r(e);t&&(t.onExpandScroll&&u(d(e),"scroll",t.onExpandScroll),t.onShrinkScroll&&u(p(e),"scroll",t.onShrinkScroll),t.onAnimationStart&&u(t.container,"animationstart",t.onAnimationStart),t.container&&e.removeChild(t.container))},initDocument:s}}},function(e,t,n){var a=n(5),r=n(415),o=n(125),i=Math.max,s=Math.min;e.exports=function(e,t,n){var l,c,u,d,p,m,f=0,h=!1,b=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=l,a=c;return l=c=void 0,f=t,d=e.apply(a,n)}function _(e){return f=e,p=setTimeout(w,t),h?y(e):d}function k(e){var n=e-m;return void 0===m||n>=t||n<0||b&&e-f>=u}function w(){var e=r();if(k(e))return v(e);p=setTimeout(w,function(e){var n=t-(e-m);return b?s(n,u-(e-f)):n}(e))}function v(e){return p=void 0,g&&l?y(e):(l=c=void 0,d)}function M(){var e=r(),n=k(e);if(l=arguments,c=this,m=e,n){if(void 0===p)return _(m);if(b)return clearTimeout(p),p=setTimeout(w,t),y(m)}return void 0===p&&(p=setTimeout(w,t)),d}return t=o(t)||0,a(n)&&(h=!!n.leading,u=(b="maxWait"in n)?i(o(n.maxWait)||0,t):u,g="trailing"in n?!!n.trailing:g),M.cancel=function(){void 0!==p&&clearTimeout(p),f=0,l=m=c=p=void 0},M.flush=function(){return void 0===p?d:v(r())},M}},function(e,t,n){var a=n(4);e.exports=function(){return a.Date.now()}},function(e,t,n){"use strict";var a=n(2),r=n(417);if(void 0===a)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new a.Component).updater;e.exports=r(a.Component,a.isValidElement,o)},function(e,t,n){"use strict";var a=n(83),r=n(418),o=n(419);e.exports=function(e,t,n){var i=[],s={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},l={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},c={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)d(e,t[n])},childContextTypes:function(e,t){e.childContextTypes=a({},e.childContextTypes,t)},contextTypes:function(e,t){e.contextTypes=a({},e.contextTypes,t)},getDefaultProps:function(e,t){e.getDefaultProps?e.getDefaultProps=m(e.getDefaultProps,t):e.getDefaultProps=t},propTypes:function(e,t){e.propTypes=a({},e.propTypes,t)},statics:function(e,t){!function(e,t){if(!t)return;for(var n in t){var a=t[n];if(t.hasOwnProperty(n)){if(o(!(n in c),'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n),n in e){var r=l.hasOwnProperty(n)?l[n]:null;return o("DEFINE_MANY_MERGED"===r,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(e[n]=m(e[n],a))}e[n]=a}}}(e,t)},autobind:function(){}};function u(e,t){var n=s.hasOwnProperty(t)?s[t]:null;y.hasOwnProperty(t)&&o("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",t),e&&o("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",t)}function d(e,n){if(n){o("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),o(!t(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var a=e.prototype,r=a.__reactAutoBindPairs;for(var i in n.hasOwnProperty("mixins")&&c.mixins(e,n.mixins),n)if(n.hasOwnProperty(i)&&"mixins"!==i){var l=n[i],d=a.hasOwnProperty(i);if(u(d,i),c.hasOwnProperty(i))c[i](e,l);else{var p=s.hasOwnProperty(i);if("function"==typeof l&&!p&&!d&&!1!==n.autobind)r.push(i,l),a[i]=l;else if(d){var h=s[i];o(p&&("DEFINE_MANY_MERGED"===h||"DEFINE_MANY"===h),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",h,i),"DEFINE_MANY_MERGED"===h?a[i]=m(a[i],l):"DEFINE_MANY"===h&&(a[i]=f(a[i],l))}else a[i]=l}}}else;}function p(e,t){for(var n in o(e&&t&&"object"==typeof e&&"object"==typeof t,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."),t)t.hasOwnProperty(n)&&(o(void 0===e[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),e[n]=t[n]);return e}function m(e,t){return function(){var n=e.apply(this,arguments),a=t.apply(this,arguments);if(null==n)return a;if(null==a)return n;var r={};return p(r,n),p(r,a),r}}function f(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function h(e,t){return t.bind(e)}var b={componentDidMount:function(){this.__isMounted=!0}},g={componentWillUnmount:function(){this.__isMounted=!1}},y={replaceState:function(e,t){this.updater.enqueueReplaceState(this,e,t)},isMounted:function(){return!!this.__isMounted}},_=function(){};return a(_.prototype,e.prototype,y),function(e){var t=function(e,a,i){this.__reactAutoBindPairs.length&&function(e){for(var t=e.__reactAutoBindPairs,n=0;n<t.length;n+=2){var a=t[n],r=t[n+1];e[a]=h(e,r)}}(this),this.props=e,this.context=a,this.refs=r,this.updater=i||n,this.state=null;var s=this.getInitialState?this.getInitialState():null;o("object"==typeof s&&!Array.isArray(s),"%s.getInitialState(): must return an object or null",t.displayName||"ReactCompositeComponent"),this.state=s};for(var a in t.prototype=new _,t.prototype.constructor=t,t.prototype.__reactAutoBindPairs=[],i.forEach(d.bind(null,t)),d(t,b),d(t,e),d(t,g),t.getDefaultProps&&(t.defaultProps=t.getDefaultProps()),o(t.prototype.render,"createClass(...): Class specification must implement a `render` method."),s)t.prototype[a]||(t.prototype[a]=null);return t}}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";e.exports=function(e,t,n,a,r,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,a,r,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){var a=n(33);e.exports=function(e){return"function"==typeof e?e:a}},function(e,t,n){"use strict";n.r(t);n(422),n(426),n(262),n(427);const a={};a.category=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-blockspare",fill:"url(#blockspare-gradient)",width:"20px",height:"20px",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 608.22 704.72"},wp.element.createElement("path",{fill:"#3b1a5b",className:"cls-1",d:"M470.13,115.84,212,305.42,200.76,649.88,434.05,767.41l261.4-218.67L482.9,441.92Zm-199,219.58L413.69,228.17l1.15,179.42L263.64,526.79Zm317.46,228L426.88,706.87,254.64,612.08,426,482.82",transform:"translate(-200.76 -115.84)"}),wp.element.createElement("polygon",{className:"cls-1",fill:"#3b1a5b",points:"329.48 30.28 384.8 58.16 390.46 257.8 444.73 283.66 440.69 86.31 598.38 165.75 608.22 490.54 338.79 704.72 290.36 680.32 549.52 463.95 546.49 189.07 495.83 164.86 492.17 374.97 337.56 296.15 329.48 30.28"}),wp.element.createElement("polygon",{className:"cls-2",fill:"#8b249c",points:"0 534.04 53.88 496.23 226.12 591.02 387.85 447.54 225.29 366.97 282.14 326.08 494.69 432.9 233.29 651.57 0 534.04"}),wp.element.createElement("polygon",{className:"cls-2",fill:"#8b249c",points:"290.36 680.32 338.79 704.72 608.22 490.54 549.52 463.95 290.36 680.32"})),a.accordion=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-accordion",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"6.8",width:"17.6",height:"12.6"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"3.6",width:"17.6",height:"2"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"1.2",y:"0.6",width:"17.6",height:"2"}))),a.container=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-container",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("circle",{id:"XMLID_3_",cx:"10",cy:"9.9",r:"5.5"}),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("rect",{id:"XMLID_5_",x:"8.9",y:"6.1",class:"st0",width:"2.2",height:"7.9"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"6",y:"9",class:"st0",width:"7.9",height:"2.2"}))),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_8_",d:"M20,20H0V0H20V20z M1,19H19V1H1V19z"}))),a.contentbox=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-contentbox",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("circle",{id:"XMLID_1_",cx:"5.7",cy:"10",r:"3.8"}),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("rect",{id:"XMLID_5_",x:"10.7",y:"10.6",width:"7.3",height:"2"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"10.7",y:"7.4",width:"7.3",height:"2"}))),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_4_",d:"M19.8,16.8H0.2V3.2h19.7V16.8z M0.9,16h18.2V4H0.9V16z"}))),a.userprofile=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-userprofile",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M13.1,2.5c1.7,1.7,1.7,4.5,0,6.3s-4.5,1.7-6.3,0s-1.7-4.5,0-6.3C8.6,0.7,11.4,0.7,13.1,2.5"}),wp.element.createElement("path",{id:"XMLID_2_",d:"M16.8,13.2c-4-2.7-9.5-2.7-13.6,0c-0.6,0.4-1,1.1-1,1.8v3.8h15.5V15C17.7,14.3,17.4,13.6,16.8,13.2 L16.8,13.2z"}))),a.starrating=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-starrating",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("polygon",{id:"XMLID_6_",points:"17.4,8.2 12.3,7.5 10,2.8 7.7,7.5 2.6,8.2 6.3,11.8 5.4,16.9 10,14.5 14.6,16.9 13.7,11.8 "}),wp.element.createElement("polygon",{id:"XMLID_8_",class:"st0",points:"13.7,15.8 10,13.8 10,4.2 11.9,8 16,8.6 13,11.6 "}))),a.imagecarousel=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-imagecarousel",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_9_",d:"M16.4,16.4H3.6V3.6h12.7V16.4z M4.6,15.4h10.7V4.6H4.6V15.4z"})),wp.element.createElement("rect",{id:"XMLID_3_",x:"17.5",y:"4.1",width:"2.5",height:"11.7"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"0",y:"4.1",width:"2.5",height:"11.7"}),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("polygon",{id:"XMLID_2_",points:"5.1,14 8.6,7.9 12.1,14 "}),wp.element.createElement("polygon",{id:"XMLID_6_",points:"10.4,14 12.6,10.1 14.9,14 "}),wp.element.createElement("circle",{id:"XMLID_5_",cx:"12.4",cy:"7.1",r:"1.4"}))),a.imageslider=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-imageslider",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_9_",d:"M16.4,16.4H3.6V3.6h12.7V16.4z M4.6,15.4h10.7V4.6H4.6V15.4z"}),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("polygon",{id:"XMLID_5_",points:"5.1,14 8.6,7.9 12.1,14 "}),wp.element.createElement("polygon",{id:"XMLID_6_",points:"10.4,14 12.6,10.1 14.9,14 "}),wp.element.createElement("circle",{id:"XMLID_7_",cx:"12.4",cy:"7.1",r:"1.4"})),wp.element.createElement("path",{id:"XMLID_20_",d:"M1.1,10l1.5-0.9C2.7,9,2.7,8.9,2.7,8.7c0-0.1-0.1-0.3-0.2-0.4C2.4,8.2,2.2,8.2,2,8.3L0.1,9.5 C0,9.6,0,9.7,0,9.9v0.2c0,0.2,0,0.4,0.1,0.5L2,11.7c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.4 c0-0.2-0.1-0.3-0.2-0.4L1.1,10z"}),wp.element.createElement("path",{id:"XMLID_17_",d:"M19.9,9.5L18,8.3c-0.2-0.1-0.4-0.1-0.6,0.1c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4l1.5,0.9 l-1.5,0.9c-0.1,0.1-0.2,0.2-0.2,0.4c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1l1.8-1.1 c0.2-0.1,0.2-0.3,0.2-0.5V9.9C20,9.7,20,9.6,19.9,9.5z"})),a.postlist=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postlist",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_5_",d:"M6.8,8.3H0.9V2h5.9V8.3z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_3_",x:"8.7",y:"3.1",width:"8.5",height:"1.4"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"8.7",y:"5.8",width:"10.2",height:"1.4"})),wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M6.9,18.2H0.8v-6.6h6.1V18.2z"})),wp.element.createElement("g",{id:"XMLID_11_"},wp.element.createElement("rect",{id:"XMLID_13_",x:"8.7",y:"12.8",width:"8.5",height:"1.4"}),wp.element.createElement("rect",{id:"XMLID_12_",x:"8.7",y:"15.5",width:"10.2",height:"1.4"}))),a.postgrid=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postgrid",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M9,11.2H1V2.9h8V11.2z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M19,11.2h-8V2.9h8V11.2z"})),wp.element.createElement("rect",{id:"XMLID_1_",x:"1",y:"12.4",width:"7.2",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"1",y:"15.3",width:"8",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"11",y:"12.4",width:"7.2",height:"1.8"}),wp.element.createElement("rect",{id:"XMLID_7_",x:"11",y:"15.3",width:"8",height:"1.8"}))),a.postcarousel=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-postcarousel",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("g",{id:"XMLID_14_"},wp.element.createElement("path",{id:"XMLID_15_",d:"M16,11.4H4V1.7H16V11.4z"})),wp.element.createElement("rect",{id:"XMLID_5_",x:"4",y:"12.8",width:"10.8",height:"2.1"}),wp.element.createElement("rect",{id:"XMLID_6_",x:"4",y:"16.2",width:"12.1",height:"2.1"})),wp.element.createElement("path",{id:"XMLID_20_",d:"M1.1,10l1.5-0.9C2.7,9,2.7,8.9,2.7,8.7c0-0.1-0.1-0.3-0.2-0.4C2.4,8.2,2.2,8.2,2,8.3L0.1,9.5 C0,9.6,0,9.7,0,9.9v0.2c0,0.2,0,0.4,0.1,0.5L2,11.7c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.1-0.2,0.1-0.4 c0-0.2-0.1-0.3-0.2-0.4L1.1,10z"}),wp.element.createElement("path",{id:"XMLID_2_",d:"M19.9,9.5L18,8.3c-0.2-0.1-0.4-0.1-0.6,0.1c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4l1.5,0.9l-1.5,0.9 c-0.1,0.1-0.2,0.2-0.2,0.4c0,0.1,0.1,0.3,0.2,0.4c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1l1.8-1.1c0.2-0.1,0.2-0.3,0.2-0.5V9.9 C20,9.7,20,9.6,19.9,9.5z"})),a.iconblockspare=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-iconblockspare",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_23_",d:"M17.4,2c0.2,0,0.5,0,0.7,0c0.4,0,0.5,0.1,0.5,0.5c0,2.7-0.9,5-2.8,6.9c-0.8,0.8-1.7,1.5-2.5,2.3 c-0.1,0.1-0.2,0.3-0.2,0.4c-0.1,1.1-0.1,2.2-0.2,3.3c0,0.3-0.1,0.4-0.3,0.6c-1.2,0.7-2.5,1.4-3.7,2c-0.3,0.2-0.5,0.1-0.7-0.1 c-0.6-0.4-0.7-0.9-0.4-1.5c0.3-0.6,0.4-1.2,0.6-1.8c0.1-0.2,0-0.3-0.1-0.5c-0.8-0.8-1.7-1.6-2.5-2.4c-0.2-0.2-0.3-0.2-0.5-0.1 c-0.8,0.3-1.7,0.5-2.5,0.7c-0.3,0.1-0.4,0-0.6-0.2c-0.9-0.9-0.8-0.6-0.2-1.5c0.6-1,1.2-2,1.8-2.9C3.8,7.4,4,7.3,4.3,7.3 c1.2,0,2.3-0.1,3.5-0.2C8,7.1,8.2,7,8.3,6.9c1-1,2-2,3.1-2.9C13,2.7,14.9,2.1,17,2C17.1,2,17.3,2,17.4,2C17.4,2,17.4,2,17.4,2z M15.2,6.1c0.6,0,1-0.4,1-0.9c0-0.5-0.5-1-1-1c-0.5,0-1,0.4-1,1C14.2,5.6,14.7,6.1,15.2,6.1z"}))),a.iconlist=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-iconlist",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_16_",d:"M2.4,3.3c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2C4.8,1,5.1,1,5.3,1.1c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1C4.4,2.7,3.6,3.5,2.8,4.3C2.5,4.6,2.3,4.6,2,4.3C1.6,3.9,1.2,3.5,0.8,3.1C0.5,2.8,0.6,2.3,1,2.2 c0.2-0.1,0.4,0,0.5,0.2C1.8,2.7,2.1,3,2.4,3.3z"}),wp.element.createElement("rect",{id:"XMLID_1_",x:"6.4",y:"2.2",width:"13",height:"1.7"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_6_",d:"M2.4,10.6c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2c0.2-0.2,0.5-0.2,0.7,0c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1c-0.8,0.8-1.6,1.6-2.4,2.4c-0.3,0.3-0.5,0.3-0.8,0c-0.4-0.4-0.8-0.8-1.2-1.2C0.5,10,0.6,9.6,1,9.5 c0.2-0.1,0.4,0,0.5,0.2C1.8,10,2.1,10.3,2.4,10.6z"}),wp.element.createElement("rect",{id:"XMLID_5_",x:"6.4",y:"9.5",width:"13",height:"1.7"})),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_9_",d:"M2.4,17.8c0.7-0.7,1.3-1.3,2-2c0.1-0.1,0.1-0.1,0.2-0.2c0.2-0.2,0.5-0.2,0.7,0c0.2,0.2,0.2,0.4,0,0.6 c0,0-0.1,0.1-0.1,0.1c-0.8,0.8-1.6,1.6-2.4,2.4c-0.3,0.3-0.5,0.3-0.8,0c-0.4-0.4-0.8-0.8-1.2-1.2c-0.3-0.3-0.2-0.7,0.2-0.8 c0.2-0.1,0.4,0,0.5,0.2C1.8,17.2,2.1,17.5,2.4,17.8z"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"6.4",y:"16.7",width:"13",height:"1.7"}))),a.button=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-button",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_2_",class:"st0",d:"M18,9.5H2c-1.1,0-2-0.9-2-2v-2c0-1.1,0.9-2,2-2H18c1.1,0,2,0.9,2,2v2C20,8.6,19.1,9.5,18,9.5z"}),wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("path",{id:"XMLID_6_",class:"st1",d:"M12.8,20H9.7c-1,0-1.9-0.6-2.4-1.5L4.4,13l0.4-0.3c0.3-0.3,0.7-0.4,1.1-0.4 c0.4,0,0.8,0.2,1.1,0.6l0.5,0.6l0-6.2c0-0.6,0.5-1.2,1.1-1.2c0.6,0,1.1,0.5,1.1,1.2v3.2c0.2-0.2,0.5-0.4,0.8-0.4 c0.5,0,0.9,0.3,1.1,0.8c0.2-0.3,0.5-0.5,0.9-0.5c0.5,0,1,0.4,1.1,1c0.2-0.3,0.5-0.4,0.9-0.4h0c0.6,0,1.1,0.5,1.1,1.2l0,4.8 C15.6,18.7,14.4,20,12.8,20z M5.3,13.2l2.6,5c0.4,0.7,1.1,1.1,1.8,1.1h3.1c1.1,0,2.1-1,2.1-2.2l0-4.8c0-0.2-0.2-0.4-0.4-0.4h0 c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.3-0.3,0.6-0.6,0.6s-0.6-0.3-0.6-0.6v-1.1c0-0.2-0.2-0.4-0.4-0.4c-0.2,0-0.4,0.2-0.4,0.4v1.2 c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6v-1.5c0-0.2-0.2-0.4-0.4-0.4c-0.2,0-0.4,0.2-0.4,0.4V13c0,0.3-0.3,0.6-0.6,0.6 C9.3,13.6,9,13.4,9,13V7.3c0-0.2-0.2-0.4-0.4-0.4S8.3,7.1,8.3,7.3l0,6.6c0,0.3-0.2,0.5-0.4,0.6c-0.2,0.1-0.5,0-0.7-0.2l-0.8-1 C6.3,13.1,6.1,13,5.9,13C5.7,13,5.5,13,5.3,13.2z"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_3_",class:"st0",d:"M14.5,11.4L14.5,11.4c-0.4,0-0.8,0.3-0.8,0.8v0.6c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2 v-1.1c0-0.4-0.3-0.8-0.7-0.8c-0.4,0-0.7,0.4-0.7,0.8v1.2c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.4-0.3-0.8-0.7-0.8 h0c-0.4,0-0.7,0.3-0.7,0.8V13c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2v-1.7c0,0,0,0,0,0c0,0,0,0,0,0v-4 c0-0.4-0.3-0.8-0.7-0.8c-0.4,0-0.7,0.4-0.7,0.8l0,6.6c0,0.1-0.1,0.2-0.1,0.2c-0.1,0-0.2,0-0.2-0.1l-0.8-1c-0.2-0.3-0.5-0.4-0.8-0.4 c-0.3,0-0.6,0.1-0.9,0.3c0,0,0,0,0,0l-0.2,0.1l2.7,5.2c0.4,0.8,1.2,1.3,2.1,1.3h3.1c1.3,0,2.4-1.2,2.4-2.6c0-0.8,0-1.3,0-1.8 c0-1.2,0-1.7,0-3C15.2,11.7,14.9,11.4,14.5,11.4z"}))),a.cta=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-cta",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_17_"},wp.element.createElement("rect",{id:"XMLID_15_",x:"14.6",y:"4.1",transform:"matrix(0.7071 -0.7071 0.7071 0.7071 1.7696 13.5544)",class:"st0",width:"5.3",height:"1.2"}),wp.element.createElement("rect",{id:"XMLID_14_",x:"16.4",y:"8.1",class:"st0",width:"3.5",height:"1.2"}),wp.element.createElement("rect",{id:"XMLID_13_",x:"14.6",y:"12.6",transform:"matrix(0.7071 0.7071 -0.7071 0.7071 14.3689 -8.3364)",class:"st0",width:"5.3",height:"1.2"}),wp.element.createElement("g",{id:"XMLID_16_"},wp.element.createElement("path",{id:"XMLID_1_",class:"st0",d:"M2.6,11.8H0.8c-0.4,0-0.7-0.3-0.7-0.7V7c0-0.4,0.3-0.7,0.7-0.7h1.8C3,6.3,3.3,6.6,3.3,7v4.2 C3.3,11.5,3,11.8,2.6,11.8z"}),wp.element.createElement("polygon",{id:"XMLID_24_",class:"st0",points:"7.3,12.8 4,12.2 4,6 7.3,5.4 "}),wp.element.createElement("polygon",{id:"XMLID_28_",class:"st0",points:"3.9,12.8 7.2,13.5 7.2,17.6 3.9,17.6 "}),wp.element.createElement("polygon",{id:"XMLID_26_",class:"st0",points:"13.3,14.2 8.1,12.8 8.1,5.2 13.3,3.8 "}),wp.element.createElement("circle",{id:"XMLID_25_",class:"st0",cx:"13.9",cy:"8.7",r:"1.8"})))),a.masonry=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-masonry",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"11.2",class:"st0",width:"8.2",height:"7.6"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"1.2",class:"st0",width:"8.2",height:"8.7"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"10.6",y:"1.2",class:"st0",width:"8.2",height:"5"}),wp.element.createElement("rect",{id:"XMLID_5_",x:"10.6",y:"7.7",class:"st0",width:"8.2",height:"11.1"})),a.logobadge=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-logobadge",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("path",{id:"XMLID_16_",d:"M3.1,2.8c0.3-0.1,0.5-0.2,0.8-0.3c0.8-0.3,1.6-0.6,2.5-0.8c0,0,0.1,0,0.2,0C7,1.9,7.5,2.1,8,2.3 c0.1,0,0.1,0,0.2,0C8.8,2,9.4,1.7,9.9,1.5c0.1,0,0.1,0,0.2,0c0.6,0.3,1.1,0.5,1.7,0.8c0.1,0,0.1,0,0.2,0c0.5-0.2,1-0.4,1.6-0.6 c0,0,0.1,0,0.1,0c1.1,0.4,2.1,0.7,3.2,1.1c0,0,0.1,0,0.1,0c-0.1,0.4-0.3,0.7-0.4,1.1c-0.2,0.8-0.4,1.6-0.3,2.4c0,0.5,0.1,1,0.2,1.5 c0.2,1,0.4,2.1,0.6,3.1c0.1,0.7,0.2,1.3,0.2,2c0,0.3,0,0.5-0.1,0.8c0,0.4-0.2,0.7-0.5,1c-0.4,0.5-1,0.9-1.5,1.3 c-0.8,0.5-1.7,0.9-2.6,1.3c-0.9,0.4-1.7,0.8-2.5,1.4c0,0-0.1,0.1-0.1,0C9,17.9,8.1,17.4,7,17c-0.8-0.4-1.7-0.8-2.4-1.2 c-0.5-0.3-0.9-0.7-1.3-1.1c-0.4-0.4-0.5-0.9-0.6-1.4c0-0.7,0-1.3,0.1-2C3,10,3.3,8.8,3.6,7.6C3.7,7,3.8,6.4,3.8,5.8 C3.8,4.8,3.5,3.8,3.1,2.8C3.1,2.8,3.1,2.8,3.1,2.8z"})),a.notice=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",fill:"#8B249C",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_4_"}),wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_3_",className:"st0",d:"M10,20C4.5,20,0,15.5,0,10C0,4.5,4.5,0,10,0c5.5,0,10,4.5,10,10C20,15.5,15.5,20,10,20z M10,1 C5,1,1,5,1,10s4.1,9,9,9s9-4.1,9-9S15,1,10,1z"})),wp.element.createElement("path",{id:"XMLID_10_",className:"st0",d:"M11.7,4.4C11.7,5.3,11,6,10,6C9,6,8.3,5.3,8.3,4.4C8.3,3.5,9,2.7,10,2.7 C11,2.7,11.7,3.5,11.7,4.4z"}),wp.element.createElement("rect",{id:"XMLID_9_",x:"8.8",y:"7.1",className:"st0",width:"2.5",height:"9.6"})),a.progressBar=wp.element.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#8B249C",className:"blockspare-svg"},wp.element.createElement("g",{id:"XMLID_4_"}),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_5_",className:"st0",d:"M20,3.9H0V0h20V3.9z M0.5,3.4h19V0.5h-19V3.4z"})),wp.element.createElement("rect",{id:"XMLID_3_",x:"0.9",y:"0.9",className:"st0",width:"16.6",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_9_"},wp.element.createElement("g",{id:"XMLID_11_"},wp.element.createElement("path",{id:"XMLID_12_",className:"st0",d:"M20,9.3H0V5.4h20V9.3z M0.5,8.8h19V5.9h-19V8.8z"})),wp.element.createElement("rect",{id:"XMLID_10_",x:"0.9",y:"6.3",className:"st0",width:"10.2",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_15_"},wp.element.createElement("g",{id:"XMLID_17_"},wp.element.createElement("path",{id:"XMLID_18_",className:"st0",d:"M20,14.6H0v-3.9h20V14.6z M0.5,14.1h19v-2.9h-19V14.1z"})),wp.element.createElement("rect",{id:"XMLID_16_",x:"0.9",y:"11.6",className:"st0",width:"14.4",height:"2.1"})),wp.element.createElement("g",{id:"XMLID_21_"},wp.element.createElement("g",{id:"XMLID_23_"},wp.element.createElement("path",{id:"XMLID_24_",className:"st0",d:"M20,20H0v-3.9h20V20z M0.5,19.5h19v-2.9h-19V19.5z"})),wp.element.createElement("rect",{id:"XMLID_22_",x:"0.9",y:"17",className:"st0",width:"16.6",height:"2.1"}))),a.pricingTable=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-pricing-table",xmlns:"http://www.w3.org/2000/svg",viewBox:"-469 271 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_34_",class:"st0",d:"M-455.6,291h-6.8v-20h6.8V291z"})),wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_31_",class:"st0",d:"M-462.8,289h-5.9V273h5.9V289z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_28_",class:"st0",d:"M-449.3,289h-5.9V273h5.9V289z"})),wp.element.createElement("path",{id:"XMLID_25_",class:"st1",d:"M-464.4,287.5h-2.7c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7 c0.3,0,0.5,0.2,0.5,0.5l0,0C-463.9,287.3-464.1,287.5-464.4,287.5z"}),wp.element.createElement("path",{id:"XMLID_26_",class:"st1",d:"M-457.7,287.5h-2.6c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7 c0.3,0,0.5,0.2,0.5,0.5l0,0C-457.1,287.3-457.4,287.5-457.7,287.5z"}),wp.element.createElement("path",{id:"XMLID_27_",class:"st1",d:"M-451,287.5h-2.7c-0.3,0-0.5-0.2-0.5-0.5l0,0c0-0.3,0.2-0.5,0.5-0.5h2.7c0.3,0,0.5,0.2,0.5,0.5 l0,0C-450.4,287.3-450.7,287.5-451,287.5z"}),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-466.1,283.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-466.1z"})),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-459.3,282.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-459.3z"})),wp.element.createElement("g",null,wp.element.createElement("path",{class:"st1",d:"M-452.6,283.3v-1c-0.6,0-1.2-0.2-1.5-0.4l0.2-0.7c0.4,0.2,0.9,0.4,1.4,0.4c0.7,0,1.2-0.4,1.2-1 c0-0.5-0.4-0.9-1.1-1.2c-1-0.4-1.6-0.9-1.6-1.7c0-0.8,0.6-1.4,1.5-1.6v-1h0.6v1c0.6,0,1,0.2,1.3,0.3l-0.2,0.7 c-0.2-0.1-0.6-0.3-1.2-0.3c-0.8,0-1,0.5-1,0.9c0,0.5,0.4,0.8,1.2,1.1c1,0.4,1.5,0.9,1.5,1.8c0,0.8-0.5,1.5-1.6,1.7v1H-452.6z"}))),a.pricingList=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("circle",{cx:"3.3",cy:"2.6",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"1.4",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"1.4",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"3.1",className:"st0",width:"12.9",height:"0.8"}),wp.element.createElement("circle",{className:"st0",cx:"3.3",cy:"9.7",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"8.9",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"8.9",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"10.5",className:"st0",width:"12.9",height:"0.8"}),wp.element.createElement("circle",{className:"st0",cx:"3.3",cy:"17.4",r:"2.6"}),wp.element.createElement("rect",{x:"7.1",y:"16.3",className:"st0",width:"9.8",height:"0.8"}),wp.element.createElement("rect",{x:"17.7",y:"16.3",className:"st0",width:"2.3",height:"0.8"}),wp.element.createElement("rect",{x:"7.1",y:"17.9",className:"st0",width:"12.9",height:"0.8"})),a.socialShare=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("path",{id:"XMLID_7_",class:"st0",d:"M16,12.8c-0.9,0-1.8,0.4-2.3,1l-6.4-3.7c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.3l6.3-3.6 C14.1,6.8,15,7.3,16,7.3c1.7,0,3.2-1.4,3.2-3.2C19.1,2.4,17.7,1,16,1s-3.2,1.4-3.2,3.2c0,0.3,0,0.5,0.1,0.8L6.7,8.4 C6.2,7.5,5.2,6.8,4.1,6.8c-1.7,0-3.2,1.4-3.2,3.2c0,1.7,1.4,3.2,3.2,3.2c1.2,0,2.2-0.7,2.7-1.6L13,15c-0.1,0.3-0.2,0.6-0.2,0.9 c0,1.7,1.4,3.2,3.2,3.2s3.2-1.4,3.2-3.2C19.1,14.2,17.7,12.8,16,12.8z"})),a.sociallinks=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg blockspare-svg-sociallinks",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B"},wp.element.createElement("rect",{id:"XMLID_1_",x:"0.5",y:"0.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_10_",x:"10.5",y:"0.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_12_",x:"0.5",y:"10.5",width:"9",height:"9"}),wp.element.createElement("rect",{id:"XMLID_11_",x:"10.5",y:"10.5",width:"9",height:"9"}),wp.element.createElement("g",{id:"XMLID_7_"},wp.element.createElement("path",{id:"XMLID_70_",class:"st0",d:"M11.2,15.1c0-0.6,0-1.1,0-1.5c0-0.4,0-0.7,0.2-1c0.2-0.6,0.7-1,1.3-1.2 c0.2-0.1,0.5-0.1,0.8-0.1c1,0,2,0,2.9,0c0.3,0,0.7,0,1,0.1c0.6,0.2,1,0.6,1.2,1.2c0.1,0.3,0.2,0.5,0.2,0.8c0,0.4,0,0.8,0,1.3 c0,0.6,0,1.1,0,1.7c0,0.3,0,0.6-0.1,1c-0.2,0.7-0.7,1.2-1.4,1.4c-0.2,0.1-0.5,0.1-0.7,0.1c-1,0-1.9,0-2.9,0c-0.3,0-0.7,0-1-0.1 c-0.7-0.2-1.1-0.7-1.3-1.4c-0.1-0.2-0.1-0.5-0.1-0.7C11.2,16,11.2,15.5,11.2,15.1z M18.1,15C18.1,15,18.1,15,18.1,15 c0-0.3,0-0.7,0-1c0-0.3,0-0.7-0.1-1c-0.1-0.3-0.2-0.5-0.4-0.7c-0.2-0.2-0.4-0.3-0.7-0.3c-0.4-0.1-0.8-0.1-1.1-0.1 c-0.6,0-1.1,0-1.7,0c-0.3,0-0.7,0-1,0.1c-0.3,0.1-0.5,0.2-0.7,0.4C12.1,12.5,12,12.8,12,13c-0.1,0.4-0.1,0.7-0.1,1.1 c0,0.6,0,1.2,0,1.8c0,0.4,0,0.7,0.1,1.1c0.1,0.3,0.2,0.5,0.4,0.7c0.2,0.2,0.5,0.3,0.7,0.3c0.4,0.1,0.7,0.1,1.1,0.1 c0.6,0,1.2,0,1.7,0c0.3,0,0.7,0,1-0.1c0.3-0.1,0.5-0.2,0.7-0.4c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3,0.1-0.6,0.1-0.9 C18.1,15.7,18.1,15.4,18.1,15z"}),wp.element.createElement("path",{id:"XMLID_63_",class:"st0",d:"M16.9,15c0,1-0.8,2-2,2c-1,0-2-0.8-2-2c0-1,0.8-1.9,2-2C16.1,13,17,14,16.9,15z M15,13.7 c-0.7,0-1.3,0.6-1.3,1.3c0,0.7,0.6,1.3,1.3,1.3c0.7,0,1.3-0.6,1.3-1.3C16.3,14.3,15.7,13.7,15,13.7z"}),wp.element.createElement("path",{id:"XMLID_62_",class:"st0",d:"M17.5,13c0,0.2-0.2,0.5-0.5,0.5c-0.2,0-0.5-0.2-0.5-0.5c0-0.2,0.2-0.5,0.5-0.4 C17.3,12.5,17.5,12.7,17.5,13z"})),wp.element.createElement("g",{id:"XMLID_4_"},wp.element.createElement("path",{id:"XMLID_35_",class:"st0",d:"M13.5,6.7c-0.8,0-1.3-0.6-1.5-1.1c0.2,0,0.5,0,0.7,0c-0.4-0.1-0.7-0.3-0.9-0.6 c-0.2-0.3-0.3-0.6-0.3-1c0.1,0,0.2,0.1,0.3,0.1c0.1,0,0.2,0.1,0.4,0.1C11.8,4,11.5,3.6,11.5,3c0-0.3,0.1-0.6,0.2-0.9 c0.8,1,1.9,1.5,3.2,1.6c0-0.1,0-0.1,0-0.2c0-0.6,0.2-1,0.6-1.4c0.6-0.5,1.5-0.4,2.1,0.1c0,0,0,0,0.1,0C18,2.3,18.3,2.2,18.6,2 c0,0,0,0,0,0c-0.1,0.2-0.1,0.3-0.3,0.5c-0.1,0.1-0.3,0.3-0.4,0.4c0.3,0,0.6-0.1,0.9-0.2c0,0,0,0,0,0c-0.2,0.3-0.4,0.5-0.7,0.7 c0,0,0,0,0,0.1c0,0.7-0.1,1.4-0.4,2c-0.3,0.7-0.8,1.3-1.4,1.8c-0.5,0.3-1,0.6-1.6,0.7c-0.6,0.1-1.3,0.2-1.9,0 c-0.5-0.1-1-0.3-1.5-0.6c0,0,0,0,0,0c0.6,0.1,1.2,0,1.8-0.3C13.2,7,13.3,6.9,13.5,6.7z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_37_",class:"st0",d:"M4.2,5.3c-0.4,0-0.8,0-1.2,0C3,4.9,3,4.4,3,4c0.4,0,0.8,0,1.2,0c0,0,0,0,0-0.1 c0-0.4,0-0.7,0-1.1c0-0.4,0.1-0.7,0.3-1C4.7,1.4,5,1.3,5.4,1.2c0.2-0.1,0.5-0.1,0.7-0.1c0.3,0,0.6,0,0.9,0c0,0,0,0,0,0 C7,1.6,7,2,7,2.4c0,0,0,0,0,0c0,0,0,0-0.1,0c-0.3,0-0.5,0-0.8,0c-0.1,0-0.1,0-0.2,0C5.8,2.5,5.6,2.6,5.6,2.9c0,0.1,0,0.2,0,0.3 c0,0.2,0,0.5,0,0.7c0,0,0,0,0,0.1c0.5,0,0.9,0,1.4,0C6.9,4.4,6.8,4.9,6.8,5.3c-0.4,0-0.8,0-1.2,0c0,1.2,0,2.4,0,3.6 c-0.5,0-1,0-1.4,0C4.2,7.7,4.2,6.5,4.2,5.3z"})),wp.element.createElement("g",{id:"XMLID_5_"},wp.element.createElement("path",{id:"XMLID_33_",class:"st0",d:"M8.6,18.6C8.6,18.6,8.6,18.6,8.6,18.6c-0.5,0-1,0-1.4,0c0,0,0,0,0,0c0,0,0,0,0,0 c0-0.8,0-1.6,0-2.4c0-0.2,0-0.4,0-0.6c0-0.1-0.1-0.2-0.1-0.3C6.8,15.1,6.7,15,6.5,15c-0.2,0-0.3,0-0.5,0c-0.2,0.1-0.4,0.2-0.5,0.4 c-0.1,0.1-0.1,0.3-0.1,0.4c0,0.1,0,0.3,0,0.4c0,0.8,0,1.5,0,2.3c0,0,0,0,0,0c-0.5,0-1,0-1.5,0c0-1.6,0-3.2,0-4.8c0.5,0,0.9,0,1.4,0 c0,0.2,0,0.4,0,0.6c0,0,0,0,0,0c0,0,0,0,0,0C5.6,14.2,5.8,14,6,13.8c0.2-0.1,0.5-0.2,0.8-0.2c0.3,0,0.5,0,0.7,0.1 c0.4,0.1,0.7,0.4,0.8,0.8c0.1,0.2,0.1,0.5,0.1,0.7c0,0.1,0,0.3,0,0.4c0,0,0,0,0,0C8.6,16.7,8.6,17.6,8.6,18.6z"}),wp.element.createElement("path",{id:"XMLID_32_",class:"st0",d:"M2.3,11.4c0,0,0.1,0,0.1,0c0.4,0.1,0.7,0.4,0.7,0.8c0,0.4-0.3,0.8-0.7,0.8 c-0.5,0.1-0.9-0.2-1-0.7c0,0,0,0,0-0.1c0,0,0-0.1,0-0.1c0,0,0,0,0,0c0-0.3,0.3-0.6,0.6-0.7c0.1,0,0.1,0,0.2,0 C2.2,11.4,2.3,11.4,2.3,11.4z"}),wp.element.createElement("path",{id:"XMLID_30_",class:"st0",d:"M3,18.6c-0.5,0-1,0-1.5,0c0-1.6,0-3.2,0-4.8c0.5,0,1,0,1.5,0C3,15.4,3,17,3,18.6z"}))),a.tabs=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-tabs",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("rect",{id:"XMLID_1_",x:"1.2",y:"4.9",width:"17.6",height:"14"}),wp.element.createElement("rect",{id:"XMLID_4_",x:"1.2",y:"1.3",width:"8.2",height:"3.6"}),wp.element.createElement("rect",{id:"XMLID_3_",x:"10.6",y:"1.3",width:"8.2",height:"2.5"}))),a.shapediviver=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-shape-diviver",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("path",{id:"XMLID_6_",d:"M20,20H0V0h20V20z M1,19h18V1H1V19z"}),wp.element.createElement("path",{id:"XMLID_10_",d:"M0,10.8c0,0,6.3-3.3,10.6,1.1c5.3,5.5,9.4-2,9.4-2V20L0,20V10.8z"})),a.counter=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-shape-counter",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("rect",{id:"XMLID_4_",x:"1.3",y:"1",width:"8",height:"18"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"10.7",y:"1",width:"8",height:"18"}),wp.element.createElement("g",{id:"XMLID_23_"},wp.element.createElement("path",{id:"XMLID_25_",class:"st0",d:"M8.4,10c0,0.7-0.1,1.3-0.2,1.8c-0.1,0.5-0.3,1-0.5,1.3c-0.2,0.3-0.6,0.6-1,0.8 c-0.4,0.2-0.9,0.3-1.4,0.3c-0.6,0-1-0.1-1.4-0.3c-0.4-0.2-0.7-0.4-1-0.8c-0.2-0.4-0.4-0.8-0.5-1.3c-0.1-0.5-0.2-1.1-0.2-1.8 c0-0.7,0.1-1.3,0.2-1.8c0.1-0.5,0.3-0.9,0.5-1.3c0.3-0.4,0.6-0.6,1-0.8c0.4-0.2,0.9-0.3,1.4-0.3c0.6,0,1.1,0.1,1.5,0.3 s0.7,0.5,1,0.8C8,7.2,8.2,7.7,8.3,8.2C8.4,8.7,8.4,9.3,8.4,10z M6.4,10c0-1-0.1-1.7-0.2-2.1C6,7.5,5.7,7.3,5.3,7.3 c-0.4,0-0.7,0.2-0.8,0.6C4.3,8.3,4.3,9,4.3,10c0,1,0.1,1.7,0.2,2.1c0.2,0.4,0.4,0.6,0.8,0.6s0.7-0.2,0.8-0.6 C6.3,11.7,6.4,11,6.4,10z"})),wp.element.createElement("g",{id:"XMLID_3_"},wp.element.createElement("path",{id:"XMLID_9_",class:"st0",d:"M17.6,7.6L14.2,14H12l3.6-6.5h-3.8V6h5.9V7.6z"})),wp.element.createElement("path",{id:"XMLID_26_",class:"st0",d:"M15.1,2.1c-0.2,0.4-0.4,0.5-0.8,0.5c-0.4,0-0.6-0.1-0.8-0.5C13.4,1.9,13.3,1,13.3,1h-1.9 c0,0,0.1,0.6,0.1,0.9c0.1,0.5,0.3,0.8,0.5,1.2c0.2,0.3,0.5,0.6,0.9,0.7C13.3,3.9,13.8,4,14.3,4c0.5,0,1-0.1,1.4-0.3 C16,3.6,16.3,3.3,16.5,3c0.2-0.3,0.4-0.6,0.5-1.1C17.1,1.6,17.1,1,17.2,1h-1.9C15.2,1,15.2,1.9,15.1,2.1z"})),a.testimonial=wp.element.createElement("svg",{className:"blockspare-svg blockspare-svg-testimonial",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("g",{id:"XMLID_1_"},wp.element.createElement("path",{id:"XMLID_2_",class:"st0",d:"M17.5,14.1H2.5c-1.3,0-2.3-1-2.3-2.3V6.3C0.2,5,1.3,4,2.5,4h14.9c1.3,0,2.3,1,2.3,2.3v5.6 C19.8,13.1,18.7,14.1,17.5,14.1z"}),wp.element.createElement("polygon",{id:"XMLID_3_",class:"st0",points:"1.8,13 4.1,17 6.4,13 "}))),a.upload=wp.element.createElement("svg",{width:"50px",height:"50px",viewBox:"0 0 20 20",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"M17.9,4c-1,0-2,0-3,0c-0.2,0-0.3,0-0.3-0.3c-0.1-0.9-1-1.5-1.8-1.5c-1.9,0-3.8,0-5.7,0 c-0.8,0-1.6,0.6-1.7,1.5C5.4,3.9,5.3,4,5,4c-1,0-1.9,0-2.9,0C1.1,4,0.1,5,0.1,6c0,3.2,0,6.5,0,9.7c0,0.2,0.1,0.5,0.2,0.7 c0.4,0.9,1.2,1.4,2.2,1.4c2.5,0,5.1,0,7.6,0c2.5,0,4.9,0,7.4,0c0.3,0,0.5,0,0.8-0.1c0.9-0.2,1.7-1.1,1.8-2c0-3.3,0-6.5,0-9.8 C19.9,5,18.9,4,17.9,4z M19,15.3c0,0.4-0.1,0.9-0.5,1.2c-0.3,0.3-0.7,0.3-1.1,0.3c-2.5,0-4.9,0-7.4,0c-2.5,0-4.9,0-7.4,0 c-0.4,0-0.9,0-1.2-0.4c-0.2-0.2-0.4-0.5-0.4-0.9c0-3.1,0-6.3,0-9.4C1.1,5.5,1.6,5,2.3,5c1.1,0,2.3,0,3.4,0c0.6,0,0.8-0.2,0.8-0.8 c0,0,0-0.1,0-0.1C6.4,3.3,6.8,3.1,7.3,3.1c1.8,0,3.8,0,5.6,0c0.6,0,1.1,0.3,1.1,1c0,0.1,0,0.1,0,0.2C14,4.8,14,5,14.5,5 c1.1,0,2.1,0,3.2,0c0.9,0,1.4,0.5,1.4,1.5C19.1,9.4,19,12.3,19,15.3z"}),wp.element.createElement("path",{d:"M10,6.2c-2.6,0-4.7,2.1-4.7,4.6c0,2.6,2.1,4.7,4.6,4.7c2.6,0,4.7-2.1,4.7-4.6C14.7,8.3,12.6,6.2,10,6.2z M10,14.5c-1.9,0-3.6-1.4-3.6-3.6c0-2,1.6-3.6,3.6-3.6c2,0,3.6,1.5,3.6,3.7C13.6,13,12,14.5,10,14.5z"}),wp.element.createElement("path",{d:"M16.7,6.2c-0.5,0-0.9,0.4-0.9,0.9c0,0.5,0.4,0.9,0.9,0.9c0.5,0,0.9-0.5,0.9-0.9C17.7,6.6,17.2,6.2,16.7,6.2 z"})),a.sectionHeader=wp.element.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"#3C1A5B",className:"blockspare-svg"},wp.element.createElement("g",{id:"XMLID_2_"},wp.element.createElement("path",{id:"XMLID_3_",d:"M17,2.2v15.6h-4.3v-6.3H7.4v6.3H3V2.2h4.3V8h5.3V2.2H17z"}))),a.services=wp.element.createElement("svg",{width:"20px",height:"20px",className:"blockspare-svg blockspare-svg-services",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},wp.element.createElement("circle",{id:"XMLID_1_",cx:"4.5",cy:"5",r:"3.4"}),wp.element.createElement("circle",{id:"XMLID_9_",cx:"15.5",cy:"5",r:"3.4"}),wp.element.createElement("rect",{id:"XMLID_2_",y:"10",width:"9",height:"1.7"}),wp.element.createElement("rect",{id:"XMLID_8_",x:"11",y:"9.8",width:"9",height:"1.7"}),wp.element.createElement("rect",{id:"XMLID_4_",y:"13.3",width:"9",height:"6.7"}),wp.element.createElement("rect",{id:"XMLID_7_",x:"11",y:"13.1",width:"9",height:"6.9"})),a.emptySpaces=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("rect",{className:"cls-1",x:"1.5",y:"1.5",width:"13",height:"13"})),a.layouts=wp.element.createElement("svg",{version:"1.1",className:"blockspare-svg",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{fill:"#333333",d:"M0.4,15.1V0.7c0-0.2,0.1-0.3,0.3-0.3h8.8c0.2,0,0.3,0.1,0.3,0.3v14.4c0,0.2-0.1,0.3-0.3,0.3H0.7 C0.6,15.4,0.4,15.3,0.4,15.1z"}),wp.element.createElement("path",{fill:"#333333",d:"M10.2,7.2V0.7c0-0.2,0.1-0.3,0.3-0.3h8.8c0.2,0,0.3,0.1,0.3,0.3v6.5c0,0.2-0.1,0.3-0.3,0.3h-8.8 C10.3,7.5,10.2,7.3,10.2,7.2z"}),wp.element.createElement("path",{fill:"#333333",d:"M10.3,15.1V8.2c0-0.2,0.1-0.3,0.3-0.3h3.8c0.2,0,0.3,0.1,0.3,0.3v6.9c0,0.2-0.1,0.3-0.3,0.3h-3.8 C10.4,15.4,10.3,15.3,10.3,15.1z"}),wp.element.createElement("path",{fill:"#333333",d:"M0.8,15.8h18.4c0.2,0,0.3,0.1,0.3,0.3v3.3c0,0.2-0.1,0.3-0.3,0.3H0.8c-0.2,0-0.3-0.1-0.3-0.3 v-3.3C0.5,15.9,0.7,15.8,0.8,15.8z"}),wp.element.createElement("path",{fill:"#333333",d:"M15.2,15.1V8.2c0-0.2,0.1-0.3,0.3-0.3h3.7c0.2,0,0.3,0.1,0.3,0.3v6.9c0,0.2-0.1,0.3-0.3,0.3h-3.7 C15.3,15.4,15.2,15.3,15.2,15.1z"})),a.flipX=wp.element.createElement("svg",{viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"m11 18h3v-2h-3zm3-12h2v-2h-2zm-14-2v12c0 1.1.9 2 2 2h3v-2h-3v-12h3v-2h-3c-1.1 0-2 .9-2 2zm14-2v2h2c0-1.1-.9-2-2-2zm-7 18h2v-20h-2zm7-4h2v-2h-2zm-3-12h3v-2h-3zm3 8h2v-4h-2zm0 6c1.1 0 2-.9 2-2h-2z",transform:"translate(2)"})),a.flipY=wp.element.createElement("svg",{viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"m13 16h3v-2h-3zm3-12h2v-2h-2zm-14-2v12c0 1.1.9 2 2 2h3v-2h-3v-12h3v-2h-3c-1.1 0-2 .9-2 2zm14-2v2h2c0-1.1-.9-2-2-2zm-7 18h2v-20h-2zm7-4h2v-2h-2zm-3-12h3v-2h-3zm3 8h2v-4h-2zm0 6c1.1 0 2-.9 2-2h-2z",transform:"matrix(0 1 -1 0 18 0)"})),a.edit='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><Path d="m11 5.9125c-2.784375 0-5.01875 2.26875-5.01875 5.01875 0 2.784375 2.26875 5.01875 5.01875 5.01875 2.784375 0 5.01875-2.26875 5.01875-5.01875s-2.234375-5.01875-5.01875-5.01875zm.378125 6.325-1.134375 1.134375-1.134375-1.134375-1.1-1.1 1.134375-1.134375 1.1 1.1 2.6125-2.6125 1.134375 1.134375zm9.659375-2.715625c-.446875-.4125-.61875-1.065625-.378125-1.615625l.20625-.515625c.34375-.790625-.103125-1.684375-.928125-1.925l-.55-.1375c-.584375-.171875-.996875-.6875-1.03125-1.30625v-.584375c-.034375-.859375-.825-1.478125-1.65-1.340625l-.55.103125c-.61875.103125-1.203125-.171875-1.478125-.721875l-.275-.48125c-.4125-.75625-1.375-.9625-2.0625-.48125l-.446875.309375c-.48125.34375-1.16875.34375-1.65 0l-.446875-.34375c-.6875-.515625-1.684375-.275-2.096875.48125l-.275.48125c-.309375.55-.89375.825-1.5125.721875l-.55-.103125c-.859375-.1375-1.615625.48125-1.684375 1.340625l-.034375.55c-.034375.61875-.446875 1.134375-1.03125 1.30625l-.55.171875c-.825.240625-1.271875 1.134375-.928125 1.925l.20625.515625c.240625.55.06875 1.203125-.378125 1.615625l-.4125.378125c-.653125.55-.653125 1.58125 0 2.13125l.4125.378125c.446875.4125.61875 1.065625.378125 1.615625l-.20625.515625c-.34375.790625.103125 1.684375.928125 1.925l.55.1375c.584375.171875.996875.6875 1.03125 1.30625l.034375.55c.034375.859375.825 1.478125 1.65 1.340625l.55-.103125c.61875-.103125 1.203125.171875 1.478125.721875l.275.48125c.4125.75625 1.375.9625 2.0625.48125l.446875-.309375c.48125-.34375 1.16875-.34375 1.65 0l.446875.34375c.6875.515625 1.684375.275 2.096875-.48125l.275-.48125c.309375-.55.89375-.825 1.5125-.721875l.55.103125c.859375.1375 1.615625-.48125 1.684375-1.340625l.034375-.55c.034375-.61875.446875-1.134375 1.03125-1.30625l.55-.1375c.825-.240625 1.271875-1.134375.928125-1.925l-.20625-.515625c-.240625-.55-.06875-1.203125.378125-1.615625l.4125-.378125c.653125-.55.653125-1.58125 0-2.13125zm-10.0375 8.3875c-3.85 0-6.94375-3.128125-6.94375-6.94375 0-3.85 3.128125-6.94375 6.94375-6.94375 3.85 0 6.94375 3.128125 6.94375 6.94375s-3.09375 6.94375-6.94375 6.94375z" transform="translate(1 1)" /></svg>;',a.blockspare_placeholder=wp.element.createElement("svg",{viewBox:"0 0 384 384",xmlns:"http://www.w3.org/2000/svg"},wp.element.createElement("path",{d:"M203.3,384c-7.5,0-15,0-22.5,0c-7.9-1.1-15.8-1.9-23.7-3.3C78.7,366.6,16.4,303.8,3,225.4c-1.2-7.1-2-14.3-3-21.4 c0-8,0-16,0-24c0.2-1,0.6-1.9,0.6-2.9c1.4-18.8,5.7-36.9,12.4-54.5c0.6-1.5,0.6-3.3,0.9-4.7c1-1.5,2.3-2.9,3-4.5 C26,93.3,38,75.2,53.4,59.3C82.7,29,118.1,10.1,159.6,2.9c7.2-1.2,14.6-2,21.9-2.9c7.3,0,14.5,0,21.8,0c1,0.2,1.9,0.4,2.9,0.6 c12.3,2.1,25,2.8,36.8,6.5c75.8,23.3,122,74.1,138.1,151.9c1.4,6.9,2,14,3,21.1c0,8,0,16,0,24c-0.2,1-0.5,1.9-0.6,2.9 c-1.3,8.8-2.1,17.6-3.9,26.3c-15.7,75.1-78.8,135.5-154.4,147.9C217.8,382.3,210.5,383,203.3,384z M20.8,140.3 c-22.5,68.7,1.5,162.7,85.2,208.8c80.6,44.3,178.3,19.1,229.2-49.9c-3.4-3.2-6.6-6.7-10.2-9.8c-3.9-3.3-5.5-7-5.1-12.1 c0.4-5.5,0.2-11,0-16.5c-0.1-2-0.5-4.2-1.4-6.1c-5-10.2-9.6-20.6-15.4-30.4c-7-11.8-10.4-24.1-8.9-37.8c0.2-1.6-0.5-4.2-1.6-4.8 c-4.9-2.6-8.3-8.1-14.7-7.8c-0.5,0-1,0.2-1.5,0.3c-6.1,1.5-12.1,3.1-18.2,4.4c-1.7,0.4-3.8,0.4-5.4-0.3 c-14.6-6.1-29.2-12.3-43.7-18.8c-1.9-0.9-4.1-3.4-4.4-5.4c-2.4-14.4-4.2-28.9-6.3-43.4c-0.4-3,0.4-5.3,2.5-7.4 c5.9-5.8,11.6-11.8,17.6-17.4c1.6-1.5,4.1-2.6,6.2-2.6c12.1-0.2,24.2-0.1,36.4-0.1c3,0,5.2,1.2,6.9,3.7c3,4.6,6,9.2,9.2,13.7 c0.9,1.3,2.6,2.4,4.1,2.7c6,1.2,12,2.1,18.1,3.1c4.7,0.7,9.7,2.8,14,1.7c10.4-2.5,20.4-6.5,31.4-10.2c-6.7-8.9-13-17.3-19.3-25.8 c-5,3.4-9.3,6.4-13.8,9.1c-1.8,1.1-4.3,2-6.2,1.6c-15.8-3.2-31.8-5.3-46.9-11.2c-1.7-0.7-3.9-0.7-5.8-0.3 c-6.3,1.4-12.6,3.2-18.9,4.6c-2.1,0.5-4.5,0.6-6.6,0c-5.9-1.7-11.7-3.7-17.4-5.7c-5-1.7-6.4-5.3-4.1-10c3.9-8,7.9-15.8,11.8-23.8 c1.6-3.2,3.9-4.5,7.5-4.4c5.9,0.1,11.8-0.3,17.6,0.1c6.4,0.4,10.9-3.3,16.4-5.8c-27.7-15.5-93.9-17.9-122.5-4.2 c3.5,1.6,6.2,3.4,9.2,4c11,2.1,22.1,3.8,33.2,5.8c5.7,1,7.5,4.2,5.7,9.8c-1.8,5.6-3.7,11.1-5.5,16.7c-0.9,2.9-2.6,4.7-5.5,5.6 c-4.2,1.3-8.4,2.5-12.4,4.3c-2,0.9-4.1,2.3-5.3,4.1c-5.2,8.2-10,16.7-15.2,25c-1.3,2-3.1,3.9-5.2,5.2c-9.3,5.8-18.8,11.4-28.3,17 c-1.8,1-3.9,1.8-5.9,2.1c-11.5,1.8-23,3.5-34.5,5c-2.6,0.3-3.1,1.4-3.3,3.8c-0.5,5.4,0.8,9.7,5.3,13c1.7,1.2,3.4,2.8,4.5,4.5 c1.4,2.2,2.5,4.7,3,7.3c0.5,2.4,0.1,5,0.1,7.6c0.3,0.1,0.7,0.2,1,0.3c2.1-2.2,4.2-4.6,6.4-6.7c4.4-4.3,8.9-3.6,11.7,2 c3.1,6,6.1,12,9,18.1c1,2.1,2.2,2.8,4.6,2.8c11.9-0.1,23.7,0.1,35.6-0.1c4.1-0.1,6.7,1.5,8.8,5.1c4.6,8,9.6,15.8,14.1,23.8 c1.4,2.5,3.1,3.4,6,3.3c5.4-0.2,10.7-0.1,16.1-0.1c6.7,0,9,2.8,7.8,9.5c-0.8,4.4-2.3,8.8-2.6,13.2c-0.8,13.7-6.8,24.4-17.6,32.6 c-0.3,0.2-0.5,0.6-0.8,0.8c-8.7,6.2-12.3,14.4-10.5,25c0.6,3.6-1.1,6.2-4,8.3c-6.5,4.7-12.9,9.5-19.2,14.4c-1.2,1-2.2,3-2.2,4.6 c-0.2,8.2,0,16.5-0.1,24.7c-0.1,6-3.8,8.7-9.5,6.8c-5.6-1.8-11.1-3.7-16.7-5.5c-3-0.9-4.8-2.7-6-5.7c-3.7-9.5-7.6-19-11.3-28.5 c-0.8-2.2-1.3-4.6-1.3-6.9C96,287.3,96,269.9,96,252.6c0-1.3,0-2.7,0-4.1c-8.2-1.6-16-3.3-23.8-4.7c-4.2-0.7-7-2.5-8.8-6.5 c-2-4.7-4.2-9.4-6.9-13.7c-4.4-7.2-5.6-14.8-5.6-23.2c0-7.5,1.2-13.8,7.6-18.3c0.6-0.4,1-1.1,1.7-1.9c-1.3-0.9-2.4-1.7-3.5-2.4 c-8.8-5.9-17.8-11.6-26.4-17.8c-2.1-1.5-3.8-3.9-4.8-6.3C23.6,149.5,22.4,145.1,20.8,140.3z M342.3,288.8 c36.6-54.1,37.1-128,8.3-179.1c-10.8,3.6-21.7,7.3-32.6,10.8c-2.2,0.7-4.7,1.1-6.9,0.8c-10.5-1.5-20.9-3.7-31.4-5 c-5.8-0.8-9.9-3-12.8-8.3c-2.2-4.1-4.5-9.3-8.2-11.3c-3.7-2-9.3-0.6-14-0.6c-6,0-12.6-1.5-17.8,0.7c-5.1,2.1-8.7,8-13,12.2 c-0.2,0.2-0.4,0.3-0.5,0.5c-0.5,1.4-1.4,2.9-1.2,4.2c1.4,10.9,3.1,21.8,4.5,32.7c0.3,2.2,1.2,3.2,3.1,4c11.5,4.8,22.9,9.9,34.4,14.7 c1.5,0.6,3.4,0.7,5,0.4c6.5-1.4,12.9-3.1,19.2-4.8c3-0.8,5.6-0.4,8.1,1.4c5.4,3.8,10.9,7.5,16.5,11c2.9,1.9,4.2,4.4,4.2,7.8 c-0.1,6.2-0.2,12.5,0.1,18.7c0.1,2.4,0.6,5,1.7,7.1c4.6,9.7,9,19.6,14.5,28.8c7.5,12.6,11.2,25.7,9.4,40.3c-0.1,0.5-0.1,1,0,1.5 c0.4,1.1,0.7,2.4,1.4,3.2C336.8,283.2,339.4,285.8,342.3,288.8z M87.8,170.8c-7.8,7.8-15.2,15.1-22.4,22.6c-0.9,0.9-1.3,2.6-1.4,4 c-0.9,8,0.5,15.6,5,22.5c1.8,2.7,2.7,5.9,4.5,8.6c1,1.4,2.7,2.9,4.4,3.2c8,1.8,16.1,3.3,24.2,5c5.2,1.1,6.7,2.9,6.7,8.2 c0,12,0.7,24-0.2,36c-1.2,17.1,2,33,9.3,48.5c2.3,4.8,5.4,6.2,10.2,7c0-6.3,0.4-12.5-0.1-18.5c-0.4-5.5,1.5-9.3,6.2-12.1 c2.9-1.7,5.4-4,8.1-6c3.7-2.8,8.8-4.9,10.6-8.6c1.9-3.8,0.8-9.3,0.7-14c-0.1-3.3,1-5.7,3.3-7.9c7-6.8,13.8-13.7,20.7-20.6 c0.7-0.7,1.8-1.4,1.9-2.2c1.6-7.2,3-14.5,4.6-22.2c-5.8,0-10.9-0.1-16,0c-3.8,0.1-6.3-1.4-8.2-4.7c-4.8-8.3-9.9-16.5-14.7-24.8 c-1.1-2-2.4-2.7-4.7-2.7c-12.1,0.1-24.2,0-36.4,0.1c-4,0-6.6-1.5-8.3-5.1C93.4,181.7,90.7,176.5,87.8,170.8z M170.7,43.7 c-1.7-0.3-3.1-0.7-4.6-0.9c-14.6-2.6-30-2.8-41.8-14c-1.5-1.5-3.1-1.4-5.1-0.5c-41.2,18.9-71.3,48.9-90.4,90 c-0.6,1.3-0.7,3.2-0.3,4.5c2.6,8.2,5.3,16.4,8.2,24.5c0.5,1.4,1.6,2.8,2.9,3.6c7.1,4.9,14.3,9.6,21.5,14.4c0.8,0.5,1.6,0.9,2.6,1.3 c1.1-9.7,1.1-9.7-5.1-15.9c-1.5-1.5-3.3-2.8-4.4-4.6c-1.3-2.1-2.6-4.6-2.8-7c-0.4-5.1-0.1-10.2-0.1-15.4c0-6.1,1.6-8,7.7-8.9 c7.8-1.1,15.6-2.2,23.4-3.3c10-1.4,19.4-3.3,28.6-8.5c13.2-7.6,24.1-16.5,30.1-30.7c4.5-10.6,12.1-17,23.5-18.8 c0.6-0.1,1.3-0.2,1.8-0.6c0.7-0.6,1.6-1.2,1.9-2C169.1,48.7,169.8,46.3,170.7,43.7z M220.4,60c7.9,3.8,9.6,4,17.3,2.1 c5.1-1.3,10.1-2.7,15.2-3.7c2-0.4,4.3-0.5,6.2,0.2c14.2,5.4,29,8.1,43.8,11c1.3,0.2,2.9,0.3,3.9-0.2c3.1-1.8,6-3.9,9.5-6.2 c-1.2-1.1-2.2-1.9-3.1-2.7c-10.8-9.9-22.6-18.4-35.4-25.5c-2.3-1.3-4.2-1.5-6.5-0.1c-12.4,7.9-25.7,12.3-40.7,10.2 c-0.4-0.1-0.8-0.1-1.1,0c-0.8,0.4-1.9,0.8-2.3,1.4C224.9,50.9,222.7,55.4,220.4,60z"}));var r=a,o=n(0),i=n.n(o);const s=wp.blocks,l=s.getCategories,c=s.setCategories,u=wp.i18n.__;c([{icon:r.category,slug:"blockspare",title:u("Blockspare","blockspare")},...l().filter(({slug:e})=>"blockspare"!==e)]);const d=wp.hooks.addFilter,p=wp.compose.createHigherOrderComponent,m=["blockspare/blockspare-shape-divider"];const f=p(e=>t=>{const n=t.name;if(m.includes(n)&&(t.attributes.blockspare=t.attributes.blockspare||{},void 0===t.attributes.blockspare.id)){const e=new Date;t.attributes.blockspare=Object.assign({},t.attributes.blockspare,{id:""+e.getMonth()+e.getDate()+e.getHours()+e.getMinutes()+e.getSeconds()+e.getMilliseconds()})}return wp.element.createElement(e,t)},"withAttributes");d("blocks.registerBlockType","blockspare/custom/attributes",(function(e){return m.includes(e.name)&&void 0!==e.attributes&&(e.attributes=Object.assign(e.attributes,{blockspare:{type:"object"}})),e})),d("editor.BlockEdit","blockspare/attributes",f);n(428),n(429);var h=n(86),b=["fa fa-plus","fa fa-plus-circle","fas fa-arrow-up"];const g=wp.i18n.__,y=wp.element,_=y.Component,k=y.Fragment;var w=class extends _{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,a=e.colorSettings,r=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?b.forEach(e=>{e.includes(i)&&s.push(e)}):s=b,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(k,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),a&&wp.element.createElement(Color,{label:g(" Color"),value:r||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const v=wp.i18n.__,M=wp.compose.compose,L=wp.data,T=L.withSelect,E=L.withDispatch,S=wp.element,x=S.Component,C=S.Fragment,D=wp.components,O=D.Button,Y=D.PanelBody,j=(D.SelectControl,D.RangeControl,wp.blockEditor),P=j.InnerBlocks,N=j.RichText,B=j.InspectorControls,A=j.PanelColorSettings;var H=M([T((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlockHierarchyRootClientId,o=a.getBlock,i=a.isBlockSelected,s=a.hasSelectedInnerBlock;return{block:o(n),isSelectedBlockInRoot:i(n)||s(n,!0),rootBlock:n?o(r(n)):null}}),E(e=>{const t=e("core/block-editor");return{removeBlock:t.removeBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends x{constructor(){super(...arguments),this.findParentAccordion=this.findParentAccordion.bind(this),this.state={device:"md"}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}findParentAccordion(e){const t=this.props.block;let n=!1;return e.innerBlocks&&e.innerBlocks.length&&e.innerBlocks.forEach(a=>{n||a.clientId!==t.clientId?n||(n=this.findParentAccordion(a)):n=e}),n}setGlobalSettings(e,t){const n=this.props.updateBlockAttributes,a=this.findParentAccordion(this.props.rootBlock);a.innerBlocks&&a.innerBlocks.length&&a.innerBlocks.forEach(a=>{n(a.clientId,{[e]:t})})}updateRootBlock(e,t){(0,this.props.updateBlockAttributes)(this.findParentAccordion(this.props.rootBlock).clientId,{[e]:t})}updateItemNumber(e){const t=this.props.updateBlockAttributes,n=this.findParentAccordion(this.props.rootBlock);for(;e<n.innerBlocks.length;)t(n.innerBlocks[e].clientId,{itemNumber:n.innerBlocks[e].attributes.itemNumber-1}),e++}_onClickLabel(){const e=this.props,t=e.clientId,n=e.rootBlock,a=e.attributes,r=e.setAttributes,o=e.updateBlockAttributes,i=this.findParentAccordion(this.props.rootBlock);n.attributes.itemToggle?i.innerBlocks.forEach(e=>{const n=e.clientId==t&&!a.active;o(e.clientId,{active:n})}):r({active:!a.active})}render(){const e=this.props,t=(e.rootBlock,e.attributes),n=t.active,a=t.uniqueId,r=t.itemNumber,o=t.defaultText,i=t.fillType,s=t.heading,l=t.name,c=t.iconPosition,u=t.panelColor,d=t.panelActiveColor,p=t.textColor,m=t.marginBottom,f=t.activeTextColor,h=t.panelBackGroundColor,b=e.setAttributes,g=e.isSelected,y=e.isSelectedBlockInRoot;let _="";_=d||"#8b249c";let k="#3c1a5b";u&&(k=u);let M="#fff";f&&(M=f);let L="#fff";p&&(L=p);let T="#fff";h&&(T=h);const E=`blockspare-accordion-item blockspare-type-${i} ${n?"blockspare-accordion-active":""}`,S={backgroundColor:1==n?_:k},x=(v("Left","blockspare"),v("Right","blockspare"),{marginBottom:m+"px"});return wp.element.createElement(C,null,wp.element.createElement(B,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Y,{title:v("Color settings","blockspare"),initialOpen:!0},wp.element.createElement(A,{title:v("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:p,onChange:e=>this.setGlobalSettings("textColor",e),label:v("Text Color","blockspare")},{value:f,onChange:e=>this.setGlobalSettings("activeTextColor",e),label:v("Active Text Color","blockspare")},{value:d,onChange:e=>this.setGlobalSettings("panelActiveColor",e),label:v("Active Panel Color","blockspare")},{value:u,onChange:e=>this.setGlobalSettings("panelColor",e),label:v("Panel Color","blockspare")}]})),wp.element.createElement(Y,{title:v("Icon settings","blockspare"),initialOpen:!1},wp.element.createElement(w,{value:l,onChange:e=>this.setGlobalSettings("name",e)})))),wp.element.createElement("div",{className:`blockspare-block-${a}`},wp.element.createElement("div",{className:E,style:x},wp.element.createElement("div",{className:`blockspare-accordion-panel ${c}`,style:S},wp.element.createElement("span",{className:"blockspare-accordion-panel-handler",onClick:()=>this._onClickLabel(),role:"button",style:{color:n?M:L}},l&&wp.element.createElement("span",{className:`blockspare-accordion-icon ${l}`}),wp.element.createElement(N,{tagName:"span",placeholder:v("Add Accordion Item.."),className:"blockspare-accordion-panel-handler-label",value:s,onChange:e=>b({heading:e}),allowedFormats:["bold","italic","strikethrough"],isSelected:g,keepPlaceholderOnFocus:!0,onClick:()=>this.updateLabel()})),y&&wp.element.createElement(O,{onClick:()=>{const e=this.findParentAccordion(this.props.rootBlock);e&&e.clientId&&(this.updateItemNumber(r),this.props.removeBlock(this.props.clientId),e.innerBlocks.length<=1&&this.props.removeBlock(e.clientId))},className:"blockspare-accordion-item-remove-button"},wp.element.createElement("i",{className:"fa fa-times"}))),wp.element.createElement("div",{className:"blockspare-accordion-body",style:{backgroundColor:T},"data-bg":T},wp.element.createElement(P,{template:o?[["core/paragraph",{content:o,customFontSize:18}]]:"",templateLock:!1})))))}});const z=wp.element.Component,I=wp.blockEditor,F=I.InnerBlocks,R=I.RichText;var W=class extends z{render(){const e=this.props.attributes,t=e.uniqueId,n=(e.itemNumber,e.heading),a=e.name,r=e.iconPosition,o=e.fillType,i=(e.active,e.openFirstItem,e.panelColor),s=e.panelActiveColor,l=e.textColor,c=e.marginBottom,u=e.activeTextColor,d=e.panelBackGroundColor;e.defaultTextSize;let p="";p=s||"#8b249c";let m="#3c1a5b";i&&(m=i);let f="#fff";u&&(f=u);let h="#fff";l&&(h=l);const b=`blockspare-accordion-item blockspare-type-${o} `,g={backgroundColor:m},y={marginBottom:c+"px"};let _="#fff";return d&&(_=d),wp.element.createElement("div",{className:`blockspare-block-${t}`},wp.element.createElement("div",{className:b,"data-act-color":f,"data-txt-color":h,"data-active":p,"data-pan":m,style:y},wp.element.createElement("div",{className:`blockspare-accordion-panel ${r}`,style:g},wp.element.createElement("span",{className:"blockspare-accordion-panel-handler",role:"button",style:{color:h}},a&&wp.element.createElement("span",{className:`blockspare-accordion-icon ${a}`}),wp.element.createElement(R.Content,{tagName:"span",className:"blockspare-accordion-panel-handler-label",value:n}))),wp.element.createElement("div",{className:"blockspare-accordion-body",style:{backgroundColor:_},"data-bg":_},wp.element.createElement(F.Content,null))))}};const U=wp.i18n.__,q=wp.blocks.registerBlockType,G=h.category,V=h.attributes,$={title:U("Accordion","blockspare"),description:U("Display creative collapsible texts Accordion.","blockspare"),parent:["blockspare/blockspare-accordion"],icon:"link",category:G,supports:{html:!1,inserter:!1,reusable:!1},attributes:V,edit:H,save:W};q("blockspare/accordion-item",$);const J=wp.i18n.__,X=wp.element,Q=X.Component,K=X.Fragment,Z=wp.components.IconButton,ee=wp.blockEditor.InnerBlocks,te=wp.blocks.createBlock,ne=wp.compose.compose,ae=wp.data,re=ae.withSelect,oe=ae.withDispatch;var ie=ne([re((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),oe(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Q{constructor(...e){var t,n,a;super(...e),a=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++){const n="Ipsam per dolores minus natoque? Rutrum dolorem voluptates euismod pharetra! Rhoncus distinctio cupiditate accusantium. Cillum aliquid.";t.push(["blockspare/accordion-item",{itemNumber:e,defaultText:n,customFontSize:18}])}return t},(n="getAccordionTemplate")in(t=this)?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertAccordionItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes,n=t.itemNumber+1,a=$.heading;e=Object.assign({},t,{itemNumber:n,heading:a,active:!1,defaultText:""})}else e=$;a(te("blockspare/accordion-item",e),void 0,n)}render(){const e=this.props,t=(e.name,e.attributes),n=e.isSelectedBlockInRoot,a=(e.setAttributes,e.attributes.uniqueId);return wp.element.createElement(K,null,wp.element.createElement("div",{className:`blockspare-block-accordion blockspare-block-${a}`},wp.element.createElement(ee,{template:this.getAccordionTemplate(t),allowedBlocks:["blockspare/accordion-item"]})),n&&wp.element.createElement("div",{className:"blockspare-accordion-add-item blockspare-add-more-item"},wp.element.createElement(Z,{icon:"insert",onClick:()=>{this.insertAccordionItem()}},J("Add Accordion Item"))))}});const se=wp.element.Component,le=wp.blockEditor.InnerBlocks;var ce=class extends se{render(){const e=this.props.attributes,t=e.uniqueId,n=e.itemToggle,a=`blockspare-block-accordion blockspare-block blockspare-block-${t}`;return wp.element.createElement("div",{className:a,"data-item-toggle":n},wp.element.createElement(le.Content,null))}},ue=n(39);const de=wp.i18n.__,pe=wp.blocks.registerBlockType,me=ue.name,fe=ue.category,he=ue.attributes;pe(me,{title:de("BS Accordion","blockspare"),description:de("Display creative collapsible Accordion.","blockspare"),category:fe,icon:r.accordion,keywords:[de("accordion","blockspare"),de("block","blockspare"),de("collapsible","blockspare"),de("collapse","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{}},attributes:he,edit:ie,save:ce});n(430),n(431);var be=n(87);const ge=wp.element.Component;class ye extends ge{constructor(e){super(...arguments)}render(){return wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:i()(this.props.className,"blockspare-block-button")},this.props.children)}}const _e=wp.i18n.__,ke=wp.element.Fragment,we=wp.components,ve=we.SelectControl,Me=we.ToggleControl,Le=we.RangeControl,Te=wp.blockEditor.PanelColorSettings;function Ee(e){const t=e.enableButtonBackgroundColor,n=e.buttonBackgroundColor,a=e.onChangeButtonColor,r=void 0===a?()=>{}:a,o=e.buttonTextColor,i=e.onChangeButtonTextColor,s=void 0===i?()=>{}:i,l=e.enableButtonSize,c=e.buttonSize,u=e.onChangeButtonSize,d=void 0===u?()=>{}:u,p=e.enableButtonShape,m=e.buttonShape,f=e.onChangeButtonShape,h=void 0===f?()=>{}:f,b=e.enableButtonStyle,g=e.buttonStyle,y=e.onChangeBorderStyle,_=void 0===y?()=>{}:y,k=e.enableButtonTarget,w=e.buttonTarget,v=e.onChangeButtonTarget,M=void 0===v?()=>{}:v,L=e.borderColor,T=e.onchangeBorderColor,E=void 0===T?()=>{}:T,S=e.borderBtnTextColor,x=e.onChangeBorderBtnTextColor,C=void 0===x?()=>{}:x,D=e.enableBtnBorderWidth,O=e.btnBorderWidth,Y=e.onchangebtnBorderWidth,j=void 0===Y?()=>{}:Y,P=e.enableBtnFontWeight,N=e.btnFontWeight,B=e.onchangeBtnFontWeight,A=void 0===B?()=>{}:B,H=[{value:"blockspare-button-size-small",label:_e("Small","blockspare")},{value:"blockspare-button-size-medium",label:_e("Medium","blockspare")},{value:"blockspare-button-size-large",label:_e("Large","blockspare")},{value:"blockspare-button-size-extralarge",label:_e("Extra Large","blockspare")}],z=[{value:"blockspare-button-shape-square",label:_e("Square","blockspare")},{value:"blockspare-button-shape-rounded",label:_e("Rounded Square","blockspare")},{value:"blockspare-button-shape-circular",label:_e("Circular","blockspare")}],I=[{value:"none",label:_e("Fill","blockspare")},{value:"solid",label:_e("Border","blockspare")}],F=[{value:"normal",label:_e("Normal","blockspare")},{value:"bold",label:_e("Bold","blockspare")}];return wp.element.createElement(ke,null,0!=k&&wp.element.createElement(Me,{label:_e("Open link in new window","blockspare"),checked:w,onChange:M}),0!=l&&wp.element.createElement(ve,{selected:c,label:_e("Button Size","blockspare"),value:c,options:H.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),0!=p&&wp.element.createElement(ve,{label:_e("Button Shape","blockspare"),value:m,options:z.map(({value:e,label:t})=>({value:e,label:t})),onChange:h}),0!=b&&wp.element.createElement(ve,{label:_e("Border Style","blockspare"),value:g,options:I.map(({value:e,label:t})=>({value:e,label:t})),onChange:_}),0!=D&&"solid"===g&&wp.element.createElement(Le,{label:_e("Border Width","blockspare"),value:O,min:1,step:1,max:5,onChange:j}),0!=P&&wp.element.createElement(ve,{label:_e("Font Weight","blockspare"),value:N,options:F.map(({value:e,label:t})=>({value:e,label:t})),onChange:A}),0!=t&&"none"===g&&wp.element.createElement(Te,{title:_e("Button Color Options","blockspare"),initialOpen:!1,colorSettings:[{value:n,onChange:r,label:_e("Button Color","blockspare")},{value:o,onChange:s,label:_e("Button Text Color","blockspare")}]}),"solid"===g&&wp.element.createElement(Te,{title:_e("Border Color","blockspare"),initialOpen:!0,colorSettings:[{value:L,onChange:E,label:_e("Border Color","blockspare")},{value:S,onChange:C,label:_e("Texts Color","blockspare")}]}))}const Se=wp.i18n.__,xe=wp.element.Fragment,Ce=wp.components.RangeControl,De=wp.blockEditor.PanelColorSettings;function Oe(e){const t=e.backgroundColor1,n=e.backgroundColor2,a=e.gradientAngle,r=e.colorLocation1,o=e.colorLocation2,i=e.onChangeBackgroundColor1,s=void 0===i?()=>{}:i,l=e.onChangeBackgroundColor2,c=void 0===l?()=>{}:l,u=e.onChangeGradientAngle,d=void 0===u?()=>{}:u,p=e.onChangeColorLocation1,m=void 0===p?()=>{}:p,f=e.onChangeColorLocation2,h=void 0===f?()=>{}:f;return wp.element.createElement(xe,null,wp.element.createElement(De,{title:Se("Gradient Color Option ","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:s,label:Se("Background Color #1","blockspare")},{value:n,onChange:c,label:Se("Background Color #2","blockspare")}]}),wp.element.createElement(Ce,{label:Se("Gradient Angle","blockspare"),value:a,onChange:d,min:-180,step:1,max:180}),wp.element.createElement(Ce,{label:Se("Location #1","blockspare"),value:r,onChange:m,min:0,step:1,max:100}),wp.element.createElement(Ce,{label:Se("Location #2","blockspare"),value:o,onChange:h,min:0,step:1,max:100}))}const Ye=wp.i18n.__,je=wp.element.Component,Pe=wp.blockEditor.InspectorControls,Ne=wp.components,Be=Ne.PanelBody,Ae=Ne.ToggleControl;class He extends je{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.buttonBackgroundColor,n=e.buttonTextColor,a=e.buttonSize,r=e.buttonShape,o=e.buttonStyle,i=e.buttonTarget,s=e.borderColor,l=e.borderBtnTextColor,c=e.enableGradient,u=e.backgroundColor1,d=e.backgroundColor2,p=e.gradientAngle,m=e.colorLocation1,f=e.colorLocation2,h=e.btnFontWeight,b=e.btnBorderWidth,g=this.props.setAttributes;return wp.element.createElement(Pe,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Be,{title:Ye("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ee,{enableButtonTarget:!1,buttonTarget:i,onChangeButtonTarget:e=>g({buttonTarget:!i}),enableGradient:c,onChangeGradient:e=>g({enableGradient:e}),enableButtonSize:!0,buttonSize:a,onChangeButtonSize:e=>g({buttonSize:e}),enableButtonShape:!0,buttonShape:r,onChangeButtonShape:e=>g({buttonShape:e}),buttonBackgroundColor:t,onChangeButtonColor:e=>g({buttonBackgroundColor:e}),buttonTextColor:n,onChangeButtonTextColor:e=>g({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:o,onChangeBorderStyle:e=>g({buttonStyle:e}),borderColor:s,onchangeBorderColor:e=>g({borderColor:e}),borderBtnTextColor:l,onChangeBorderBtnTextColor:e=>g({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:b,onchangebtnBorderWidth:e=>g({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:h,onchangeBtnFontWeight:e=>g({btnFontWeight:e})}),"none"===o&&wp.element.createElement(Ae,{label:Ye("Enable Gradient","blockspare"),checked:c,onChange:()=>this.props.setAttributes({enableGradient:!c})}),c&&"none"===o&&wp.element.createElement(Oe,{backgroundColor1:u,onChangeBackgroundColor1:e=>g({backgroundColor1:e}),backgroundColor2:d,onChangeBackgroundColor2:e=>g({backgroundColor2:e}),gradientAngle:p,onChangeGradientAngle:e=>g({gradientAngle:e}),colorLocation1:m,onChangeColorLocation1:e=>g({colorLocation1:e}),colorLocation2:f,onChangeColorLocation2:e=>g({colorLocation2:e})}))))}}var ze=e=>{let t="";if("none"===e.buttonStyle)if(1==e.enableGradient){const n=e.gradientAngle+"deg",a=e.colorLocation1+"%",r=e.colorLocation2+"%";t={backgroundImage:`linear-gradient(${n},${e.backgroundColor1?e.backgroundColor1:"#3B1A5B"} ${a},${e.backgroundColor2?e.backgroundColor2:"#8B249C"} ${r})`,color:e.buttonTextColor?e.buttonTextColor:"#fff",fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"}}else t={color:e.buttonTextColor?e.buttonTextColor:"#fff",backgroundColor:e.buttonBackgroundColor?e.buttonBackgroundColor:"#3c1a5b",fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"};else t={color:e.borderBtnTextColor?e.borderBtnTextColor:"#404040",backgroundColor:"transparent",borderColor:e.borderColor?e.borderColor:"#3c1a5b",borderStyle:e.buttonStyle,fontWeight:e.btnFontWeight,borderWidth:e.btnBorderWidth+"px"};return t};var Ie={sectionAlignment:{type:"string",default:"center"},buttonText:{type:"string",default:"Get Started"},buttonUrl:{type:"string",source:"attribute",selector:"a",attribute:"href"},buttonBackgroundColor:{type:"string",default:"#3c1a5b"},buttonTextColor:{type:"string",default:"#fff"},buttonSize:{type:"string",default:"blockspare-button-size-small"},buttonShape:{type:"string",default:"blockspare-button-shape-rounded"},buttonTarget:{type:"boolean",default:!1},buttonStyle:{type:"string",default:"none"},borderColor:{type:"string",default:"#3c1a5b"},borderBtnTextColor:{type:"string",default:"#404040"},enableGradient:{type:"boolean",default:!1},backgroundColor1:{type:"string",default:"#3B1A5B"},backgroundColor2:{type:"string",default:"#8B249C"},gradientAngle:{type:"number",default:-90},colorLocation1:{type:"number",default:30},colorLocation2:{type:"number",default:70},btnBorderWidth:{type:"number",default:1},btnFontWeight:{type:"string",default:"normal"}};function Fe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(n),!0).forEach((function(t){We(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function We(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ue=be.name,qe=be.category,Ge=wp.i18n.__,Ve=wp.element.Component,$e=wp.blockEditor,Je=$e.RichText,Xe=$e.AlignmentToolbar,Qe=$e.BlockControls,Ke=$e.URLInput,Ze=wp.components,et=Ze.IconButton,tt=Ze.Dashicon,nt=wp.blocks.registerBlockType;nt(Ue,{title:Ge("BS Button","blockspare"),description:Ge("Prompt visitors to take action with multiple buttons, side by side.","blockspare"),category:qe,icon:r.button,attributes:Re({},Ie),keywords:[Ge("block","blockspare"),Ge("button","blockspare"),Ge("cta","blockspare"),Ge("call to action","blockspare")],example:{attributes:{sectionAlignment:"center",buttonText:Ge("Get Started","blockspare"),buttonBackgroundColor:"#3c1a5b",buttonTextColor:"#fff",buttonSize:"blockspare-button-size-small",buttonShape:"blockspare-button-shape-rounded"}},edit:class extends Ve{render(){const e=this.props,t=e.attributes,n=t.buttonText,a=t.buttonUrl,r=t.sectionAlignment,o=t.buttonSize,s=t.buttonShape,l=e.isSelected,c=e.setAttributes,u=e.attributes,d=Re({},ze(u));return[wp.element.createElement(Qe,{key:"controls"},wp.element.createElement(Xe,{value:r,onChange:e=>{c({sectionAlignment:e})}})),wp.element.createElement(He,this.props),wp.element.createElement(ye,this.props,wp.element.createElement(Je,{tagName:"span",placeholder:Ge("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:n,allowedFormats:[],className:i()("blockspare-button",s,o),style:d,onChange:e=>c({buttonText:e})})),l&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${r}`,onSubmit:e=>e.preventDefault(),style:{textAlign:r}},wp.element.createElement(tt,{icon:"admin-links"}),wp.element.createElement(Ke,{className:"button-url",value:a,onChange:e=>c({buttonUrl:e})}),wp.element.createElement(et,{icon:"editor-break",label:Ge("Buy","blockspare"),type:"submit"}))]}},save:function(e){const t=e.attributes,n=t.buttonText,a=t.buttonUrl,r=t.buttonShape,o=t.buttonSize,s=t.buttonTarget,l=Re({},ze(e.attributes));return wp.element.createElement(ye,e,n&&wp.element.createElement("a",{href:a,target:s?"_blank":null,rel:s?"noopener noreferrer":null,className:i()("blockspare-button",r,o),style:l},wp.element.createElement(Je.Content,{value:n})))}});n(432);const at=wp.i18n.__,rt=wp.element.Fragment,ot=wp.components.RangeControl;function it(e){const t=e.padding,n=e.paddingTitle,a=e.paddingHelp,r=e.paddingMin,o=e.paddingMax,i=e.paddingEnable,s=e.onChangePadding,l=void 0===s?()=>{}:s,c=e.paddingTop,u=e.paddingTopMin,d=e.paddingTopMax,p=e.paddingEnableTop,m=e.onChangePaddingTop,f=void 0===m?()=>{}:m,h=e.paddingRight,b=e.paddingRightMin,g=e.paddingRightMax,y=e.paddingEnableRight,_=e.onChangePaddingRight,k=void 0===_?()=>{}:_,w=e.paddingBottom,v=e.paddingBottomMin,M=e.paddingBottomMax,L=e.paddingEnableBottom,T=e.onChangePaddingBottom,E=void 0===T?()=>{}:T,S=e.paddingLeft,x=e.paddingLeftMin,C=e.paddingLeftMax,D=e.paddingEnableLeft,O=e.onChangePaddingLeft,Y=void 0===O?()=>{}:O,j=e.paddingVertical,P=e.paddingEnableVertical,N=e.paddingVerticalMin,B=e.paddingVerticalMax,A=e.onChangePaddingVertical,H=void 0===A?()=>{}:A,z=e.paddingHorizontal,I=e.paddingEnableHorizontal,F=e.paddingHorizontalMin,R=e.paddingHorizontalMax,W=e.onChangePaddingHorizontal,U=void 0===W?()=>{}:W;return wp.element.createElement(rt,null,i&&wp.element.createElement(ot,{label:n||at("Padding","blockspare"),help:a||null,value:t,min:r,max:o,onChange:l}),p&&wp.element.createElement(ot,{label:at("Padding Top","blockspare"),value:c,min:u,max:d,onChange:f}),y&&wp.element.createElement(ot,{label:at("Padding Right","blockspare"),value:h,min:b,max:g,onChange:k}),L&&wp.element.createElement(ot,{label:at("Padding Bottom","blockspare"),value:w,min:v,max:M,onChange:E}),D&&wp.element.createElement(ot,{label:at("Padding Left","blockspare"),value:S,min:x,max:C,onChange:Y}),P&&wp.element.createElement(ot,{label:at("Padding Vertical","blockspare"),value:j,min:N,max:B,onChange:H}),I&&wp.element.createElement(ot,{label:at("Padding Horizontal","blockspare"),value:z,min:F,max:R,onChange:U}))}const st=wp.i18n.__,lt=wp.element.Fragment,ct=wp.components.RangeControl;function ut(e){const t=e.margin,n=e.marginTitle,a=e.marginHelp,r=e.marginMin,o=e.marginMax,i=e.marginEnable,s=e.onChangeMargin,l=void 0===s?()=>{}:s,c=e.marginTop,u=e.marginTopMin,d=e.marginTopMax,p=e.marginEnableTop,m=e.onChangeMarginTop,f=void 0===m?()=>{}:m,h=e.marginBottom,b=e.marginBottomMin,g=e.marginBottomMax,y=e.marginEnableBottom,_=e.onChangeMarginBottom,k=void 0===_?()=>{}:_;return wp.element.createElement(lt,null,i&&wp.element.createElement(ct,{label:n||st("Margin","blockspare"),help:a||null,value:t,min:r,max:o,onChange:l}),p&&wp.element.createElement(ct,{label:st("Margin Top","blockspare"),value:c,min:u,max:d,onChange:f}),y&&wp.element.createElement(ct,{label:st("Margin Bottom","blockspare"),value:h,min:b,max:g,onChange:k}))}const dt=wp.i18n.__,pt=wp.element.Fragment,mt=wp.components,ft=(mt.ToggleControl,mt.PanelBody),ht=mt.SelectControl,bt=mt.RangeControl,gt=wp.blockEditor.PanelColorSettings;function yt(e){const t=e.enableBlockGaps,n=e.enableheaderlayoutOption,a=e.headerlayoutOption,r=e.onChangeHeaderStyle,o=void 0===r?()=>{}:r,i=e.titleFontSize,s=e.onChangetitleFontSize,l=void 0===s?()=>{}:s,c=(e.subtitleFontSize,e.onChangesubtitleFontSize,e.headerTagOption),u=e.onChangeHeaderTag,d=void 0===u?()=>{}:u,p=(e.enableheaderboxColor,e.headerboxColor,e.onChangeboxcolor,e.dashColor),m=e.onChangeDashColor,f=void 0===m?()=>{}:m,h=e.headertitleColor,b=e.onChangetitlecolor,g=void 0===b?()=>{}:b,y=e.titlePaddingTop,_=e.onChangetitlePaddingTop,k=void 0===_?()=>{}:_,w=e.titlePaddingBottom,v=e.onChangetitlePaddingBottom,M=void 0===v?()=>{}:v,L=(e.headersubtitleColor,e.onChangesubtitlecolor,e.subtitlePaddingTop),T=e.onChangesubtitlePaddingTop,E=void 0===T?()=>{}:T,S=e.subtitlePaddingBottom,x=e.onChangesubtitlePaddingBottom,C=void 0===x?()=>{}:x,D=e.headerpaddingTop,O=e.onChangeheaderpaddingTop,Y=void 0===O?()=>{}:O,j=e.headerpaddingRight,P=e.onChangeheaderpaddingRight,N=void 0===P?()=>{}:P,B=e.headerpaddingBottom,A=e.onChangeheaderpaddingBottom,H=void 0===A?()=>{}:A,z=e.headerpaddingLeft,I=e.onChangeheaderpaddingLeft,F=void 0===I?()=>{}:I,R=e.headermarginTop,W=e.onChangeheadermarginTop,U=void 0===W?()=>{}:W,q=e.headermarginBottom,G=e.onChangeheadermarginBottom,V=void 0===G?()=>{}:G,$=[{value:"blockspare-style1",label:dt("Layout 1","blockspare")},{value:"blockspare-style2",label:dt("Layout 2","blockspare")},{value:"blockspare-style3",label:dt("Layout 3","blockspare")}],J=[{value:"h1",label:dt("h1","blockspare")},{value:"h2",label:dt("h2","blockspare")},{value:"h3",label:dt("h3","blockspare")},{value:"h4",label:dt("h4","blockspare")},{value:"h5",label:dt("h5","blockspare")},{value:"h6",label:dt("h6","blockspare")}];return wp.element.createElement(pt,null,0!=n&&wp.element.createElement(ft,{title:dt("Layouts","blockspare"),initialOpen:!1},wp.element.createElement(ht,{label:dt("Header Style","blockspare"),value:a,options:$.map(({value:e,label:t})=>({value:e,label:t})),onChange:o})),wp.element.createElement(ft,{title:dt("Text Settings","blockspare"),initialOpen:!1},wp.element.createElement(ht,{label:dt("Title Tag","blockspare"),value:c,options:J.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),wp.element.createElement(bt,{label:dt("Title Font Size","blockspare"),value:i,onChange:l,min:14,step:2,max:60}),wp.element.createElement(gt,{title:dt("Color Settings","blockspare"),initialOpen:!0,colorSettings:[{value:h,onChange:g,label:dt("Title Color","blockspare")},{value:p,onChange:f,label:dt("Dash Color","blockspare")}]})),wp.element.createElement(ft,{title:dt("Content Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(ft,{title:dt("Title Gaps","blockspare"),initialOpen:!1},wp.element.createElement(bt,{label:dt("Padding Top","blockspare"),value:y,onChange:k,min:0,max:100}),wp.element.createElement(bt,{label:dt("Padding Bottom","blockspare"),value:w,onChange:M,min:0,max:100})),wp.element.createElement(ft,{title:dt("Subtitle Gaps","blockspare"),initialOpen:!1},wp.element.createElement(bt,{label:dt("Padding Top","blockspare"),value:L,onChange:E,min:0,max:100}),wp.element.createElement(bt,{label:dt("Padding Bottom","blockspare"),value:S,onChange:C,min:0,max:100}))),1==t&&wp.element.createElement(ft,{title:dt("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(ft,{title:dt("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{label:dt("Header Padding Top","blockspare"),value:D,onChange:Y,min:0,max:100}),wp.element.createElement(bt,{label:dt("Header Padding Left","blockspare"),value:z,onChange:F,min:0,max:100}),wp.element.createElement(bt,{label:dt("Header Padding Bottom","blockspare"),value:B,onChange:H,min:0,max:100}),wp.element.createElement(bt,{label:dt("Header Padding Right","blockspare"),value:j,onChange:N,min:0,max:100})),wp.element.createElement(ft,{title:dt("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(bt,{label:dt("Margin Top","blockspare"),value:R,onChange:U,min:0,max:100}),wp.element.createElement(bt,{label:dt("Margin Bottom","blockspare"),value:q,onChange:V,min:0,max:100}))))}wp.i18n.__,wp.element.Fragment,wp.components.RangeControl,wp.blockEditor.PanelColorSettings;const _t=wp.i18n.__,kt=wp.element,wt=kt.Component,vt=(kt.Fragment,wp.blockEditor),Mt=vt.InspectorControls,Lt=vt.MediaUpload,Tt=vt.PanelColorSettings,Et=wp.components,St=Et.RangeControl,xt=Et.PanelBody,Ct=Et.IconButton,Dt=Et.ToggleControl;class Ot extends wt{render(){const e=this.props.attributes,t=e.opacityRatio,n=e.ctaBackGroundColor,a=e.showImage,r=e.imgURL,o=e.imgID,i=e.imgAlt,s=e.buttonBackgroundColor,l=e.buttonTextColor,c=e.buttonSize,u=e.buttonStyle,d=e.buttonShape,p=e.buttonTarget,m=e.paddingTop,f=e.paddingRight,h=e.paddingBottom,b=e.paddingLeft,g=e.marginTop,y=e.marginBottom,_=e.titleFontSize,k=e.subtitleFontSize,w=e.headerTagOption,v=e.headertitleColor,M=e.headersubtitleColor,L=e.headerlayoutOption,T=e.titlePaddingTop,E=e.titlePaddingBottom,S=e.subtitlePaddingTop,x=e.subtitlePaddingBottom,C=e.headerboxColor,D=e.dashColor,O=e.borderColor,Y=e.borderBtnTextColor,j=(e.backgroundFix,e.enableGradient),P=e.backgroundColor1,N=e.backgroundColor2,B=e.gradientAngle,A=e.colorLocation1,H=e.colorLocation2,z=(e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.btnFontWeight),I=e.btnBorderWidth,F=this.props.setAttributes,R=()=>{F({imgID:null,imgURL:null,imgAlt:null})};return wp.element.createElement(Mt,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(xt,{title:_t("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:_,onChangetitleFontSize:e=>F({titleFontSize:e}),subtitleFontSize:k,onChangesubtitleFontSize:e=>F({subtitleFontSize:e}),headerlayoutOption:L,onChangeHeaderStyle:e=>F({headerlayoutOption:e}),headerTagOption:w,onChangeHeaderTag:e=>F({headerTagOption:e}),headerboxColor:C,onChangeboxcolor:e=>F({headerboxColor:e}),dashColor:D,onChangeDashColor:e=>F({dashColor:e}),headertitleColor:v,onChangetitlecolor:e=>F({headertitleColor:e}),titlePaddingTop:T,onChangetitlePaddingTop:e=>F({titlePaddingTop:e}),titlePaddingBottom:E,onChangetitlePaddingBottom:e=>F({titlePaddingBottom:e}),headersubtitleColor:M,onChangesubtitlecolor:e=>F({headersubtitleColor:e}),subtitlePaddingTop:S,onChangesubtitlePaddingTop:e=>F({subtitlePaddingTop:e}),subtitlePaddingBottom:x,onChangesubtitlePaddingBottom:e=>F({subtitlePaddingBottom:e})})),wp.element.createElement(xt,{title:_t("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ee,{enableButtonTarget:!1,buttonTarget:p,onChangeButtonTarget:e=>F({buttonTarget:!p}),enableGradient:j,onChangeGradient:e=>F({enableGradient:e}),enableButtonSize:!0,buttonSize:c,onChangeButtonSize:e=>F({buttonSize:e}),enableButtonShape:!0,buttonShape:d,onChangeButtonShape:e=>F({buttonShape:e}),buttonBackgroundColor:s,onChangeButtonColor:e=>F({buttonBackgroundColor:e}),buttonTextColor:l,onChangeButtonTextColor:e=>F({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:u,onChangeBorderStyle:e=>F({buttonStyle:e}),borderColor:O,onchangeBorderColor:e=>F({borderColor:e}),borderBtnTextColor:Y,onChangeBorderBtnTextColor:e=>F({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:I,onchangebtnBorderWidth:e=>F({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:z,onchangeBtnFontWeight:e=>F({btnFontWeight:e})}),"none"===u&&wp.element.createElement(Dt,{label:_t("Enable Gradient","blockspare"),checked:j,onChange:()=>this.props.setAttributes({enableGradient:!j})}),j&&"none"===u&&wp.element.createElement(xt,{title:_t("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Oe,{backgroundColor1:P,onChangeBackgroundColor1:e=>F({backgroundColor1:e}),backgroundColor2:N,onChangeBackgroundColor2:e=>F({backgroundColor2:e}),gradientAngle:B,onChangeGradientAngle:e=>F({gradientAngle:e}),colorLocation1:A,onChangeColorLocation1:e=>F({colorLocation1:e}),colorLocation2:H,onChangeColorLocation2:e=>F({colorLocation2:e})}))),wp.element.createElement(xt,{title:_t("Background Settings","blockspare"),initialOpen:!1},wp.element.createElement(Dt,{label:_t("Display Image","blockspare"),checked:a,onChange:()=>this.props.setAttributes({showImage:!a})}),wp.element.createElement(Lt,{onSelect:e=>{F({imgID:e.id,imgURL:e.url,imgAlt:e.alt})},type:"image",value:o,render:({open:e})=>wp.element.createElement("div",null,wp.element.createElement(Ct,{className:"aft-cta-inspector-media",label:_t("Edit image","blockspare"),icon:"format-image",onClick:e},_t("Select Image","blockspare")),r&&!!r.length&&wp.element.createElement(Ct,{className:"blockspare-cta-inspector-media",label:_t("Remove Image","blockspare"),icon:"dismiss",onClick:R},_t("Remove","blockspare")))}),wp.element.createElement("div",null,r&&!!r.length&&wp.element.createElement("img",{src:r,width:"100px",height:"100px",alt:i})),r&&!!r.length&&wp.element.createElement(St,{label:_t("Image Opacity","blockspare"),value:t,onChange:e=>this.props.setAttributes({opacityRatio:e}),min:0,max:100,step:10}),wp.element.createElement(Tt,{title:_t("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>F({ctaBackGroundColor:e}),label:_t("Background Color","blockspare")}]})),wp.element.createElement(xt,{title:_t("Block Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(xt,{title:_t("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:m,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>F({paddingTop:e}),paddingEnableRight:!0,paddingRight:f,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>F({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:h,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>F({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:b,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>F({paddingLeft:e})})),wp.element.createElement(xt,{title:_t("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:g,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>F({marginTop:e}),marginEnableBottom:!0,marginBottom:y,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>F({marginBottom:e})})))))}}var Yt=e=>{let t="";return e.enableBoxShadow&&(t={boxShadow:e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor}),t};var jt=e=>{let t="";return t={textAlign:e.sectionAlignment,paddingTop:e.paddingTop?e.paddingTop+"px":"0px",paddingRight:e.paddingRight?e.paddingRight+"px":"0px",paddingBottom:e.paddingBottom?e.paddingBottom+"px":"0px",paddingLeft:e.paddingLeft?e.paddingLeft+"px":"0px",marginTop:e.marginTop?e.marginTop+"px":"0px",marginBottom:e.marginBottom?e.marginBottom+"px":"0px"},t};function Pt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Bt=wp.element.Component;class At extends Bt{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pt(Object(n),!0).forEach((function(t){Nt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({backgroundColor:e.ctaBackGroundColor?e.ctaBackGroundColor:"#0e0e0e"},Yt(e),{},jt(e),{borderRadius:e.borderRadius?e.borderRadius:null});return wp.element.createElement("div",{className:i()("blockspare-cta-wrapper blockspare-blocks","align"+e.align,e.imgURL&&e.imgURL.length&&e.backgroundFix?"blockspare-background-fix":""),style:t},this.props.children)}}var Ht=e=>{let t="";return t={textAlign:e.sectionAlignment,paddingTop:e.headerpaddingTop?e.headerpaddingTop+"px":"0px",paddingRight:e.headerpaddingRight?e.headerpaddingRight+"px":"0px",paddingBottom:e.headerpaddingBottom?e.headerpaddingBottom+"px":"0px",marginTop:e.headermarginTop?e.headermarginTop+"px":"0px",marginBottom:e.headermarginBottom?e.headermarginBottom+"px":"0px",paddingLeft:e.headerpaddingLeft?e.headerpaddingLeft+"px":"0px",backgroundColor:e.headerboxColor?e.headerboxColor:"transparent"},t};function zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function It(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ft=wp.element.Component;class Rt extends Ft{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.align,a=t.sectionAlignment,r=t.headerlayoutOption,o=e.attributes,s=(e.setAttributes,e.isSelected,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zt(Object(n),!0).forEach((function(t){It(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Ht(o)));return wp.element.createElement("div",{className:i()("blockspare-section-header-wrapper blockspare-blocks","align"+n),style:s},wp.element.createElement("div",{className:i()("blockspare-section-head-wrap",r,"blockspare-"+a)},this.props.children))}}var Wt={className:{type:"string"},align:{type:"string",default:"center"},sectionAlignment:{type:"string",default:"center"},headerTitle:{type:"string",default:"Enter Title"},titleFontSize:{type:"number",default:32},subtitleFontSize:{type:"number",default:18},headerSubTitle:{type:"string",default:"Enter Subtitle"},headerboxColor:{type:"string",default:"transparent"},headertitleColor:{type:"string",default:"#404040"},headersubtitleColor:{type:"string",default:"#6d6d6d"},headertitleDashColor:{type:"string",default:"#6d6d6d"},headerpaddingTop:{type:"number",default:10},headerpaddingRight:{type:"number",default:20},headerpaddingBottom:{type:"number",default:10},headerpaddingLeft:{type:"number",default:20},headermarginTop:{type:"number",default:30},headermarginBottom:{type:"number",default:30},headerlayoutOption:{type:"string",default:"blockspare-style1"},headerTagOption:{type:"string",default:"h2"},titlePaddingTop:{type:"number",default:5},titlePaddingBottom:{type:"number",default:5},subtitlePaddingTop:{type:"number",default:5},subtitlePaddingBottom:{type:"number",default:5},dashColor:{type:"string",default:"#8b249c"}};var Ut={paddingTop:{type:"number",default:20},paddingRight:{type:"number",default:20},paddingBottom:{type:"number",default:20},paddingLeft:{type:"number",default:20},marginTop:{type:"number",default:30},marginBottom:{type:"number",default:30}},qt=n(40);var Gt=e=>{let t="";return t={borderColor:e.dashColor?e.dashColor:"#8b249c"},t};var Vt=e=>{let t="";return t={color:e.headertitleColor?e.headertitleColor:"#404040",fontSize:e.titleFontSize+"px",paddingTop:e.titlePaddingTop?e.titlePaddingTop+"px":"0px",paddingBottom:e.titlePaddingBottom?e.titlePaddingBottom+"px":"0px"},t};var $t=e=>{let t="";return t={fontSize:e.subtitleFontSize+"px",color:e.headersubtitleColor?e.headersubtitleColor:"#6d6d6d",paddingTop:e.subtitlePaddingTop?e.subtitlePaddingTop+"px":void 0,paddingBottom:e.subtitlePaddingBottom?e.subtitlePaddingBottom+"px":void 0},t};var Jt={enableBoxShadow:{type:"boolean",default:!1},xOffset:{type:"number",default:0},yOffset:{type:"number",default:6},blur:{type:"number",default:12},spread:{type:"number",default:-10},shadowColor:{type:"string",default:"#000"}};function Xt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Qt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xt(Object(n),!0).forEach((function(t){Kt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Zt=blockspare_globals,en=wp.element,tn=en.Component,nn=en.Fragment,an=wp.blockEditor,rn=an.AlignmentToolbar,on=an.URLInput,sn=an.BlockControls,ln=an.BlockAlignmentToolbar,cn=an.RichText,un=wp.components,dn=un.IconButton,pn=un.Dashicon,mn=wp.blocks.registerBlockType,fn=wp.i18n.__,hn=["center","wide","full"],bn=qt.name,gn=qt.category;const yn=Qt({},Wt,{},qt.attributes,{},Ie,{},Ut,{},Jt);function _n(e){return 0===e?null:"has-background-opacity-"+10*Math.round(e/10)}mn(bn,{title:fn("BS Call to Action","blockspare"),description:fn("BS call to action allow you to add title,subtitle,text button and background image/color","blockspare"),category:gn,icon:r.cta,attributes:yn,keywords:[fn("call to action","blockspare"),fn("block","blockspare"),fn("cta","blockspare"),fn("link","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},getEditWrapperProps(e){const t=e.align;if(-1!==hn.indexOf(t))return{"data-align":t}},edit:class extends tn{render(){const e=this.props,t=e.attributes,n=t.align,a=t.buttonText,r=t.buttonUrl,o=t.buttonAlignment,s=t.buttonSize,l=t.buttonShape,c=t.showImage,u=t.imgURL,d=t.sectionAlignment,p=(t.imgAlt,t.opacityRatio),m=t.headerTagOption,f=t.headerTitle,h=t.headerSubTitle,b=e.isSelected,g=e.attributes,y=e.setAttributes,_=Qt({},Gt(g)),k=Qt({},Vt(g)),w=Qt({},$t(g)),v=Qt({},ze(g));let M="url("+Zt.img+")";return u&&u.length&&(M="url("+u+")"),wp.element.createElement(nn,null,wp.element.createElement(sn,null,wp.element.createElement(ln,{value:n,onChange:e=>{y({align:e})},controls:["center","wide","full"]}),wp.element.createElement(rn,{value:d,onChange:e=>{y({sectionAlignment:e})}})),wp.element.createElement(Ot,Qt({setAttributes:y},this.props)),wp.element.createElement(At,this.props,c&&u&&wp.element.createElement("div",{className:i()("blockspare-image-wrap","blockspare-cta-background",_n(p),{"has-background-opacity":0!==p}),style:{backgroundImage:M}}),!u&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),wp.element.createElement(cn,{tagName:m,placeholder:fn("Title","blockspare"),keepPlaceholderOnFocus:!0,value:f,className:"blockspare-title",style:k,onChange:e=>y({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),wp.element.createElement(cn,{tagName:"p",placeholder:fn("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:h,className:"blockspare-subtitle",style:w,onChange:e=>y({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_}))),wp.element.createElement(ye,this.props,wp.element.createElement(cn,{tagName:"span",placeholder:fn("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:a,allowedFormats:[],className:i()("blockspare-button",l,s),style:v,onChange:e=>y({buttonText:e})})),b&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${o}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(pn,{icon:"admin-links"}),wp.element.createElement(on,{className:"button-url",value:r,onChange:e=>y({buttonUrl:e})}),wp.element.createElement(dn,{icon:"editor-break",label:fn("Apply","blockspare"),type:"submit"}))))}},save:function(e){const t=e.attributes,n=(t.align,t.buttonText),a=t.buttonUrl,r=t.buttonTarget,o=t.buttonSize,s=t.buttonShape,l=t.opacityRatio,c=t.sectionAlignment,u=t.showImage,d=t.imgURL,p=(t.imgAlt,t.headerTagOption),m=t.headerTitle,f=t.headerSubTitle,h=Qt({},Gt(e.attributes)),b=Qt({},Vt(e.attributes)),g=Qt({},$t(e.attributes)),y=Qt({},ze(e.attributes));let _="url("+Zt.img+")";return d&&d.length&&(_="url("+d+")"),wp.element.createElement(At,e,u&&d&&wp.element.createElement("div",{className:i()("blockspare-image-wrap","blockspare-cta-background",_n(l),{"has-background-opacity":0!==l}),style:{backgroundImage:_}}),!d&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-head-wrap",style:{textAlign:c}},wp.element.createElement(Rt,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:h}),m&&wp.element.createElement(cn.Content,{tagName:p,className:"blockspare-title",style:b,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:h})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:h}),f&&wp.element.createElement(cn.Content,{tagName:"p",className:"blockspare-subtitle",style:g,value:f}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:h})))),wp.element.createElement(ye,e,n&&wp.element.createElement("a",{href:a,target:r?"_blank":null,rel:r?"noopener noreferrer":null,className:i()("blockspare-button",s,o),style:y},wp.element.createElement(cn.Content,{value:n}))))}});var kn=e=>{let t="";return"style-3"!=e.design&&(t={boxShadow:e.enableBoxShadow?e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor:"",borderRadius:e.borderRadius?e.borderRadius:null,backgroundColor:e.enableBackgroundColor?e.backGroundColor:void 0}),t},wn=(n(434),n(436),n(8)),vn=n.n(wn);let Mn=blockspare_globals.srcUrl+"/dist";var Ln=function({imageFile:e,imageHoverFile:t,imageWidth:n="",imageHeight:a="",label:r}){const o=e?e.match(/https?:/i)?e:Mn?`${Mn}/${e}`:e:"",i=t?t.match(/https?:/i)?t:Mn?`${Mn}/${t}`:t:null;return wp.element.createElement("span",{className:"blockspare-design-panel-item"},i&&wp.element.createElement("img",{className:"blockspare-design-panel-item__hover-image",src:i,alt:r,width:n,height:a}),o&&wp.element.createElement("img",{className:"blockspare-design-panel-item__image",src:o,alt:r,width:n,height:a}),wp.element.createElement("span",{className:"design-label"},r))};function Tn(){return(Tn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function En(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Sn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const xn=wp.components.RadioControl;var Cn=function(e){const t=e.selected,n=e.options,a=e.onChange,r=e.className,o=void 0===r?"":r,s=n.map(e=>function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?En(Object(n),!0).forEach((function(t){Sn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):En(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e,{label:wp.element.createElement(Ln,{imageFile:e.image,imageHoverFile:e.hoverImage,imageWidth:e.imageWidth,imageHeight:e.imageHeight,isPro:e.isPro,label:e.label}),title:e.label,value:e.value}));return wp.element.createElement("div",{className:i()(o,"blockspare-design-control-wrapper components-base-control")},wp.element.createElement("div",{className:"components-base-control__label"},e.label),wp.element.createElement(xn,Tn({},vn()(e,["label"]),{className:"blockspare-design-control",selected:t,options:s,onChange:a})))};function Dn(){return(Dn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const On=wp.i18n.__,Yn=wp.components.BaseControl,jn=wp.hooks.applyFilters,Pn={"double-wave":{image:"images/double-wave.png",label:On("Double Wave","blockspare"),value:"double-wave"},wavy:{image:"images/wavy.png",label:On("Wavy","blockspare"),value:"wavy"},sloped:{image:"images/sloped.png",label:On("Sloped","blockspare"),value:"sloped"},grow:{image:"images/grow.png",label:On("Grow","blockspare"),value:"grow"},angled:{image:"images/angled.png",label:On("Angled","blockspare"),value:"angled"}},Nn=e=>{const t=Object.keys(Pn).filter(t=>!e.excludeDesigns.includes(t)).map(e=>Pn[e]);return wp.element.createElement(Yn,{className:"blockspare-design-separator-control",id:"blockspare-design-separator-control",label:e.label,help:e.help},wp.element.createElement(Cn,Dn({options:jn("blockspare.separator.edit.layouts",t,e)},vn()(e,["label","help"]))))};Nn.defaultProps={label:"",help:"",excludeDesigns:[]};var Bn=Nn;function An(){return(An=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const Hn=wp.i18n.__,zn="blockspare".i18n,In=wp.components.PanelBody;var Fn=function(e){const t=e.options,n=e.selected,a=e.title,r=void 0===a?Hn("Layout",zn):a,o=e.selectedOptionInTitle,s=void 0===o||o,l=e.help,c=void 0===l?"":l,u=e.className,d=void 0===u?"":u,p=e.initialOpen,m=void 0===p||p,f=t?t.find(e=>e.value===n):null,h=f?`${r} – ${f.label}`:r,b=i()(["blockspare-design-panel-body",d]);return wp.element.createElement(In,An({title:s?wp.element.createElement("span",null,h):r,className:b,initialOpen:m},vn()(e,["help"])),c&&wp.element.createElement("p",{className:"components-base-control__help"},c),t&&wp.element.createElement(Cn,vn()(e,["help","title"])),e.children)};const Rn=wp.i18n.__,Wn=wp.element.Component,Un=wp.hooks.applyFilters,qn=wp.blockEditor,Gn=qn.InspectorControls,Vn=qn.MediaUpload,$n=qn.PanelColorSettings,Jn=wp.components,Xn=Jn.ToggleControl,Qn=Jn.PanelBody,Kn=Jn.SelectControl,Zn=Jn.IconButton;Jn.RangeControl;class ea extends Wn{render(){const e=[{value:"",label:Rn("Default","blockspare")},{value:"blockspare-style1",label:Rn("Style 1","blockspare")},{value:"blockspare-style2",label:Rn("Style 2","blockspare")}],t=this.props,n=t.attributes,a=n.backGroundColor,r=n.imageShape,o=n.descriptionColor,i=n.imgID,s=n.imgURL,l=n.imgAlt,c=n.showContentImg,u=n.buttonBackgroundColor,d=n.buttonTextColor,p=n.buttonSize,m=n.buttonShape,f=n.buttonTarget,h=n.buttonStyle,b=n.borderColor,g=n.borderBtnTextColor,y=n.showButton,_=n.marginTop,k=n.marginBottom,w=n.layoutOption,v=n.titleFontSize,M=n.subtitleFontSize,L=n.headerboxColor,T=n.headertitleColor,E=n.headersubtitleColor,S=n.headerlayoutOption,x=n.titlePaddingTop,C=n.titlePaddingBottom,D=n.subtitlePaddingTop,O=n.subtitlePaddingBottom,Y=n.dashColor,j=n.design,P=void 0===j?"style-1":j,N=n.enableGradient,B=n.backgroundColor1,A=n.backgroundColor2,H=n.gradientAngle,z=n.colorLocation1,I=n.colorLocation2,F=(n.enableBoxShadow,n.xOffset,n.yOffset,n.blur,n.spread,n.shadowColor,n.borderRadius,n.btnFontWeight),R=n.btnBorderWidth,W=t.setAttributes,U=()=>{W({imgID:null,imgURL:null,imgAlt:null})};return wp.element.createElement(Gn,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Fn,{initialOpen:!1,selected:P,options:Un("blockspare.cta.edit.layouts",[{label:Rn("Layout 1","blockspare"),value:"style-1",image:"images/style-1.png"},{label:Rn("Layout 2","blockspare"),value:"style-2",image:"images/style-2.png"},{label:Rn("Layout 3","blockspare"),value:"style-3",image:"images/style-3.png"}]),onChange:e=>W({design:e})}),wp.element.createElement(Qn,{title:Rn("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Xn,{label:Rn("Display Button","blockspare"),checked:y,onChange:()=>this.props.setAttributes({showButton:!y})}),wp.element.createElement(Xn,{label:Rn("Reverse","blockspare"),checked:w,onChange:()=>this.props.setAttributes({layoutOption:!w})}),c&&wp.element.createElement(Vn,{onSelect:e=>{W({imgID:e.id,imgURL:e.url,imgAlt:e.alt})},type:"image",value:i,render:({open:e})=>wp.element.createElement("div",null,wp.element.createElement(Zn,{className:"aft-cta-inspector-media",label:Rn("Edit image","blockspare"),icon:"format-image",onClick:e},Rn("Select Image","blockspare")),s&&!!s.length&&wp.element.createElement(Zn,{className:"blockspare-cta-inspector-media",label:Rn("Remove Image","blockspare"),icon:"dismiss",onClick:U},Rn("Remove","blockspare")))}),s&&!!s.length&&wp.element.createElement("div",null,wp.element.createElement("img",{src:s,width:"100px",height:"100px",alt:l})),s&&!!s.length&&wp.element.createElement(Kn,{label:Rn("Choose Image Shape","blockspare"),options:e,value:r,onChange:e=>this.props.setAttributes({imageShape:e})}),"style-3"!=P&&wp.element.createElement($n,{title:Rn("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:a,onChange:e=>W({backGroundColor:e}),label:Rn("Background Color","blockspare")}]})),wp.element.createElement(Qn,{title:Rn("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:v,onChangetitleFontSize:e=>W({titleFontSize:e}),subtitleFontSize:M,onChangesubtitleFontSize:e=>W({subtitleFontSize:e}),headerlayoutOption:S,onChangeHeaderStyle:e=>W({headerlayoutOption:e}),headerboxColor:L,onChangeboxcolor:e=>W({headerboxColor:e}),dashColor:Y,onChangeDashColor:e=>W({dashColor:e}),headertitleColor:T,onChangetitlecolor:e=>W({headertitleColor:e}),titlePaddingTop:x,onChangetitlePaddingTop:e=>W({titlePaddingTop:e}),titlePaddingBottom:C,onChangetitlePaddingBottom:e=>W({titlePaddingBottom:e}),headersubtitleColor:E,onChangesubtitlecolor:e=>W({headersubtitleColor:e}),subtitlePaddingTop:D,onChangesubtitlePaddingTop:e=>W({subtitlePaddingTop:e}),subtitlePaddingBottom:O,onChangesubtitlePaddingBottom:e=>W({subtitlePaddingBottom:e})})),wp.element.createElement(Qn,{title:Rn("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement($n,{title:Rn("Description Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>W({descriptionColor:e}),label:Rn("Description Color","blockspare")}]})),y&&wp.element.createElement(Qn,{title:Rn("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ee,{enableButtonTarget:!1,buttonTarget:f,onChangeButtonTarget:e=>W({buttonTarget:!f}),enableGradient:N,onChangeGradient:e=>W({enableGradient:e}),enableButtonSize:!0,buttonSize:p,onChangeButtonSize:e=>W({buttonSize:e}),enableButtonShape:!0,buttonShape:m,onChangeButtonShape:e=>W({buttonShape:e}),buttonBackgroundColor:u,onChangeButtonColor:e=>W({buttonBackgroundColor:e}),buttonTextColor:d,onChangeButtonTextColor:e=>W({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:h,onChangeBorderStyle:e=>W({buttonStyle:e}),borderColor:b,onchangeBorderColor:e=>W({borderColor:e}),borderBtnTextColor:g,onChangeBorderBtnTextColor:e=>W({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:R,onchangebtnBorderWidth:e=>W({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:F,onchangeBtnFontWeight:e=>W({btnFontWeight:e})}),"none"===h&&wp.element.createElement(Xn,{label:Rn("Enable Gradient","blockspare"),checked:N,onChange:()=>this.props.setAttributes({enableGradient:!N})}),N&&"none"===h&&y&&wp.element.createElement(Qn,{title:Rn("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Oe,{backgroundColor1:B,onChangeBackgroundColor1:e=>W({backgroundColor1:e}),backgroundColor2:A,onChangeBackgroundColor2:e=>W({backgroundColor2:e}),gradientAngle:H,onChangeGradientAngle:e=>W({gradientAngle:e}),colorLocation1:z,onChangeColorLocation1:e=>W({colorLocation1:e}),colorLocation2:I,onChangeColorLocation2:e=>W({colorLocation2:e})}))),wp.element.createElement(Qn,{title:Rn("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:_,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>W({marginTop:e}),marginEnableBottom:!0,marginBottom:k,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>W({marginBottom:e})}))))}}function ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function na(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(n),!0).forEach((function(t){aa(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ta(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function aa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ra=blockspare_globals,oa=wp.element,ia=oa.Component,sa=oa.Fragment,la=wp.i18n.__,ca=wp.blockEditor,ua=ca.BlockControls,da=ca.RichText,pa=ca.URLInput,ma=ca.AlignmentToolbar,fa=wp.components,ha=fa.IconButton,ba=fa.Dashicon;var ga=n(41);function ya(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function _a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ya(Object(n),!0).forEach((function(t){ka(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ya(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ka(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const wa=wp.blocks.registerBlockType,va=wp.i18n.__,Ma=wp.blockEditor.RichText,La=blockspare_globals,Ta=ga.name,Ea=ga.category,Sa=_a({},Ut,{},Wt,{},ga.attributes,{},Jt,{},Ie);wa(Ta,{title:va("BS Content Box","blockspare"),description:va("You can create a variety of layouts using this block.","blockspare"),category:Ea,icon:r.contentbox,attributes:Sa,keywords:[va("block","blockspare"),va("container","blockspare"),va("content","blockspare"),va("box","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{design:"style-1"}},edit:class extends ia{render(){const e=this.props,t=e.attributes,n=t.align,a=t.sectionAlignment,r=(t.backGroundColor,t.descriptionColor),o=t.sectionDescription,s=t.buttonText,l=t.buttonUrl,c=t.showButton,u=t.buttonSize,d=t.buttonShape,p=t.buttonAlignment,m=t.showContentImg,f=t.imgURL,h=t.imgAlt,b=t.imageShape,g=t.layoutOption,y=t.headerTagOption,_=t.headerTitle,k=t.headerSubTitle,w=t.design,v=(t.borderRadius,t.enableBackgroundColor,e.className,e.attributes),M=e.setAttributes,L=e.isSelected,T=na({},jt(v)),E=na({},ze(v)),S=na({},Gt(v)),x=na({},Vt(v)),C=na({},$t(v));let D=ra.img;return f&&f.length&&(D=f),wp.element.createElement(sa,null,wp.element.createElement(ea,na({setAttributes:M},this.props)),wp.element.createElement(ua,null,wp.element.createElement(ma,{value:a,onChange:e=>{M({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-content-wrapper blockspare-blocks","align"+n,1==g?"reverse-img":"","style-3"!=w?"has-background":"",w),style:T},m&&f&&wp.element.createElement("div",{className:"content-img-wrap"},wp.element.createElement("img",{src:D,alt:h,className:b})),!f&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-wrapper",style:na({},kn(v))},wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement("div",{className:"blockspare-title-subtitle-wrap"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),wp.element.createElement(da,{tagName:y,placeholder:la("Title","blockspare"),keepPlaceholderOnFocus:!0,value:_,className:"blockspare-title",style:x,onChange:e=>M({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),wp.element.createElement(da,{tagName:"p",placeholder:la("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:k,className:"blockspare-subtitle",style:C,onChange:e=>M({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S}))))),wp.element.createElement("div",{className:"blockspare-desc-btn-wrap"},wp.element.createElement(da,{tagName:"p",placeholder:la("Description","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-description",style:{color:r},onChange:e=>M({sectionDescription:e})}),c&&wp.element.createElement(ye,this.props,wp.element.createElement(da,{tagName:"span",placeholder:la("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:s,allowedFormats:[],className:i()("blockspare-button",d,u),style:E,onChange:e=>M({buttonText:e})})),L&&c&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${p}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(ba,{icon:"admin-links"}),wp.element.createElement(pa,{className:"button-url",value:l,onChange:e=>M({buttonUrl:e})}),wp.element.createElement(ha,{icon:"editor-break",label:la("Apply","blockspare"),type:"submit"}))))))}},save:function(e){const t=e.attributes,n=t.align,a=t.sectionAlignment,r=t.descriptionColor,o=t.sectionDescription,s=t.buttonText,l=t.buttonUrl,c=t.showButton,u=t.buttonSize,d=t.buttonShape,p=t.buttonTarget,m=t.showContentImg,f=t.imgURL,h=t.imgAlt,b=t.imageShape,g=t.layoutOption,y=t.headerTitle,_=t.headerSubTitle,k=t.dashColor,w=t.headerlayoutOption,v=t.headerTagOption,M=(t.backGroundColor,t.design),L=(t.borderRadius,t.enableBackgroundColor,_a({},jt(e.attributes))),T={borderColor:k},E=_a({},ze(e.attributes)),S=_a({},Gt(e.attributes)),x=_a({},Vt(e.attributes)),C=_a({},$t(e.attributes));let D=La.img;return f&&f.length&&(D=f),wp.element.createElement("div",{className:i()("blockspare-content-wrapper blockspare-blocks","align"+n,1==g?"reverse-img":"","style-3"!=M?"has-background":"",M),style:L},m&&f&&wp.element.createElement("div",{className:"content-img-wrap"},wp.element.createElement("img",{src:D,alt:h,className:b})),!f&&wp.element.createElement("div",{className:"empty-plcaeholder-div"}),wp.element.createElement("div",{className:"blockspare-section-wrapper",style:_a({},kn(e.attributes))},wp.element.createElement("div",{className:i()("blockspare-section-header-wrapper"),style:T},wp.element.createElement("div",{className:i()("blockspare-section-head-wrap",w,"blockspare-"+a)},wp.element.createElement("div",{className:"blockspare-title-subtitle-wrap"},wp.element.createElement(Rt,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),y&&wp.element.createElement(Ma.Content,{tagName:v,className:"blockspare-title",style:x,value:y}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:S}),_&&wp.element.createElement(Ma.Content,{tagName:"p",className:"blockspare-subtitle",style:C,value:_}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:S}))))),wp.element.createElement("div",{className:"blockspare-desc-btn-wrap"},wp.element.createElement(Ma.Content,{tagName:"p",style:{color:r},value:o}),c&&wp.element.createElement(ye,e,s&&wp.element.createElement("a",{href:l,target:p?"_blank":null,rel:p?"noopener noreferrer":null,className:i()("blockspare-button",d,u),style:E},wp.element.createElement(Ma.Content,{value:s})))))))}});n(437),n(438);var xa=n(42);var Ca={align:{type:"string",default:"full"},design:{type:"string",default:"double-wave"},layer1Shadow:{type:"boolean",default:!1},width:{type:"number",default:1},height:{type:"number",default:150},color:{type:"string",default:"#3c1a5b"}};var Da=e=>{let t="";if(1==e.enableGradient){const n=e.gradientAngle+"deg",a=e.colorLocation1+"%",r=e.colorLocation2+"%";t={backgroundImage:`linear-gradient(${n},${e.backgroundColor1?e.backgroundColor1:"#3B1A5B"} ${a},${e.backgroundColor2?e.backgroundColor2:"#8B249C"} ${r})`}}else t={backgroundColor:e.backGroundColor?e.backGroundColor:"#fff"};return t};var Oa={enableGradient:{type:"boolean",default:!1},backgroundColor1:{type:"string",default:"#3B1A5B"},backgroundColor2:{type:"string",default:"#8B249C"},gradientAngle:{type:"number",default:-90},colorLocation1:{type:"number",default:30},colorLocation2:{type:"number",default:70}};const Ya=wp.i18n.__,ja=wp.element.Component,Pa=wp.blockEditor,Na=Pa.InspectorControls,Ba=(Pa.MediaUpload,Pa.PanelColorSettings),Aa=wp.components,Ha=(Aa.RangeControl,Aa.PanelBody);Aa.IconButton,Aa.ToggleControl,Aa.SelectControl;class za extends ja{render(){const e=this.props.attributes,t=(e.opacityRatio,e.backGroundColor),n=(e.imgURL,e.imgID,e.imgAlt,e.paddingTop),a=e.paddingRight,r=e.paddingBottom,o=e.paddingLeft,i=e.marginTop,s=e.marginBottom,l=(e.backgroundFix,e.separatorEnable,e.design,e.width,e.height,e.color,e.showFront,e.zindexDivider,e.dividerPosition,e.topDividerMargin,e.bottomDividerMargin,e.enableGradient,e.backgroundColor1,e.backgroundColor2,e.gradientAngle,e.colorLocation1,e.colorLocation2,e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.enableGap,this.props.setAttributes);Ya("Top","blockspare"),Ya("Bottom","blockspare");return wp.element.createElement(Na,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Ha,{title:Ya("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ba,{title:Ya("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:e=>l({backGroundColor:e}),label:Ya("Background Color","blockspare")}]})),wp.element.createElement(Ha,{title:Ya("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(Ha,{title:Ya("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>l({paddingTop:e}),paddingEnableRight:!0,paddingRight:a,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>l({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:r,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>l({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>l({paddingLeft:e})})),wp.element.createElement(Ha,{title:Ya("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:i,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>l({marginTop:e}),marginEnableBottom:!0,marginBottom:s,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>l({marginBottom:e})})))))}}n(439);var Ia=n(2),Fa=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st0",d:"M-.5 27.7v146.8h1946V10.7s-170.6 20.4-265 57.2c0 0-374.1 116.7-794.2 24.7 0 0-414.1-100.9-673.1-92-.1 0-102.9 5.2-213.7 27.1z"}),wp.element.createElement("path",{className:"st1",d:"M1945.5 69.9s-425.5-100-888 20.5c0 0-342.6 63.3-611.4 43.8 0 0-224.9-40.3-446.6-84.4V174h1946V69.9z"}),wp.element.createElement("path",{d:"M-.5 88s425.5-100 888 20.5c0 0 342.6 63.3 611.4 43.8 0 0 224.9-20.2 446.6-64.3v87H-.5V88z"}))};Fa.defaultProps={className:"divider--doublewave",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1946 175",preserveAspectRatio:"none"};var Ra=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M-.5 0l958.8 69.3L1917 0v77H-.5z"}),wp.element.createElement("path",{className:"st2",d:"M-.5 24.5l958.8 46.3L1917 24.5V77H-.5z"}),wp.element.createElement("path",{className:"st3",d:"M-.5 49.1l958.8 23.1L1917 49.1V77H-.5z"}),wp.element.createElement("path",{d:"M-.5 77H1917v28H-.5z"}))};Ra.defaultProps={className:"divider--fan",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1917 105",preserveAspectRatio:"none"};var Wa=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M42.19 9.35c2.26.25 5.15-.04 7.55-.53 2.36-.49 7.09-2.35 10.05-3.57C67.37 2.03 73.16.8 79.05.28c2.36-.21 4.87-.35 10.34.25s10.62 2.56 10.62 2.56V10H0V6.97s7.2-3.26 15.84-3.05c3.92.07 9.28.67 13.4 2.24 2.12.81 5.22 1.82 7.97 2.42 2.72.63 3.95.67 4.98.77z"}))};Wa.defaultProps={className:"divider--wavy",viewBox:"0 0 100 10",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"none"};var Ua=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M1000 299l2-279C847-16 692 155 587 184c-102.64 28.35-149-32-232-31-80 1-142 53-229 80-65.54 20.34-101 15-126 11.61V299z"}),wp.element.createElement("path",{d:"M1000 286l2-252C845-9 700 178 597 212c-101.11 33.38-159-47-242-46-80 1-145.09 54.07-229 87-65.21 25.59-104.07 16.72-126 10.61V286z"}),wp.element.createElement("path",{d:"M1000 300l1-230.29C784 57 700.53 198.86 597 226c-103 27-174-30-257-29-80 1-130.09 37.07-214 70-61.23 24-108 15.61-126 10.61V300z"}))};Ua.defaultProps={className:"divider--waves",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1000 300",preserveAspectRatio:"none"};var qa=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M0 100C20 0 50 0 100 100z"}))};qa.defaultProps={className:"divider--sloped",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",preserveAspectRatio:"none"};var Ga=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M0 108.1h630V0S475 104.6 314 104.6 0 0 0 0z"}),wp.element.createElement("path",{className:"st2",d:"M0 106.9h630V17.8s-155 87.9-316 87.9S0 19 0 19z"}),wp.element.createElement("path",{d:"M0 120h630V45.1s-155 61.8-316 61.8S0 45.1 0 45.1z"}))};Ga.defaultProps={className:"divider--curve",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 120",preserveAspectRatio:"none"};var Va=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M-53.5 413H-337v-10.8s6.5 1.6 16.8.5c4.8-.6 10.1-2.5 15.8-3.7 5.7-1.2 10.5-1.5 12-1.6 5.9-.2 11 .5 14.2.9 7.6.9 13.2 3.5 17 4.7 3.9 1.2 9.1 1.9 10.5 2 13.2.8 45.3-15.5 63-15.8 16.6-.3 30 6.1 36.6 9.3 5.9 2.8 6.4 3 18 7.4s33.4-3.7 44.7-5.7c8.3-1.5 14.1-1.8 20.9-1.5 6.7.3 14 4.6 14 4.6v9.7zm-26.8-11.7c-2.9.4-5.7 1.8-6 1.9s3.5-1.1 5.8-1.1 3.6.6 4.3-.4c.6-1-1.1-.9-4.1-.4zm-20.1 3.6c-3.1.5-9.1 2-12.4 2.7-8 1.7-16.8 1-17.6 1.1-.7.1 6.9 1.2 15.1.1 4.8-.7 11.9-2.7 15.1-3.5 3.2-.7 5.6-.9 5.6-.9s-2.5-.1-5.8.5zm-69.9-7.4c-2.4-.5-2.2-.8-7.6-1.6-5.4-.8-11.2-.2-11.2 0-.1.1 4.9.1 8.8.5 3.8.4 7.9 1.4 10 2 5.2 1.4 20.2 6.8 18.5 6.1-1.7-.7-14.7-6.2-18.5-7zm27.3 6.8c-3.1-1.2-6.8-3.1-6.6-3 .2.2 2.9 2.2 6.9 3.7s5 1.1 4.8 1.1c-.1 0-2.1-.6-5.1-1.8zm84.9 0c-3.9-1.9-7.2-2.5-7.4-2.5-.2-.1 3.8 1.3 6.7 2.7 2.9 1.4 4.7 2.4 4.8 2.5.1.1-.2-.8-4.1-2.7zm-253-2.2c-3.3 1.1-3.5 1.1-5.7 1.6-4.3 1-12.2.6-12.5.7-.4.1 7.3 1 11.3.2 2.4-.4 5.2-1 7.8-2 2.6-1 4.6-1 4.5-1.2-.1-.3-2.1-.4-5.4.7zm58.2 5.4c5.2.6 6.2 0 6.2-.3s-4 .3-8.9-.8c-4.9-1-8-2.5-8.4-2.6s5.9 3.1 11.1 3.7zm-7.6.9c1.6.4 2.7.3 2.7.2s.4-.3-1.9-.6c-2.3-.4-5.5-1.8-5.7-1.7-.2.1 3.2 1.6 4.9 2.1zm22.2-.8c1.6-.5 2.5-1.2 2.4-1.3-.1-.1.2-.5-1.9.5s-5.5 1.6-5.6 1.8c-.1.2 3.5-.4 5.1-1zm-31.7-5.1c1.6.4 2.1.7 2.5.8s-.6-.5-2.2-1.2-2-.5-1.9-.2c.1.3-.1.2 1.6.6zm-28.8-2.2c1.5.1 1.6-.1 1.6-.4 0-.3-.8-.3-2-.2-1.2.1-3.5.9-3.3.9s2.1-.4 3.7-.3zm105.8-8.7c-6.5.2-20.1 5.2-16.5 4.1 3.6-1.1 12.2-3.5 17.2-3.5 5.1 0 7.4-.4 7.5-.3.1.1-1.7-.5-8.2-.3z"}),wp.element.createElement("path",{d:"M-74.2 394.6c-3.3.2-16.6 3-17 3.3-.4.3 9.3-2.2 16.6-2.9 2.6-.3 7.1.1 7.2 0 .1 0-1.9-.8-6.8-.4zM-118.1 405.1c-7.4.6-13-1.1-13.3-1.2-.4-.1 7.3.7 12.3.5 5-.2 9.3-1.1 9.5-1.2.2-.1-1.1 1.3-8.5 1.9zM-128.9 400c1.5-.1 1.6.1 1.6.4 0 .3-.8.4-2 .3s-3.3-1-3.2-1.1 1.9.5 3.6.4zM-142.1 399.7c-2.1-1-6.2-2.7-6.3-2.6-.1 0 4.2 2.2 6.1 3.1 1.9 1 6.3 2.3 6.3 2.2 0-.1-4-1.7-6.1-2.7zM-189.3 385.9c-3.3.2-16.6 3-17 3.3s9.3-2.2 16.6-2.9c2.6-.3 7.1.1 7.2 0s-1.9-.8-6.8-.4zM-292.3 394.2c1.6.1 4.9-.3 6.7-.4 4.3-.3 8.2 1.9 8.6 1.9.4.1-2.8-2.2-7-2.6-2.4-.2-6.5.5-8.2.7-1.7.2-2.9-.1-2.9-.1s1.2.4 2.8.5zM-258.5 402c1.6.4 3.4.1 3.4 0 0-.2.2-.3-2.1-.5-2.3-.3-4.1-1.2-4.3-1.1-.2.1 1.4 1.1 3 1.6zM-314.8 398.7c2.4-.6 5.1-1.5 5.1-1.4s-2.6 1.5-5 2-6.7.6-6.7.5c.1-.1 4.3-.5 6.6-1.1z"}))};Va.defaultProps={className:"divider--shapeocean",xmlns:"http://www.w3.org/2000/svg",viewBox:"-337 385.2 283.5 27.8",preserveAspectRatio:"none"};var $a=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{className:"st1",d:"M261.2 64.9C367.6 54.7 499.6 39.7 630 18.5V0C497.8 31.4 363.7 52 261.2 64.9z"}),wp.element.createElement("path",{className:"st2",d:"M261.2 64.9c-41 3.9-78.2 7.1-110 9.6 13.2-.4 27-.9 41.5-1.6C315 67.7 478.4 59.4 630 34.8V18.5C499.1 39.8 367.3 54.8 261.2 64.9z"}),wp.element.createElement("path",{d:"M192.7 72.9c-14.5.7-28.3 1.2-41.5 1.6C59.9 77.7 0 77.4 0 77.4V80h630V33.8C478.4 58.4 315 67.7 192.7 72.9z"}))};$a.defaultProps={className:"divider--grow",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 80",preserveAspectRatio:"none"};var Ja=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M630 36.9a34.6 34.6 0 0 0-16.5-4.2c-17.2 0-31.8 12.7-36.7 30.3a21.2 21.2 0 0 0-9.3-2.2 21.8 21.8 0 0 0-13.9 5.1 38.7 38.7 0 0 0-40.4-4.8c-5.2-7.7-13.4-12.6-22.7-12.6a25.7 25.7 0 0 0-8.7 1.5C472.9 27.8 453 12.4 430 12.4s-42.7 15.3-51.7 37.2c-7.2-10.9-18.8-18.1-31.8-18.1a37 37 0 0 0-24 9.2c-6-10.3-16.3-17-28-17-13.8 0-25.6 9.3-30.7 22.7a26.5 26.5 0 0 0-19.8-9.2 22 22 0 0 0-5.8.7c-4-11.6-14-19.9-25.7-19.9a24.7 24.7 0 0 0-9.4 1.9C189.2 7.4 171.6 0 152.5 0 124.6 0 100 15.8 85.3 39.9A27.6 27.6 0 0 0 63 28.2a23.9 23.9 0 0 0-7.1 1C47.2 13 31.5 2.3 13.5 2.3A43.3 43.3 0 0 0 0 4.4V80h630z"}))};Ja.defaultProps={className:"divider--clouds",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 630 80",preserveAspectRatio:"none"};var Xa=function(e){return wp.element.createElement("svg",e,wp.element.createElement("path",{d:"M0 100L100 0v100z"}))};Xa.defaultProps={className:"divider--angled",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",preserveAspectRatio:"none"};const Qa={wavy:Wa,waves:Ua,"double-wave":Fa,fan:Ra,sloped:qa,curve:Ga,shapeocean:Va,grow:$a,clouds:Ja,angled:Xa},Ka=e=>{const t=Qa[e.design],n=i()([e.className,"blockspare-separator-wrapper"]);return wp.element.createElement("div",{className:n},wp.element.createElement(t,{className:e.design,preserveAspectRatio:"none","aria-hidden":"true"}),e.children)};Ka.defaultProps={className:"",design:"double-wave",shadow:!1},Ka.Save=e=>wp.element.createElement(Ka,e);var Za=Ka;const er=wp.i18n.__,tr=wp.element,nr=tr.Component,ar=tr.Fragment,rr=wp.blockEditor,or=rr.BlockControls,ir=(rr.BlockAlignmentToolbar,wp.components.Toolbar);var sr=class extends nr{render(){const e=this.props,t=e.attributes,n=e.setAttributes,a=(t.horizontalFlip,t.verticalFlip),o=[{icon:r.flipY,title:er("Flip horiztonally","blockspare"),isActive:!!a,onClick:()=>n({verticalFlip:!a})}];return wp.element.createElement(ar,null,wp.element.createElement(or,null,wp.element.createElement(ir,{controls:o})))}};function lr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function cr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lr(Object(n),!0).forEach((function(t){ur(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ur(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const dr=wp.element,pr=dr.Component,mr=dr.Fragment,fr=wp.blockEditor.InnerBlocks;function hr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function br(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hr(Object(n),!0).forEach((function(t){gr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function gr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const yr=wp.blockEditor.InnerBlocks,_r=wp.i18n.__,kr=wp.blocks,wr=kr.registerBlockType,vr=kr.createBlock,Mr=xa.name,Lr=xa.category,Tr=br({},xa.attributes,{},Oa,{},Ut,{},Ca,{},Jt);wr(Mr,{title:_r("BS Container","blockspare"),description:_r("BS add container","blockspare"),category:Lr,icon:r.container,attributes:Tr,keywords:[_r("block","blockspare"),_r("container","blockspare"),_r("group","blockspare")],supports:{align:["center","wide","full"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends pr{render(){const e=this.props,t=e.className,n=e.attributes,a=n.align,r=n.opacityRatio,o=n.imgURL,s=n.backgroundFix,l=n.verticalFlip,c=n.horizontalFlip,u=n.separatorEnable,d=n.design,p=n.height,m=n.color,f=n.width,h=n.showFront,b=n.zindexDivider,g=n.dividerPosition,y=n.topDividerMargin,_=n.bottomDividerMargin,k=n.borderRadius,w=n.enableGap,v=e.attributes,M=e.setAttributes,L=e.isSelected,T=cr({},Yt(v),{},Da(v),{},jt(v),{borderRadius:k||null});let E="";o&&(E="url("+o+")");let S=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(f),t,{"is-vertically-flipped":l,"is-horizontally-flipped":c}),x="";return u&&(x="has-separator-top"===g?{top:y+"px",zIndex:h?b:""}:"has-separator-bottom"===g?{bottom:_+"px",zIndex:h?b:""}:""),wp.element.createElement(mr,null,wp.element.createElement(za,cr({setAttributes:M},this.props)),L&&u&&wp.element.createElement(sr,this.props),wp.element.createElement("div",{className:i()("blockspare-block-container-wrapper","align"+a,w?"has-gap-enable":"",o&&o.length&&s?"blockspare-background-fix":"",u?g:""),style:T},wp.element.createElement("div",{className:i()("blockspare-container-background","blockspare-image-wrap",(C=r,0===C?null:"has-background-opacity-"+10*Math.round(C/10)),{"has-background-opacity":0!==r}),style:{backgroundImage:E}}),u&&wp.element.createElement("div",{className:i()("blockspare-top-separator",h?"blockspare-svg-show-front":""),style:x},wp.element.createElement("div",{className:S,style:{color:m||"#3c1a5b",height:p}},wp.element.createElement(Za,{design:d,shadow:!1,className:"blockspare-svg-svg-inner"}))),wp.element.createElement("div",{className:"blockspare-container"},wp.element.createElement("div",{className:"blockspare-inner-blocks"},wp.element.createElement(fr,{templateLock:!1,renderAppender:()=>this.props.hasInnerBlocks?wp.element.createElement(fr.DefaultBlockAppender,null):wp.element.createElement(fr.ButtonBlockAppender,null)})))));var C}},save:function(e){const t=e.attributes,n=t.className,a=t.align,r=t.opacityRatio,o=t.imgURL,s=t.backgroundFix,l=t.verticalFlip,c=t.horizontalFlip,u=t.separatorEnable,d=t.design,p=t.height,m=t.color,f=t.width,h=t.showFront,b=t.zindexDivider,g=t.dividerPosition,y=t.topDividerMargin,_=t.bottomDividerMargin,k=t.borderRadius,w=t.enableGap,v=br({},Da(e.attributes),{},Yt(e.attributes),{minHeight:"100px"},jt(e.attributes),{borderRadius:k||null});let M="";u&&(M="has-separator-top"===g?{top:y+"px",zIndex:h?b:""}:"has-separator-bottom"===g?{bottom:_+"px",zIndex:h?b:""}:"");let L="";o&&(L="url("+o+")");let T=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(f),n,{"is-vertically-flipped":l,"is-horizontally-flipped":c});return wp.element.createElement("div",{className:i()("blockspare-block-container-wrapper",w?"has-gap-enable":"","align"+a,o&&o.length&&s?"blockspare-background-fix":"",u?g:""),style:v},wp.element.createElement("div",{className:i()("blockspare-container-background","blockspare-image-wrap",(E=r,0===E?null:"has-background-opacity-"+10*Math.round(E/10)),{"has-background-opacity":0!==r}),style:{backgroundImage:L}}),u&&wp.element.createElement("div",{className:i()("blockspare-top-separator",w?"has-gap-enable":"",h?"blockspare-svg-show-front":""),style:M},wp.element.createElement("div",{className:T,style:{color:m||"#3c1a5b",height:p}},wp.element.createElement(Za,{design:d,shadow:!1,className:"blockspare-svg-svg-inner"}))),wp.element.createElement("div",{className:"blockspare-container"},wp.element.createElement("div",{className:"blockspare-inner-blocks blockspare-inner-wrapper-blocks"},wp.element.createElement(yr.Content,null))));var E},transforms:{from:[{type:"block",isMultiBlock:!0,blocks:["*"],__experimentalConvert(e){if(1===e.length&&"blockspare/blockspare-container"===e[0].name)return;const t=["wide","full"],n=e.reduce((e,n)=>{const a=n.attributes.align;return t.indexOf(a)>t.indexOf(e)?a:e},void 0),a=e.map(e=>vr(e.name,e.attributes,e.innerBlocks));return vr("blockspare/blockspare-container",{align:n},a)}}]}});var Er=n(43),Sr=(n(440),n(441),n(442),["fas fa-ad","fas fa-address-book","fas fa-address-card","fas fa-adjust","fas fa-air-freshener","fas fa-align-center","fas fa-align-justify","fas fa-align-left","fas fa-align-right","fas fa-allergies","fas fa-ambulance","fas fa-american-sign-language-interpreting","fas fa-anchor","fas fa-angle-double-down","fas fa-angle-double-left","fas fa-angle-double-right","fas fa-angle-double-up","fas fa-angle-down","fas fa-angle-left","fas fa-angle-right","fas fa-angle-up","fas fa-angry","fas fa-ankh","fas fa-apple-alt","fas fa-archive","fas fa-archway","fas fa-arrow-alt-circle-down","fas fa-arrow-alt-circle-left","fas fa-arrow-alt-circle-right","fas fa-arrow-alt-circle-up","fas fa-arrow-circle-down","fas fa-arrow-circle-left","fas fa-arrow-circle-right","fas fa-arrow-circle-up","fas fa-arrow-down","fas fa-arrow-left","fas fa-arrow-right","fas fa-arrow-up","fas fa-arrows-alt","fas fa-arrows-alt-h","fas fa-arrows-alt-v","fas fa-assistive-listening-systems","fas fa-asterisk","fas fa-at","fas fa-atlas","fas fa-atom","fas fa-audio-description","fas fa-award","fas fa-baby","fas fa-baby-carriage","fas fa-backspace","fas fa-backward","fas fa-balance-scale","fas fa-ban","fas fa-band-aid","fas fa-barcode","fas fa-bars","fas fa-baseball-ball","fas fa-basketball-ball","fas fa-bath","fas fa-battery-empty","fas fa-battery-full","fas fa-battery-half","fas fa-battery-quarter","fas fa-battery-three-quarters","fas fa-bed","fas fa-beer","fas fa-bell","fas fa-bell-slash","fas fa-bezier-curve","fas fa-bible","fas fa-bicycle","fas fa-binoculars","fas fa-biohazard","fas fa-birthday-cake","fas fa-blender","fas fa-blender-phone","fas fa-blind","fas fa-blog","fas fa-bold","fas fa-bolt","fas fa-bomb","fas fa-bone","fas fa-bong","fas fa-book","fas fa-book-dead","fas fa-book-open","fas fa-book-reader","fas fa-bookmark","fas fa-bowling-ball","fas fa-box","fas fa-box-open","fas fa-boxes","fas fa-braille","fas fa-brain","fas fa-briefcase","fas fa-briefcase-medical","fas fa-broadcast-tower","fas fa-broom","fas fa-brush","fas fa-bug","fas fa-building","fas fa-bullhorn","fas fa-bullseye","fas fa-burn","fas fa-bus","fas fa-bus-alt","fas fa-business-time","fas fa-calculator","fas fa-calendar","fas fa-calendar-alt","fas fa-calendar-check","fas fa-calendar-day","fas fa-calendar-minus","fas fa-calendar-plus","fas fa-calendar-times","fas fa-calendar-week","fas fa-camera","fas fa-camera-retro","fas fa-campground","fas fa-candy-cane","fas fa-cannabis","fas fa-capsules","fas fa-car","fas fa-car-alt","fas fa-car-battery","fas fa-car-crash","fas fa-car-side","fas fa-caret-down","fas fa-caret-left","fas fa-caret-right","fas fa-caret-square-down","fas fa-caret-square-left","fas fa-caret-square-right","fas fa-caret-square-up","fas fa-caret-up","fas fa-carrot","fas fa-cart-arrow-down","fas fa-cart-plus","fas fa-cash-register","fas fa-cat","fas fa-certificate","fas fa-chair","fas fa-chalkboard","fas fa-chalkboard-teacher","fas fa-charging-station","fas fa-chart-area","fas fa-chart-bar","fas fa-chart-line","fas fa-chart-pie","fas fa-check","fas fa-check-circle","fas fa-check-double","fas fa-check-square","fas fa-chess","fas fa-chess-bishop","fas fa-chess-board","fas fa-chess-king","fas fa-chess-knight","fas fa-chess-pawn","fas fa-chess-queen","fas fa-chess-rook","fas fa-chevron-circle-down","fas fa-chevron-circle-left","fas fa-chevron-circle-right","fas fa-chevron-circle-up","fas fa-chevron-down","fas fa-chevron-left","fas fa-chevron-right","fas fa-chevron-up","fas fa-child","fas fa-church","fas fa-circle","fas fa-circle-notch","fas fa-city","fas fa-clipboard","fas fa-clipboard-check","fas fa-clipboard-list","fas fa-clock","fas fa-clone","fas fa-closed-captioning","fas fa-cloud","fas fa-cloud-download-alt","fas fa-cloud-meatball","fas fa-cloud-moon","fas fa-cloud-moon-rain","fas fa-cloud-rain","fas fa-cloud-showers-heavy","fas fa-cloud-sun","fas fa-cloud-sun-rain","fas fa-cloud-upload-alt","fas fa-cocktail","fas fa-code","fas fa-code-branch","fas fa-coffee","fas fa-cog","fas fa-cogs","fas fa-coins","fas fa-columns","fas fa-comment","fas fa-comment-alt","fas fa-comment-dollar","fas fa-comment-dots","fas fa-comment-slash","fas fa-comments","fas fa-comments-dollar","fas fa-compact-disc","fas fa-compass","fas fa-compress","fas fa-compress-arrows-alt","fas fa-concierge-bell","fas fa-cookie","fas fa-cookie-bite","fas fa-copy","fas fa-copyright","fas fa-couch","fas fa-credit-card","fas fa-crop","fas fa-crop-alt","fas fa-cross","fas fa-crosshairs","fas fa-crow","fas fa-crown","fas fa-cube","fas fa-cubes","fas fa-cut","fas fa-database","fas fa-deaf","fas fa-democrat","fas fa-desktop","fas fa-dharmachakra","fas fa-diagnoses","fas fa-dice","fas fa-dice-d20","fas fa-dice-d6","fas fa-dice-five","fas fa-dice-four","fas fa-dice-one","fas fa-dice-six","fas fa-dice-three","fas fa-dice-two","fas fa-digital-tachograph","fas fa-directions","fas fa-divide","fas fa-dizzy","fas fa-dna","fas fa-dog","fas fa-dollar-sign","fas fa-dolly","fas fa-dolly-flatbed","fas fa-donate","fas fa-door-closed","fas fa-door-open","fas fa-dot-circle","fas fa-dove","fas fa-download","fas fa-drafting-compass","fas fa-dragon","fas fa-draw-polygon","fas fa-drum","fas fa-drum-steelpan","fas fa-drumstick-bite","fas fa-dumbbell","fas fa-dumpster","fas fa-dumpster-fire","fas fa-dungeon","fas fa-edit","fas fa-eject","fas fa-ellipsis-h","fas fa-ellipsis-v","fas fa-envelope","fas fa-envelope-open","fas fa-envelope-open-text","fas fa-envelope-square","fas fa-equals","fas fa-eraser","fas fa-ethernet","fas fa-euro-sign","fas fa-exchange-alt","fas fa-exclamation","fas fa-exclamation-circle","fas fa-exclamation-triangle","fas fa-expand","fas fa-expand-arrows-alt","fas fa-external-link-alt","fas fa-external-link-square-alt","fas fa-eye","fas fa-eye-dropper","fas fa-eye-slash","fas fa-fast-backward","fas fa-fast-forward","fas fa-fax","fas fa-feather","fas fa-feather-alt","fas fa-female","fas fa-fighter-jet","fas fa-file","fas fa-file-alt","fas fa-file-archive","fas fa-file-audio","fas fa-file-code","fas fa-file-contract","fas fa-file-csv","fas fa-file-download","fas fa-file-excel","fas fa-file-export","fas fa-file-image","fas fa-file-import","fas fa-file-invoice","fas fa-file-invoice-dollar","fas fa-file-medical","fas fa-file-medical-alt","fas fa-file-pdf","fas fa-file-powerpoint","fas fa-file-prescription","fas fa-file-signature","fas fa-file-upload","fas fa-file-video","fas fa-file-word","fas fa-fill","fas fa-fill-drip","fas fa-film","fas fa-filter","fas fa-fingerprint","fas fa-fire","fas fa-fire-alt","fas fa-fire-extinguisher","fas fa-first-aid","fas fa-fish","fas fa-fist-raised","fas fa-flag","fas fa-flag-checkered","fas fa-flag-usa","fas fa-flask","fas fa-flushed","fas fa-folder","fas fa-folder-minus","fas fa-folder-open","fas fa-folder-plus","fas fa-font","fas fa-football-ball","fas fa-forward","fas fa-frog","fas fa-frown","fas fa-frown-open","fas fa-funnel-dollar","fas fa-futbol","fas fa-gamepad","fas fa-gas-pump","fas fa-gavel","fas fa-gem","fas fa-genderless","fas fa-ghost","fas fa-gift","fas fa-gifts","fas fa-glass-cheers","fas fa-glass-martini","fas fa-glass-martini-alt","fas fa-glass-whiskey","fas fa-glasses","fas fa-globe","fas fa-globe-africa","fas fa-globe-americas","fas fa-globe-asia","fas fa-globe-europe","fas fa-golf-ball","fas fa-gopuram","fas fa-graduation-cap","fas fa-greater-than","fas fa-greater-than-equal","fas fa-grimace","fas fa-grin","fas fa-grin-alt","fas fa-grin-beam","fas fa-grin-beam-sweat","fas fa-grin-hearts","fas fa-grin-squint","fas fa-grin-squint-tears","fas fa-grin-stars","fas fa-grin-tears","fas fa-grin-tongue","fas fa-grin-tongue-squint","fas fa-grin-tongue-wink","fas fa-grin-wink","fas fa-grip-horizontal","fas fa-grip-lines","fas fa-grip-lines-vertical","fas fa-grip-vertical","fas fa-guitar","fas fa-h-square","fas fa-hammer","fas fa-hamsa","fas fa-hand-holding","fas fa-hand-holding-heart","fas fa-hand-holding-usd","fas fa-hand-lizard","fas fa-hand-paper","fas fa-hand-peace","fas fa-hand-point-down","fas fa-hand-point-left","fas fa-hand-point-right","fas fa-hand-point-up","fas fa-hand-pointer","fas fa-hand-rock","fas fa-hand-scissors","fas fa-hand-spock","fas fa-hands","fas fa-hands-helping","fas fa-handshake","fas fa-hanukiah","fas fa-hashtag","fas fa-hat-wizard","fas fa-haykal","fas fa-hdd","fas fa-heading","fas fa-headphones","fas fa-headphones-alt","fas fa-headset","fas fa-heart","fas fa-heart-broken","fas fa-heartbeat","fas fa-helicopter","fas fa-highlighter","fas fa-hiking","fas fa-hippo","fas fa-history","fas fa-hockey-puck","fas fa-holly-berry","fas fa-home","fas fa-horse","fas fa-horse-head","fas fa-hospital","fas fa-hospital-alt","fas fa-hospital-symbol","fas fa-hot-tub","fas fa-hotel","fas fa-hourglass","fas fa-hourglass-end","fas fa-hourglass-half","fas fa-hourglass-start","fas fa-house-damage","fas fa-hryvnia","fas fa-i-cursor","fas fa-icicles","fas fa-id-badge","fas fa-id-card","fas fa-id-card-alt","fas fa-igloo","fas fa-image","fas fa-images","fas fa-inbox","fas fa-indent","fas fa-industry","fas fa-infinity","fas fa-info","fas fa-info-circle","fas fa-italic","fas fa-jedi","fas fa-joint","fas fa-journal-whills","fas fa-kaaba","fas fa-key","fas fa-keyboard","fas fa-khanda","fas fa-kiss","fas fa-kiss-beam","fas fa-kiss-wink-heart","fas fa-kiwi-bird","fas fa-landmark","fas fa-language","fas fa-laptop","fas fa-laptop-code","fas fa-laugh","fas fa-laugh-beam","fas fa-laugh-squint","fas fa-laugh-wink","fas fa-layer-group","fas fa-leaf","fas fa-lemon","fas fa-less-than","fas fa-less-than-equal","fas fa-level-down-alt","fas fa-level-up-alt","fas fa-life-ring","fas fa-lightbulb","fas fa-link","fas fa-lira-sign","fas fa-list","fas fa-list-alt","fas fa-list-ol","fas fa-list-ul","fas fa-location-arrow","fas fa-lock","fas fa-lock-open","fas fa-long-arrow-alt-down","fas fa-long-arrow-alt-left","fas fa-long-arrow-alt-right","fas fa-long-arrow-alt-up","fas fa-low-vision","fas fa-luggage-cart","fas fa-magic","fas fa-magnet","fas fa-mail-bulk","fas fa-male","fas fa-map","fas fa-map-marked","fas fa-map-marked-alt","fas fa-map-marker","fas fa-map-marker-alt","fas fa-map-pin","fas fa-map-signs","fas fa-marker","fas fa-mars","fas fa-mars-double","fas fa-mars-stroke","fas fa-mars-stroke-h","fas fa-mars-stroke-v","fas fa-mask","fas fa-medal","fas fa-medkit","fas fa-meh","fas fa-meh-blank","fas fa-meh-rolling-eyes","fas fa-memory","fas fa-menorah","fas fa-mercury","fas fa-meteor","fas fa-microchip","fas fa-microphone","fas fa-microphone-alt","fas fa-microphone-alt-slash","fas fa-microphone-slash","fas fa-microscope","fas fa-minus","fas fa-minus-circle","fas fa-minus-square","fas fa-mitten","fas fa-mobile","fas fa-mobile-alt","fas fa-money-bill","fas fa-money-bill-alt","fas fa-money-bill-wave","fas fa-money-bill-wave-alt","fas fa-money-check","fas fa-money-check-alt","fas fa-monument","fas fa-moon","fas fa-mortar-pestle","fas fa-mosque","fas fa-motorcycle","fas fa-mountain","fas fa-mouse-pointer","fas fa-mug-hot","fas fa-music","fas fa-network-wired","fas fa-neuter","fas fa-newspaper","fas fa-not-equal","fas fa-notes-medical","fas fa-object-group","fas fa-object-ungroup","fas fa-oil-can","fas fa-om","fas fa-otter","fas fa-outdent","fas fa-paint-brush","fas fa-paint-roller","fas fa-palette","fas fa-pallet","fas fa-paper-plane","fas fa-paperclip","fas fa-parachute-box","fas fa-paragraph","fas fa-parking","fas fa-passport","fas fa-pastafarianism","fas fa-paste","fas fa-pause","fas fa-pause-circle","fas fa-paw","fas fa-peace","fas fa-pen","fas fa-pen-alt","fas fa-pen-fancy","fas fa-pen-nib","fas fa-pen-square","fas fa-pencil-alt","fas fa-pencil-ruler","fas fa-people-carry","fas fa-percent","fas fa-percentage","fas fa-person-booth","fas fa-phone","fas fa-phone-slash","fas fa-phone-square","fas fa-phone-volume","fas fa-piggy-bank","fas fa-pills","fas fa-place-of-worship","fas fa-plane","fas fa-plane-arrival","fas fa-plane-departure","fas fa-play","fas fa-play-circle","fas fa-plug","fas fa-plus","fas fa-plus-circle","fas fa-plus-square","fas fa-podcast","fas fa-poll","fas fa-poll-h","fas fa-poo","fas fa-poo-storm","fas fa-poop","fas fa-portrait","fas fa-pound-sign","fas fa-power-off","fas fa-pray","fas fa-praying-hands","fas fa-prescription","fas fa-prescription-bottle","fas fa-prescription-bottle-alt","fas fa-print","fas fa-procedures","fas fa-project-diagram","fas fa-puzzle-piece","fas fa-qrcode","fas fa-question","fas fa-question-circle","fas fa-quidditch","fas fa-quote-left","fas fa-quote-right","fas fa-quran","fas fa-radiation","fas fa-radiation-alt","fas fa-rainbow","fas fa-random","fas fa-receipt","fas fa-recycle","fas fa-redo","fas fa-redo-alt","fas fa-registered","fas fa-reply","fas fa-reply-all","fas fa-republican","fas fa-restroom","fas fa-retweet","fas fa-ribbon","fas fa-ring","fas fa-road","fas fa-robot","fas fa-rocket","fas fa-route","fas fa-rss","fas fa-rss-square","fas fa-ruble-sign","fas fa-ruler","fas fa-ruler-combined","fas fa-ruler-horizontal","fas fa-ruler-vertical","fas fa-running","fas fa-rupee-sign","fas fa-sad-cry","fas fa-sad-tear","fas fa-satellite","fas fa-satellite-dish","fas fa-save","fas fa-school","fas fa-screwdriver","fas fa-scroll","fas fa-sd-card","fas fa-search","fas fa-search-dollar","fas fa-search-location","fas fa-search-minus","fas fa-search-plus","fas fa-seedling","fas fa-server","fas fa-shapes","fas fa-share","fas fa-share-alt","fas fa-share-alt-square","fas fa-share-square","fas fa-shekel-sign","fas fa-shield-alt","fas fa-ship","fas fa-shipping-fast","fas fa-shoe-prints","fas fa-shopping-bag","fas fa-shopping-basket","fas fa-shopping-cart","fas fa-shower","fas fa-shuttle-van","fas fa-sign","fas fa-sign-in-alt","fas fa-sign-language","fas fa-sign-out-alt","fas fa-signal","fas fa-signature","fas fa-sim-card","fas fa-sitemap","fas fa-skating","fas fa-skiing","fas fa-skiing-nordic","fas fa-skull","fas fa-skull-crossbones","fas fa-slash","fas fa-sleigh","fas fa-sliders-h","fas fa-smile","fas fa-smile-beam","fas fa-smile-wink","fas fa-smog","fas fa-smoking","fas fa-smoking-ban","fas fa-sms","fas fa-snowboarding","fas fa-snowflake","fas fa-snowman","fas fa-snowplow","fas fa-socks","fas fa-solar-panel","fas fa-sort","fas fa-sort-alpha-down","fas fa-sort-alpha-up","fas fa-sort-amount-down","fas fa-sort-amount-up","fas fa-sort-down","fas fa-sort-numeric-down","fas fa-sort-numeric-up","fas fa-sort-up","fas fa-spa","fas fa-space-shuttle","fas fa-spider","fas fa-spinner","fas fa-splotch","fas fa-spray-can","fas fa-square","fas fa-square-full","fas fa-square-root-alt","fas fa-stamp","fas fa-star","fas fa-star-and-crescent","fas fa-star-half","fas fa-star-half-alt","fas fa-star-of-david","fas fa-star-of-life","fas fa-step-backward","fas fa-step-forward","fas fa-stethoscope","fas fa-sticky-note","fas fa-stop","fas fa-stop-circle","fas fa-stopwatch","fas fa-store","fas fa-store-alt","fas fa-stream","fas fa-street-view","fas fa-strikethrough","fas fa-stroopwafel","fas fa-subscript","fas fa-subway","fas fa-suitcase","fas fa-suitcase-rolling","fas fa-sun","fas fa-superscript","fas fa-surprise","fas fa-swatchbook","fas fa-swimmer","fas fa-swimming-pool","fas fa-synagogue","fas fa-sync","fas fa-sync-alt","fas fa-syringe","fas fa-table","fas fa-table-tennis","fas fa-tablet","fas fa-tablet-alt","fas fa-tablets","fas fa-tachometer-alt","fas fa-tag","fas fa-tags","fas fa-tape","fas fa-tasks","fas fa-taxi","fas fa-teeth","fas fa-teeth-open","fas fa-temperature-high","fas fa-temperature-low","fas fa-tenge","fas fa-terminal","fas fa-text-height","fas fa-text-width","fas fa-th","fas fa-th-large","fas fa-th-list","fas fa-theater-masks","fas fa-thermometer","fas fa-thermometer-empty","fas fa-thermometer-full","fas fa-thermometer-half","fas fa-thermometer-quarter","fas fa-thermometer-three-quarters","fas fa-thumbs-down","fas fa-thumbs-up","fas fa-thumbtack","fas fa-ticket-alt","fas fa-times","fas fa-times-circle","fas fa-tint","fas fa-tint-slash","fas fa-tired","fas fa-toggle-off","fas fa-toggle-on","fas fa-toilet","fas fa-toilet-paper","fas fa-toolbox","fas fa-tools","fas fa-tooth","fas fa-torah","fas fa-torii-gate","fas fa-tractor","fas fa-trademark","fas fa-traffic-light","fas fa-train","fas fa-tram","fas fa-transgender","fas fa-transgender-alt","fas fa-trash","fas fa-trash-alt","fas fa-tree","fas fa-trophy","fas fa-truck","fas fa-truck-loading","fas fa-truck-monster","fas fa-truck-moving","fas fa-truck-pickup","fas fa-tshirt","fas fa-tty","fas fa-tv","fas fa-umbrella","fas fa-umbrella-beach","fas fa-underline","fas fa-undo","fas fa-undo-alt","fas fa-universal-access","fas fa-university","fas fa-unlink","fas fa-unlock","fas fa-unlock-alt","fas fa-upload","fas fa-user","fas fa-user-alt","fas fa-user-alt-slash","fas fa-user-astronaut","fas fa-user-check","fas fa-user-circle","fas fa-user-clock","fas fa-user-cog","fas fa-user-edit","fas fa-user-friends","fas fa-user-graduate","fas fa-user-injured","fas fa-user-lock","fas fa-user-md","fas fa-user-minus","fas fa-user-ninja","fas fa-user-plus","fas fa-user-secret","fas fa-user-shield","fas fa-user-slash","fas fa-user-tag","fas fa-user-tie","fas fa-user-times","fas fa-users","fas fa-users-cog","fas fa-utensil-spoon","fas fa-utensils","fas fa-vector-square","fas fa-venus","fas fa-venus-double","fas fa-venus-mars","fas fa-vial","fas fa-vials","fas fa-video","fas fa-video-slash","fas fa-vihara","fas fa-volleyball-ball","fas fa-volume-down","fas fa-volume-mute","fas fa-volume-off","fas fa-volume-up","fas fa-vote-yea","fas fa-vr-cardboard","fas fa-walking","fas fa-wallet","fas fa-warehouse","fas fa-water","fas fa-weight","fas fa-weight-hanging","fas fa-wheelchair","fas fa-wifi","fas fa-wind","fas fa-window-close","fas fa-window-maximize","fas fa-window-minimize","fas fa-window-restore","fas fa-wine-bottle","fas fa-wine-glass","fas fa-wine-glass-alt","fas fa-won-sign","fas fa-wrench","fas fa-x-ray","fas fa-yen-sign","fas fa-yin-yang","far fa-address-book","far fa-address-card","far fa-angry","far fa-arrow-alt-circle-down","far fa-arrow-alt-circle-left","far fa-arrow-alt-circle-right","far fa-arrow-alt-circle-up","far fa-bell","far fa-bell-slash","far fa-bookmark","far fa-building","far fa-calendar","far fa-calendar-alt","far fa-calendar-check","far fa-calendar-minus","far fa-calendar-plus","far fa-calendar-times","far fa-caret-square-down","far fa-caret-square-left","far fa-caret-square-right","far fa-caret-square-up","far fa-chart-bar","far fa-check-circle","far fa-check-square","far fa-circle","far fa-clipboard","far fa-clock","far fa-clone","far fa-closed-captioning","far fa-comment","far fa-comment-alt","far fa-comment-dots","far fa-comments","far fa-compass","far fa-copy","far fa-copyright","far fa-credit-card","far fa-dizzy","far fa-dot-circle","far fa-edit","far fa-envelope","far fa-envelope-open","far fa-eye","far fa-eye-slash","far fa-file","far fa-file-alt","far fa-file-archive","far fa-file-audio","far fa-file-code","far fa-file-excel","far fa-file-image","far fa-file-pdf","far fa-file-powerpoint","far fa-file-video","far fa-file-word","far fa-flag","far fa-flushed","far fa-folder","far fa-folder-open","far fa-frown","far fa-frown-open","far fa-futbol","far fa-gem","far fa-grimace","far fa-grin","far fa-grin-alt","far fa-grin-beam","far fa-grin-beam-sweat","far fa-grin-hearts","far fa-grin-squint","far fa-grin-squint-tears","far fa-grin-stars","far fa-grin-tears","far fa-grin-tongue","far fa-grin-tongue-squint","far fa-grin-tongue-wink","far fa-grin-wink","far fa-hand-lizard","far fa-hand-paper","far fa-hand-peace","far fa-hand-point-down","far fa-hand-point-left","far fa-hand-point-right","far fa-hand-point-up","far fa-hand-pointer","far fa-hand-rock","far fa-hand-scissors","far fa-hand-spock","far fa-handshake","far fa-hdd","far fa-heart","far fa-hospital","far fa-hourglass","far fa-id-badge","far fa-id-card","far fa-image","far fa-images","far fa-keyboard","far fa-kiss","far fa-kiss-beam","far fa-kiss-wink-heart","far fa-laugh","far fa-laugh-beam","far fa-laugh-squint","far fa-laugh-wink","far fa-lemon","far fa-life-ring","far fa-lightbulb","far fa-list-alt","far fa-map","far fa-meh","far fa-meh-blank","far fa-meh-rolling-eyes","far fa-minus-square","far fa-money-bill-alt","far fa-moon","far fa-newspaper","far fa-object-group","far fa-object-ungroup","far fa-paper-plane","far fa-pause-circle","far fa-play-circle","far fa-plus-square","far fa-question-circle","far fa-registered","far fa-sad-cry","far fa-sad-tear","far fa-save","far fa-share-square","far fa-smile","far fa-smile-beam","far fa-smile-wink","far fa-snowflake","far fa-square","far fa-star","far fa-star-half","far fa-sticky-note","far fa-stop-circle","far fa-sun","far fa-surprise","far fa-thumbs-down","far fa-thumbs-up","far fa-times-circle","far fa-tired","far fa-trash-alt","far fa-user","far fa-user-circle","far fa-window-close","far fa-window-maximize","far fa-window-minimize","far fa-window-restore","fab fa-500px","fab fa-accessible-icon","fab fa-accusoft","fab fa-acquisitions-incorporated","fab fa-adn","fab fa-adobe","fab fa-adversal","fab fa-affiliatetheme","fab fa-algolia","fab fa-alipay","fab fa-amazon","fab fa-amazon-pay","fab fa-amilia","fab fa-android","fab fa-angellist","fab fa-angrycreative","fab fa-angular","fab fa-app-store","fab fa-app-store-ios","fab fa-apper","fab fa-apple","fab fa-apple-pay","fab fa-artstation","fab fa-asymmetrik","fab fa-atlassian","fab fa-audible","fab fa-autoprefixer","fab fa-avianex","fab fa-aviato","fab fa-aws","fab fa-bandcamp","fab fa-behance","fab fa-behance-square","fab fa-bimobject","fab fa-bitbucket","fab fa-bitcoin","fab fa-bity","fab fa-black-tie","fab fa-blackberry","fab fa-blogger","fab fa-blogger-b","fab fa-bluetooth","fab fa-bluetooth-b","fab fa-btc","fab fa-buromobelexperte","fab fa-buysellads","fab fa-canadian-maple-leaf","fab fa-cc-amazon-pay","fab fa-cc-amex","fab fa-cc-apple-pay","fab fa-cc-diners-club","fab fa-cc-discover","fab fa-cc-jcb","fab fa-cc-mastercard","fab fa-cc-paypal","fab fa-cc-stripe","fab fa-cc-visa","fab fa-centercode","fab fa-centos","fab fa-chrome","fab fa-cloudscale","fab fa-cloudsmith","fab fa-cloudversify","fab fa-codepen","fab fa-codiepie","fab fa-confluence","fab fa-connectdevelop","fab fa-contao","fab fa-cpanel","fab fa-creative-commons","fab fa-creative-commons-by","fab fa-creative-commons-nc","fab fa-creative-commons-nc-eu","fab fa-creative-commons-nc-jp","fab fa-creative-commons-nd","fab fa-creative-commons-pd","fab fa-creative-commons-pd-alt","fab fa-creative-commons-remix","fab fa-creative-commons-sa","fab fa-creative-commons-sampling","fab fa-creative-commons-sampling-plus","fab fa-creative-commons-share","fab fa-creative-commons-zero","fab fa-critical-role","fab fa-css3","fab fa-css3-alt","fab fa-cuttlefish","fab fa-d-and-d","fab fa-d-and-d-beyond","fab fa-dashcube","fab fa-delicious","fab fa-deploydog","fab fa-deskpro","fab fa-dev","fab fa-deviantart","fab fa-dhl","fab fa-diaspora","fab fa-digg","fab fa-digital-ocean","fab fa-discord","fab fa-discourse","fab fa-dochub","fab fa-docker","fab fa-draft2digital","fab fa-dribbble","fab fa-dribbble-square","fab fa-dropbox","fab fa-drupal","fab fa-dyalog","fab fa-earlybirds","fab fa-ebay","fab fa-edge","fab fa-elementor","fab fa-ello","fab fa-ember","fab fa-empire","fab fa-envira","fab fa-erlang","fab fa-ethereum","fab fa-etsy","fab fa-expeditedssl","fab fa-facebook","fab fa-facebook-f","fab fa-facebook-messenger","fab fa-facebook-square","fab fa-fantasy-flight-games","fab fa-fedex","fab fa-fedora","fab fa-figma","fab fa-firefox","fab fa-first-order","fab fa-first-order-alt","fab fa-firstdraft","fab fa-flickr","fab fa-flipboard","fab fa-fly","fab fa-font-awesome","fab fa-font-awesome-alt","fab fa-font-awesome-flag","fab fa-fonticons","fab fa-fonticons-fi","fab fa-fort-awesome","fab fa-fort-awesome-alt","fab fa-forumbee","fab fa-foursquare","fab fa-free-code-camp","fab fa-freebsd","fab fa-fulcrum","fab fa-galactic-republic","fab fa-galactic-senate","fab fa-get-pocket","fab fa-gg","fab fa-gg-circle","fab fa-git","fab fa-git-square","fab fa-github","fab fa-github-alt","fab fa-github-square","fab fa-gitkraken","fab fa-gitlab","fab fa-gitter","fab fa-glide","fab fa-glide-g","fab fa-gofore","fab fa-goodreads","fab fa-goodreads-g","fab fa-google","fab fa-google-drive","fab fa-google-play","fab fa-google-plus","fab fa-google-plus-g","fab fa-google-plus-square","fab fa-google-wallet","fab fa-gratipay","fab fa-grav","fab fa-gripfire","fab fa-grunt","fab fa-gulp","fab fa-hacker-news","fab fa-hacker-news-square","fab fa-hackerrank","fab fa-hips","fab fa-hire-a-helper","fab fa-hooli","fab fa-hornbill","fab fa-hotjar","fab fa-houzz","fab fa-html5","fab fa-hubspot","fab fa-imdb","fab fa-instagram","fab fa-intercom","fab fa-internet-explorer","fab fa-invision","fab fa-ioxhost","fab fa-itunes","fab fa-itunes-note","fab fa-java","fab fa-jedi-order","fab fa-jenkins","fab fa-jira","fab fa-joget","fab fa-joomla","fab fa-js","fab fa-js-square","fab fa-jsfiddle","fab fa-kaggle","fab fa-keybase","fab fa-keycdn","fab fa-kickstarter","fab fa-kickstarter-k","fab fa-korvue","fab fa-laravel","fab fa-lastfm","fab fa-lastfm-square","fab fa-leanpub","fab fa-less","fab fa-line","fab fa-linkedin","fab fa-linkedin-in","fab fa-linode","fab fa-linux","fab fa-lyft","fab fa-magento","fab fa-mailchimp","fab fa-mandalorian","fab fa-markdown","fab fa-mastodon","fab fa-maxcdn","fab fa-medapps","fab fa-medium","fab fa-medium-m","fab fa-medrt","fab fa-meetup","fab fa-megaport","fab fa-mendeley","fab fa-microsoft","fab fa-mix","fab fa-mixcloud","fab fa-mizuni","fab fa-modx","fab fa-monero","fab fa-napster","fab fa-neos","fab fa-nimblr","fab fa-nintendo-switch","fab fa-node","fab fa-node-js","fab fa-npm","fab fa-ns8","fab fa-nutritionix","fab fa-odnoklassniki","fab fa-odnoklassniki-square","fab fa-old-republic","fab fa-opencart","fab fa-openid","fab fa-opera","fab fa-optin-monster","fab fa-osi","fab fa-page4","fab fa-pagelines","fab fa-palfed","fab fa-patreon","fab fa-paypal","fab fa-penny-arcade","fab fa-periscope","fab fa-phabricator","fab fa-phoenix-framework","fab fa-phoenix-squadron","fab fa-php","fab fa-pied-piper","fab fa-pied-piper-alt","fab fa-pied-piper-hat","fab fa-pied-piper-pp","fab fa-pinterest","fab fa-pinterest-p","fab fa-pinterest-square","fab fa-playstation","fab fa-product-hunt","fab fa-pushed","fab fa-python","fab fa-qq","fab fa-quinscape","fab fa-quora","fab fa-r-project","fab fa-raspberry-pi","fab fa-ravelry","fab fa-react","fab fa-reacteurope","fab fa-readme","fab fa-rebel","fab fa-red-river","fab fa-reddit","fab fa-reddit-alien","fab fa-reddit-square","fab fa-redhat","fab fa-renren","fab fa-replyd","fab fa-researchgate","fab fa-resolving","fab fa-rev","fab fa-rocketchat","fab fa-rockrms","fab fa-safari","fab fa-sass","fab fa-schlix","fab fa-scribd","fab fa-searchengin","fab fa-sellcast","fab fa-sellsy","fab fa-servicestack","fab fa-shirtsinbulk","fab fa-shopware","fab fa-simplybuilt","fab fa-sistrix","fab fa-sith","fab fa-sketch","fab fa-skyatlas","fab fa-skype","fab fa-slack","fab fa-slack-hash","fab fa-slideshare","fab fa-snapchat","fab fa-snapchat-ghost","fab fa-snapchat-square","fab fa-soundcloud","fab fa-sourcetree","fab fa-speakap","fab fa-spotify","fab fa-squarespace","fab fa-stack-exchange","fab fa-stack-overflow","fab fa-staylinked","fab fa-steam","fab fa-steam-square","fab fa-steam-symbol","fab fa-sticker-mule","fab fa-strava","fab fa-stripe","fab fa-stripe-s","fab fa-studiovinari","fab fa-stumbleupon","fab fa-stumbleupon-circle","fab fa-superpowers","fab fa-supple","fab fa-suse","fab fa-teamspeak","fab fa-telegram","fab fa-telegram-plane","fab fa-tencent-weibo","fab fa-the-red-yeti","fab fa-themeco","fab fa-themeisle","fab fa-think-peaks","fab fa-trade-federation","fab fa-trello","fab fa-tripadvisor","fab fa-tumblr","fab fa-tumblr-square","fab fa-twitch","fab fa-twitter","fab fa-twitter-square","fab fa-typo3","fab fa-uber","fab fa-ubuntu","fab fa-uikit","fab fa-uniregistry","fab fa-untappd","fab fa-ups","fab fa-usb","fab fa-usps","fab fa-ussunnah","fab fa-vaadin","fab fa-viacoin","fab fa-viadeo","fab fa-viadeo-square","fab fa-viber","fab fa-vimeo","fab fa-vimeo-square","fab fa-vimeo-v","fab fa-vine","fab fa-vk","fab fa-vnv","fab fa-vuejs","fab fa-weebly","fab fa-weibo","fab fa-weixin","fab fa-whatsapp","fab fa-whatsapp-square","fab fa-whmcs","fab fa-wikipedia-w","fab fa-windows","fab fa-wix","fab fa-wizards-of-the-coast","fab fa-wolf-pack-battalion","fab fa-wordpress","fab fa-wordpress-simple","fab fa-wpbeginner","fab fa-wpexplorer","fab fa-wpforms","fab fa-wpressr","fab fa-xbox","fab fa-xing","fab fa-xing-square","fab fa-y-combinator","fab fa-yahoo","fab fa-yandex","fab fa-yandex-international","fab fa-yarn","fab fa-yelp","fab fa-yoast","fab fa-youtube","fab fa-youtube-square","fab fa-zhihu"]);const xr=wp.i18n.__,Cr=wp.element,Dr=Cr.Component,Or=Cr.Fragment;var Yr=class extends Dr{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,a=e.colorSettings,r=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?Sr.forEach(e=>{e.includes(i)&&s.push(e)}):s=Sr,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(Or,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),a&&wp.element.createElement(Color,{label:xr(" Color"),value:r||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const jr=wp.i18n.__,Pr=wp.element.Fragment,Nr=wp.blockEditor,Br=(Nr.InspectorControls,Nr.PanelColorSettings),Ar=wp.components,Hr=(Ar.PanelBody,Ar.SelectControl);Ar.RangeControl;function zr(e){const t=e.name,n=e.onChangeName,a=void 0===n?()=>{}:n,r=e.enableiconSize,o=e.iconSize,i=e.onChangeIconSizeOptions,s=void 0===i?()=>{}:i,l=e.enableiconStyles,c=e.iconStyles,u=e.onChangeIconStyles,d=void 0===u?()=>{}:u,p=e.iconBackgroundColor,m=e.onChangeIconBackgroundColor,f=void 0===m?()=>{}:m,h=(e.iconBorderColor,e.onChangeIconBorderColor,e.iconColor),b=e.OnChangeIconColor,g=void 0===b?()=>{}:b,y=(e.borderRadius,e.onChangeBorderRadius,[{value:"blockspare-icon-size-small",label:jr("Small","blockspare")},{value:"blockspare-icon-size-medium",label:jr("Medium","blockspare")},{value:"blockspare-icon-size-large",label:jr("Large","blockspare")},{value:"blockspare-icon-size-extralarge",label:jr("Extra Large","blockspare")}]),_=[{value:"blockspare-icon-style1",label:jr("None","blockspare")},{value:"blockspare-icon-style2",label:jr("Background","blockspare")},{value:"blockspare-icon-style3",label:jr("Border","blockspare")}];return wp.element.createElement(Pr,null,wp.element.createElement(Yr,{value:t,onChange:a}),0!=r&&wp.element.createElement(Hr,{label:jr("Icon Size","blockspare"),value:o,options:y.map(({value:e,label:t})=>({value:e,label:t})),onChange:s}),0!=l&&wp.element.createElement(Hr,{label:jr("Icon Style","blockspare"),value:c,options:_.map(({value:e,label:t})=>({value:e,label:t})),onChange:d}),wp.element.createElement(Br,{title:jr("Icon Color","blockspare"),initialOpen:!1,colorSettings:[{value:h,onChange:g,label:jr("Icon Color","blockspare")}]}),"blockspare-icon-style2"===c&&wp.element.createElement(Br,{title:jr("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:p,onChange:f,label:jr("Background Color","blockspare")}]}))}const Ir=wp.i18n.__,Fr=wp.element.Component,Rr=wp.blockEditor,Wr=Rr.InspectorControls,Ur=(Rr.PanelColorSettings,wp.components),qr=(Ur.RangeControl,Ur.PanelBody),Gr=Ur.ToggleControl;Ur.SelectControl;class Vr extends Fr{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.backGroundColor,t.showImage),a=(t.counterFontColor,t.paddingTop),r=t.paddingRight,o=t.paddingBottom,i=t.paddingLeft,s=t.marginTop,l=t.marginBottom,c=t.imgIconOption,u=t.name,d=t.iconSize,p=t.iconStyles,m=t.iconBackgroundColor,f=t.iconBorderColor,h=t.iconColor,b=t.borderRadius,g=(t.design,t.titleFontSize),y=t.subtitleFontSize,_=t.headerTagOption,k=t.headertitleColor,w=t.headersubtitleColor,v=t.headerlayoutOption,M=t.titlePaddingTop,L=t.titlePaddingBottom,T=t.subtitlePaddingTop,E=t.subtitlePaddingBottom,S=t.headerboxColor,x=t.dashColor,C=(t.blockBorderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes);Ir("Icon","blockspare"),Ir("Image","blockspare"),Ir("Layout 1","blockspare"),Ir("Layout 2","blockspare");return wp.element.createElement(Wr,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(qr,{title:Ir("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Gr,{label:Ir("Display Icon ","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showImage:!n})})),"icon"==c&&n&&wp.element.createElement(qr,{title:Ir("Icon Settings"),initialOpen:!1},wp.element.createElement(zr,{name:u,onChangeName:e=>C({name:e}),enableiconSize:!1,iconSize:d,onChangeIconSizeOptions:e=>C({iconSize:e}),enableiconStyles:!1,iconStyles:p,onChangeIconStyles:e=>C({iconStyles:e}),iconBackgroundColor:m,onChangeIconBackgroundColor:e=>C({iconBackgroundColor:e}),iconBorderColor:f,onChangeIconBorderColor:e=>C({iconBorderColor:e}),iconColor:h,OnChangeIconColor:e=>C({iconColor:e}),borderRadius:b,onChangeBorderRadius:e=>C({borderRadius:e})})),wp.element.createElement(qr,{title:Ir("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:g,onChangetitleFontSize:e=>C({titleFontSize:e}),subtitleFontSize:y,onChangesubtitleFontSize:e=>C({subtitleFontSize:e}),headerlayoutOption:v,onChangeHeaderStyle:e=>C({headerlayoutOption:e}),headerTagOption:_,onChangeHeaderTag:e=>C({headerTagOption:e}),headerboxColor:S,onChangeboxcolor:e=>C({headerboxColor:e}),dashColor:x,onChangeDashColor:e=>C({dashColor:e}),headertitleColor:k,onChangetitlecolor:e=>C({headertitleColor:e}),titlePaddingTop:M,onChangetitlePaddingTop:e=>C({titlePaddingTop:e}),titlePaddingBottom:L,onChangetitlePaddingBottom:e=>C({titlePaddingBottom:e}),headersubtitleColor:w,onChangesubtitlecolor:e=>C({headersubtitleColor:e}),subtitlePaddingTop:T,onChangesubtitlePaddingTop:e=>C({subtitlePaddingTop:e}),subtitlePaddingBottom:E,onChangesubtitlePaddingBottom:e=>C({subtitlePaddingBottom:e})})),wp.element.createElement(qr,{title:Ir("Block Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(qr,{title:Ir("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:a,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>C({paddingTop:e}),paddingEnableRight:!0,paddingRight:r,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>C({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:o,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>C({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:i,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>C({paddingLeft:e})})),wp.element.createElement(qr,{title:Ir("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:s,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>C({marginTop:e}),marginEnableBottom:!0,marginBottom:l,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>C({marginBottom:e})})))))}}var $r=n(255),Jr=n.n($r);var Xr=e=>{let t="";return t="blockspare-icon-style2"===e.iconStyles?{backgroundColor:e.iconBackgroundColor?e.iconBackgroundColor:"#8b249c",borderColor:e.iconBorderColor?e.iconBorderColor:"#8b249c",color:e.iconColor?e.iconColor:"#fff",borderRadius:e.borderRadius+"%"}:"blockspare-icon-style3"===e.iconStyles?{backgroundColor:"transparent",borderColor:e.iconBorderColor?e.iconBorderColor:"#8b249c",color:e.iconColor?e.iconColor:"#fff",borderRadius:e.borderRadius+"%"}:{color:e.iconColor?e.iconColor:"#fff"},t};function Qr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Kr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qr(Object(n),!0).forEach((function(t){Zr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Zr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const eo=wp.element,to=eo.Component,no=eo.Fragment,ao=wp.i18n.__,ro=wp.components,oo=ro.Toolbar,io=ro.RangeControl,so=wp.blockEditor,lo=so.BlockControls,co=so.RichText,uo=so.InnerBlocks,po=["core/image"],mo=[["core/image",{}]];function fo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function ho(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fo(Object(n),!0).forEach((function(t){bo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function bo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const go=wp.element.Component,yo=wp.blockEditor,_o=yo.RichText,ko=yo.InnerBlocks;function wo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function vo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Mo=wp.i18n.__,Lo=wp.blocks.registerBlockType,To=Er.name,Eo=Er.category,So=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wo(Object(n),!0).forEach((function(t){vo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Wt,{},Ut,{},Er.attributes,{},Jt);Lo(To,{title:Mo("BS Counter","blockspare"),description:Mo("Add counter in you page and post","blockspare`"),Description:"Displays Counter",category:Eo,icon:r.counter,attributes:So,keywords:[Mo("block","blockspare"),Mo("counter","blockspare"),Mo("number","blockspare"),Mo("box","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{counter:100,counterFontColor:"#000",headertitleColor:"#000",backGroundColor:"#fff",headersubtitleColor:"#000",name:"fas fa-chart-line",headerTitle:"Enter Title"}},edit:class extends to{render(){const e=this.props,t=e.attributes,n=t.backGroundColor,a=t.showImage,r=t.counter,o=t.counterFontColor,s=t.imgIconOption,l=t.name,c=t.iconSize,u=t.iconStyles,d=t.design,p=t.headerTagOption,m=t.headerTitle,f=t.headerSubTitle,h=t.blockBorderRadius,b=(e.isSelected,e.attributes),g=e.setAttributes,y=Kr({backgroundColor:n||"#fff"},Yt(b),{},jt(b),{borderRadius:h||null}),_=Kr({},Xr(b)),k=Kr({},Gt(b)),w=Kr({},Vt(b)),v=Kr({},$t(b));return wp.element.createElement(no,null,wp.element.createElement(Vr,Kr({setAttributes:g},this.props)),wp.element.createElement(lo,null,wp.element.createElement(oo,null,wp.element.createElement(io,{className:"blockspare_progress_bar_value",value:r,onChange:e=>g({counter:e}),min:0,max:1e6}))),wp.element.createElement("div",{className:"blockspare-counter-wrapper blockspare-blocks",style:y},wp.element.createElement("div",{className:i()("blockspare-counter-section")},wp.element.createElement("div",{className:i()("blockspare-counters-item",d)},a&&"image"==s&&wp.element.createElement(uo,{template:mo,allowedBlocks:po,templateLock:!0,templateInsertUpdatesSelection:!0}),a&&"icon"==s&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",c,u),style:_},wp.element.createElement("i",{className:l}))),wp.element.createElement("div",{className:"blockspare-counters"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(co,{tagName:p,placeholder:ao("Title","blockspare"),keepPlaceholderOnFocus:!0,value:m,className:"blockspare-title",style:w,onChange:e=>g({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(co,{tagName:"p",placeholder:ao("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:f,className:"blockspare-subtitle",style:v,onChange:e=>g({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})))),wp.element.createElement("p",{className:"blockspare-counter",style:{color:o||"#000"}},wp.element.createElement(Jr.a,{className:"account-balance",start:0,end:r,duration:4.75}))))))}},save:class extends go{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.showImage,a=t.counter,r=t.counterFontColor,o=t.imgIconOption,s=t.name,l=t.iconSize,c=t.iconStyles,u=t.design,d=t.headerTagOption,p=t.headerTitle,m=t.headerSubTitle,f=t.backGroundColor,h=t.blockBorderRadius,b=e.attributes,g=ho({backgroundColor:f||"#fff"},Yt(b),{},jt(b),{borderRadius:h||null}),y=ho({},Xr(b)),_=ho({},Gt(b)),k=ho({},Vt(b)),w=ho({},$t(b));return wp.element.createElement("div",{className:"blockspare-counter-wrapper blockspare-blocks blockspare-section-counter-bar",style:g},wp.element.createElement("div",{className:i()("blockspare-counter-section")},wp.element.createElement("div",{className:i()("blockspare-counters-item",u)},n&&"image"==o&&wp.element.createElement(ko.Content,null),n&&"icon"==o&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",l,c),style:y},wp.element.createElement("i",{className:s}))),wp.element.createElement("div",{className:"blockspare-counters"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),p&&wp.element.createElement(_o.Content,{tagName:d,className:"blockspare-title",style:k,value:p}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),m&&wp.element.createElement(_o.Content,{tagName:"p",className:"blockspare-subtitle",style:w,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_})))),wp.element.createElement("p",{className:"blockspare-counter",style:{color:r||"#000"}},a))))}}});n(443);const xo=wp.i18n.__,Co=wp.element,Do=Co.Component,Oo=(Co.Fragment,wp.blockEditor.InspectorControls),Yo=wp.components.PanelBody;class jo extends Do{render(){const e=this.props.attributes,t=e.name,n=e.iconSize,a=e.iconStyles,r=e.iconBackgroundColor,o=e.iconBorderColor,i=e.iconColor,s=e.borderRadius,l=this.props.setAttributes;return wp.element.createElement(Oo,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Yo,{title:xo("Icon Settings"),initialOpen:!1},wp.element.createElement(zr,{name:t,onChangeName:e=>l({name:e}),enableiconSize:!1,iconSize:n,onChangeIconSizeOptions:e=>l({iconSize:e}),enableiconStyles:!1,iconStyles:a,onChangeIconStyles:e=>l({iconStyles:e}),iconBackgroundColor:r,onChangeIconBackgroundColor:e=>l({iconBackgroundColor:e}),iconBorderColor:o,onChangeIconBorderColor:e=>l({iconBorderColor:e}),iconColor:i,OnChangeIconColor:e=>l({iconColor:e}),borderRadius:s,onChangeBorderRadius:e=>l({borderRadius:e})}))))}}function Po(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function No(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Po(Object(n),!0).forEach((function(t){Bo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Po(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Bo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const Ao=wp.element,Ho=Ao.Component,zo=Ao.Fragment,Io=wp.blockEditor,Fo=Io.AlignmentToolbar,Ro=Io.BlockControls;var Wo=class extends Ho{constructor(){super(...arguments),this.state={device:"md",spacer:!0}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}render(){const e=this.props,t=e.attributes,n=t.name,a=t.iconSize,r=t.iconStyles,o=t.sectionAlignment,s=e.attributes,l=e.setAttributes,c=No({},Xr(s));return wp.element.createElement(zo,null,wp.element.createElement(Ro,{key:"controls"},wp.element.createElement(Fo,{value:o,onChange:e=>{l({sectionAlignment:e})}})),wp.element.createElement(jo,No({setAttributes:l},this.props)),wp.element.createElement("div",{className:"blockspare-blocks"},wp.element.createElement("div",{className:"blockspare-block-icon-wrapper",style:{textAlign:o}},wp.element.createElement("div",{className:i()("blockspare-block-icon",a,r),style:c},wp.element.createElement("i",{className:n})))))}};function Uo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function qo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Go=wp.element.Component;var Vo=class extends Go{render(){const e=this.props.attributes,t=e.name,n=e.iconSize,a=e.iconStyles,r=e.sectionAlignment,o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Uo(Object(n),!0).forEach((function(t){qo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Uo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Xr(this.props.attributes));return wp.element.createElement("div",{className:"blockspare-block"},wp.element.createElement("div",{className:"blockspare-block-icon-wrapper",style:{textAlign:r}},wp.element.createElement("div",{className:i()("blockspare-block-icon",n,a),style:o},wp.element.createElement("i",{className:t}))))}},$o=n(44);const Jo=$o.name,Xo=$o.category,Qo=$o.attributes,Ko=wp.blocks.registerBlockType,Zo=wp.i18n.__;Ko(Jo,{title:Zo("BS Icon","blockspare"),description:Zo("Our Icon block allows you to choose and place various type of icons","blockspare"),category:Xo,icon:r.iconblockspare,keywords:[Zo("block","blockspare"),Zo("icon","blockspare"),Zo("set","blockspare"),Zo("box","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},attributes:Qo,edit:Wo,save:Vo});n(444),n(445);var ei=n(45),ti=n(17),ni=n.n(ti),ai=n(18),ri=n.n(ai),oi=n(19),ii=n.n(oi);const si=wp.i18n.__,li=wp.element.Component,ci=wp.blockEditor,ui=ci.InspectorControls,di=ci.PanelColorSettings,pi=wp.components,mi=pi.PanelBody,fi=pi.SelectControl,hi=pi.ToggleControl,bi=(pi.TextControl,pi.RangeControl);class gi extends li{imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ri()(ii()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.numberofSlide,a=(t.carouselSpeed,t.showsliderNextPrev),r=(t.carouselNextIcon,t.showDots),o=t.navigationColor,i=t.gutterSpace,s=(t.colorFilter,t.showOriginalOnHover,t.navigationSize),l=t.enableAutoPlay,c=(e.attributes,e.setAttributes),u={value:"selectimage",label:si("Select image size")};this.imageSizeSelect().unshift(u);si("Chevron","blockspare"),si("Angle","blockspare"),si("Chevron Circle","blockspare"),si("Caret","blockspare"),si("Circle","blockspare"),si("Original","blockspare"),si("Grayscale","blockspare"),si("Sepia","blockspare"),si("Saturation","blockspare"),si("Dim","blockspare"),si("Vintage","blockspare");const d=[{value:"blockspare-navigation-small",label:si("Small","blockspare")},{value:"blockspare-navigation-medium",label:si("Medium","blockspare")},{value:"blockspare-navigation-large",label:si("Large","blockspare")}];return wp.element.createElement(ui,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(mi,{title:si("Carousel Settings","blockspare"),initialOpen:!1},wp.element.createElement(bi,{label:si("Number of slide to show","blockspare"),value:n,onChange:e=>c({numberofSlide:e}),min:2,max:3}),wp.element.createElement(bi,{label:si("Gutter Sapce","blockspare"),value:i,onChange:e=>c({gutterSpace:e}),min:0,max:5}),wp.element.createElement(hi,{label:si("Enable Autoplay","blockspare"),checked:l,onChange:()=>this.props.setAttributes({enableAutoPlay:!l}),help:si("The effect will applicable on frontend only.","blockspare")}),wp.element.createElement(hi,{label:si("Display Navigation","blockspare"),checked:a,onChange:()=>this.props.setAttributes({showsliderNextPrev:!a})}),a&&wp.element.createElement(fi,{label:si(" Navigation Size","blockspare"),value:s,options:d.map(({value:e,label:t})=>({value:e,label:t})),onChange:e=>c({navigationSize:e})}),wp.element.createElement(hi,{label:si("Display Dots","blockspare"),checked:r,onChange:()=>this.props.setAttributes({showDots:!r})}),a&&wp.element.createElement(di,{title:si("Navigation/Dots Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>c({navigationColor:e}),label:si("Navigation/Dots Color","blockspare")}]}))))}}var yi=n(256),_i=n.n(yi);const ki=wp.i18n.__,wi=wp.element,vi=wi.Component,Mi=wi.Fragment,Li=wp.compose.compose,Ti=wp.components,Ei=Ti.IconButton,Si=Ti.Spinner,xi=Ti.Dashicon,Ci=wp.blockEditor,Di=Ci.RichText,Oi=Ci.URLInput,Yi=wp.data.withSelect,ji=wp.keycodes,Pi=(ji.BACKSPACE,ji.DELETE,wp.blob.isBlobURL);var Ni=Li([Yi((e,t)=>{const n=e("core").getMedia,a=t.id;return{image:a?n(a):null}})])(class extends vi{constructor(){super(...arguments),this.onImageClick=this.onImageClick.bind(this),this.onSelectCaption=this.onSelectCaption.bind(this),this.bindContainer=this.bindContainer.bind(this),this.saveCustomLink=this.saveCustomLink.bind(this),this.state={captionSelected:!1,captionFocused:!1,isSaved:!1}}bindContainer(e){this.container=e}onSelectCaption(){this.state.captionSelected||this.setState({captionSelected:!0}),this.props.isSelected||this.props.onSelect()}onImageClick(){this.props.isSelected||this.props.onSelect(),this.state.captionSelected&&this.setState({captionSelected:!1,captionFocused:!1})}saveCustomLink(){this.setState({isSaved:!0})}componentDidUpdate(e){const t=this.props,n=t.isSelected,a=t.image,r=t.url,o=t.imgLink;a&&!r&&this.props.setAttributes({url:a.source_url,alt:a.alt_text}),this.state.captionSelected&&!n&&e.isSelected&&this.setState({captionSelected:!1,captionFocused:!1}),o&&!n&&e.isSelected&&this.setState({isSaved:!1})}render(){const e=this.props,t=e.alt,n=e.caption,a=e.captions,r=e.fontSize,o=e.gutter,s=e.gutterMobile,l=e.id,c=e.isFirstItem,u=e.isLastItem,d=e.isSelected,p=e.linkTo,m=e.marginBottom,f=e.marginLeft,h=e.marginRight,b=e.marginTop,g=e.onMoveBackward,y=e.onMoveForward,_=e.onRemove,k=e.setAttributes,w=e.shadow,v=e.supportsCaption,M=e.supportsMoving,L=void 0===M||M,T=e.verticalMoving,E=void 0!==T&&T,S=e.url,x=e.sizes,C=e.inspectorSize,D=e["aria-label"],O=e.imgLink;let Y="";Y=x?"medium"===C?void 0===x.medium?S:void 0===x.medium?x.medium.url:S:"full"===C?void 0===x.large?S:void 0===x.full.url?x.full.url:S:S:S;const j=i()({[`has-shadow-${w}`]:"none"!==w||void 0!==w}),P=wp.element.createElement(Mi,null,wp.element.createElement("img",{src:Y,className:j,alt:t,"data-id":l,"data-imglink":O,onClick:this.onImageClick,tabIndex:"0","aria-label":D}),Pi(S)&&wp.element.createElement(Si,null)),N=i()({"is-selected":d,"is-transient":S&&0===S.indexOf("blob:"),[`has-margin-top-${o}`]:b&&o>0,[`has-margin-top-mobile-${s}`]:b&&s>0,[`has-margin-right-${o}`]:h&&o>0,[`has-margin-right-mobile-${s}`]:h&&s>0,[`has-margin-bottom-${o}`]:m&&o>0,[`has-margin-bottom-mobile-${s}`]:m&&s>0,[`has-margin-left-${o}`]:f&&o>0,[`has-margin-left-mobile-${s}`]:f&&s>0}),B={fontSize:r?r+"px":void 0};return wp.element.createElement("figure",{className:"blockspare-gallery-figure "+N,tabIndex:"-1",onKeyDown:this.onKeyDown,ref:this.bindContainer},d&&wp.element.createElement(Mi,null,L&&wp.element.createElement("div",{className:"components-blockspare-gallery-item__move-menu"},wp.element.createElement(Ei,{icon:E?"arrow-up":"arrow-left",onClick:!c&&g,className:"blockspare-gallery-item-button",label:ki("Move Image Backward","blockspare"),"aria-disabled":c,disabled:!d}),wp.element.createElement(Ei,{icon:E?"arrow-down":"arrow-right",onClick:!u&&y,className:"blockspare-gallery-item-button",label:ki("Move Image Forward","blockspare"),"aria-disabled":u,disabled:!d})),wp.element.createElement("div",{className:"components-blockspare-gallery-item__remove-menu"},wp.element.createElement(Ei,{icon:"no-alt",onClick:_,className:"blockspare-gallery-item-button",label:ki("Remove Image","blockspare"),disabled:!d})),"custom"===p&&wp.element.createElement("form",{className:"components-blockspare-gallery-item-image-link",onSubmit:e=>e.preventDefault()},wp.element.createElement(xi,{icon:"admin-links"}),wp.element.createElement(Oi,{value:O,onChange:e=>k({imgLink:e})}),wp.element.createElement(Ei,{icon:this.state.isSaved?"saved":"editor-break",label:this.state.isSaved?ki("Saving","blockspare"):ki("Apply","blockspare"),onClick:this.saveCustomLink,type:"submit"}))),P,!0!==v||Di.isEmpty(n)&&!d||!a?null:wp.element.createElement(Di,{tagName:"figcaption",placeholder:ki("Write caption…","blockspare"),className:"blockspare-gallery-caption",style:B,value:n,isSelected:this.state.captionSelected,onChange:e=>k({caption:e}),unstableOnFocus:this.onSelectCaption,inlineToolbar:!0}))}}),Bi=n(257),Ai=n.n(Bi),Hi=n(36),zi=n.n(Hi),Ii=n(258),Fi=n.n(Ii);const Ri=(e,t)=>{const n=Ai()(e,["alt","id","link","caption","imgLink","sizes"]);n.url=zi()(e,["sizes","large","url"])||zi()(e,["media_details","sizes","large","source_url"])||e.url;const a=Fi()(t,(function(e){return e.url===n.url}));return n.imgLink=a>=0?t[a].imgLink:"",n},Wi=["image"],Ui=wp.i18n,qi=Ui.__,Gi=Ui.sprintf,Vi=wp.element.Component,$i=wp.blockEditor,Ji=$i.MediaPlaceholder,Xi=$i.BlockIcon;var Qi=class extends Vi{constructor(){super(...arguments),this.onSelectImages=this.onSelectImages.bind(this)}onSelectImages(e){this.props.setAttributes({images:e.map(e=>Ri(e))})}render(){const e=this.props,t=e.attributes,n=(e.gutter,e.gutterMobile,e.isSelected),a=(e.marginBottom,e.marginLeft,e.marginRight,e.marginTop,e.noticeOperations),r=e.noticeUI,o=t.images,s=!!o.length,l=i()("blockspare-gallery--figure");return wp.element.createElement("div",{className:l},wp.element.createElement(Ji,{addToGallery:s,isAppender:s,dropZoneUIOnly:s&&!n,icon:!s&&wp.element.createElement(Xi,{icon:this.props.icon}),labels:{title:!s&&Gi(qi("%s Gallery","blockspare"),this.props.label),instructions:!s&&qi("Upload an image file, pick one from your media library, or add one with a URL.","blockspare")},onSelect:this.onSelectImages,accept:"image/*",allowedTypes:Wi,multiple:!0,value:s?o:void 0,onError:a.createErrorNotice,notices:s?void 0:r}))}};const Ki=wp.element,Zi=Ki.Component,es=Ki.Fragment,ts=wp.blockEditor.mediaUpload,ns=wp.components.DropZone;var as=class extends Zi{constructor(){super(...arguments),this.addMediaFiles=this.addMediaFiles.bind(this)}addMediaFiles(e){const t=this.props.attributes.images||[],n=this.props,a=n.noticeOperations,r=n.setAttributes;ts({allowedTypes:Wi,filesList:e,onFileChange:e=>{const n=e.map(e=>Ri(e));r({images:t.concat(n)})},onError:a.createErrorNotice})}render(){return wp.element.createElement(es,null,wp.element.createElement(ns,{onFilesDrop:this.addMediaFiles,label:this.props.label}))}};function rs(){return(rs=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function is(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?os(Object(n),!0).forEach((function(t){ss(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):os(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ss(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ls=wp.i18n,cs=ls.__,us=ls.sprintf,ds=wp.element,ps=ds.Component,ms=ds.Fragment,fs=wp.compose.compose,hs=wp.components,bs=hs.withNotices,gs=(hs.ResizableBox,hs.Toolbar),ys=hs.IconButton,_s=wp.blockEditor,ks=_s.BlockControls,ws=_s.MediaUpload,vs=_s.MediaUploadCheck;var Ms=fs([bs])(class extends ps{constructor(){super(...arguments),this.onSelectImage=this.onSelectImage.bind(this),this.onRemoveImage=this.onRemoveImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onItemClick=this.onItemClick.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null,captionFocused:!1}}componentDidMount(){this.props.setAttributes({lightbox:void 0,lightboxStyle:void 0,shadow:void 0})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1,captionFocused:!1}),!this.props.isSelected&&e.isSelected&&this.state.captionFocused&&this.setState({captionFocused:!1}),this.props.attributes.gutter<=0&&this.props.setAttributes({radius:0}),"xlrg"===this.props.attributes.gridSize&&void 0===e.attributes.align&&this.props.setAttributes({gutter:0,gutterMobile:0})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e,captionFocused:!1})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ni()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,a=n.attributes.images,r=n.setAttributes;a[e]&&r({images:[...a.slice(0,e),is({},a[e],{},t),...a.slice(e+1)]})}onItemClick(){this.props.isSelected||this.props.onSelect(),this.state.captionFocused&&this.setState({captionFocused:!1})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ri(e,this.props.attributes.images))})}render(){const e=this.props,t=e.attributes,n=t.images,a=t.numberofSlide,r=t.carouselSpeed,o=t.showsliderNextPrev,s=t.carouselNextIcon,l=t.showDots,c=t.navigationColor,u=t.gutterSpace,d=t.colorFilter,p=t.showOriginalOnHover,m=t.navigationSize,f=(t.enableAutoPlay,e.className,e.isSelected),h=(e.noticeUI,e.setAttributes),b=!!n.length,g=wp.element.createElement(as,this.props);if(!b)return wp.element.createElement(Qi,rs({},this.props,{label:cs("Carousel","blockspare")}));var y="fas fa-angle-right",_="fas fa-angle-left";"fas fa-angle-right"===s?(y=wp.element.createElement(Ts,null),_=wp.element.createElement(Ls,null)):"fas fa-chevron-circle-right"===s?(y=wp.element.createElement(Ss,null),_=wp.element.createElement(Es,null)):"fas fa-caret-right"===s?(y=wp.element.createElement(Cs,null),_=wp.element.createElement(xs,null)):"fas fa-chevron-right"===s?(y=wp.element.createElement(Os,null),_=wp.element.createElement(Ds,null)):"fas fa-arrow-circle-right"===s?(y=wp.element.createElement(js,null),_=wp.element.createElement(Ys,null)):(y="fas fa-angle-right",_="fas fa-angle-left");const k={dots:l,loop:!0,speed:r,arrows:o,slidesToShow:a,nextArrow:y,prevArrow:_};return wp.element.createElement(ms,null,wp.element.createElement(ks,null,b&&wp.element.createElement(ms,null,wp.element.createElement(gi,is({setAttributes:h},this.props)),wp.element.createElement(gs,null,wp.element.createElement(vs,null,wp.element.createElement(ws,{onSelect:this.onEditSelectImages,allowedTypes:Wi,multiple:!0,gallery:!0,value:n.map(e=>e.id),render:({open:e})=>wp.element.createElement(ys,{className:"components-toolbar__control",label:cs("Edit gallery","blockspare"),icon:"edit",onClick:e})}))))),g,wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-carousel-wrap","has-gutter-space-"+u,d,"blockspare-original"!==d&&p?"has-hover-effect":"",m)},wp.element.createElement("div",{className:"blockspare-carousel-items",style:{color:c}},wp.element.createElement(_i.a,k,n.map((e,t)=>{const a=us(cs("image %1$d of %2$d in gallery","blockspare"),t+1,n.length);return wp.element.createElement("div",{className:"blockspare-gallery-item",key:e.id||e.url,onClick:this.onItemClick},wp.element.createElement(Ni,{url:e.url,alt:e.alt,id:e.id,marginRight:!0,marginLeft:!0,isSelected:f&&this.state.selectedImage===t,onRemove:this.onRemoveImage(t),onSelect:this.onSelectImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":a,supportsCaption:!1,onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),supportsMoving:!0,sizes:e.sizes,inspectorSize:"medium"}))}),f&&wp.element.createElement("div",{className:"blockspare-add-more-slide blockspare-add-more-item"},wp.element.createElement(vs,null,wp.element.createElement(ws,{onSelect:this.onEditSelectImages,allowedTypes:Wi,multiple:!0,gallery:!0,value:n.map(e=>e.id),render:({open:e})=>wp.element.createElement(ys,{className:"aft-cta-inspector-media",label:cs("Edit image","blockspare"),icon:"plus-alt",onClick:e},cs("Add Image","blockspare"))})))))))}});function Ls(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-angle-left"),onClick:t})}function Ts(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-angle-right"),onClick:t})}function Es(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-chevron-circle-left"),onClick:t})}function Ss(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-chevron-circle-right"),onClick:t})}function xs(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-caret-left"),onClick:t})}function Cs(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-caret-right"),onClick:t})}function Ds(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-chevron-left"),onClick:t})}function Os(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-chevron-right"),onClick:t})}function Ys(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-prev slick-arrow fas fa-arrow-circle-left"),onClick:t})}function js(e){e.className,e.style;const t=e.onClick;return wp.element.createElement("span",{className:i()("slide-next slick-arrow fas fa-arrow-circle-right"),onClick:t})}const Ps=wp.element,Ns=Ps.Component;Ps.Fragment;const Bs=blockspare_globals,As=wp.i18n.__,Hs=wp.blocks.registerBlockType,zs=ei.name,Is=ei.category,Fs=ei.attributes;Hs(zs,{title:As("BS Image Carousel","blockspare"),description:As("Add logos, badges and images to build carousel.","blockspare"),category:Is,icon:r.imagecarousel,attributes:Fs,keywords:[As("block","blockspare"),As("image","blockspare"),As("carousel","blockspare"),As("slider","blockspare"),As("gallery","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{align:"full",images:[{url:Bs.img},{url:Bs.img},{url:Bs.img}],showsliderNextPrev:!0,showDots:!0}},edit:Ms,save:class extends Ns{render(){const e=this.props.attributes,t=e.images,n=e.numberofSlide,a=e.carouselSpeed,r=e.showsliderNextPrev,o=e.carouselNextIcon,s=e.showDots,l=e.navigationColor,c=e.gutterSpace,u=e.colorFilter,d=e.showOriginalOnHover,p=e.navigationSize,m=e.enableAutoPlay;let f=o,h=o.replace("-right","-left"),b={loop:!0,autoplay:m,slidesToShow:n,speed:a,arrows:r,dots:s};var g=JSON.stringify(b);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-carousel-wrap","has-gutter-space-"+c,u,p,"blockspare-original"!==u&&d?"has-hover-effect":"")},wp.element.createElement("div",{className:"blockspare-carousel-items","data-next":f,"data-prev":h,"data-slick":g,style:{color:l}},t.map((e,t)=>{let n="";return n=void 0===e.sizes.medium?e.url:e.sizes.medium.url,wp.element.createElement("div",{className:"blockspare-gallery-figure "}," ",wp.element.createElement("img",{src:n}))})))}}});var Rs=n(46);n(446),n(447);class Ws extends Ia.Component{constructor(e){super(e),this.state={indicator:0,isActive:!1}}componentDidMount(){setTimeout(()=>this.setState({indicator:this.props.percent,isActive:!0}),1e3)}componentWillReceiveProps(e){this.state.isActive&&this.props.percent!==e.percent&&this.setState({indicator:e.percent})}render(){const e=this.state,t=e.indicator,n=e.isActive,a=this.props,r=a.barColor,o=a.barThickness,i=a.percent,s=a.backgroundColor,l=a.percentageTextColor,c=`M ${o/2},${o/2} L ${100-o/2},${o/2}`;return wp.element.createElement("div",{className:"blockspare_progress-bar-container"},wp.element.createElement("div",{className:"blockspare_progress-bar-label",style:{visibility:n?"visible":"hidden",color:l||"#8b249c"}},i,"%"),wp.element.createElement("svg",{className:"blockspare_progress-bar-line",viewBox:`0 0 100 ${o}`,preserveAspectRatio:"none"},wp.element.createElement("path",{className:"blockspare_progress-bar-line-trail",d:c,strokeWidth:o,style:{stroke:s||"#8b249c"}}),wp.element.createElement("path",{className:"blockspare_progress-bar-line-path",d:c,stroke:r||"#2DB7F5",strokeWidth:o,style:{strokeDashoffset:`${100-t}px`}})))}}const Us=wp.i18n.__,qs=wp.element,Gs=qs.Component,Vs=(qs.Fragment,wp.blockEditor),$s=Vs.InspectorControls,Js=Vs.PanelColorSettings,Xs=wp.components,Qs=Xs.PanelBody,Ks=(Xs.SelectControl,Xs.RangeControl);class Zs extends Gs{render(){const e=this.props.attributes,t=(e.textColor,e.percentageTextColor),n=e.textSize,a=e.barColor,r=(e.backgroundColor,e.barThickness,this.props.setAttributes);return wp.element.createElement($s,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Qs,{title:Us("Block Settings"),initialOpen:!1},wp.element.createElement(Ks,{label:Us("Title Size","blockspare"),value:n,onChange:e=>this.props.setAttributes({textSize:e}),min:14,max:32,step:2}),wp.element.createElement(Js,{title:Us("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:a,onChange:e=>r({barColor:e}),label:Us("Bar Color","blockspare")},{value:t,onChange:e=>r({percentageTextColor:e}),label:Us("Percentage Texts Color","blockspare")}]}))))}}function el(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function tl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const nl=wp.element,al=nl.Component,rl=nl.Fragment,ol=wp.blockEditor,il=ol.BlockControls,sl=ol.RichText,ll=ol.AlignmentToolbar,cl=wp.components,ul=cl.Toolbar,dl=cl.RangeControl,pl=wp.i18n.__;var ml=n(47);const fl=wp.element.Component,hl=wp.blockEditor.RichText;const bl=wp.i18n.__,gl=ml.name,yl=ml.attributes,_l=ml.category,kl=wp.blocks.registerBlockType,wl={title:bl("progress","blockspare"),description:bl("Display creative collapsible texts Accordion.","blockspare"),parent:["blockspare/linearprogressbar"],icon:"link",category:_l,supports:{html:!1,inserter:!1,reusable:!1},attributes:yl,edit:class extends al{render(){const e=this.props,t=e.attributes,n=t.title,a=t.textSize,r=t.textColor,o=(t.percentageTextColor,t.percentage),i=t.barColor,s=t.barThickness,l=t.backgroundColor,c=t.sectionAlignment,u=e.setAttributes;return wp.element.createElement(rl,null,wp.element.createElement(Zs,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?el(Object(n),!0).forEach((function(t){tl(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):el(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:u},this.props)),wp.element.createElement(il,null,wp.element.createElement(ll,{value:c,onChange:e=>{u({sectionAlignment:e})}}),wp.element.createElement(ul,null,wp.element.createElement(dl,{className:"blockspare_progress_bar_value",value:o,onChange:e=>u({percentage:e}),min:0,max:100}))),wp.element.createElement(sl,{tagName:"div",placeholder:pl("Title","blockspare"),keepPlaceholderOnFocus:!0,value:n,className:"blockspare-title",onChange:e=>u({title:e}),style:{textAlign:c,color:r||"#404040",fontSize:a+"px"}}),wp.element.createElement(Ws,{percent:o,barColor:i,barThickness:s,backgroundColor:l}))}},save:class extends fl{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=(e.blockID,e.title),n=e.textSize,a=e.textColor,r=e.percentageTextColor,o=e.percentage,s=e.barColor,l=e.backgroundColor,c=e.barThickness,u=e.sectionAlignment,d={backgroundColor:s||"#2DB7F5"};return wp.element.createElement("div",{className:"blockspare_progress-bar-container"},wp.element.createElement(hl.Content,{tagName:"div",value:t,style:{textAlign:u,color:a||"#404040",fontSize:n+"px"}}),wp.element.createElement("div",{className:"blockspare-skillbar-item","data-percent":o},wp.element.createElement("div",{className:"blockspare_progress-bar-label",style:{color:r||"#8b249c"}},o,"%"),wp.element.createElement("div",{className:i()("blockspare-skillbar","barthickness-"+c),style:{backgroundColor:l||"#8b249c"}},wp.element.createElement("div",{className:"blockspare-skillbar-bar",style:d}))))}}};kl(gl,wl);wp.i18n.__;const vl=wp.element,Ml=vl.Component,Ll=vl.Fragment,Tl=(wp.components.IconButton,wp.blockEditor.InnerBlocks),El=wp.blocks.createBlock,Sl=wp.compose.compose,xl=wp.data,Cl=xl.withSelect,Dl=xl.withDispatch;var Ol=Sl([Cl((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),Dl(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Ml{constructor(...e){var t,n,a;super(...e),a=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++){const n="Create stylish Linear progressbar.";t.push(["blockspare/blockspare-skillbar",{itemNumber:e,defaultText:n}])}return t},(n="getProgressbarTemplate")in(t=this)?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertProgressbarItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes.itemNumber+1,n=wl.title;e=Object.assign({},{},{itemNumber:t,title1:n,active:!1,defaultText:""})}else e=wl;a(El("blockspare/blockspare-skillbar",e),void 0,n)}render(){const e=this.props,t=(e.name,e.attributes),n=(e.isSelectedBlockInRoot,e.setAttributes,e.attributes.uniqueId);return wp.element.createElement(Ll,null,wp.element.createElement("div",{className:`blockspare-block-progress-bar blockspare-block-${n}`},wp.element.createElement(Tl,{template:this.getProgressbarTemplate(t),allowedBlocks:["blockspare/blockspare-skillbar"]})))}});const Yl=wp.element.Component,jl=wp.blockEditor.InnerBlocks;var Pl=class extends Yl{render(){const e=this.props.attributes,t=(e.animation,e.uniqueId),n=(e.itemToggle,e.interaction,`blockspare-block-progress-bar blockspare-block-interaction blockspare-block-${t}`);return wp.element.createElement("div",{className:n},wp.element.createElement(jl.Content,null))}};const Nl=wp.i18n.__,Bl=wp.blocks.registerBlockType,Al=Rs.name,Hl=Rs.category,zl=Rs.attributes;Bl(Al,{title:Nl("BS Progressbar","blockspare"),description:Nl("Display creative Linear Progressbar.","blockspare"),category:Hl,icon:r.progressBar,attributes:zl,keywords:[Nl("block","blockspare"),Nl("progress","blockspare"),Nl("bar","blockspare"),Nl("number","blockspare"),Nl("counter","blockspare")],supports:{html:!1,className:!1,align:["center","wide","full"]},example:{attributes:{}},edit:Ol,save:Pl});n(448),n(449);var Il=["blockspare-list-check","blockspare-list-check-square","blockspare-list-check-square-outline","blockspare-list-check-double","blockspare-list-check-circle","blockspare-list-check-circle-outline","blockspare-list-square","blockspare-list-square-outline"];const Fl=wp.i18n.__,Rl=wp.element,Wl=Rl.Component,Ul=Rl.Fragment;var ql=class extends Wl{constructor(e){super(e),this.state={isOpen:!1,filterText:"",showIcons:!1}}render(){const e=this.props,t=e.value,n=e.disableToggle,a=e.colorSettings,r=e.iconColor,o=e.onColorChange,i=this.state.filterText;var s=[];return i.length>2?Il.forEach(e=>{e.includes(i)&&s.push(e)}):s=Il,wp.element.createElement("div",{className:`blockspare-field blockspare-field-icon-list ${n?"":"blockspare-toggle-enabled"}`},this.props.label&&wp.element.createElement(Ul,null,n?wp.element.createElement("label",null,this.props.label):wp.element.createElement(Toggle,{label:this.props.label,className:"blockspare-icon-list-toggle",value:!!this.props.value,onChange:()=>this.props.onChange(this.props.value?"":" ")})),a&&wp.element.createElement(Color,{label:Fl(" Color"),value:r||"#ccc",onChange:e=>o(e)}),(n||""!=this.props.value)&&wp.element.createElement("div",{className:"blockspare-icon-list-wrapper"},wp.element.createElement("input",{type:"text",value:this.state.filterText,placeholder:"Search...",onChange:e=>this.setState({filterText:e.target.value}),autoComplete:"off"}),wp.element.createElement("div",{className:"blockspare-icon-list-icons"},s.map(e=>wp.element.createElement("span",{className:t==e?"blockspare-active":"",onClick:t=>{this.props.onChange(e)}},wp.element.createElement("span",{className:e}))))))}};const Gl=wp.i18n.__,Vl=wp.element.Fragment,$l=wp.blockEditor,Jl=($l.InspectorControls,$l.PanelColorSettings),Xl=wp.components;Xl.PanelBody,Xl.SelectControl,Xl.RangeControl;function Ql(e){const t=e.name,n=e.onChangeName,a=void 0===n?()=>{}:n,r=e.listType,o=(e.onChangeListStyle,e.orderListStyle,e.onChangeOrderListStyle,e.color),i=e.onchangeColor,s=void 0===i?()=>{}:i;Gl("List With icon","blockspare"),Gl("Ordered List","blockspare"),Gl("None","blockspare"),Gl("Style1","blockspare"),Gl("Style2","blockspare"),Gl("Style3","blockspare");return wp.element.createElement(Vl,null,"ul"==r&&wp.element.createElement(ql,{value:t,onChange:a}),wp.element.createElement(Jl,{title:Gl("Color","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:s,label:Gl("Icon Color","blockspare")}]}))}const Kl=wp.i18n.__,Zl=wp.element,ec=Zl.Component,tc=(Zl.Fragment,wp.blockEditor),nc=tc.InspectorControls,ac=(tc.PanelColorSettings,wp.components),rc=ac.PanelBody;ac.ToggleControl,ac.RangeControl;class oc extends ec{render(){const e=this.props.attributes,t=e.name,n=e.listType,a=e.orderListStyle,r=e.color,o=(e.listBackGroundColor,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.borderRadius,this.props.setAttributes);return wp.element.createElement(nc,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(rc,{title:Kl("Icon Settings"),initialOpen:!1},wp.element.createElement(Ql,{name:t,onChangeName:e=>o({name:e}),listType:n,onChangeListStyle:e=>o({listType:e}),orderListStyle:a,onChangeOrderListStyle:e=>o({orderListStyle:e}),color:r,onchangeColor:e=>o({color:e})}))))}}function ic(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function sc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ic(Object(n),!0).forEach((function(t){lc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ic(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function lc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const cc=wp.blockEditor.RichText,uc=wp.element,dc=uc.Component,pc=uc.Fragment,mc=wp.blockEditor,fc=mc.AlignmentToolbar,hc=mc.BlockControls;function bc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function gc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bc(Object(n),!0).forEach((function(t){yc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function yc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const _c=wp.element.Component,kc=wp.blockEditor.RichText;var wc=class extends _c{render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.listData,r=t.name,o=t.listType,s=t.orderListStyle,l=t.color,c=t.listBackGroundColor,u=t.borderRadius,d=e.attributes;let p="";return p="ul"==o?r:"ol"==o?s:"",wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap"),style:gc({backgroundColor:c,borderRadius:u+"px",paddingTop:c?"20px":"",paddingBottom:c?"20px":"",paddingLeft:c?"20px":"",paddingRight:c?"20px":""},Yt(d))},wp.element.createElement(kc.Content,{tagName:"none"==o?"ul":o,multiline:"li",value:a,className:p,style:{color:l||"#000",textAlign:n}}))}},vc=n(48);function Mc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Lc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Tc=vc.name,Ec=vc.category,Sc=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mc(Object(n),!0).forEach((function(t){Lc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},vc.attributes,{},Jt),xc=wp.blocks.registerBlockType,Cc=wp.i18n.__;xc(Tc,{title:Cc("BS Icon List","blockspare"),description:Cc("Icon List allow you to add list with various type of icons","blockspare"),category:Ec,icon:r.iconlist,attributes:Sc,keywords:[Cc("block","blockspare"),Cc("list","blockspare"),Cc("icon","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{listData:"<li>Vestibulum ac diam sit amet</li> <li>Vestibulum ac diam sit amet</li> <li>Vestibulum ac diam sit amet</li>",name:"blockspare-list-check",sectionAlignment:"center"}},edit:class extends dc{render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.listData,r=t.name,o=t.listType,s=t.orderListStyle,l=t.color,c=t.listBackGroundColor,u=t.borderRadius,d=e.attributes,p=e.setAttributes;let m="";return m="ul"==o?r:"ol"==o?s:"",wp.element.createElement(pc,null,wp.element.createElement(oc,sc({setAttributes:p},this.props)),wp.element.createElement(hc,null,wp.element.createElement(fc,{value:n,onChange:e=>{p({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap"),style:sc({backgroundColor:c,paddingTop:c?"20px":"",paddingBottom:c?"20px":"",paddingLeft:c?"20px":"",paddingRight:c?"20px":"",borderRadius:u+"px"},Yt(d))},wp.element.createElement(cc,{tagName:"none"==o?"ul":o,multiline:"li",itemProp:"description",keepPlaceholderOnFocus:!0,value:a,onChange:e=>p({listData:e}),className:m,style:{color:l||"#000",textAlign:n}})))}},save:wc});n(450),n(451);var Dc=n(49);function Oc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Yc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oc(Object(n),!0).forEach((function(t){jc(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Pc=wp.i18n.__,Nc=wp.element,Bc=Nc.Component,Ac=Nc.Fragment;wp.components.ResizableBox,wp.keycodes.BACKSPACE;var Hc=class extends Bc{constructor(){super(...arguments),this.onRemoveImage=this.onRemoveImage.bind(this),this.onSelectImage=this.onSelectImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null}}componentDidMount(){"xlrg"===this.props.attributes.gridSize&&this.props.setAttributes({align:"wide",gridSize:"lrg"})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ni()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,a=n.attributes.images,r=n.setAttributes;a[e]&&r({images:[...a.slice(0,e),Yc({},a[e],{},t),...a.slice(e+1)]})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ri(e,this.props.attributes.images))})}render(){let e;switch(this.props.attributes.align){case"wide":e=4;break;case"full":e=5;break;default:e=3}this.props.attributes;const t=this.props,n=t.isSelected,a=t.captions,r=t.images,o=t.linkTo;return wp.element.createElement(Ac,null,wp.element.createElement("ul",{className:"blockspare-logo-wrap"},r.map((e,t)=>{const i=sprintf(Pc("image %1$d of %2$d in gallery","blockspare"),t+1,r.length);return wp.element.createElement("li",{className:"blockspare-gallery-item",key:e.id||e.url},wp.element.createElement(Ni,{url:e.url,alt:e.alt,id:e.id,imgLink:e.imgLink,linkTo:o,isFirstItem:0===t,isLastItem:t+1===r.length,isSelected:n&&this.state.selectedImage===t,onSelect:this.onSelectImage(t),onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),onRemove:this.onRemoveImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":i,captions:a,supportsCaption:!0}))})))}};function zc(){return(zc=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const Ic=wp.i18n.__,Fc=wp.element,Rc=Fc.Component,Wc=Fc.Fragment,Uc=wp.compose.compose,qc=wp.components.withNotices,Gc=wp.blockEditor,Vc=Gc.MediaPlaceholder,$c=Gc.BlockIcon;var Jc=Uc([qc])(class extends Rc{constructor(){super(...arguments),this.onSelectImages=this.onSelectImages.bind(this)}onSelectImages(e){this.props.setAttributes({images:e.map(e=>Ri(e))})}render(){const e=this.props,t=e.className,n=e.noticeOperations,a=e.attributes,o=e.noticeUI,s=e.isSelected,l=a.images,c=a.grayscale,u=!!l.length;i()(t,{"has-filter-grayscale":c});return wp.element.createElement(Wc,null,wp.element.createElement(as,this.props),wp.element.createElement("div",{className:"blockspare-blocks blockspare-logos-wrapper"},wp.element.createElement(Hc,zc({},this.props,{images:l})),(!u||s)&&wp.element.createElement(Vc,{addToGallery:u,isAppender:u,icon:wp.element.createElement($c,{icon:r.edit}),labels:{title:Ic("Logos Grid","blockspare"),instructions:Ic("Upload an image file, pick one from your media library, or add one with a URL","blockspare")},multiple:!0,accept:"image/*",allowedTypes:["image"],value:u?l:void 0,onError:n.createErrorNotice,notices:o,onSelect:this.onSelectImages,className:i()({"is-appender":u})})))}});const Xc=wp.blockEditor.RichText;var Qc=({attributes:e,className:t})=>{const n=e.captions,a=e.images,r=e.linkTo,o=e.rel,i=e.target;return wp.element.createElement("div",{className:"blockspare-blocks blockspare-logos-wrapper"},wp.element.createElement("ul",{className:"blockspare-logo-wrap"},a.map(e=>{let t;switch(r){case"media":t=e.url;break;case"attachment":t=e.link}e.imgLink&&(t=e.imgLink);const a=wp.element.createElement("img",{src:e.url,alt:e.alt,"data-id":e.id,"data-imglink":e.imgLink,"data-link":e.link,className:e.id?`wp-image-${e.id}`:null});return wp.element.createElement("li",{key:e.id||e.url,className:"blockspare-gallery-item"},wp.element.createElement("figure",{className:"blockspare-gallery-figure"},t?wp.element.createElement("a",{href:t,target:i,rel:o},a):a,n&&e.caption&&e.caption.length>0&&wp.element.createElement(Xc.Content,{tagName:"figcaption",className:"blockspare-gallery-caption",value:e.caption})))})))};const Kc=blockspare_globals,Zc=wp.i18n.__,eu=wp.blocks.registerBlockType,tu=Dc.name,nu=Dc.category,au=Dc.attributes;eu(tu,{title:Zc("BS Logo Grid","blockspare"),description:Zc("Add logos, badges, or certifications to build credibility.","blockspare"),category:nu,icon:r.logobadge,attributes:au,keywords:[Zc("block","blockspare"),Zc("logo","blockspare"),Zc("brand","blockspare"),Zc("clients","blockspare"),Zc("grid","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{align:"full",images:[{url:Kc.img,width:420},{url:Kc.img,width:420},{url:Kc.img,width:420},{url:Kc.img,width:420}]}},edit:Jc,save:Qc});n(452);var ru=n(37),ou=n.n(ru),iu=n(38),su=n.n(iu),lu=n(1),cu=n.n(lu);function uu(){return(uu=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const du=wp.hooks,pu=(du.addFilter,du.applyFilters),mu=wp.i18n.__,fu=wp.element,hu=fu.Component,bu=(fu.Fragment,wp.blockEditor),gu=bu.InspectorControls,yu=bu.PanelColorSettings,_u=wp.components,ku=_u.PanelBody,wu=_u.QueryControls,vu=_u.RangeControl,Mu=(_u.SelectControl,_u.TextControl,_u.ToggleControl),Lu=wp.url.addQueryArgs,Tu=wp.apiFetch;class Eu extends hu{constructor(){super(...arguments),this.state={categoriesList:[]}}componentDidMount(){this.stillMounted=!0,this.fetchRequest=Tu({path:Lu("/wp/v2/categories",{per_page:-1})}).then(e=>{this.stillMounted&&this.setState({categoriesList:e})}).catch(()=>{this.stillMounted&&this.setState({categoriesList:[]})})}componentWillUnmount(){this.stillMounted=!1}imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ri()(ii()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.columns,a=t.postType,r=t.backGroundColor,o=t.design,i=void 0===o?"blockspare-grid-layout-1":o,s=(t.displayPostTitle,t.displayPostCategory),l=t.displayPostAuthor,c=t.displayPostDate,u=(t.displayPostExcerpt,t.displayPostLink,t.excerptLength,t.readMoreText,t.postsToShow,t.enableBackgroundColor,t.marginTop),d=t.marginBottom,p=(t.imageSize,t.order),m=t.orderBy,f=t.categories,h=(t.offset,t.contentOrder,t.equalImageHeight,t.postTitleColor),b=t.postTitleFontSize,g=t.linkColor,y=t.generalColor,_=(t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.borderRadius,e.setAttributes),k=e.latestPosts,w=this.state.categoriesList,v=(mu("Default","blockspare"),mu("Meta → Title → Category → Content","blockspare"),mu("Title → Meta → Category → Content","blockspare"),mu("Title → Category → Meta → Content","blockspare"),Array.isArray(k)&&k.length),M="post"===a;this.imageSizeSelect();return wp.element.createElement(gu,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Fn,{initialOpen:!1,selected:i,options:pu("blockspare.cta.edit.layouts",[{label:mu("Style 1","blockspare"),value:"blockspare-grid-layout-1",image:"images/blockspare-grid-layout-1.png"},{label:mu("Style 2","blockspare"),value:"blockspare-grid-layout-2",image:"images/blockspare-grid-layout-2.png"},{label:mu("Style 3","blockspare"),value:"blockspare-grid-layout-3",image:"images/blockspare-grid-layout-3.png"}]),onChange:e=>_({design:e})}),wp.element.createElement(ku,{title:mu("Block Settings","blockspare"),className:M?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(vu,{label:mu("Columns","blockspare"),value:n,onChange:e=>_({columns:e}),min:1,max:v?Math.min(3,k.length):3}),wp.element.createElement(yu,{title:mu("Title Color","blockspare"),initialOpen:!0,colorSettings:[{value:h,onChange:e=>_({postTitleColor:e}),label:mu("Title Color","blockspare")}]}),wp.element.createElement(vu,{label:mu("Title Font Size","blockspare"),value:b,onChange:e=>this.props.setAttributes({postTitleFontSize:e}),min:16,max:60,step:1}),M&&wp.element.createElement(Mu,{label:mu("Display Category","blockspare"),checked:s,onChange:()=>this.props.setAttributes({displayPostCategory:!s})}),M&&wp.element.createElement(Mu,{label:mu("Display Author","blockspare"),checked:l,onChange:()=>this.props.setAttributes({displayPostAuthor:!l})}),M&&wp.element.createElement(Mu,{label:mu("Display Date","blockspare"),checked:c,onChange:()=>this.props.setAttributes({displayPostDate:!c})}),"blockspare-grid-layout-4"!=i&&"blockspare-grid-layout-5"!=i&&"blockspare-grid-layout-6"!=i&&wp.element.createElement(yu,{title:mu("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:r,onChange:e=>_({backGroundColor:e}),label:mu("Background Color","blockspare")}]}),wp.element.createElement(yu,{title:mu(" Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:g,onChange:e=>_({linkColor:e}),label:mu("Link Color","blockspare")},{value:y,onChange:e=>_({generalColor:e}),label:mu("General Color","blockspare")}]})),wp.element.createElement(ku,{title:mu("Post Settings","blockspare"),className:M?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(wu,uu({order:p,orderBy:m},{categoriesList:w,selectedCategoryId:f,onCategoryChange:e=>_({categories:""!==e?e:void 0}),onOrderChange:e=>_({order:e}),onOrderByChange:e=>_({orderBy:e})}))),wp.element.createElement(ku,{title:mu("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:u,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>_({marginTop:e}),marginEnableBottom:!0,marginBottom:d,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>_({marginBottom:e})}))))}}var Su=e=>{let t="";return t={border:e.borderColor,backgroundColor:e.backGroundColor?e.backGroundColor:void 0,boxShadow:e.enableBoxShadow?e.xOffset+"px "+e.yOffset+"px "+e.blur+"px "+e.spread+"px "+e.shadowColor:"",borderRadius:e.borderRadius?e.borderRadius:null},t};function xu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Cu(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xu(Object(n),!0).forEach((function(t){Du(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xu(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Du(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ou=wp.compose.compose,Yu=wp.element,ju=Yu.Component,Pu=Yu.Fragment,Nu=wp.i18n.__,Bu=wp.htmlEntities.decodeEntities,Au=wp.data.withSelect,Hu=wp.components,zu=Hu.Placeholder,Iu=Hu.Spinner;var Fu=Ou([Au((e,t)=>{const n=t.attributes,a=n.order,r=n.categories,o=e("core").getEntityRecords,i=su()({categories:r,order:a,orderby:t.attributes.orderBy,per_page:t.attributes.postsToShow,offset:t.attributes.offset},e=>!ou()(e));return{latestPosts:o("postType",t.attributes.postType,i)}})])(class extends ju{render(){const e=this.props,t=e.attributes,n=(t.align,t.columns),a=t.postType,r=t.backGroundColor,o=t.design,s=t.displayPostTitle,l=t.displayPostCategory,c=t.displayPostAuthor,u=t.displayPostDate,d=t.displayPostExcerpt,p=t.displayPostLink,m=t.excerptLength,f=t.readMoreText,h=t.postsToShow,b=t.enableBackgroundColor,g=t.marginTop,y=t.marginBottom,_=t.imageSize,k=void 0===_?"medium":_,w=t.contentOrder,v=(t.borderColor,t.sectionTag),M=t.equalImageHeight,L=t.postTitleColor,T=t.postTitleFontSize,E=t.linkColor,S=t.generalColor,x=(t.borderRadius,e.attributes),C=e.setAttributes,D=e.latestPosts,O=Array.isArray(D)&&D.length,Y="post"===a;if(!O)return wp.element.createElement(Pu,null,wp.element.createElement(Eu,Cu({setAttributes:C},this.props)),wp.element.createElement(zu,{icon:"admin-post",label:Nu("BS Blocks Posts Grid","blockspare")},Array.isArray(D)?Nu("No posts found.","blockspare"):wp.element.createElement(Iu,null)));const j=D.length>h?D.slice(0,h):D,P=v||"section";let N={};"blockspare-grid-layout-4"!==o&&"blockspare-grid-layout-5"!==o&&"blockspare-grid-layout-6"!==o&&(N=Cu({},Su(x)));const B={color:E||"#1977ac"},A={color:S||"#000"},H={marginTop:g?g+"px":void 0,marginBottom:y?y+"px":void 0};return wp.element.createElement(Pu,null,wp.element.createElement(Eu,Cu({setAttributes:C},this.props)),wp.element.createElement(P,{className:i()(this.props.className,"blockspare-post-wrap"),style:H},wp.element.createElement("div",{className:i()("blockspare-latest-post-wrap",o,"blockspare-is-grid","column-"+n)},j.map((e,t)=>{const n=(e.featured_image_urls&&e.featured_image_urls[k||"large"]||[])[0];return wp.element.createElement("article",{className:i()("blockspare-post-single",M?"has-img-equal-height":"","blockspare-grid-layout-4"!=o&&"blockspare-grid-layout-5"!=o&&"blockspare-grid-layout-6"!=o?"has-background":""),style:N},n&&wp.element.createElement("figure",{className:"blockspare-post-img"},wp.element.createElement("a",null,wp.element.createElement("img",{src:n,alt:Nu("featured","blockspare")}))),wp.element.createElement("div",{className:i()("blockspare-post-content",w)},wp.element.createElement("div",{className:"blockspare-bg-overlay",style:{backgroundColor:b?r:""}}),wp.element.createElement("div",{className:"blockspare-block-post-grid-header"},l&&wp.element.createElement("div",{className:"blockspare-post-category",dangerouslySetInnerHTML:{__html:e.category_info.replace(/href=['"].*?['"]/g,"")},style:B}),s&&wp.element.createElement("h4",{className:"blockspare-block-post-grid-title",style:{fontSize:T+"px"}},wp.element.createElement("a",{style:{color:L||"#404040"},target:"_blank",rel:"bookmark"},Bu(e.title.rendered.trim())||Nu("(Untitled)","blockspare"))),Y&&(c||u)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-byline"},c&&e.author_info.display_name&&wp.element.createElement("div",{className:"blockspare-block-post-grid-author"},wp.element.createElement("a",{style:B,className:"blockspare-text-link",target:"_blank",href:e.author_info.author_link},e.author_info.display_name)),u&&e.date_gmt&&wp.element.createElement("time",{dateTime:cu()(e.date_gmt).utc().format(),className:"blockspare-block-post-grid-date",style:A},cu()(e.date_gmt).local().format("MMMM DD, Y","blockspare")))),(d||p)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-excerpt"},d&&e.excerpt&&wp.element.createElement("div",{style:A,dangerouslySetInnerHTML:{__html:(a=e.excerpt.rendered,h=m,a.split(" ").splice(0,h).join(" "))}}),p&&wp.element.createElement("p",null,wp.element.createElement("a",{style:B,className:"blockspare-block-post-grid-more-link blockspare-text-link",href:e.link,target:"_blank",rel:"bookmark"},f)))));var a,h}))))}});const Ru=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-latest-posts-grid",{title:Ru("BS Posts Grid","blockspare"),description:Ru("Add posts grid from selected categories.","blockspare"),category:"blockspare",icon:r.postgrid,keywords:[Ru("block","blockspare"),Ru("post","blockspare"),Ru("blog","blockspare"),Ru("archive","blockspare"),Ru("article","blockspare"),Ru("list","blockspare"),Ru("grid","blockspare"),Ru("latest","blockspare"),Ru("category","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{design:"blockspare-grid-layout-1",postsToShow:2,displayPostCategory:!1,displayPostAuthor:!1,displayPostDate:!1,imageSize:"medium",postTitleFontSize:16}},edit:Fu,save:()=>null});n(453);function Wu(){return(Wu=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const Uu=wp.i18n.__,qu=wp.element,Gu=qu.Component,Vu=(qu.Fragment,wp.hooks),$u=(Vu.addFilter,Vu.applyFilters),Ju=wp.blockEditor,Xu=Ju.InspectorControls,Qu=Ju.PanelColorSettings,Ku=wp.components,Zu=Ku.PanelBody,ed=Ku.QueryControls,td=Ku.RangeControl,nd=(Ku.SelectControl,Ku.TextControl,Ku.ToggleControl),ad=wp.url.addQueryArgs,rd=wp.apiFetch;class od extends Gu{constructor(){super(...arguments),this.state={categoriesList:[]}}componentDidMount(){this.stillMounted=!0,this.fetchRequest=rd({path:ad("/wp/v2/categories",{per_page:-1})}).then(e=>{this.stillMounted&&this.setState({categoriesList:e})}).catch(()=>{this.stillMounted&&this.setState({categoriesList:[]})})}componentWillUnmount(){this.stillMounted=!1}imageSizeSelect(){const e=wp.data.select("core/editor").getEditorSettings();return ri()(ii()(e.imageSizes,({name:e,slug:t})=>({value:t,label:e})))}render(){const e=this.props,t=e.attributes,n=t.postType,a=(t.displayPostTitle,t.displayPostCategory),r=t.displayPostAuthor,o=t.displayPostDate,i=(t.displayPostExcerpt,t.displayPostLink,t.excerptLength,t.readMoreText,t.design),s=void 0===i?"blockspare-list-layout-1":i,l=(t.postsToShow,t.backGroundColor),c=(t.enableBackgroundColor,t.marginTop),u=t.marginBottom,d=(t.imageSize,t.order),p=t.orderBy,m=t.categories,f=(t.offset,t.contentOrder,t.postTitleColor),h=t.postTitleFontSize,b=t.linkColor,g=t.generalColor,y=(t.borderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes),_=(e.latestPosts,this.state.categoriesList),k=(this.imageSizeSelect(),"post"===n);Uu("Default","blockspare"),Uu("Meta → Title → Category → Content","blockspare"),Uu("Title → Meta → Category → Content","blockspare"),Uu("Title → Category → Meta → Content","blockspare");return wp.element.createElement(Xu,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Fn,{initialOpen:!1,selected:s,options:$u("blockspare.cta.edit.layouts",[{label:Uu("Style 1","blockspare"),value:"blockspare-list-layout-1",image:"images/blockspare-list-layout-1.png"},{label:Uu("Style 2","blockspare"),value:"blockspare-list-layout-2",image:"images/blockspare-list-layout-2.png"},{label:Uu("Style 3","blockspare"),value:"blockspare-list-layout-3",image:"images/blockspare-list-layout-3.png"}]),onChange:e=>y({design:e})}),wp.element.createElement(Zu,{title:Uu("Block Settings","blockspare"),className:k?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(Qu,{title:Uu("Title Color","blockspare"),initialOpen:!0,colorSettings:[{value:f,onChange:e=>y({postTitleColor:e}),label:Uu("Title Color","blockspare")}]},wp.element.createElement(td,{label:Uu("Title Font Size","blockspare"),value:h,onChange:e=>this.props.setAttributes({postTitleFontSize:e}),min:16,max:60,step:1})),k&&wp.element.createElement(nd,{label:Uu("Display Category","blockspare"),checked:a,onChange:()=>this.props.setAttributes({displayPostCategory:!a})}),k&&wp.element.createElement(nd,{label:Uu("Display Author","blockspare"),checked:r,onChange:()=>this.props.setAttributes({displayPostAuthor:!r})}),k&&wp.element.createElement(nd,{label:Uu("Display Date","blockspare"),checked:o,onChange:()=>this.props.setAttributes({displayPostDate:!o})}),"blockspare-list-layout-6"!=s&&"blockspare-list-layout-5"!=s&&"blockspare-list-layout-4"!=s&&wp.element.createElement(Qu,{title:Uu("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:l,onChange:e=>y({backGroundColor:e}),label:Uu("Background Color","blockspare")}]}),wp.element.createElement(Qu,{title:Uu("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:b,onChange:e=>y({linkColor:e}),label:Uu("Link Color","blockspare")},{value:g,onChange:e=>y({generalColor:e}),label:Uu("General Color","blockspare")}]})),wp.element.createElement(Zu,{title:Uu("Post Settings","blockspare"),className:k?null:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(ed,Wu({order:d,orderBy:p},{categoriesList:_,selectedCategoryId:m,onCategoryChange:e=>y({categories:""!==e?e:void 0}),onOrderChange:e=>y({order:e}),onOrderByChange:e=>y({orderBy:e})}))),wp.element.createElement(Zu,{title:Uu("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:c,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>y({marginTop:e}),marginEnableBottom:!0,marginBottom:u,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>y({marginBottom:e})}))))}}function id(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function sd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?id(Object(n),!0).forEach((function(t){ld(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):id(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ld(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const cd=wp.compose.compose,ud=wp.element,dd=ud.Component,pd=ud.Fragment,md=wp.i18n.__,fd=wp.htmlEntities.decodeEntities,hd=wp.data.withSelect,bd=wp.components,gd=bd.Placeholder,yd=bd.Spinner;var _d=cd([hd((e,t)=>{const n=t.attributes,a=n.order,r=n.categories,o=e("core").getEntityRecords,i=su()({categories:r,order:a,orderby:t.attributes.orderBy,per_page:t.attributes.postsToShow,offset:t.attributes.offset},e=>!ou()(e));return{latestPosts:o("postType",t.attributes.postType,i)}})])(class extends dd{render(){const e=this.props,t=e.attributes,n=t.postType,a=(t.align,t.displayPostTitle),r=t.displayPostCategory,o=t.displayPostAuthor,s=t.displayPostDate,l=t.displayPostExcerpt,c=t.displayPostLink,u=t.excerptLength,d=t.readMoreText,p=t.design,m=t.postsToShow,f=t.sectionTag,h=t.marginTop,b=t.marginBottom,g=t.imageSize,y=void 0===g?"medium":g,_=t.contentOrder,k=t.postTitleColor,w=t.postTitleFontSize,v=t.linkColor,M=t.generalColor,L=e.attributes,T=e.setAttributes,E=e.latestPosts,S=Array.isArray(E)&&E.length,x="post"===n;if(!S)return wp.element.createElement(pd,null,wp.element.createElement(od,sd({setAttributes:T},this.props)),wp.element.createElement(gd,{icon:"admin-post",label:md("BS Blocks Posts List","blockspare")},Array.isArray(E)?md("No posts found.","blockspare"):wp.element.createElement(yd,null)));const C=E.length>m?E.slice(0,m):E,D=f||"section";let O={};"blockspare-list-layout-6"!=p&&"blockspare-list-layout-5"!=p&&"blockspare-list-layout-4"!=p&&(O=sd({},Su(L)));const Y={marginTop:h?h+"px":void 0,marginBottom:b?b+"px":void 0},j={color:v||"#1977ac"},P={color:M||"#000"};return wp.element.createElement(pd,null,wp.element.createElement(od,sd({setAttributes:T},this.props)),wp.element.createElement(D,{className:i()(this.props.className,"blockspare-post-wrap"),style:Y},wp.element.createElement("div",{className:i()("blockspare-latest-post-wrap",p,"blockspare-is-list")},C.map((e,t)=>{const n=(e.featured_image_urls&&e.featured_image_urls[y||"large"]||[])[0];return wp.element.createElement("article",{className:i()("blockspare-post-single","blockspare-list-layout-6"!=p&&"blockspare-list-layout-5"!=p&&"blockspare-list-layout-4"!=p?"has-background":""),style:O},n&&wp.element.createElement("figure",{className:"blockspare-post-img"},wp.element.createElement("a",null,wp.element.createElement("img",{src:n,alt:md("featured","blockspare")}))),wp.element.createElement("div",{className:i()("blockspare-post-content",_)},wp.element.createElement("div",{className:"blockspare-block-post-grid-header"},r&&wp.element.createElement("div",{className:"blockspare-post-category",dangerouslySetInnerHTML:{__html:e.category_info.replace(/href=['"].*?['"]/g,"")},style:j}),a&&wp.element.createElement("h4",{className:"blockspare-block-post-grid-title",style:{fontSize:w+"px"}},wp.element.createElement("a",{style:{color:k||"#404040"},target:"_blank",rel:"bookmark"},fd(e.title.rendered.trim())||md("(Untitled)","blockspare"))),x&&(o||s)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-byline"},o&&e.author_info.display_name&&wp.element.createElement("div",{className:"blockspare-block-post-grid-author"},wp.element.createElement("a",{style:j,className:"blockspare-text-link",target:"_blank",href:e.author_info.author_link},e.author_info.display_name)),s&&e.date_gmt&&wp.element.createElement("time",{dateTime:cu()(e.date_gmt).utc().format(),className:"blockspare-block-post-grid-date",style:P},cu()(e.date_gmt).local().format("MMMM DD, Y","blockspare")))),(l||c)&&wp.element.createElement("div",{className:"blockspare-block-post-grid-excerpt"},l&&e.excerpt&&wp.element.createElement("div",{style:P,dangerouslySetInnerHTML:{__html:(m=e.excerpt.rendered,f=u,m.split(" ").splice(0,f).join(" "))}}),c&&wp.element.createElement("p",null,wp.element.createElement("a",{style:j,className:"blockspare-block-post-grid-more-link blockspare-text-link",href:e.link,target:"_blank",rel:"bookmark"},d)))));var m,f}))))}});const kd=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-latest-posts-list",{title:kd("BS Posts List","blockspare"),description:kd("Add posts list from selected categories.","blockspare"),category:"blockspare",icon:r.postlist,keywords:[kd("block","blockspare"),kd("post","blockspare"),kd("list","blockspare"),kd("blog","blockspare"),kd("archive","blockspare"),kd("article","blockspare"),kd("latest","blockspare"),kd("category","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{design:"blockspare-list-layout-1",postsToShow:3,displayPostCategory:!1,displayPostAuthor:!1,displayPostDate:!1,imageSize:"medium",postTitleFontSize:16}},edit:_d,save:()=>null});n(454),n(455);var wd=n(50),vd=n(259),Md=n.n(vd);const Ld=wp.i18n.__;Ld("Dark","blockspare"),Ld("Light","blockspare"),Ld("None","blockspare");wp.i18n.__;const Td=wp.element,Ed=(Td.Component,Td.Fragment,wp.components);Ed.SelectControl,Ed.ToggleControl,Ed.PanelBody,Ed.TextControl;const Sd=wp.i18n.__,xd=wp.element.Component,Cd=wp.blockEditor.InspectorControls,Dd=wp.components,Od=Dd.PanelBody,Yd=Dd.RangeControl;Dd.ToggleControl,Dd.SelectControl;var jd=class extends xd{constructor(){super(...arguments),this.setCaptionStyleTo=this.setCaptionStyleTo.bind(this)}componentDidUpdate(){this.props.attributes.gutter<=0&&this.props.setAttributes({radius:0})}setCaptionStyleTo(e){this.props.setAttributes({captionStyle:e})}getCaptionsHelp(e){return Sd(e?"Showing captions for each media item.":"Toggle to show media captions.","blockspare")}render(){const e=this.props,t=e.attributes,n=(e.setAttributes,t.captions,t.captionStyle,t.gutter);t.gridSize,Sd("Small","blockspare"),Sd("Medium","blockspare"),Sd("Large","blockspare");return wp.element.createElement(Cd,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Od,{title:Sd("Masonry Settings","blockspare")},wp.element.createElement(Yd,{label:Sd("Gutter","blockspare"),value:n,onChange:e=>this.props.setAttributes({gutter:e}),min:0,max:50,step:5}))))}};function Pd(){return(Pd=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}function Nd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Bd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nd(Object(n),!0).forEach((function(t){Ad(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ad(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Hd=wp.i18n.__,zd=wp.element,Id=zd.Component,Fd=zd.Fragment,Rd=wp.compose.compose,Wd=wp.data.withSelect,Ud=wp.components,qd=Ud.withNotices,Gd=Ud.Toolbar,Vd=Ud.IconButton,$d=wp.blockEditor,Jd=$d.BlockControls,Xd=$d.MediaUpload,Qd=$d.MediaUploadCheck,Kd={transitionDuration:0,percentPosition:!0};var Zd=Rd([Wd(e=>({editorSidebarOpened:e("core/edit-post").isEditorSidebarOpened(),pluginSidebarOpened:e("core/edit-post").isPluginSidebarOpened(),publishSidebarOpened:e("core/edit-post").isPublishSidebarOpened(),wideControlsEnabled:e("core/editor").getEditorSettings().alignWide})),qd])(class extends Id{constructor(){super(...arguments),this.onRemoveImage=this.onRemoveImage.bind(this),this.onSelectImage=this.onSelectImage.bind(this),this.onMoveForward=this.onMoveForward.bind(this),this.onMoveBackward=this.onMoveBackward.bind(this),this.setImageAttributes=this.setImageAttributes.bind(this),this.onEditSelectImages=this.onEditSelectImages.bind(this),this.state={selectedImage:null}}componentDidMount(){"xlrg"===this.props.attributes.gridSize&&this.props.setAttributes({align:"center",gridSize:"lrg"})}componentDidUpdate(e){!this.props.isSelected&&e.isSelected&&this.setState({selectedImage:null,captionSelected:!1})}onSelectImage(e){return()=>{this.state.selectedImage!==e&&this.setState({selectedImage:e})}}onMove(e,t){const n=[...this.props.attributes.images];n.splice(t,1,this.props.attributes.images[e]),n.splice(e,1,this.props.attributes.images[t]),this.setState({selectedImage:t}),this.props.setAttributes({images:n})}onMoveForward(e){return()=>{e!==this.props.attributes.images.length-1&&this.onMove(e,e+1)}}onMoveBackward(e){return()=>{0!==e&&this.onMove(e,e-1)}}onRemoveImage(e){return()=>{const t=ni()(this.props.attributes.images,(t,n)=>e!==n);this.setState({selectedImage:null}),this.props.setAttributes({images:t})}}setImageAttributes(e,t){const n=this.props,a=n.attributes.images,r=n.setAttributes;a[e]&&r({images:[...a.slice(0,e),Bd({},a[e],{},t),...a.slice(e+1)]})}onEditSelectImages(e){this.props.setAttributes({images:e.map(e=>Ri(e,this.props.attributes.images))})}render(){const e=this.props,t=e.attributes,n=(e.className,e.isSelected),a=(e.noticeUI,t.align,t.captions),r=t.gridSize,o=t.gutter,s=t.images,l=t.linkTo,c=!!s.length,u=wp.element.createElement(as,this.props),d=i()(`has-grid-${r}`,{[`has-gutter-${o}`]:o>0});return c?wp.element.createElement(Fd,null,n&&wp.element.createElement(jd,this.props),wp.element.createElement(Jd,null,c&&wp.element.createElement(Fd,null,wp.element.createElement(Gd,null,wp.element.createElement(Qd,null,wp.element.createElement(Xd,{onSelect:this.onEditSelectImages,allowedTypes:Wi,multiple:!0,gallery:!0,value:s.map(e=>e.id),render:({open:e})=>wp.element.createElement(Vd,{className:"components-toolbar__control",label:Hd("Edit gallery","blockspare"),icon:"edit",onClick:e})}))))),wp.element.createElement("div",{className:"blockspare-blocks blockspare-masonry-wrapper"},u,wp.element.createElement(Md.a,{elementType:"ul",className:d,options:Kd,disableImagesLoaded:!1,updateOnEachImageLoad:!1},s.map((e,t)=>{const r=sprintf(Hd("image %1$d of %2$d in gallery","blockspare"),t+1,s.length);return wp.element.createElement("li",{className:"blockspare-gallery-item",key:e.id||e.url},wp.element.createElement(Ni,{url:e.url,alt:e.alt,id:e.id,imgLink:e.imgLink,linkTo:l,isFirstItem:0===t,isLastItem:t+1===s.length,isSelected:n&&this.state.selectedImage===t,onSelect:this.onSelectImage(t),onMoveBackward:this.onMoveBackward(t),onMoveForward:this.onMoveForward(t),onRemove:this.onRemoveImage(t),setAttributes:e=>this.setImageAttributes(t,e),caption:e.caption,"aria-label":r,captions:a,supportsCaption:!0}))}),wp.element.createElement("li",{className:"blockspare-gallery-item blockspare-gallery-upload"},n&&wp.element.createElement("div",{className:"blockspare-add-more-slide"},wp.element.createElement(Qd,null,wp.element.createElement(Xd,{onSelect:this.onEditSelectImages,allowedTypes:Wi,multiple:!0,gallery:!0,value:s.map(e=>e.id),render:({open:e})=>wp.element.createElement(Vd,{className:"aft-cta-inspector-media",label:Hd("Edit image","blockspare"),icon:"plus-alt",onClick:e},Hd("Add Image","blockspare"))}))))))):wp.element.createElement(Qi,Pd({},this.props,{label:Hd("Masonry","blockspare"),icon:"lionk"}))}});const ep=wp.blockEditor.RichText;var tp=({attributes:e,className:t})=>{const n=e.captions,a=e.gridSize,r=e.gutter,o=e.images,s=e.linkTo,l=(e.lightbox,e.rel),c=e.target,u=i()({"has-gutter":r>0}),d=i()(`has-grid-${a}`,{[`has-gutter-${r}`]:r>0});return wp.element.createElement("div",{className:"blockspare-blocks blockspare-masonry-wrapper"},wp.element.createElement("div",{className:u},wp.element.createElement("ul",{className:d},o.map(e=>{let t;switch(s){case"media":t=e.url;break;case"attachment":t=e.link}e.imgLink&&(t=e.imgLink);const a=wp.element.createElement("img",{src:e.url,alt:e.alt,"data-id":e.id,"data-imglink":e.imgLink,"data-link":e.link,className:e.id?`wp-image-${e.id}`:null});return wp.element.createElement("li",{key:e.id||e.url,className:"blockspare-gallery-item"},wp.element.createElement("figure",{className:"blockspare-gallery-figure"},t?wp.element.createElement("a",{href:t,target:c,rel:l},a):a,n&&e.caption&&e.caption.length>0&&wp.element.createElement(ep.Content,{tagName:"figcaption",className:"blockspare-gallery-caption",value:e.caption})))}))))};var np={images:{type:"array",default:[],source:"query",selector:".blockspare-gallery-item",query:{url:{source:"attribute",selector:"img",attribute:"src"},link:{source:"attribute",selector:"img",attribute:"data-link"},imgLink:{source:"attribute",selector:"img",attribute:"data-imglink"},alt:{source:"attribute",selector:"img",attribute:"alt",default:""},id:{source:"attribute",selector:"img",attribute:"data-id"},caption:{type:"array",source:"children",selector:"figcaption"}}},linkTo:{type:"string",default:"none"},target:{type:"string"},rel:{type:"string",default:""},align:{type:"string"},gutter:{type:"number",default:15},captions:{type:"boolean",default:!1},captionStyle:{type:"string",default:"dark"},captionColor:{type:"string"}};function ap(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function rp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const op=blockspare_globals,ip=wp.i18n.__,sp=wp.blocks.registerBlockType,lp=wd.name,cp=wd.category,up=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ap(Object(n),!0).forEach((function(t){rp(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ap(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},np,{},wd.attributes);sp(lp,{title:ip("BS Image Masonry","blockspare"),description:ip("Add Masonry Items","blockspare"),category:cp,icon:r.masonry,attributes:up,keywords:[ip("block","blockspare"),ip("image","blockspare"),ip("masonry","blockspare"),ip("gallery","blockspare"),ip("column","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{gridSize:"lrg",gutter:5,images:[{url:op.menu_img_url},{url:op.img},{url:op.menu_img_url},{url:op.img},{url:op.menu_img_url},{url:op.menu_img_url},{url:op.img},{url:op.menu_img_url},{url:op.img}]}},edit:Zd,save:tp});n(456),n(457);var dp=n(51);const pp=wp.i18n.__,mp=wp.element,fp=mp.Component,hp=(mp.Fragment,wp.blockEditor),bp=hp.InspectorControls,gp=hp.PanelColorSettings,yp=wp.components,_p=yp.PanelBody,kp=(yp.ToggleControl,yp.RangeControl);class vp extends fp{render(){const e=this.props.attributes,t=e.textsColor,n=e.backGroundColor,a=e.boxBorderColor,r=(e.buttonBackgroundColor,e.buttonTextColor,e.buttonSize,e.buttonShape,e.buttonTarget,e.paddingTop),o=e.paddingRight,i=e.paddingBottom,s=e.paddingLeft,l=e.marginTop,c=e.marginBottom,u=(e.enableButton,e.buttonStyle,e.borderColor,e.borderBtnTextColor,e.fontSize),d=(e.enableGradient,e.backgroundColor1,e.backgroundColor2,e.gradientAngle,e.colorLocation1,e.colorLocation2,e.borderRadius,e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.btnFontWeight,e.btnBorderWidth,this.props.setAttributes);return wp.element.createElement(bp,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(_p,{title:pp("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(kp,{label:pp("Font Size","blockspare"),value:u,onChange:e=>d({fontSize:e}),min:14,step:2,max:36}),wp.element.createElement(gp,{title:pp("Texts Color","blockspare"),initialOpen:!0,colorSettings:[{value:t,onChange:e=>d({textsColor:e}),label:pp("Texts Color","blockspare")},{value:n,onChange:e=>d({backGroundColor:e}),label:pp("Background Color","blockspare")},{value:a,onChange:e=>d({boxBorderColor:e}),label:pp("Dash Color","blockspare")}]})),wp.element.createElement(_p,{title:pp("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(_p,{title:pp("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:r,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>d({paddingTop:e}),paddingEnableRight:!0,paddingRight:o,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>d({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:i,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>d({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:s,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>d({paddingLeft:e})})),wp.element.createElement(_p,{title:pp("Margin Settings","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:l,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>d({marginTop:e}),marginEnableBottom:!0,marginBottom:c,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>d({marginBottom:e})})))))}}function Mp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Lp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Tp=wp.element.Component;class Ep extends Tp{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.backGroundColor,a=t.boxBorderColor,r=t.sectionAlignment,o=t.paddingTop,i=t.paddingRight,s=t.paddingBottom,l=t.paddingLeft,c=t.marginTop,u=t.marginBottom,d=t.borderRadius,p=e.attributes,m=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mp(Object(n),!0).forEach((function(t){Lp(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Yt(p),{backgroundColor:n||"#fff",borderColor:a||"#cc0000",textAlign:r,paddingTop:o?o+"px":void 0,paddingRight:i?i+"px":void 0,paddingBottom:s?s+"px":void 0,paddingLeft:l?l+"px":void 0,marginTop:c?c+"px":void 0,marginBottom:u?u+"px":void 0,borderRadius:d+"px"});return wp.element.createElement("div",{className:"blockspare-noticebar-wrapper blockspare-blocks",style:m},this.props.children)}}function Sp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function xp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sp(Object(n),!0).forEach((function(t){Cp(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Cp(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Dp=wp.element.Component,Op=wp.blockEditor,Yp=Op.AlignmentToolbar,jp=Op.URLInput,Pp=Op.BlockControls,Np=Op.RichText,Bp=wp.components,Ap=Bp.IconButton,Hp=Bp.Dashicon,zp=wp.blocks.registerBlockType,Ip=wp.i18n.__,Fp=dp.name,Rp=dp.category;const Wp=xp({},dp.attributes,{},Ie,{},Jt);zp(Fp,{title:Ip("BS Notice Bar","blockspare"),description:Ip("BS Notice Bar allow you to add various type of notices","blockspare"),category:Rp,icon:r.notice,attributes:Wp,keywords:[Ip("block","blockspare"),Ip("notice","blockspare"),Ip("bar","blockspare"),Ip("announcement","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends Dp{render(){const e=this.props,t=e.attributes,n=(t.align,t.buttonText),a=t.buttonUrl,r=t.buttonAlignment,o=t.buttonSize,s=t.buttonShape,l=t.noticeContent,c=t.sectionAlignment,u=t.textsColor,d=t.enableButton,p=t.fontSize,m=e.attributes,f=e.isSelected,h=e.setAttributes,b=xp({},ze(m));return[wp.element.createElement(Pp,null,wp.element.createElement(Yp,{value:c,onChange:e=>{h({sectionAlignment:e})}})),wp.element.createElement(vp,xp({setAttributes:h},this.props)),wp.element.createElement(Ep,this.props,wp.element.createElement("div",{className:"blockspare-section-notice-wrap",style:{textAlign:c,color:u}},wp.element.createElement(Np,{tagName:"div",placeholder:Ip("Add your notice here..","blockspare"),keepPlaceholderOnFocus:!0,value:l,className:"blockspare-title",style:{fontSize:p+"px"},onChange:e=>h({noticeContent:e})})),d&&wp.element.createElement(ye,this.props,wp.element.createElement(Np,{tagName:"span",placeholder:Ip("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:n,allowedFormats:[],className:i()("blockspare-button",s,o),style:b,onChange:e=>h({buttonText:e})}),f&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${r}`,onSubmit:e=>e.preventDefault()},wp.element.createElement(Hp,{icon:"admin-links"}),wp.element.createElement(jp,{className:"button-url",value:a,onChange:e=>h({buttonUrl:e})}),wp.element.createElement(Ap,{icon:"editor-break",label:Ip("Apply","blockspare"),type:"submit"}))))]}},save:function(e){const t=e.attributes,n=t.align,a=t.buttonText,r=t.buttonUrl,o=t.buttonTarget,s=t.buttonSize,l=t.buttonShape,c=t.sectionAlignment,u=t.noticeContent,d=t.textsColor,p=t.backGroundColor,m=t.boxBorderColor,f=t.paddingTop,h=t.paddingRight,b=t.paddingBottom,g=t.paddingLeft,y=t.marginTop,_=t.marginBottom,k=t.enableButton,w=t.fontSize,v=t.borderRadius,M=xp({},Yt(e.attributes),{textAlign:c,backgroundColor:p||"#fff",borderColor:m||"#cc0000",paddingTop:f?f+"px":void 0,paddingRight:h?h+"px":void 0,paddingBottom:b?b+"px":void 0,paddingLeft:g?g+"px":void 0,marginTop:y?y+"px":void 0,marginBottom:_?_+"px":void 0,borderRadius:v+"px"}),L=xp({},ze(e.attributes));return wp.element.createElement("div",{className:i()("blockspare-noticebar-wrapper","blockspare-blocks","align"+n),style:M},wp.element.createElement("div",{className:"blockspare-section-notice-wrap",style:{textAlign:c,color:d||"#4c4c4c"}},wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement("div",e,u&&wp.element.createElement(Np.Content,{tagName:"div",className:"blockspare-notice-content",value:u,style:{fontSize:w+"px"}})))),k&&wp.element.createElement(ye,e,a&&wp.element.createElement("a",{href:r,target:o?"_blank":null,rel:o?"noopener noreferrer":null,className:i()("blockspare-button",l,s),style:L},wp.element.createElement(Np.Content,{value:a}))))}});var Up=n(52);const qp=wp.element.Component;class Gp extends qp{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=(e.backgroundColor,e.align),n=i()(["blockspare-price-list-section-admin blockspare-price-list"],{["align"+t]:t});return wp.element.createElement("div",{className:n||void 0},this.props.children)}}n(458),n(459);var Vp=n(88);const $p=wp.i18n.__,Jp=wp.element.Component,Xp=wp.blockEditor,Qp=Xp.InspectorControls,Kp=Xp.PanelColorSettings,Zp=wp.components,em=Zp.PanelBody,tm=Zp.ToggleControl;Zp.SelectControl,Zp.RangeControl;class nm extends Jp{render(){const e=this.props,t=e.attributes,n=(t.layoutOptions,t.priceUnitPosition,t.showDots),a=(t.priceTitleColor,t.priceColor),r=t.priceUnitColor,o=(t.backgroundColor,t.priceDescriptionColor,t.showImage),i=(t.imgIconOption,t.name,t.iconSize,t.iconStyles,t.iconBackgroundColor,t.iconBorderColor,t.iconColor,t.borderRadius,t.paddingTop),s=t.paddingRight,l=t.paddingBottom,c=t.paddingLeft,u=t.marginTop,d=t.marginBottom,p=(t.blockBorderRadius,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.setAttributes);$p("Layout 1","blockspare"),$p("Layout 2","blockspare"),$p("Layout 3","blockspare"),$p("Before Price","blockspare"),$p("After Price","blockspare"),$p("Icon","blockspare"),$p("Image","blockspare");return wp.element.createElement(Qp,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(em,{title:$p("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(tm,{label:$p("Display Image ","blockspare"),checked:o,onChange:()=>this.props.setAttributes({showImage:!o})}),wp.element.createElement(tm,{label:$p("Display Dots","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showDots:!n})})),wp.element.createElement(em,{title:$p("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement(Kp,{title:$p("Colors","blockspare"),initialOpen:!0,colorSettings:[{value:a,onChange:e=>p({priceColor:e}),label:$p("Price Color","blockspare")},{value:r,onChange:e=>p({priceUnitColor:e}),label:$p("Unit Color","blockspare")}]})),wp.element.createElement(em,{title:$p("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(em,{title:$p("Padding Settings","blockspare"),initialOpen:!0},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:i,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>p({paddingTop:e}),paddingEnableRight:!0,paddingRight:s,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>p({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:l,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>p({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:c,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>p({paddingLeft:e})})),wp.element.createElement(em,{title:$p("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:u,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>p({marginTop:e}),marginEnableBottom:!0,marginBottom:d,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>p({marginBottom:e})})))))}}function am(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function rm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?am(Object(n),!0).forEach((function(t){om(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):am(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function om(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const im=blockspare_globals,sm=["core/image"],lm=[["core/image",{url:im.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],cm=wp.i18n.__,um=wp.element,dm=um.Component,pm=um.Fragment,mm=wp.blockEditor,fm=mm.RichText,hm=mm.InnerBlocks;function bm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function gm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bm(Object(n),!0).forEach((function(t){ym(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ym(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const _m=wp.blockEditor,km=_m.InnerBlocks,wm=_m.RichText,vm=wp.element.Component;function Mm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Lm(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Tm=wp.i18n.__,Em=wp.blocks.registerBlockType,Sm=Vp.category,xm=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mm(Object(n),!0).forEach((function(t){Lm(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Vp.attributes,{},Ut,{},Jt),Cm={title:Tm("Price List Item","blockspare"),description:Tm("Display creative Price List, Menu .","blockspare"),parent:["blockspare/blockspare-price-list"],icon:"link",category:Sm,supports:{html:!1,inserter:!1,reusable:!1},attributes:xm,edit:class extends dm{render(){const e=this.props,t=e.attributes,n=t.price,a=t.priceTitle,r=t.priceDescription,o=t.priceUnit,s=t.layoutOptions,l=t.priceUnitPosition,c=t.showDots,u=t.priceTitleColor,d=t.priceColor,p=t.priceUnitColor,m=t.priceDescriptionColor,f=t.backgroundColor,h=t.showImage,b=t.imgIconOption,g=t.name,y=t.iconSize,_=t.iconStyles,k=t.blockBorderRadius,w=e.attributes,v=e.setAttributes,M=rm({},Xr(w));return wp.element.createElement(pm,null,wp.element.createElement(nm,this.props),wp.element.createElement("div",{className:i()("blockspare-price-list-wrap",s,l),style:rm({},jt(w),{},Yt(w),{backgroundColor:f||"#fff",borderRadius:k||null})},wp.element.createElement("div",{className:"blockspare-img-wrapper"},h&&"image"==b&&wp.element.createElement(hm,{template:lm,allowedBlocks:sm,templateLock:!0,templateInsertUpdatesSelection:!0})),h&&"icon"==b&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",y,_),style:M},wp.element.createElement("i",{className:g}))),wp.element.createElement("div",{className:"blockspare-price-content"},wp.element.createElement("div",{className:"blockspare-price-header"},wp.element.createElement(fm,{tagName:"h4",className:"blockspare-title",onChange:e=>v({priceTitle:e}),value:a,style:{color:u||"#404040"},placeholder:cm("Title","blockspare"),keepPlaceholderOnFocus:!0}),c&&wp.element.createElement("span",{className:"blockspare-price-divider",style:{color:m||"#6d6d6d"}}),wp.element.createElement("div",{className:"blockspare-price-unit-wrap"},wp.element.createElement(fm,{tagName:"span",className:"blockspare-price",onChange:e=>v({price:e}),value:n,style:{color:d||"#af0000"},placeholder:cm("Price","blockspare"),keepPlaceholderOnFocus:!0}),wp.element.createElement(fm,{tagName:"span",className:"blockspare-unit",onChange:e=>v({priceUnit:e}),value:o,style:{color:p||"#af0000"},placeholder:cm("$","blockspare"),keepPlaceholderOnFocus:!0}))),wp.element.createElement(fm,{tagName:"p",className:"blockspare-description",onChange:e=>v({priceDescription:e}),value:r,placeholder:cm("Description","blockspare"),style:{color:m||"#6d6d6d"},keepPlaceholderOnFocus:!0}))))}},save:class extends vm{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.priceTitle,a=t.priceDescription,r=t.priceUnit,o=t.price,s=t.layoutOptions,l=t.priceUnitPosition,c=t.showDots,u=t.priceTitleColor,d=t.priceColor,p=t.priceUnitColor,m=t.priceDescriptionColor,f=t.backgroundColor,h=t.showImage,b=t.imgIconOption,g=t.name,y=t.iconSize,_=t.iconStyles,k=t.blockBorderRadius,w=e.attributes,v=gm({},Xr(w));return wp.element.createElement("div",{className:i()("blockspare-price-list-wrap",s,l),style:gm({},jt(w),{},Yt(w),{backgroundColor:f||"#fff",borderRadius:k||null})},wp.element.createElement("div",{className:"blockspare-imge-wrapper"},h&&"image"==b&&wp.element.createElement(km.Content,null)),h&&"icon"==b&&wp.element.createElement("div",{className:"blockspare-block-icon-wrapper"},wp.element.createElement("div",{className:i()("blockspare-block-icon",y,_),style:v},wp.element.createElement("i",{className:g}))),wp.element.createElement("div",{className:"blockspare-price-content"},wp.element.createElement("div",{className:"blockspare-price-header"},wp.element.createElement(wm.Content,{tagName:"h4",className:"blockspare-title",value:n,style:{color:u||"#404040"}}),c&&wp.element.createElement("span",{className:"blockspare-price-divider",style:{color:m||"#6d6d6d"}}),wp.element.createElement("div",{className:"blockspare-price-unit-wrap"},wp.element.createElement(wm.Content,{tagName:"span",className:"blockspare-price",value:o,style:{color:d||"#af0000"}}),wp.element.createElement(wm.Content,{tagName:"span",className:"blockspare-unit",value:r,style:{color:p||"#af0000"}}))),wp.element.createElement(wm.Content,{tagName:"p",className:"blockspare-description",value:a,style:{color:m||"#6d6d6d"}})))}}};Em("blockspare/list-item",Cm);const Dm=wp.i18n.__,Om=wp.element,Ym=Om.Component,jm=Om.Fragment,Pm=wp.components,Nm=(Pm.IconButton,Pm.PanelBody),Bm=wp.blocks.createBlock,Am=wp.data,Hm=Am.withSelect,zm=Am.withDispatch,Im=wp.blockEditor,Fm=Im.InnerBlocks,Rm=Im.InspectorControls,Wm=Im.PanelColorSettings,Um=wp.compose.compose;var qm=Um([Hm((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),zm(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Ym{constructor(...e){var t,n,a;super(...e),a=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/list-item",{}]);return t},(n="getPriceTemplate")in(t=this)?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertPriceItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes.itemNumber+1,n=Cm.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=Cm;a(Bm("blockspare/list-item",e),void 0,n)}render(){const e=this.props,t=(e.align,e.attributes),n=e.backgroundColor,a=(e.isSelectedBlockInRoot,e.setAttributes);e.attributes.uniqueId;return[wp.element.createElement(jm,null,wp.element.createElement(Rm,null,wp.element.createElement(Nm,{title:Dm("Block Settings","blockspare")},wp.element.createElement(Wm,{title:Dm("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>a({backgroundColor:e}),label:Dm("Background Color","blockspare")}]}))),wp.element.createElement(Gp,this.props,wp.element.createElement(Fm,{template:this.getPriceTemplate(t),allowedBlocks:["blockspare/list-item"]})))]}});const Gm=wp.element.Component,Vm=wp.blockEditor.InnerBlocks;var $m=class extends Gm{render(){const e=this.props.attributes,t=e.uniqueId,n=(e.itemToggle,e.align),a=(e.backgroundColor,`blockspare-block-pricelist blockspare-blocks blockspare-block-${t} align${n}`);return wp.element.createElement("div",{className:a},wp.element.createElement(Vm.Content,null))}};const Jm=wp.i18n.__,Xm=(wp.element.Component,wp.blocks.registerBlockType);!function(e){if(null==e)throw new TypeError("Cannot destructure undefined")}(wp.blockEditor);const Qm=Up.name,Km=Up.category,Zm=Up.attributes;Xm(Qm,{title:Jm("BS Price List","blockspare"),description:Jm("Add a price list.","blockspare"),category:Km,icon:r.pricingList,attributes:Zm,keywords:[Jm("block","blockspare"),Jm("price","blockspare"),Jm("list","blockspare"),Jm("table","blockspare"),Jm("pricing","blockspare"),Jm("shop","blockspare"),Jm("purchase","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},edit:qm,save:$m});var ef=n(53);const tf=wp.element.Component;class nf extends tf{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,a=(t.columnsGap,t.align),r=(e.attributes,i()([this.props.className,"blockspare-pricing-columns-"+n],{["align"+a]:a}));return wp.element.createElement("div",{className:r||void 0},this.props.children)}}const af=wp.i18n.__,rf=wp.element.Component,of=wp.blockEditor.InspectorControls,sf=wp.components,lf=(sf.Toolbar,sf.Button,sf.PanelBody),cf=(sf.PanelRow,sf.RangeControl);class uf extends rf{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,a=t.columnsGap,r=t.marginTop,o=t.marginBottom,i=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(of,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper pricing-table-blockspare"},wp.element.createElement(lf,{title:af("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(cf,{label:af("Pricing Columns","blockspare"),value:n,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:2,withInputField:!1}),wp.element.createElement(cf,{label:af("Pricing Columns Gap","blockspare"),value:a,withInputField:!1,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})),wp.element.createElement(lf,{title:af("Block Gaps","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:r,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>i({marginTop:e}),marginEnableBottom:!0,marginBottom:o,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>i({marginBottom:e})}))))}}var df=n(54);const pf=wp.i18n.__,mf=wp.element,ff=mf.Component,hf=(mf.Fragment,wp.blockEditor),bf=hf.InspectorControls,gf=(hf.BlockDescription,hf.MediaUpload,hf.PanelColorSettings),yf=wp.components,_f=(yf.Dashicon,yf.Button,yf.PanelBody),kf=(yf.SelectControl,yf.FormToggle,yf.RangeControl);yf.TextControl,yf.ToggleControl;class wf extends ff{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.borderWidth,a=t.borderColor,r=(t.borderRadius,t.backgroundColor),o=t.padding,i=t.sectionScale,s=(t.enableBadge,t.badgeText,t.badgeStyle,t.badgeOption,t.imgID1,t.imgURL1,t.imgAlt1,t.badgeTextColor,t.badgeBackGroundColor,t.badgeImgSize,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,e.isSelected,e.className,e.setAttributes);pf("Style 1","blockspare"),pf("Style 2","blockspare"),pf("Style 3","blockspare"),pf("Text","blockspare"),pf("Image","blockspare");return wp.element.createElement(bf,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(_f,{title:pf("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(kf,{label:pf("Pricing Column Padding","blockspare"),value:o,onChange:e=>this.props.setAttributes({padding:e}),min:0,max:20,step:1}),wp.element.createElement(kf,{label:pf("Pricing Column Border","blockspare"),value:n,onChange:e=>this.props.setAttributes({borderWidth:e}),min:0,max:10,step:1}),wp.element.createElement(kf,{label:pf("Scale Ratio","blockspare"),value:i,onChange:e=>this.props.setAttributes({sectionScale:e}),min:0,max:2,step:1})),wp.element.createElement(_f,{title:pf("Color Settings","blockspare"),initialOpen:!1},0<n&&wp.element.createElement(gf,{title:pf("Border Color","blockspare"),initialOpen:!1,colorSettings:[{value:a,onChange:e=>s({borderColor:e}),label:pf("Border Color","blockspare")}]}),wp.element.createElement(gf,{title:pf("Background Color","blockspare"),initialOpen:!1,colorSettings:[{value:r,onChange:e=>s({backgroundColor:e}),label:pf("Background Color","blockspare")}]}))))}}n(460),n(461);function vf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Mf(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vf(Object(n),!0).forEach((function(t){Lf(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Tf=wp.i18n.__,Ef=(wp.element.Component,wp.blocks.registerBlockType),Sf=wp.blockEditor.InnerBlocks,xf=wp.element.Fragment,Cf=["blockspare/blockspare-pricing-inner-title","blockspare/blockspare-pricing-inner-price","blockspare/blockspare-pricing-inner-description","blockspare/blockspare-pricing-inner-button","blockspare/blockspare-iconset"],Df=(df.name,df.category),Of=Mf({},df.attributes,{},Jt),Yf={title:Tf("BS Pricing Column","blockspare"),description:Tf("Add a pricing column.","blockspare"),icon:"cart",category:Df,parent:["blockspare/blockspare-pricing"],keywords:[Tf("pricing","blockspare"),Tf("shop","blockspare"),Tf("buy","blockspare")],attributes:Of,edit:function(e){const t=e.attributes,n=t.borderWidth,a=t.borderColor,r=t.borderRadius,o=t.backgroundColor,s=t.padding,l=t.alignment,c=t.sectionScale,u=t.enableBadge,d=t.badgeText,p=t.badgeStyle,m=t.badgeOption,f=(t.imgID1,t.imgURL1),h=t.imgAlt1,b=t.badgeTextColor,g=t.badgeBackGroundColor,y=t.badgeImgSize,_=(t.attributes,t.isSelected,t.className,t.setAttributes,Mf({},Yt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:a||"#ececec",borderRadius:r||null,backgroundColor:o||"#fff",padding:s?s+"%":null})),k={color:b||"#fff",backgroundColor:g},w={width:y+"px"};let v="";return v=u&&d&&"badge-text"===m?p:u&&"badge-image"===m?p+" has-image":"",wp.element.createElement(xf,null,wp.element.createElement(wf,e),wp.element.createElement("div",{className:i()(l?"blockspare-block-pricing-table-"+l:"blockspare-block-pricing-table-center","blockspare-block-pricing-table")},wp.element.createElement("div",{className:i()("blockspare-block-pricing-table-inside",v,jf(c),{"has-scale-ratio":0!==c}),style:_},u&&d&&"badge-text"===m&&wp.element.createElement("div",{className:"blockspare-badge-wrapper"},wp.element.createElement("div",{className:"blockspare-badge"},wp.element.createElement("span",{className:i()(p),style:k},d))),u&&"badge-image"===m&&wp.element.createElement("div",{className:i()(p),style:w},wp.element.createElement("img",{src:f,alt:h})),wp.element.createElement(Sf,{template:[["blockspare/blockspare-iconset",{}],["blockspare/blockspare-pricing-inner-title",{headerTitle:"<strong> Price Title </strong>",headerSubTitle:"Enter Subtitle",titlePaddingTop:5,titlePaddingBottom:5,subtitlePaddingTop:10,subtitlePaddingBottom:10}],["blockspare/blockspare-pricing-inner-price",{price:"59",currency:"$",customFontSize:32,term:"/mo",paddingTop:10,paddingRight:20,paddingBottom:10,paddingLeft:20}],["blockspare/blockspare-pricing-inner-description",{features:"<li>40 Team Members</li><li>40 Personal Contacts</li><li>4000 Message</li>",multilineTag:"li",ordered:!1,customFontSize:16,FontSize:"small",paddingTop:15,paddingRight:20,paddingBottom:15,paddingLeft:20}],["blockspare/blockspare-pricing-inner-button",{buttonText:"Get Started",paddingTop:15,paddingRight:20,paddingBottom:35,paddingLeft:20}]],allowedBlocks:Cf,renderAppender:!1}))))},save:function(e){const t=e.attributes,n=t.borderWidth,a=t.borderColor,r=t.borderRadius,o=t.backgroundColor,s=t.alignment,l=t.padding,c=t.sectionScale,u=t.enableBadge,d=t.badgeText,p=t.badgeStyle,m=t.badgeOption,f=(t.imgID1,t.imgURL1),h=t.imgAlt1,b=t.badgeTextColor,g=t.badgeBackGroundColor,y=t.badgeImgSize,_=Mf({},Yt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:a||null,borderRadius:r||null,backgroundColor:o||"#fff",padding:l?l+"%":null}),k={color:b||"#fff",backgroundColor:g},w={width:y+"px"};let v="";return v=u&&d&&"badge-text"===m?p:u&&"badge-image"===m?p+" has-image":"",wp.element.createElement("div",{className:i()(s?"blockspare-block-pricing-table-"+s:"blockspare-block-pricing-table-center","blockspare-block-pricing-table"),itemScope:!0,itemType:"http://schema.org/Product"},wp.element.createElement("div",{className:i()("blockspare-block-pricing-table-inside",v,jf(c),{"has-scale-ratio":0!==c}),style:_},u&&d&&"badge-text"===m&&wp.element.createElement("div",{className:"blockspare-badge-wrapper"},wp.element.createElement("div",{className:"blockspare-badge"},wp.element.createElement("span",{className:i()(p),style:k},d))),u&&"badge-image"===m&&wp.element.createElement("div",{className:i()(p),style:w},wp.element.createElement("img",{src:f,alt:h})),wp.element.createElement(Sf.Content,null)))}};function jf(e){return"has-scale-ratio-"+1*Math.round(e)}function Pf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Nf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Ef("blockspare/blockspare-pricing-inner",Yf);wp.i18n.__;const Bf=wp.element,Af=Bf.Component,Hf=Bf.Fragment,zf=wp.components,If=(zf.IconButton,zf.PanelBody,zf.RangeControl,zf.ToggleControl,wp.blocks.createBlock),Ff=wp.data,Rf=Ff.withSelect,Wf=Ff.withDispatch,Uf=wp.blockEditor,qf=Uf.InnerBlocks,Gf=(Uf.InspectorControls,wp.compose.compose);var Vf=Gf([Rf((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),Wf(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Af{constructor(...e){super(...e),Nf(this,"getServiceTemplate",e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/blockspare-pricing-inner",{}]);return t})}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertServiceItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes.itemNumber+1,n=Yf.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=Yf;a(If("blockspare/blockspare-pricing-inner",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),a=n.marginTop,r=n.marginBottom,o=n.columnsGap,s=(e.isSelected,e.setAttributes);return wp.element.createElement(Hf,null,wp.element.createElement(uf,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pf(Object(n),!0).forEach((function(t){Nf(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:s},this.props)),wp.element.createElement("div",{className:"blockspare-blocks blockspare-pricing-block-wrapper",style:{marginTop:a?a+"px":void 0,marginBottom:r?r+"px":void 0}},wp.element.createElement(nf,this.props,wp.element.createElement("div",{className:i()("blockspare-pricing-table-wrap-admin","blockspare-block-pricing-table-gap-"+o)},wp.element.createElement(qf,{template:this.getServiceTemplate(t),allowedBlocks:["blockspare/blockspare-pricing-inner"],renderAppender:!1})))))}}),$f=n(260),Jf=n.n($f),Xf=n(261),Qf=n.n(Xf);const Kf=wp.i18n.__,Zf=(wp.element.Component,wp.blocks.registerBlockType),eh=wp.blockEditor.InnerBlocks,th=(Jf()(e=>Qf()(e,()=>["blockspare/blockspare-pricing-inner"])),ef.name),nh=ef.category,ah=ef.attributes;Zf(th,{title:Kf("BS Pricing Table","blockspare"),description:Kf("Add a pricing table.","blockspare"),category:nh,icon:r.pricingTable,attributes:ah,keywords:[Kf("block","blockspare"),Kf("price","blockspare"),Kf("list","blockspare"),Kf("table","blockspare"),Kf("pricing","blockspare"),Kf("shop","blockspare"),Kf("purchase","blockspare")],supports:{align:["wide","full","center"],html:!0},example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},edit:Vf,save:function(e){const t=e.attributes,n=t.align,a=(t.columns,t.columnsGap),r=t.marginTop,o=t.marginBottom,s=i()(["blockspare-pricing-table-wrap","blockspare-block-pricing-table-gap-"+a]);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-pricing-block-wrapper","align"+n),style:{marginTop:r?r+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(nf,e,wp.element.createElement("div",{className:s||void 0},wp.element.createElement(eh.Content,null))))}});var rh=n(89);const oh=wp.i18n.__,ih=wp.element.Component,sh=(wp.compose.compose,wp.blockEditor.InspectorControls),lh=wp.components,ch=(lh.withFallbackStyles,lh.PanelBody);class uh extends ih{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.titleFontSize,n=e.subtitleFontSize,a=e.headerTagOption,r=e.headertitleColor,o=e.headersubtitleColor,i=e.headerlayoutOption,s=e.titlePaddingTop,l=e.titlePaddingBottom,c=e.subtitlePaddingTop,u=e.subtitlePaddingBottom,d=e.dashColor,p=e.headerboxColor,m=this.props.setAttributes;return wp.element.createElement(sh,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(ch,{title:oh("Header Settings","blockspare"),initialOpen:!0},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:t,onChangetitleFontSize:e=>m({titleFontSize:e}),subtitleFontSize:n,onChangesubtitleFontSize:e=>m({subtitleFontSize:e}),headerlayoutOption:i,onChangeHeaderStyle:e=>m({headerlayoutOption:e}),headerTagOption:a,onChangeHeaderTag:e=>m({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>m({headerboxColor:e}),dashColor:d,onChangeDashColor:e=>m({dashColor:e}),headertitleColor:r,onChangetitlecolor:e=>m({headertitleColor:e}),titlePaddingTop:s,onChangetitlePaddingTop:e=>m({titlePaddingTop:e}),titlePaddingBottom:l,onChangetitlePaddingBottom:e=>m({titlePaddingBottom:e}),headersubtitleColor:o,onChangesubtitlecolor:e=>m({headersubtitleColor:e}),subtitlePaddingTop:c,onChangesubtitlePaddingTop:e=>m({subtitlePaddingTop:e}),subtitlePaddingBottom:u,onChangesubtitlePaddingBottom:e=>m({subtitlePaddingBottom:e})}))))}}function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){mh(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const fh=wp.i18n.__,hh=(wp.compose.compose,wp.element),bh=hh.Component,gh=hh.Fragment,yh=wp.blockEditor,_h=yh.RichText,kh=yh.AlignmentToolbar,wh=yh.BlockControls;function vh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vh(Object(n),!0).forEach((function(t){Lh(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Th=wp.i18n.__,Eh=wp.blocks.registerBlockType,Sh=wp.blockEditor,xh=Sh.RichText,Ch=(Sh.getFontSizeClass,Sh.getColorClassName,rh.name),Dh=rh.category,Oh=Mh({},Wt);Eh(Ch,{title:Th("Price Title","blockspare"),description:Th("Adds a product title component with schema markup.","blockspare"),category:Dh,icon:r.sectionHeader,attributes:Oh,parent:["blockspare/blockspare-pricing-inner"],keywords:[Th("pricing table","blockspare"),Th("title","blockspare"),Th("shop","blockspare")],edit:class extends bh{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.headerTagOption,r=t.headerTitle,o=t.headerSubTitle,i=e.attributes,s=e.setAttributes,l=ph({},Gt(i)),c=ph({},Vt(i)),u=ph({},$t(i));return[wp.element.createElement(gh,null,wp.element.createElement(wh,{key:"controls"},wp.element.createElement(kh,{value:n,onChange:e=>{s({sectionAlignment:e})}})),wp.element.createElement(uh,this.props),wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(_h,{tagName:a,placeholder:fh("Title","blockspare"),keepPlaceholderOnFocus:!0,value:r,className:"blockspare-title",style:c,onChange:e=>s({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(_h,{tagName:"p",placeholder:fh("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:u,onChange:e=>s({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})))))]}},save:function(e){const t=e.attributes,n=t.headerTagOption,a=t.headerTitle,r=t.headerSubTitle,o=Mh({},Gt(e.attributes)),i=Mh({},Vt(e.attributes)),s=Mh({},$t(e.attributes));return wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement(Rt,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),a&&wp.element.createElement(xh.Content,{tagName:n,className:"blockspare-title",style:i,value:a}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),r&&wp.element.createElement(xh.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:r}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o}))))}});var Yh=n(55);function jh(){return(jh=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const Ph=wp.i18n.__,Nh=wp.element.Component,Bh=wp.compose.compose,Ah=wp.blockEditor,Hh=Ah.InspectorControls,zh=(Ah.FontSizePicker,Ah.withFontSizes),Ih=Ah.withColors,Fh=Ah.ContrastChecker,Rh=Ah.PanelColorSettings,Wh=wp.components,Uh=Wh.withFallbackStyles,qh=Wh.PanelBody,Gh=Wh.ToggleControl,Vh=Wh.TextControl,$h=(Wh.RangeControl,Uh((e,t)=>{const n=t.attributes,a=n.textColor,r=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:r||!l?void 0:l.backgroundColor,fallbackTextColor:a||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var Jh=Bh([$h,zh("fontSize"),Ih("backgroundColor",{textColor:"color"})])(class extends Nh{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.showTerm,a=t.showCurrency,r=t.term,o=t.currency,i=t.paddingTop,s=t.paddingRight,l=t.paddingBottom,c=t.paddingLeft,u=(e.isSelected,e.setAttributes),d=(e.fallbackFontSize,e.fontSize),p=(e.setFontSize,e.backgroundColor),m=e.textColor,f=(e.setBackgroundColor,e.setTextColor),h=e.fallbackBackgroundColor,b=e.fallbackTextColor;return wp.element.createElement(Hh,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(qh,{title:Ph("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(Gh,{label:Ph("Show currency symbol","blockspare"),checked:a,onChange:()=>this.props.setAttributes({showCurrency:!a})}),a&&wp.element.createElement(Vh,{label:Ph("Currency Symbol","blockspare"),type:"text",value:o,onChange:e=>this.props.setAttributes({currency:e})}),wp.element.createElement(Gh,{label:Ph("Show pricing duration","blockspare"),checked:n,onChange:()=>this.props.setAttributes({showTerm:!n})}),n&&wp.element.createElement(Vh,{label:Ph("Pricing Duration","blockspare"),type:"text",value:r,onChange:e=>this.props.setAttributes({term:e})})),wp.element.createElement(Rh,{title:Ph("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:m.color,onChange:f,label:Ph("Text Color","blockspare")}]},wp.element.createElement(Fh,jh({textColor:m.color,backgroundColor:p.color,fallbackTextColor:b,fallbackBackgroundColor:h},{fontSize:d.size}))),wp.element.createElement(qh,{title:Ph("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:i,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>u({paddingTop:e}),paddingEnableRight:!0,paddingRight:s,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>u({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:l,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>u({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:c,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>u({paddingLeft:e})}))))}});const Xh=wp.i18n.__,Qh=(wp.blocks.registerBlockType,wp.compose.compose),Kh=wp.element,Zh=Kh.Component,eb=Kh.Fragment,tb=wp.blockEditor,nb=tb.RichText,ab=tb.withFontSizes,rb=tb.withColors,ob=tb.AlignmentToolbar,ib=tb.BlockControls;var sb=Qh([ab("fontSize"),rb("backgroundColor",{textColor:"color"})])(class extends Zh{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.price,r=t.currency,o=t.term,s=t.showTerm,l=t.showCurrency,c=t.paddingTop,u=t.paddingRight,d=t.paddingBottom,p=t.paddingLeft,m=(e.isSelected,e.className,e.setAttributes),f=(e.fallbackFontSize,e.fontSize),h=e.backgroundColor,b=e.textColor,g=i()({"blockspare-pricing-table-price-wrap":!0,"has-background":h.color,[h.class]:h.class,"blockspare-pricing-has-currency":l}),y=i()({"blockspare-pricing-table-price":!0,[f.class]:f.class}),_={textAlign:n,backgroundColor:h.color,color:b.color?b.color:"#af0000",paddingTop:c?c+"px":void 0,paddingRight:u?u+"px":void 0,paddingBottom:d?d+"px":void 0,paddingLeft:p?p+"px":void 0},k={fontSize:f.size?f.size+"px":void 0};var w=Math.floor(f.size/2.5);const v={fontSize:f.size?w+"px":void 0};var M=Math.floor(f.size/2.5);const L={fontSize:f.size?M+"px":void 0};return[wp.element.createElement(eb,null,wp.element.createElement(ib,{key:"controls"},wp.element.createElement(ob,{value:n,onChange:e=>{m({sectionAlignment:e})}})),wp.element.createElement(Jh,this.props),wp.element.createElement("div",{className:g||void 0,style:_},wp.element.createElement("div",{itemProp:"offers",itemScope:!0,itemType:"http://schema.org/Offer"},l&&wp.element.createElement(nb,{tagName:"span",itemProp:"priceCurrency",placeholder:Xh("$","blockspare"),keepPlaceholderOnFocus:!0,value:r,onChange:e=>m({currency:e}),className:"blockspare-pricing-table-currency",style:v}),wp.element.createElement(nb,{tagName:"div",itemProp:"price",placeholder:Xh("49","blockspare"),keepPlaceholderOnFocus:!0,value:a,onChange:e=>m({price:e}),style:k,className:y||void 0}),s&&wp.element.createElement(nb,{tagName:"span",value:o,placeholder:Xh("/mo","blockspare"),keepPlaceholderOnFocus:!0,onChange:e=>m({term:e}),className:"blockspare-pricing-table-term",style:L}))))]}});const lb=wp.i18n.__,cb=wp.blocks.registerBlockType,ub=wp.blockEditor,db=ub.RichText,pb=ub.getFontSizeClass,mb=ub.getColorClassName,fb=Yh.name,hb=Yh.category,bb=Yh.attributes;cb(fb,{title:lb("Price","blockspare"),description:lb("Adds a product price component with schema markup.","blockspare"),icon:"cart",category:hb,parent:["blockspare/blockspare-pricing-inner"],keywords:[lb("pricing table","blockspare"),lb("title","blockspare"),lb("shop","blockspare")],attributes:bb,edit:sb,save:function(e){const t=e.attributes,n=t.sectionAlignment,a=t.price,r=t.currency,o=t.fontSize,s=t.customFontSize,l=t.backgroundColor,c=t.textColor,u=t.customBackgroundColor,d=(t.customTextColor,t.term),p=t.showTerm,m=t.showCurrency,f=t.paddingTop,h=t.paddingRight,b=t.paddingBottom,g=t.paddingLeft,y=pb(o),_=(mb("color",c),mb("background-color",l)),k=i()({"has-background":l||u,"blockspare-pricing-table-price-wrap":!0,[_]:_,"blockspare-pricing-has-currency":m&&r}),w=i()({"blockspare-pricing-table-price":!0,[y]:y}),v={textAlign:n,backgroundColor:_?void 0:u,color:c||"#af0000",paddingTop:f?f+"px":void 0,paddingRight:h?h+"px":void 0,paddingBottom:b?b+"px":void 0,paddingLeft:g?g+"px":void 0},M={fontSize:y?void 0:s};var L=y?void 0:s,T=Math.floor(L/2.5);const E={fontSize:L?T+"px":void 0};var S=Math.floor(L/2.5);const x={fontSize:L?S+"px":void 0};return wp.element.createElement("div",{className:k||void 0,style:v},wp.element.createElement("div",{itemProp:"offers",itemScope:!0,itemType:"http://schema.org/Offer"},r&&m&&wp.element.createElement(db.Content,{tagName:"span",itemProp:"priceCurrency",value:r,className:"blockspare-pricing-table-currency",style:E}),wp.element.createElement(db.Content,{tagName:"div",itemProp:"price",value:a,className:w||void 0,style:M}),d&&p&&wp.element.createElement(db.Content,{tagName:"span",value:d,className:"blockspare-pricing-table-term",style:x})))}});var gb=n(56);function yb(){return(yb=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const _b=wp.i18n.__,kb=wp.element.Component,wb=wp.compose.compose,vb=wp.blockEditor,Mb=vb.InspectorControls,Lb=(vb.FontSizePicker,vb.withFontSizes),Tb=vb.withColors,Eb=vb.ContrastChecker,Sb=vb.PanelColorSettings,xb=(vb.ColorPalette,wp.components),Cb=xb.withFallbackStyles,Db=xb.PanelBody,Ob=(xb.PanelRow,xb.SelectControl,xb.BaseControl,xb.RangeControl,Cb((e,t)=>{const n=t.attributes,a=n.textColor,r=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:r||!l?void 0:l.backgroundColor,fallbackTextColor:a||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var Yb=wb([Ob,Lb("fontSize"),Tb("backgroundColor",{textColor:"color"})])(class extends kb{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.borderStyle,t.borderColor,t.borderWidth,t.paddingTop),a=t.paddingRight,r=t.paddingBottom,o=t.paddingLeft,i=t.name,s=t.listType,l=t.orderListStyle,c=t.color,u=(e.isSelected,e.setAttributes),d=(e.fallbackFontSize,e.fontSize),p=(e.setFontSize,e.backgroundColor),m=e.textColor,f=e.setBackgroundColor,h=(e.setTextColor,e.fallbackBackgroundColor),b=e.fallbackTextColor;_b("None"),_b("Solid"),_b("Dotted"),_b("Dashed");return wp.element.createElement(Mb,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Db,{title:_b("Custom List Settings"),initialOpen:!1},wp.element.createElement(Ql,{name:i,onChangeName:e=>u({name:e}),listType:s,onChangeListStyle:e=>u({listType:e}),orderListStyle:l,onChangeOrderListStyle:e=>u({orderListStyle:e}),color:c,onchangeColor:e=>u({color:e})})),wp.element.createElement(Sb,{title:_b("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:p.color,onChange:f,label:_b("Background Color","blockspare")}]},wp.element.createElement(Eb,yb({textColor:m.color,backgroundColor:p.color,fallbackTextColor:b,fallbackBackgroundColor:h},{fontSize:d.size}))),wp.element.createElement(Db,{title:_b("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>u({paddingTop:e}),paddingEnableRight:!0,paddingRight:a,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>u({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:r,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>u({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>u({paddingLeft:e})}))))}});const jb=wp.i18n.__,Pb=(wp.blocks.registerBlockType,wp.compose.compose),Nb=wp.element,Bb=Nb.Component,Ab=Nb.Fragment,Hb=wp.blockEditor,zb=Hb.RichText,Ib=Hb.withFontSizes,Fb=Hb.withColors,Rb=Hb.AlignmentToolbar,Wb=Hb.BlockControls;Hb.BlockAlignmentToolbar;var Ub=Pb([Ib("fontSize"),Fb("backgroundColor",{textColor:"color"})])(class extends Bb{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.features,a=t.borderStyle,r=t.borderColor,o=t.borderWidth,s=t.paddingTop,l=t.paddingRight,c=t.paddingBottom,u=t.paddingLeft,d=t.sectionAlignment,p=t.name,m=t.listType,f=t.orderListStyle,h=t.color,b=(e.isSelected,e.className,e.setAttributes),g=(e.fallbackFontSize,e.fontSize),y=e.backgroundColor,_=e.textColor;let k="";k="ul"==m?p:"ol"==m?f:"";const w=i()({"blockspare-pricing-table-features":!0,[g.class]:g.class,"has-text-color":_.color,"has-background":y.color,[y.class]:y.class,[_.class]:_.class,[a]:a,["blockspare-list-border-width-"+o]:o,[k]:k}),v={textAlign:d,fontSize:g.size?g.size+"px":void 0,backgroundColor:y.color,color:h||"#6d6d6d",borderColor:r||void 0,paddingTop:s?s+"px":void 0,paddingRight:l?l+"px":void 0,paddingBottom:c?c+"px":void 0,paddingLeft:u?u+"px":void 0};return[wp.element.createElement(Wb,null,wp.element.createElement(Rb,{value:d,onChange:e=>{b({sectionAlignment:e})}})),wp.element.createElement(Ab,null,wp.element.createElement(Yb,this.props),wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap")},wp.element.createElement(zb,{tagName:"none"==m?"ul":m,multiline:"li",itemProp:"description",placeholder:jb("Add a product feature","blockspare"),keepPlaceholderOnFocus:!0,value:n,onChange:e=>b({features:e}),style:v,className:w||void 0})))]}});const qb=wp.i18n.__,Gb=wp.blocks.registerBlockType,Vb=wp.blockEditor,$b=Vb.RichText,Jb=Vb.getFontSizeClass,Xb=Vb.getColorClassName,Qb=gb.name,Kb=gb.category,Zb=gb.attributes;Gb(Qb,{title:qb("Price Features","blockspare"),description:qb("Adds a product feature component with schema markup.","blockspare"),category:Kb,icon:r.iconlist,attributes:Zb,parent:["blockspare/blockspare-pricing-inner"],keywords:[qb("pricing table","blockspare"),qb("features","blockspare"),qb("shop","blockspare")],edit:Ub,save:function(e){const t=e.attributes,n=t.features,a=t.fontSize,r=t.sectionAlignment,o=t.customFontSize,s=t.backgroundColor,l=t.textColor,c=t.customBackgroundColor,u=(t.customTextColor,t.borderStyle),d=t.borderColor,p=t.borderWidth,m=t.paddingTop,f=t.paddingRight,h=t.paddingBottom,b=t.paddingLeft,g=t.name,y=t.listType,_=t.orderListStyle,k=t.color;let w="";w="ul"==y?g:"ol"==y?_:"";const v=Jb(a),M=Xb("color",l),L=Xb("background-color",s),T=i()({"has-background":s||c,"blockspare-pricing-table-features":!0,[v]:v,[M]:M,[L]:L,[u]:u,["blockspare-list-border-width-"+p]:p,[w]:w}),E={textAlign:r,fontSize:v?void 0:o,backgroundColor:L?void 0:c,color:k||"#6d6d6d",borderColor:d||void 0,paddingTop:m?m+"px":void 0,paddingRight:f?f+"px":void 0,paddingBottom:h?h+"px":void 0,paddingLeft:b?b+"px":void 0};return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-list-wrap")},wp.element.createElement($b.Content,{tagName:"none"==y?"ul":y,itemProp:"description",value:n,className:T||void 0,style:E}))}});var eg=n(57);const tg=wp.i18n.__,ng=wp.element.Component,ag=wp.compose.compose,rg=wp.blockEditor,og=rg.InspectorControls,ig=rg.withFontSizes,sg=rg.withColors,lg=(rg.PanelColorSettings,wp.components),cg=lg.withFallbackStyles,ug=lg.PanelBody,dg=lg.ToggleControl,pg=cg((e,t)=>{const n=t.attributes.backgroundColor,a=e.querySelector('[contenteditable="true"]'),r=a?getComputedStyle(a):null;return{fallbackBackgroundColor:n||!r?void 0:r.backgroundColor}});var mg=ag([pg,ig("fontSize"),sg("backgroundColor")])(class extends ng{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.buttonStyle,a=t.borderColor,r=t.borderBtnTextColor,o=t.buttonBackgroundColor,i=t.buttonTextColor,s=t.buttonSize,l=t.buttonShape,c=t.buttonTarget,u=t.paddingTop,d=t.paddingBottom,p=t.enableGradient,m=t.backgroundColor1,f=t.backgroundColor2,h=t.gradientAngle,b=t.colorLocation1,g=t.colorLocation2,y=t.btnFontWeight,_=t.btnBorderWidth,k=e.setAttributes;e.backgroundColor,e.setBackgroundColor;return wp.element.createElement(og,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(ug,{title:tg("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ee,{enableButtonTarget:!1,buttonTarget:c,onChangeButtonTarget:e=>k({buttonTarget:!c}),enableGradient:p,onChangeGradient:e=>k({enableGradient:e}),enableButtonSize:!0,buttonSize:s,onChangeButtonSize:e=>k({buttonSize:e}),enableButtonShape:!0,buttonShape:l,onChangeButtonShape:e=>k({buttonShape:e}),buttonBackgroundColor:o,onChangeButtonColor:e=>k({buttonBackgroundColor:e}),buttonTextColor:i,onChangeButtonTextColor:e=>k({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:n,onChangeBorderStyle:e=>k({buttonStyle:e}),borderColor:a,onchangeBorderColor:e=>k({borderColor:e}),borderBtnTextColor:r,onChangeBorderBtnTextColor:e=>k({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:_,onchangebtnBorderWidth:e=>k({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:y,onchangeBtnFontWeight:e=>k({btnFontWeight:e})}),"none"===n&&wp.element.createElement(dg,{label:tg("Enable Gradient","blockspare"),checked:p,onChange:()=>this.props.setAttributes({enableGradient:!p})}),p&&"none"===n&&wp.element.createElement(ug,{title:tg("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Oe,{backgroundColor1:m,onChangeBackgroundColor1:e=>k({backgroundColor1:e}),backgroundColor2:f,onChangeBackgroundColor2:e=>k({backgroundColor2:e}),gradientAngle:h,onChangeGradientAngle:e=>k({gradientAngle:e}),colorLocation1:b,onChangeColorLocation1:e=>k({colorLocation1:e}),colorLocation2:g,onChangeColorLocation2:e=>k({colorLocation2:e})}))),wp.element.createElement(ug,{title:tg("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:u,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>k({paddingTop:e}),paddingEnableBottom:!0,paddingBottom:d,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>k({paddingBottom:e})}))))}});function fg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function hg(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const bg=wp.i18n.__,gg=wp.compose.compose,yg=wp.element,_g=yg.Component,kg=yg.Fragment,wg=wp.blockEditor,vg=wg.RichText,Mg=wg.withFontSizes,Lg=wg.withColors,Tg=wg.AlignmentToolbar,Eg=wg.BlockControls,Sg=wg.URLInput,xg=wp.components,Cg=xg.IconButton,Dg=xg.Dashicon;var Og=gg([Mg("fontSize"),Lg("backgroundColor",{textColor:"color"})])(class extends _g{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,a=t.paddingRight,r=t.paddingBottom,o=t.paddingLeft,s=t.buttonText,l=t.buttonUrl,c=t.sectionAlignment,u=t.buttonSize,d=t.buttonShape,p=e.isSelected,m=e.attributes,f=e.setAttributes,h=e.backgroundColor,b=i()({"blockspare-pricing-table-button":!0}),g={backgroundColor:h.color,paddingTop:n?n+"px":void 0,paddingRight:a?a+"px":void 0,paddingBottom:r?r+"px":void 0,paddingLeft:o?o+"px":void 0},y=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fg(Object(n),!0).forEach((function(t){hg(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},ze(m));return[wp.element.createElement(kg,null,wp.element.createElement(Eg,{key:"controls"},wp.element.createElement(Tg,{value:c,onChange:e=>{f({sectionAlignment:e})}})),wp.element.createElement(mg,this.props),wp.element.createElement("div",{className:b||void 0,style:g},wp.element.createElement(ye,this.props,wp.element.createElement(vg,{tagName:"span",placeholder:bg("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:s,allowedFormats:[],className:i()("blockspare-button",d,u),style:y,onChange:e=>f({buttonText:e})})),p&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${c}`,onSubmit:e=>e.preventDefault(),style:{textAlign:c}},wp.element.createElement(Dg,{icon:"admin-links"}),wp.element.createElement(Sg,{className:"button-url",value:l,onChange:e=>f({buttonUrl:e})}),wp.element.createElement(Cg,{icon:"editor-break",label:bg("Apply","blockspare"),type:"submit"}))))]}});function Yg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function jg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yg(Object(n),!0).forEach((function(t){Pg(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Pg(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ng=wp.i18n.__,Bg=wp.blocks.registerBlockType,Ag=wp.blockEditor,Hg=Ag.RichText,zg=Ag.getColorClassName,Ig=eg.name,Fg=eg.category,Rg=jg({},eg.attributes,{},Ie);Bg(Ig,{title:Ng("Button","blockspare"),description:Ng("Add button with schema markup.","blockspare"),category:Fg,icon:r.button,attributes:Rg,parent:["blockspare/blockspare-pricing-inner"],keywords:[Ng("pricing button","blockspare"),Ng("button","blockspare"),Ng("link","blockspare")],edit:Og,save:function(e){const t=e.attributes,n=t.backgroundColor,a=t.customBackgroundColor,r=t.paddingTop,o=t.paddingRight,s=t.paddingBottom,l=t.paddingLeft,c=t.buttonText,u=t.buttonUrl,d=t.buttonSize,p=t.buttonShape,m=t.buttonTarget,f=zg("background-color",n),h=i()({"has-background":n||a,"blockspare-pricing-table-button":!0,[f]:f}),b=jg({},ze(e.attributes)),g={backgroundColor:f?void 0:a,paddingTop:r?r+"px":void 0,paddingRight:o?o+"px":void 0,paddingBottom:s?s+"px":void 0,paddingLeft:l?l+"px":void 0};return wp.element.createElement("div",{className:h||void 0,style:g},wp.element.createElement(ye,e,c&&wp.element.createElement("a",{href:u,target:m?"_blank":null,rel:m?"noopener noreferrer":null,className:i()("blockspare-button",p,d),style:b},wp.element.createElement(Hg.Content,{value:c}))))}});n(462),n(463);var Wg=n(58);const Ug=wp.i18n.__,qg=wp.element,Gg=qg.Component,Vg=(qg.Fragment,wp.blockEditor),$g=Vg.InspectorControls,Jg=(Vg.PanelColorSettings,wp.components),Xg=Jg.PanelBody,Qg=Jg.TextControl,Kg=Jg.SelectControl;class Zg extends Gg{render(){const e=this.props,t=e.attributes,n=(e.setAttributes,e.clients,Ug(" Icon only","blockspare"),Ug("Texts only","blockspare"),Ug("Icon with Texts","blockspare"),Ug(" Official","blockspare"),Ug("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:Ug("Square","blockspare")},{value:"blockspare-social-icon-circle",label:Ug("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:Ug("Rounded Square","blockspare")}]),a=[{value:"blockspare-social-icon-small",label:Ug("Small","blockspare")},{value:"blockspare-social-icon-medium",label:Ug("Medium","blockspare")},{value:"blockspare-social-icon-large",label:Ug("Large","blockspare")}];Ug("Solid","blockspare"),Ug("Border","blockspare"),Ug("None","blockspare");return wp.element.createElement($g,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Xg,{title:Ug("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(Kg,{label:Ug("Shape","blockspare"),options:n,value:t.buttonShapes,onChange:e=>this.props.setAttributes({buttonShapes:e})}),wp.element.createElement(Kg,{label:Ug("Size","blockspare"),options:a,value:t.buttonSizes,onChange:e=>this.props.setAttributes({buttonSizes:e})})),wp.element.createElement(Xg,{title:Ug("Social Settings","blockspare"),className:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(Xg,{title:Ug("Facebook","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.facebookTitle,onChange:e=>this.props.setAttributes({facebookTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.facebookUrl,onChange:e=>this.props.setAttributes({facebookUrl:e})})),wp.element.createElement(Xg,{title:Ug("Twitter","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.twitterTitle,onChange:e=>this.props.setAttributes({twitterTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.twitterUrl,onChange:e=>this.props.setAttributes({twitterUrl:e})})),wp.element.createElement(Xg,{title:Ug("Instagram","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.instagramTitle,onChange:e=>this.props.setAttributes({instagramTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.instagramUrl,onChange:e=>this.props.setAttributes({instagramUrl:e})})),wp.element.createElement(Xg,{title:Ug("YouTube","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.youtubeTitle,onChange:e=>this.props.setAttributes({youtubeTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.youtubeUrl,onChange:e=>this.props.setAttributes({youtubeUrl:e})})),wp.element.createElement(Xg,{title:Ug("LinkedIn","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.linkedinTitle,onChange:e=>this.props.setAttributes({linkedinTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.linkedinUrl,onChange:e=>this.props.setAttributes({linkedinUrl:e})})),wp.element.createElement(Xg,{title:Ug("Pinterest","blockspare"),initialOpen:!1},wp.element.createElement(Qg,{label:Ug("Title","blockspare"),type:"text",value:t.pinterestTitle,onChange:e=>this.props.setAttributes({pinterestTitle:e})}),wp.element.createElement(Qg,{label:Ug("URL","blockspare"),type:"url",value:t.pinterestUrl,onChange:e=>this.props.setAttributes({pinterestUrl:e})})))))}}const ey=wp.element,ty=ey.Component,ny=(ey.Fragment,wp.i18n.__,wp.blockEditor);ny.BlockAlignmentToolbar,ny.BlockControls;class ay extends ty{constructor(e){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},wp.element.createElement("ul",{className:i()("blockspare-social-links",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebookUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.facebookUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.facebookTitle))),this.props.attributes.linkedinUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.linkedinUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.linkedinTitle))),this.props.attributes.twitterUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.twitterUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.twitterTitle))),this.props.attributes.instagramUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.instagramUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-instagram"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.instagramTitle))),this.props.attributes.youtubeUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.youtubeUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-youtube"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.youtubeTitle))),this.props.attributes.pinterestUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.pinterestUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-pinterest"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.pinterestTitle))),this.props.attributes.tumblrUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.tumblrUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-tumblr"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.tumblrTitle))),this.props.attributes.telegramUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.telegramUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-telegram"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.telegramTitle))),this.props.attributes.redditUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.redditUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-reddit"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.redditTitle))),this.props.attributes.flickrUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.flickrUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-flickr"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.flickrTitle))),this.props.attributes.dribbbleUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.dribbbleUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-dribbble"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.dribbbleTitle))),this.props.attributes.vkUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.vkUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-vk"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.vkTitle))),this.props.attributes.yelpUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.yelpUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-yelp"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.yelpTitle))),this.props.attributes.quoraUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.quoraUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-quora"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.quoraTitle))),this.props.attributes.meetupUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.meetupUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-meetup"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.meetupTitle))),this.props.attributes.githubUrl&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.githubUrl,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-github"}),wp.element.createElement("span",{className:"screen-reader-text"},this.props.attributes.githubTitle))))}}function ry(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function oy(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ry(Object(n),!0).forEach((function(t){iy(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ry(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function iy(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const sy=wp.element,ly=sy.Component,cy=sy.Fragment,uy=(wp.i18n.__,wp.blockEditor),dy=uy.BlockControls,py=uy.AlignmentToolbar;const my=wp.element.Component;class fy extends my{constructor(){super(...arguments)}render(){return wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:"blockspare-blocks blockspare-social-wrapper"},wp.element.createElement(ay,this.props))}}const hy=wp.blocks.registerBlockType,by=Wg.name,gy=Wg.category,yy=Wg.attributes,_y=wp.i18n.__;hy(by,{title:_y("BS Social Links","blockspare"),category:gy,icon:r.sociallinks,attributes:yy,keywords:[_y("block","blockspare"),_y("social","blockspare"),_y("links","blockspare"),_y("share","blockspare")],example:{attributes:{facebookUrl:"https://facebook.com",twitterUrl:"https://twitter.com",linkedinUrl:"https://www.linkedin.com/",instagramUrl:"https://instagram.com"}},edit:class extends ly{render(){const e=this.props,t=e.attributes.sectionAlignment,n=(e.attributes,e.setAttributes);return[wp.element.createElement(cy,null,wp.element.createElement(Zg,oy({setAttributes:n},this.props)),wp.element.createElement(dy,null,wp.element.createElement(py,{value:t,onChange:e=>{n({sectionAlignment:e})}})),wp.element.createElement("div",{className:i()("blockspare-blocks","blockspare-social-wrapper"),style:{textAlign:this.props.attributes.sectionAlignment}},wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(ay,this.props))))]}},save:e=>wp.element.createElement(fy,e)});const ky=wp.i18n.__,wy=wp.element.Component,vy=wp.blockEditor,My=vy.InspectorControls,Ly=(vy.PanelColorSettings,wp.components),Ty=Ly.PanelBody,Ey=Ly.SelectControl,Sy=Ly.ToggleControl,xy=Ly.TextControl;class Cy extends wy{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(e.setAttributes,e.clients,ky(" Icon only","blockspare"),ky("Texts only","blockspare"),ky("Icon with Texts","blockspare"),ky(" Official","blockspare"),ky("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:ky("Square","blockspare")},{value:"blockspare-social-icon-circle",label:ky("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:ky("Rounded Square","blockspare")}]),a=[{value:"blockspare-social-icon-small",label:ky("Small","blockspare")},{value:"blockspare-social-icon-medium",label:ky("Medium","blockspare")},{value:"blockspare-social-icon-large",label:ky("Large","blockspare")}];ky("Solid","blockspare"),ky("Border","blockspare"),ky("None","blockspare");return wp.element.createElement(My,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Ty,{title:ky("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(Ey,{label:ky("Shape","blockspare"),options:n,value:t.buttonShapes,onChange:e=>this.props.setAttributes({buttonShapes:e})}),wp.element.createElement(Ey,{label:ky("Size","blockspare"),options:a,value:t.buttonSizes,onChange:e=>this.props.setAttributes({buttonSizes:e})})),wp.element.createElement(Ty,{title:ky("Social Sharing Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ty,{title:ky("Facebook","blockspare"),initialOpen:!1},wp.element.createElement(Sy,{label:ky("Enable","blockspare"),checked:!!this.props.attributes.facebook,onChange:()=>this.props.setAttributes({facebook:!this.props.attributes.facebook})}),this.props.attributes.facebook&&wp.element.createElement(xy,{label:ky("Title","blockspare"),type:"text",value:t.facebookTitle,onChange:e=>this.props.setAttributes({facebookTitle:e})})),wp.element.createElement(Ty,{title:ky("Twitter","blockspare"),initialOpen:!1},wp.element.createElement(Sy,{label:ky("Enable","blockspare"),checked:!!this.props.attributes.twitter,onChange:()=>this.props.setAttributes({twitter:!this.props.attributes.twitter})}),this.props.attributes.twitter&&wp.element.createElement(xy,{label:ky("Title","blockspare"),type:"text",value:t.twitterTitle,onChange:e=>this.props.setAttributes({twitterTitle:e})})),wp.element.createElement(Ty,{title:ky("Pinterest","blockspare"),initialOpen:!1},wp.element.createElement(Sy,{label:ky("Enable","blockspare"),checked:!!this.props.attributes.pinterest,onChange:()=>this.props.setAttributes({pinterest:!this.props.attributes.pinterest})}),this.props.attributes.pinterest&&wp.element.createElement(xy,{label:ky("Title","blockspare"),type:"text",value:t.pinterestTitle,onChange:e=>this.props.setAttributes({pinterestTitle:e})})),wp.element.createElement(Ty,{title:ky("LinkedIn","blockspare"),initialOpen:!1},wp.element.createElement(Sy,{label:ky("Enable","blockspare"),checked:!!this.props.attributes.linkedin,onChange:()=>this.props.setAttributes({linkedin:!this.props.attributes.linkedin})}),this.props.attributes.linkedin&&wp.element.createElement(xy,{label:ky("Title","blockspare"),type:"text",value:t.linkedinTitle,onChange:e=>this.props.setAttributes({linkedinTitle:e})})))))}}wp.i18n.__;const Dy=wp.element.Component,Oy=wp.blockEditor,Yy=Oy.AlignmentToolbar,jy=Oy.BlockControls;class Py extends Dy{constructor(){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},[wp.element.createElement(jy,{key:"controls"},wp.element.createElement(Yy,{value:this.props.attributes.sectionAlignment,onChange:e=>this.props.setAttributes({sectionAlignment:e})})),wp.element.createElement(Cy,this.props),wp.element.createElement("div",{style:{textAlign:this.props.attributes.sectionAlignment},className:"blockspare-blocks blockspare-social-wrapper"},wp.element.createElement("ul",{className:i()("blockspare-social-sharing",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebook&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-facebook",style:e},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.facebookTitle))),this.props.attributes.twitter&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-twitter",style:e},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.twitterTitle))),this.props.attributes.pinterest&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-pinterest",style:e},wp.element.createElement("i",{className:"fab fa-pinterest-p"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.pinterestTitle))),this.props.attributes.linkedin&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-linkedin",style:e},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.linkedinTitle))),this.props.attributes.reddit&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-reddit",style:e},wp.element.createElement("i",{className:"fab fa-reddit-alien"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.redditTitle))),this.props.attributes.email&&wp.element.createElement("li",null,wp.element.createElement("a",{className:"blockspare-share-email",style:e},wp.element.createElement("i",{className:"fas fa-envelope"}),wp.element.createElement("span",{className:"blockspare-social-text"},this.props.attributes.emailTitle)))))]}}n(464),n(465);const Ny=wp.i18n.__;(0,wp.blocks.registerBlockType)("blockspare/blockspare-social-sharing",{title:Ny("BS Social Sharing","blockspare"),description:Ny("Add sharing buttons to your posts and pages.","blockspare"),icon:r.socialShare,category:"blockspare",keywords:[Ny("block","blockspare"),Ny("social","blockspare"),Ny("links","blockspare"),Ny("share","blockspare")],example:{attributes:{facebook:!0,twitter:!0,linkedin:!0}},edit:e=>wp.element.createElement(Py,e),save:()=>null});n(466),n(467);var By=n(90);wp.i18n.__;const Ay=wp.element,Hy=Ay.Component,zy=(Ay.Fragment,wp.blockEditor.InspectorControls),Iy=wp.components;Iy.PanelBody,Iy.ToggleControl;class Fy extends Hy{render(){const e=this.props,t=e.attributes,n=t.titleFontSize,a=t.subtitleFontSize,r=t.headerboxColor,o=t.headertitleColor,i=t.headersubtitleColor,s=t.headerpaddingTop,l=t.headerpaddingRight,c=t.headerpaddingBottom,u=t.headerpaddingLeft,d=t.headermarginTop,p=t.headermarginBottom,m=t.headerlayoutOption,f=t.headerTagOption,h=t.titlePaddingTop,b=t.titlePaddingBottom,g=t.subtitlePaddingTop,y=t.subtitlePaddingBottom,_=t.dashColor,k=e.setAttributes;return wp.element.createElement(zy,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(yt,{enableBlockGaps:!0,titleFontSize:n,onChangetitleFontSize:e=>k({titleFontSize:e}),subtitleFontSize:a,onChangesubtitleFontSize:e=>k({subtitleFontSize:e}),headerlayoutOption:m,onChangeHeaderStyle:e=>k({headerlayoutOption:e}),headerboxColor:r,onChangeboxcolor:e=>k({headerboxColor:e}),dashColor:_,onChangeDashColor:e=>k({dashColor:e}),headerpaddingTop:s,onChangeheaderpaddingTop:e=>k({headerpaddingTop:e}),headerpaddingRight:l,onChangeheaderpaddingRight:e=>k({headerpaddingRight:e}),headerpaddingBottom:c,onChangeheaderpaddingBottom:e=>k({headerpaddingBottom:e}),headerpaddingLeft:u,onChangeheaderpaddingLeft:e=>k({headerpaddingLeft:e}),headermarginTop:d,onChangeheadermarginTop:e=>k({headermarginTop:e}),headermarginBottom:p,onChangeheadermarginBottom:e=>k({headermarginBottom:e}),headertitleColor:o,onChangetitlecolor:e=>k({headertitleColor:e}),headerTagOption:f,onChangeHeaderTag:e=>k({headerTagOption:e}),titlePaddingTop:h,onChangetitlePaddingTop:e=>k({titlePaddingTop:e}),titlePaddingBottom:b,onChangetitlePaddingBottom:e=>k({titlePaddingBottom:e}),headersubtitleColor:i,onChangesubtitlecolor:e=>k({headersubtitleColor:e}),subtitlePaddingTop:g,onChangesubtitlePaddingTop:e=>k({subtitlePaddingTop:e}),subtitlePaddingBottom:y,onChangesubtitlePaddingBottom:e=>k({subtitlePaddingBottom:e})})))}}function Ry(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Wy(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ry(Object(n),!0).forEach((function(t){Uy(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ry(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Uy(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const qy=wp.element,Gy=qy.Component,Vy=qy.Fragment,$y=wp.i18n.__,Jy=wp.blockEditor,Xy=Jy.BlockControls,Qy=Jy.RichText,Ky=(Jy.BlockAlignmentToolbar,Jy.AlignmentToolbar),Zy=wp.components;Zy.IconButton,Zy.Dashicon;function e_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function t_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?e_(Object(n),!0).forEach((function(t){n_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):e_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function n_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const a_=wp.blocks.registerBlockType,r_=wp.i18n.__,o_=wp.blockEditor.RichText,i_=By.name,s_=By.category,l_=t_({},Wt,{},Jt);a_(i_,{title:r_("Section Header","blockspare"),description:r_("Add your Your Header ","blockspare"),category:s_,icon:r.sectionHeader,attributes:l_,keywords:[r_("block","blockspare"),r_("section","blockspare"),r_("header","blockspare"),r_("title","blockspare"),r_("subtitle","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:class extends Gy{render(){const e=this.props,t=e.attributes,n=(t.align,t.sectionAlignment),a=t.headerTitle,r=t.headerTagOption,o=t.headerSubTitle,i=e.attributes,s=e.setAttributes,l=(e.isSelected,Wy({},Gt(i))),c=Wy({},Vt(i)),u=Wy({},$t(i));return[wp.element.createElement(Vy,null,wp.element.createElement(Xy,null,wp.element.createElement(Ky,{value:n,onChange:e=>{s({sectionAlignment:e})}})),wp.element.createElement(Fy,Wy({setAttributes:s},this.props)),wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(Qy,{tagName:r,placeholder:$y("Title","blockspare"),keepPlaceholderOnFocus:!0,value:a,className:"blockspare-title",style:c,onChange:e=>s({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:l}),wp.element.createElement(Qy,{tagName:"p",placeholder:$y("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:u,onChange:e=>s({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:l}))))]}},save:function(e){const t=e.attributes,n=(t.align,t.headerTitle),a=t.headerTagOption,r=t.headerSubTitle,o=t_({},Gt(e.attributes)),i=t_({},Vt(e.attributes)),s=t_({},$t(e.attributes));return wp.element.createElement(Rt,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),n&&wp.element.createElement(o_.Content,{tagName:a,className:"blockspare-title",style:i,value:n}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),r&&wp.element.createElement(o_.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:r}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})))}});var c_=n(59);const u_=wp.element.Component;class d_ extends u_{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.columns,n=(e.columnsGap,e.align),a=i()([this.props.className,"blockspare-service-columns-"+t],{["align"+n]:n});return wp.element.createElement("div",{className:a||void 0},this.props.children)}}const p_=wp.i18n.__,m_=wp.element.Component,f_=wp.blockEditor.InspectorControls,h_=wp.components,b_=(h_.Toolbar,h_.Button,h_.PanelBody),g_=(h_.PanelRow,h_.RangeControl);class y_ extends m_{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.serviceItems,t.columns),a=t.columnsGap,r=t.marginTop,o=t.marginBottom,i=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(f_,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(b_,{title:p_("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(g_,{label:p_("Number of Columns","blockspare"),value:n,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:2}),wp.element.createElement(g_,{label:p_("Column Gaps","blockspare"),value:a,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})),wp.element.createElement(b_,{title:p_("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:r,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>i({marginTop:e}),marginEnableBottom:!0,marginBottom:o,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>i({marginBottom:e})}))))}}n(468),n(469);var __=n(91);const k_=wp.i18n.__,w_=wp.element.Component,v_=wp.blockEditor,M_=v_.InspectorControls,L_=(v_.BlockDescription,v_.PanelColorSettings),T_=wp.components,E_=(T_.ToggleControl,T_.PanelBody),S_=(T_.FormToggle,T_.RangeControl);class x_ extends w_{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.borderWidth,a=(t.borderColor,t.borderRadius,t.backgroundColor),r=t.padding,o=(t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.marginTop),i=t.marginBottom,s=(e.isSelected,e.className,e.setAttributes);return wp.element.createElement(M_,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(E_,{title:k_("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(S_,{label:k_("Service Column Padding","blockspare"),value:r,onChange:e=>this.props.setAttributes({padding:e}),min:0,max:20,step:1})),wp.element.createElement(E_,{title:k_("Color Settings","blockspare"),initialOpen:!1},0<n&&wp.element.createElement(L_,{title:k_("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:a,onChange:e=>s({backgroundColor:e}),label:k_("Background Color","blockspare")}]})),wp.element.createElement(E_,{title:k_("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:o,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>s({marginTop:e}),marginEnableBottom:!0,marginBottom:i,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>s({marginBottom:e})}))))}}function C_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function D_(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C_(Object(n),!0).forEach((function(t){O_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function O_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Y_=wp.i18n.__,j_=(wp.element.Component,wp.blocks.registerBlockType),P_=wp.blockEditor,N_=P_.InnerBlocks,B_=(P_.AlignmentToolbar,P_.BlockControls,wp.element.Fragment),A_=["blockspare/blockspare-iconset","blockspare/blockspare-services-inner-title","blockspare/blockspare-services-inner-description","blockspare/blockspare-service-inner-button"],H_=__.category,z_=D_({},__.attributes,{},Jt),I_={title:Y_("Service Inner Section","blockspare"),description:Y_("Add a service column.","blockspare"),icon:"cart",category:H_,parent:["blockspare/blockspare-services"],keywords:[Y_("service","blockspare"),Y_("shop","blockspare"),Y_("buy","blockspare")],attributes:z_,edit:function(e){const t=e.attributes,n=t.borderWidth,a=t.borderColor,r=t.borderRadius,o=t.backgroundColor,s=t.padding,l=t.alignment,c=(t.className,t.setAttributes,D_({},Yt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:a||null,borderRadius:r||null,backgroundColor:o||null,padding:s?s+"%":null}));return wp.element.createElement(B_,null,wp.element.createElement(x_,e),wp.element.createElement("div",{className:i()(l?"blockspare-block-service-table-"+l:"blockspare-block-service-table-center","blockspare-block-service-table"),itemScope:!0,itemType:"http://schema.org/Product"},wp.element.createElement("div",{className:i()("blockspare-block-service-table-inside"),style:c},wp.element.createElement(N_,{template:[["blockspare/blockspare-iconset",{}],["blockspare/blockspare-services-inner-title",{headerTitle:"Service Title",headerSubTitle:"Add your services text",titlePaddingTop:5,titlePaddingBottom:5,subtitlePaddingTop:10,subtitlePaddingBottom:10}],["blockspare/blockspare-services-inner-description",{features:"Aspernatur morbi sit cursus mauris aspernatur! Quos tortor. Ea montes anim.",tagName:"p",ordered:!1,customFontSize:18,paddingTop:15,paddingRight:20,paddingBottom:15,paddingLeft:20}],["blockspare/blockspare-service-inner-button",{buttonText:"Get Started",paddingTop:15,paddingRight:20,paddingBottom:35,paddingLeft:20}]],renderAppender:!1,allowedBlocks:A_}))))},save:function(e){const t=e.attributes,n=t.borderWidth,a=t.borderColor,r=t.borderRadius,o=t.backgroundColor,s=t.alignment,l=t.padding,c=(t.marginTop,t.marginBottom,D_({},Yt(e.attributes),{borderWidth:n||null,borderStyle:0<n?"solid":null,borderColor:a||null,borderRadius:r||null,backgroundColor:o||null,padding:l?l+"%":null}));return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-service-block-wrapper",s?"blockspare-block-service-table-"+s:"blockspare-block-service-table-center","blockspare-block-service-table")},wp.element.createElement("div",{className:i()("blockspare-block-service-table-inside"),style:c},wp.element.createElement(N_.Content,null)))}};function F_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function R_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}j_("blockspare/blockspare-services-inner",I_);wp.i18n.__;const W_=wp.element,U_=W_.Component,q_=W_.Fragment,G_=(wp.components.IconButton,wp.blocks.createBlock),V_=wp.data,$_=V_.withSelect,J_=V_.withDispatch,X_=wp.blockEditor,Q_=X_.InnerBlocks,K_=(X_.InspectorControls,wp.compose.compose);var Z_=K_([$_((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),J_(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends U_{constructor(...e){super(...e),R_(this,"getServiceTemplate",e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/blockspare-services-inner",{}]);return t})}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertServiceItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes.itemNumber+1,n=I_.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=I_;a(G_("blockspare/blockspare-services-inner",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),a=(n.uniqueId,n.columns,n.columnsGap),r=n.marginTop,o=n.marginBottom,s=(e.isSelected,e.setAttributes);return wp.element.createElement(q_,null,wp.element.createElement(y_,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?F_(Object(n),!0).forEach((function(t){R_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):F_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({setAttributes:s},this.props)),wp.element.createElement("div",{className:"blockspare-blocks blockspare-service-block-wrapper",style:{marginTop:r?r+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(d_,this.props,wp.element.createElement("div",{className:i()("blockspare-service-section-admin","blockspare-service-section-gap-"+a)},wp.element.createElement(Q_,{template:this.getServiceTemplate(t),allowedBlocks:["blockspare/blockspare-services-inner"],renderAppender:!1})))))}});const ek=wp.i18n.__,tk=(wp.element.Component,wp.blocks.registerBlockType),nk=wp.blockEditor.InnerBlocks,ak=c_.name,rk=c_.category,ok=c_.attributes;tk(ak,{title:ek("BS Services","blockspare"),description:ek("Add a service section.","blockspare"),icon:r.services,category:rk,keywords:["blockspare",ek("block","blockspare"),ek("services","blockspare"),ek("box","blockspare"),ek("portfolio","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},attributes:ok,supports:{align:["wide","full","center"],html:!0},edit:Z_,save:function(e){const t=e.attributes,n=t.columnsGap,a=t.align,r=t.marginTop,o=t.marginBottom,s=i()(["blockspare-service-table-wrap","blockspare-block-service-table-gap-"+n]);return wp.element.createElement("div",{className:i()("blockspare-blocks blockspare-service-block-wrapper","blockspare-section-header-wrapper","align"+a),style:{marginTop:r?r+"px":void 0,marginBottom:o?o+"px":void 0}},wp.element.createElement(d_,e,wp.element.createElement("div",{className:s||void 0},wp.element.createElement(nk.Content,null))))}});var ik=n(92);const sk=wp.i18n.__,lk=wp.element.Component,ck=(wp.compose.compose,wp.blockEditor.InspectorControls),uk=wp.components,dk=(uk.withFallbackStyles,uk.PanelBody);class pk extends lk{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.titleFontSize,n=e.subtitleFontSize,a=e.headerTagOption,r=e.headertitleColor,o=e.headersubtitleColor,i=e.headerlayoutOption,s=e.titlePaddingTop,l=e.titlePaddingBottom,c=e.subtitlePaddingTop,u=e.subtitlePaddingBottom,d=e.dashColor,p=e.headerboxColor,m=this.props.setAttributes;return wp.element.createElement(ck,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(dk,{title:sk("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:t,onChangetitleFontSize:e=>m({titleFontSize:e}),subtitleFontSize:n,onChangesubtitleFontSize:e=>m({subtitleFontSize:e}),headerlayoutOption:i,onChangeHeaderStyle:e=>m({headerlayoutOption:e}),headerTagOption:a,onChangeHeaderTag:e=>m({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>m({headerboxColor:e}),dashColor:d,onChangeDashColor:e=>m({dashColor:e}),headertitleColor:r,onChangetitlecolor:e=>m({headertitleColor:e}),titlePaddingTop:s,onChangetitlePaddingTop:e=>m({titlePaddingTop:e}),titlePaddingBottom:l,onChangetitlePaddingBottom:e=>m({titlePaddingBottom:e}),headersubtitleColor:o,onChangesubtitlecolor:e=>m({headersubtitleColor:e}),subtitlePaddingTop:c,onChangesubtitlePaddingTop:e=>m({subtitlePaddingTop:e}),subtitlePaddingBottom:u,onChangesubtitlePaddingBottom:e=>m({subtitlePaddingBottom:e})}))))}}function mk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function fk(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mk(Object(n),!0).forEach((function(t){hk(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mk(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function hk(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const bk=wp.i18n.__,gk=(wp.compose.compose,wp.element),yk=gk.Component,_k=gk.Fragment,kk=wp.blockEditor,wk=kk.RichText;kk.withFontSizes,kk.withColors;function vk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Mk(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vk(Object(n),!0).forEach((function(t){Lk(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vk(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Lk(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Tk=wp.i18n.__,Ek=wp.blocks.registerBlockType,Sk=wp.blockEditor,xk=Sk.RichText,Ck=(Sk.getFontSizeClass,Sk.getColorClassName,ik.name),Dk=ik.category,Ok=Mk({},Wt);Ek(Ck,{title:Tk("Service Title","blockspare"),description:Tk("Adds a product title component with schema markup.","blockspare"),icon:r.sectionHeader,category:Dk,parent:["blockspare/blockspare-services-inner"],keywords:[Tk("Service","blockspare"),Tk("title","blockspare")],attributes:Ok,edit:class extends yk{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.headerTagOption,a=t.headerTitle,r=t.headerSubTitle,o=e.attributes,i=e.setAttributes,s=fk({},Gt(o)),l=fk({},Vt(o)),c=fk({},$t(o));return[wp.element.createElement(_k,null,wp.element.createElement(pk,this.props),wp.element.createElement("div",{className:"blockspare-section-head-wrap"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:s}),wp.element.createElement(wk,{tagName:n,placeholder:bk("Title","blockspare"),keepPlaceholderOnFocus:!0,value:a,className:"blockspare-title",style:l,onChange:e=>i({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:s})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:s}),wp.element.createElement(wk,{tagName:"p",placeholder:bk("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:r,className:"blockspare-subtitle",style:c,onChange:e=>i({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:s})))))]}},save:function(e){const t=e.attributes,n=t.headerTagOption,a=t.headerTitle,r=t.headerSubTitle,o=Mk({},Gt(e.attributes)),i=Mk({},Vt(e.attributes)),s=Mk({},$t(e.attributes));return wp.element.createElement("div",{className:"blockspare-title-wrap"},wp.element.createElement(Rt,e,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),a&&wp.element.createElement(xk.Content,{tagName:n,className:"blockspare-title",style:i,value:a}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:o}),r&&wp.element.createElement(xk.Content,{tagName:"p",className:"blockspare-subtitle",style:s,value:r}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:o}))))}});var Yk=n(60);function jk(){return(jk=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const Pk=wp.i18n.__,Nk=wp.element.Component,Bk=wp.compose.compose,Ak=wp.blockEditor,Hk=Ak.InspectorControls,zk=(Ak.FontSizePicker,Ak.withFontSizes),Ik=Ak.withColors,Fk=Ak.ContrastChecker,Rk=Ak.PanelColorSettings,Wk=(Ak.ColorPalette,wp.components),Uk=Wk.withFallbackStyles,qk=Wk.PanelBody,Gk=(Wk.PanelRow,Wk.SelectControl,Wk.BaseControl,Wk.RangeControl,Uk((e,t)=>{const n=t.attributes,a=n.textColor,r=n.backgroundColor,o=n.fontSize,i=n.customFontSize,s=e.querySelector('[contenteditable="true"]'),l=s?getComputedStyle(s):null;return{fallbackBackgroundColor:r||!l?void 0:l.backgroundColor,fallbackTextColor:a||!l?void 0:l.color,fallbackFontSize:o||i||!l?void 0:parseInt(l.fontSize)||void 0}}));var Vk=Bk([Gk,zk("fontSize"),Ik("backgroundColor",{textColor:"color"})])(class extends Nk{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=(t.borderStyle,t.borderColor,t.borderWidth,t.paddingTop),a=t.paddingRight,r=t.paddingBottom,o=t.paddingLeft,i=(e.isSelected,e.setAttributes),s=(e.fallbackFontSize,e.fontSize),l=(e.setFontSize,e.backgroundColor),c=e.textColor,u=(e.setBackgroundColor,e.setTextColor),d=e.fallbackBackgroundColor,p=e.fallbackTextColor;Pk("None"),Pk("Solid"),Pk("Dotted"),Pk("Dashed");return wp.element.createElement(Hk,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Rk,{title:Pk("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:c.color,onChange:u,label:Pk("Text Color","blockspare")}]},wp.element.createElement(Fk,jk({textColor:c.color,backgroundColor:l.color,fallbackTextColor:p,fallbackBackgroundColor:d},{fontSize:s.size}))),wp.element.createElement(qk,{title:Pk("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>i({paddingTop:e}),paddingEnableRight:!0,paddingRight:a,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>i({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:r,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>i({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:o,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>i({paddingLeft:e})}))))}});const $k=wp.i18n.__,Jk=wp.compose.compose,Xk=wp.element,Qk=Xk.Component,Kk=Xk.Fragment,Zk=wp.blockEditor,ew=Zk.RichText,tw=Zk.withFontSizes,nw=Zk.withColors;var aw=Jk([tw("fontSize"),nw("backgroundColor",{textColor:"color"})])(class extends Qk{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.features,a=t.paddingTop,r=t.paddingRight,o=t.paddingBottom,s=t.paddingLeft,l=t.sectionAlignment,c=(e.isSelected,e.className,e.setAttributes),u=(e.fallbackFontSize,e.fontSize),d=e.backgroundColor,p=e.textColor,m=i()({"blockspare-services-inner-description":!0,[u.class]:u.class,"has-background":d.color,[d.class]:d.class}),f={fontSize:u.size?u.size+"px":void 0,backgroundColor:d.color,color:p.color?p.color:"#6d6d6d",paddingTop:a?a+"px":void 0,paddingRight:r?r+"px":void 0,paddingBottom:o?o+"px":void 0,paddingLeft:s?s+"px":void 0,textAlign:l};return[wp.element.createElement(Kk,null,wp.element.createElement(Vk,this.props),wp.element.createElement(ew,{tagName:"p",itemProp:"description",placeholder:$k("Add a service feature","blockspare"),keepPlaceholderOnFocus:!0,value:n,onChange:e=>c({features:e}),style:f,className:m||void 0}))]}});const rw=wp.i18n.__,ow=wp.blocks.registerBlockType,iw=wp.blockEditor,sw=iw.RichText,lw=iw.getFontSizeClass,cw=iw.getColorClassName,uw=Yk.name,dw=Yk.category,pw=Yk.attributes;ow(uw,{title:rw("Service Features","blockspare"),description:rw("Adds a feature component with schema markup.","blockspare"),icon:r.iconlist,category:dw,parent:["blockspare/blockspare-services-inner"],keywords:[rw("Service table","blockspare"),rw("features","blockspare"),rw("shop","blockspare")],attributes:pw,edit:aw,save:function(e){const t=e.attributes,n=t.features,a=t.fontSize,r=t.customFontSize,o=t.backgroundColor,s=t.textColor,l=t.customBackgroundColor,c=(t.customTextColor,t.paddingTop),u=t.paddingRight,d=t.paddingBottom,p=t.paddingLeft,m=lw(a),f=cw("background-color",o),h=i()({"has-background":o||l,"blockspare-service-table-features":!0,[m]:m,[f]:f}),b={fontSize:m?void 0:r,backgroundColor:f?void 0:l,color:s||"#6d6d6d",paddingTop:c?c+"px":void 0,paddingRight:u?u+"px":void 0,paddingBottom:d?d+"px":void 0,paddingLeft:p?p+"px":void 0};return wp.element.createElement(sw.Content,{tagName:"p",itemProp:"description",value:n,className:h||void 0,style:b})}});var mw=n(61);const fw=wp.i18n.__,hw=wp.element.Component,bw=wp.compose.compose,gw=wp.blockEditor,yw=gw.InspectorControls,_w=gw.withFontSizes,kw=gw.withColors,ww=gw.PanelColorSettings,vw=wp.components,Mw=vw.withFallbackStyles,Lw=vw.PanelBody,Tw=vw.ToggleControl,Ew=Mw((e,t)=>{const n=t.attributes.backgroundColor,a=e.querySelector('[contenteditable="true"]'),r=a?getComputedStyle(a):null;return{fallbackBackgroundColor:n||!r?void 0:r.backgroundColor}});var Sw=bw([Ew,_w("fontSize"),kw("backgroundColor")])(class extends hw{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,a=t.paddingBottom,r=t.buttonBackgroundColor,o=t.buttonTextColor,i=t.buttonSize,s=t.buttonShape,l=t.buttonStyle,c=t.buttonTarget,u=t.borderColor,d=t.borderBtnTextColor,p=t.enableGradient,m=t.backgroundColor1,f=t.backgroundColor2,h=t.gradientAngle,b=t.colorLocation1,g=t.colorLocation2,y=t.btnFontWeight,_=t.btnBorderWidth,k=(e.isSelected,e.setAttributes),w=e.backgroundColor,v=e.setBackgroundColor;e.fallbackBackgroundColor;return wp.element.createElement(yw,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Lw,{title:fw("Button Settings","blockspare"),initialOpen:!1},wp.element.createElement(Ee,{enableButtonTarget:!1,buttonTarget:c,onChangeButtonTarget:e=>k({buttonTarget:!c}),enableGradient:p,onChangeGradient:e=>k({enableGradient:e}),enableButtonSize:!0,buttonSize:i,onChangeButtonSize:e=>k({buttonSize:e}),enableButtonShape:!0,buttonShape:s,onChangeButtonShape:e=>k({buttonShape:e}),buttonBackgroundColor:r,onChangeButtonColor:e=>k({buttonBackgroundColor:e}),buttonTextColor:o,onChangeButtonTextColor:e=>k({buttonTextColor:e}),enableButtonStyle:!1,buttonStyle:l,onChangeBorderStyle:e=>k({buttonStyle:e}),borderColor:u,onchangeBorderColor:e=>k({borderColor:e}),borderBtnTextColor:d,onChangeBorderBtnTextColor:e=>k({borderBtnTextColor:e}),enableBtnBorderWidth:!1,btnBorderWidth:_,onchangebtnBorderWidth:e=>k({btnBorderWidth:e}),enableBtnFontWeight:!1,btnFontWeight:y,onchangeBtnFontWeight:e=>k({btnFontWeight:e})}),"none"===l&&wp.element.createElement(Tw,{label:fw("Enable Gradient","blockspare"),checked:p,onChange:()=>this.props.setAttributes({enableGradient:!p})}),p&&"none"===l&&wp.element.createElement(Lw,{title:fw("Gradient Option","blockspare"),initialOpen:!0},wp.element.createElement(Oe,{backgroundColor1:m,onChangeBackgroundColor1:e=>k({backgroundColor1:e}),backgroundColor2:f,onChangeBackgroundColor2:e=>k({backgroundColor2:e}),gradientAngle:h,onChangeGradientAngle:e=>k({gradientAngle:e}),colorLocation1:b,onChangeColorLocation1:e=>k({colorLocation1:e}),colorLocation2:g,onChangeColorLocation2:e=>k({colorLocation2:e})}))),wp.element.createElement(ww,{title:fw("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:w.color,onChange:v,label:fw("Background Color","blockspare")}]}),wp.element.createElement(Lw,{title:fw("Gap Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:n,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>k({paddingTop:e}),paddingEnableBottom:!0,paddingBottom:a,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>k({paddingBottom:e})}))))}});function xw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function Cw(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Dw=wp.i18n.__,Ow=(wp.blocks.registerBlockType,wp.compose.compose),Yw=wp.element,jw=Yw.Component,Pw=Yw.Fragment,Nw=wp.blockEditor,Bw=Nw.RichText,Aw=Nw.withFontSizes,Hw=Nw.withColors,zw=Nw.URLInput,Iw=wp.components,Fw=Iw.IconButton,Rw=Iw.Dashicon;var Ww=Ow([Aw("fontSize"),Hw("backgroundColor",{textColor:"color"})])(class extends jw{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.paddingTop,a=t.paddingBottom,r=t.buttonText,o=t.buttonUrl,s=t.buttonAlignment,l=(t.buttonBackgroundColor,t.buttonTextColor,t.buttonSize),c=t.buttonShape,u=(t.buttonTarget,t.buttonStyle,t.borderColor,t.borderBtnTextColor,e.isSelected),d=e.attributes,p=e.setAttributes,m=e.backgroundColor,f=i()({"blockspare-service-button":!0}),h={backgroundColor:m.color,paddingTop:n?n+"px":void 0,paddingBottom:a?a+"px":void 0},b=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xw(Object(n),!0).forEach((function(t){Cw(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xw(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},ze(d));return[wp.element.createElement(Pw,null,wp.element.createElement(Sw,this.props),wp.element.createElement("div",{className:f||void 0,style:h},wp.element.createElement(ye,this.props,wp.element.createElement(Bw,{tagName:"span",placeholder:Dw("Button text...","blockspare"),keepPlaceholderOnFocus:!0,value:r,allowedFormats:[],className:i()("blockspare-button",c,l),style:b,onChange:e=>p({buttonText:e})})),u&&wp.element.createElement("form",{key:"form-link",className:`blocks-button__inline-link blockspare-button-${s}`,onSubmit:e=>e.preventDefault(),style:{textAlign:s}},wp.element.createElement(Rw,{icon:"admin-links"}),wp.element.createElement(zw,{className:"button-url",value:o,onChange:e=>p({buttonUrl:e})}),wp.element.createElement(Fw,{icon:"editor-break",label:Dw("Apply","blockspare"),type:"submit"}))))]}});function Uw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function qw(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Uw(Object(n),!0).forEach((function(t){Gw(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Uw(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Gw(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Vw=wp.i18n.__,$w=wp.blocks.registerBlockType,Jw=wp.blockEditor,Xw=Jw.RichText,Qw=Jw.getColorClassName,Kw=mw.name,Zw=mw.category,ev=qw({},mw.attributes,{},Ie);$w(Kw,{title:Vw("Button","blockspare"),description:Vw("Adds a product title component with schema markup.","blockspare"),icon:r.button,category:Zw,parent:["blockspare/blockspare-services-inner"],keywords:[Vw("Services","blockspare"),Vw("title","blockspare"),Vw("shop","blockspare")],attributes:ev,edit:Ww,save:function(e){const t=e.attributes,n=t.backgroundColor,a=t.customBackgroundColor,r=t.paddingTop,o=t.paddingBottom,s=t.buttonText,l=t.buttonUrl,c=(t.buttonStyle,t.borderColor,t.borderBtnTextColor,t.buttonBackgroundColor,t.buttonTextColor,t.buttonSize),u=t.buttonShape,d=t.buttonTarget,p=Qw("background-color",n),m=i()({"has-background":n||a,"blockspare-service-button":!0,[p]:p}),f=qw({},ze(e.attributes)),h={backgroundColor:p?void 0:a,paddingTop:r?r+"px":void 0,paddingBottom:o?o+"px":void 0};return wp.element.createElement("div",{className:m||void 0,style:h},wp.element.createElement(ye,e,s&&wp.element.createElement("a",{href:l,target:d?"_blank":null,rel:d?"noopener noreferrer":null,className:i()("blockspare-button",u,c),style:f},wp.element.createElement(Xw.Content,{value:s}))))}});n(470);var tv=n(62);const nv=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})),av=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"})),rv=e=>wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{fill:e.fillColor},fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25",id:"star"})),ov=wp.i18n.__,iv=wp.element.Component,sv=wp.blockEditor,lv=sv.InspectorControls,cv=(sv.PanelColorSettings,wp.components),uv=cv.PanelBody,dv=cv.RangeControl;class pv extends iv{render(){const e=this.props,t=e.attributes,n=t.starCount,a=(t.starSize,t.starColor,t.backgroundColor,e.setAttributes);return wp.element.createElement(lv,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(uv,{title:ov("Star Settings","blockspare"),initialOpen:!1},wp.element.createElement(dv,{label:ov("Number Of Stars","blockspare"),value:n,onChange:e=>a({starCount:e}),min:1,max:5,step:1}))))}}wp.i18n.__;const mv=wp.element,fv=mv.Fragment,hv=mv.Component,bv=wp.blockEditor,gv=bv.BlockControls,yv=bv.AlignmentToolbar;wp.blockEditor.RichText;const _v=wp.element.Component;const kv=wp.i18n.__,wv=wp.blocks.registerBlockType,vv=tv.name,Mv=tv.category,Lv=tv.attributes;wv(vv,{title:kv("BS Star Ratings","blockspare"),description:kv("Display creative star ratings.","blockspare"),category:Mv,icon:r.starrating,attributes:Lv,example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},keywords:[kv("block","blockspare"),kv("star","blockspare"),kv("review","blockspare"),kv("rating","blockspare")],edit:class extends hv{render(){const e=this.props,t=e.attributes,n=t.starAlign,a=t.starCount,r=t.starSize,o=t.starColor,s=t.selectedStars,l=t.emptyStarColor,c=t.backgroundColor,u=e.highlightedStars,d=e.setAttributes;return wp.element.createElement(fv,null,wp.element.createElement(gv,null,wp.element.createElement(yv,{value:n,onChange:e=>{d({starAlign:e})}})),wp.element.createElement(pv,this.props),wp.element.createElement("div",{className:i()("blockspare-block-star-ratings-wrap"),style:{backgroundColor:c||"transparent"}},wp.element.createElement("div",{className:i()("blockspare-star-inner-container","star-align-"+n),onMouseLeave:()=>this.setState({highlightedStars:0})},[...Array(a)].map((e,t)=>wp.element.createElement("div",{className:"blockspare-ratings",key:t,onMouseEnter:()=>{this.setState({highlightedStars:t+1})},onClick:()=>{d(s%1==0?{selectedStars:t+(s-1===t?.5:1)}:{selectedStars:t+(s-.5===t?1:.5)})}},t<(u||s)?u?u-1===t?s%1>0?u-s-.5!=0?wp.element.createElement(av,{size:r,fillColor:o||"#fbd012"}):wp.element.createElement(rv,{size:r,fillColor:o||"#fbd012"}):u-s!=0?wp.element.createElement(rv,{size:r,fillColor:o||"#fbd012"}):wp.element.createElement(av,{size:r,fillColor:o||"#fbd012"}):wp.element.createElement(rv,{size:r,fillColor:o||"#fbd012"}):s-t>=1?wp.element.createElement(rv,{size:r,fillColor:o||"#fbd012"}):wp.element.createElement(av,{size:r,fillColor:o||"#fbd012"}):wp.element.createElement(nv,{size:r,fillColor:l||"#d5d3d3"}))))))}},save:class extends _v{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=e.starAlign,n=e.starCount,a=e.starSize,r=e.starColor,o=e.selectedStars,s=e.emptyStarColor,l=e.backgroundColor,c=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"}," ",wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#fbd012",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"}))),u=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#d5d3d3",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})));let d=[];for(let e=0;e<n;e++)d.push(e<o?o-e>=1?(p=a,m=r,wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:m||"#fbd012",width:p,height:p,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25"})))):c(a,r):u(a,s));var p,m;return wp.element.createElement("div",{className:"blockspare-block-star-ratings-wrap",style:{backgroundColor:l||"transparent"}},wp.element.createElement("div",{className:i()("blockspare-star-inner-container","star-align-"+t)},d))}}});n(471);var Tv=n(63),Ev=n(6),Sv=n.n(Ev);const xv=wp.i18n.__,Cv=wp.element,Dv=Cv.Component,Ov=(Cv.Fragment,wp.blockEditor),Yv=Ov.InspectorControls,jv=Ov.PanelColorSettings,Pv=wp.components,Nv=Pv.PanelBody,Bv=Pv.SelectControl;Pv.RangeControl;class Av extends Dv{render(){const e=this.props,t=e.attributes,n=(t.tabStyle,t.tabLayout),a=t.tabBackGroundColor,r=t.activeTabBackgroundColor,o=t.tabTextColor,i=t.activetabTextColor,s=(t.tabAlignment,e.setAttributes),l=(xv("Default","blockspare"),xv("Vertical","blockspare"),[{value:"blockspare-layout1",label:xv("Layout 1","blockspare")},{value:"blockspare-layout2",label:xv("Layout 2","blockspare")}]);xv("Left","blockspare"),xv("Right","blockspare"),xv("center","blockspare");return wp.element.createElement(Yv,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Nv,{title:xv("Tab Settings"),initialOpen:!1},wp.element.createElement(Bv,{label:xv("Tab Layout","blockspare"),options:l,value:n,onChange:e=>this.props.setAttributes({tabLayout:e})})),wp.element.createElement(jv,{title:xv("Color Settings","blockspare"),initialOpen:!1,colorSettings:[{value:o,onChange:e=>s({tabTextColor:e}),label:xv("Text Color","blockspare")},{value:i,onChange:e=>s({activetabTextColor:e}),label:xv("Active Text Color","blockspare")},{value:a,onChange:e=>s({tabBackGroundColor:e}),label:xv("Tab Background Color","blockspare")},{value:r,onChange:e=>s({activeTabBackgroundColor:e}),label:xv("Active Tab Background Color","blockspare")}]})))}}function Hv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function zv(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Hv(Object(n),!0).forEach((function(t){Iv(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Hv(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Iv(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Fv=wp.i18n.__,Rv=wp.components,Wv=Rv.Tooltip,Uv=(Rv.PanelBody,Rv.Toolbar,wp.compose.compose),qv=wp.data,Gv=qv.withSelect,Vv=qv.withDispatch,$v=wp.element,Jv=$v.Component,Xv=$v.Fragment,Qv=wp.blockEditor,Kv=Qv.InnerBlocks,Zv=Qv.RichText;var eM=Uv([Gv((e,t)=>{const n=t.clientId;return{block:(0,e("core/block-editor").getBlock)(n)}}),Vv(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,removeBlock:t.removeBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends Jv{constructor(e){super(e),Iv(this,"updateTitles",(e,t)=>{const n=this.props,a=n.attributes.tabTitles;(0,n.setAttributes)({tabTitles:a.map((n,a)=>(t===a&&(n=zv({},n,{},e)),n))})}),Iv(this,"renderTabTitles",()=>{const e=this.props,t=e.attributes,n=t.tabTitles,a=t.tabBackGroundColor,r=t.activeTabBackgroundColor,o=t.tabTextColor,i=t.activetabTextColor,s=e.block,l=e.clientId;let c="#8b249c";r&&(c=r);let u="#3c1a5b";a&&(u=a);let d="#fff";i&&(d=i);let p="#fff";o&&(p=o);let m=Sv()(`#block-${l}`);const f=this.state.showIconPicker;return n.map((e,t)=>wp.element.createElement("span",{className:`blockspare-tab-item ${this.state.activeTab==t+1?"blockspare-active":""}`},wp.element.createElement("span",{className:`blockspare-tab-title ${e.iconName?"blockspare-has-icon-"+iconPosition:""}`,onClick:()=>{let e=Sv()(`#block-${s.innerBlocks[t].clientId}`,m);Sv()(".blockspare-tab-content.blockspare-active",m).removeClass("blockspare-active"),e.addClass("blockspare-active"),this.setState({activeTab:t+1,initialRender:!1,showIconPicker:!f})},role:"button",style:{backgroundColor:this.state.activeTab==t+1?c:u,color:this.state.activeTab==t+1?d:p}},wp.element.createElement(Zv,{key:"editable",keepPlaceholderOnFocus:!0,placeholder:Fv("Add Tab Title"),value:e.title,onChange:e=>this.updateTitles({title:e},t)})),wp.element.createElement(Wv,{text:Fv("Delete this tab")},wp.element.createElement("span",{className:"blockspare-action-tab-remove",onClick:()=>this.deleteTab(t),role:"button"},wp.element.createElement("i",{className:"fas fa-times"})))))}),Iv(this,"deleteTab",e=>{const t=this.state.activeTab,n=this.props,a=n.attributes,r=a.tabTitles,o=a.tabs,i=n.setAttributes,s=n.block,l=n.removeBlock,c=n.updateBlockAttributes,u=n.clientId;i({tabTitles:r.filter((t,n)=>n!=e),tabs:o-1});let d=e+1;for(;d<o;)c(s.innerBlocks[d].clientId,Object.assign(s.innerBlocks[d].attributes,{id:s.innerBlocks[d].attributes.id-1})),d++;if(l(s.innerBlocks[e].clientId),e+1===t){let t=Sv()(`#block-${u}`),n=Sv()(`#block-${s.innerBlocks[e+1<o?e+1:o>=2?e-1:e].clientId}`,t);Sv()(".blockspare-active",t).removeClass("blockspare-active"),n.addClass("blockspare-active"),this.setState({activeTab:0==e?1:e+1<o?e+1:e,initialRender:!1})}e+1<t&&this.setState({activeTab:t-1,initialRender:!1})}),Iv(this,"newTitles",()=>{const e=this.props.attributes,t=e.tabs,n=e.tabTitles;let a=JSON.parse(JSON.stringify(n));return a[t]={title:Fv(`Tab ${t+1}`),icon:{}},a}),this.state={device:"md",initialRender:!0,activeTab:1,spacer:!0,showIconPicker:!1}}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}componentDidUpdate(e,t){const n=this.props,a=n.attributes.tabs,r=n.clientId,o=n.block;if(!this.state.initialRender&&e.block.innerBlocks.length<o.innerBlocks.length){let e=Sv()(`#block-${r}`),t=Sv()(`#block-${o.innerBlocks[a-1].clientId}`,e);Sv()(".blockspare-active",e).removeClass("blockspare-active"),t.addClass("blockspare-active")}}render(){const e=this.props.attributes,t=e.uniqueId,n=e.tabs,a=(e.tabTitles,e.tabStyle),r=e.tabLayout,o=e.tabAlignment,s=this.props,l=(s.name,s.setAttributes);s.isSelected;let c=[],u=0;for(;u<n;)c.push(u),u++;return wp.element.createElement(Xv,null,wp.element.createElement(Av,zv({setAttributes:l},this.props)),wp.element.createElement("div",{className:`blockspare-block-${t}`},wp.element.createElement("div",{className:i()("blockspare-block-tab blockspare-tab-style",a,r)},wp.element.createElement("div",{className:i()("blockspare-tab-nav","blockspare-horizontal"==a?o:"")},this.renderTabTitles(),wp.element.createElement(Wv,{text:Fv("Add new tab")},wp.element.createElement("strong",{className:"blockspare-add-new-tab",onClick:()=>{this.setState({activeTab:n+1,initialRender:!1}),l({tabs:n+1,tabTitles:this.newTitles()})},role:"button",areaLabel:Fv("Add new tab")},wp.element.createElement("i",{className:"fas fa-plus-circle"})))),wp.element.createElement("div",{className:"blockspare-tab-body"},wp.element.createElement(Kv,{tagName:"div",template:c.map(e=>["blockspare/blockspare-tab",{id:e+1,customClassName:0==e?"blockspare-tab-content blockspare-active wp-block-blockspare-blockspare-tab":"blockspare-tab-content wp-block-blockspare-blockspare-tab"}]),templateLock:"all",allowedBlocks:["blockspare/blockspare-tab"]})))))}});const tM=wp.element.Component,nM=wp.blockEditor.InnerBlocks;var aM=class extends tM{constructor(...e){var t,n,a;super(...e),a=()=>{const e=this.props.attributes,t=e.tabTitles,n=e.tabBackGroundColor,a=e.activeTabBackgroundColor,r=e.tabTextColor,o=e.activetabTextColor,i=e.iconPosition;e.tabAlignment;let s="#8b249c";a&&(s=a);let l="#3c1a5b";n&&(l=n);let c="#fff";o&&(c=o);let u="#fff";return r&&(u=r),t.map((e,t)=>wp.element.createElement("span",{className:`blockspare-tab-item ${0==t?"blockspare-active":""}`},wp.element.createElement("span",{class:`blockspare-tab-title ${e.iconName?"blockspare-has-icon-"+i:""}`,role:"button",style:{backgroundColor:0==t?s:l,color:0==t?c:u},"tab-bg":l,"atab-bg":s,"tab-text":u,"atab-text":c},e.title)))},(n="renderTabTitles")in(t=this)?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a}render(){const e=this.props.attributes,t=(e.uniqueId,e.tabs),n=e.tabStyle,a=e.tabLayout,r=e.tabAlignment;let o=[],s=0;for(;s<t;)o.push(s),s++;return wp.element.createElement("div",{className:"blockspare-block"},wp.element.createElement("div",{className:i()("blockspare-block-tab",n,a)},wp.element.createElement("div",{className:i()("blockspare-tab-nav","blockspare-horizontal"==n?r:"")},this.renderTabTitles(o)),wp.element.createElement("div",{className:"blockspare-tab-body"},wp.element.createElement(nM.Content,null))))}};const rM=wp.i18n.__,oM=wp.blocks.registerBlockType,iM=Tv.name,sM=Tv.category,lM=Tv.attributes;oM(iM,{title:rM("BS Tabs","blockspare"),description:rM("Add tabs","blockspare"),category:sM,icon:r.tabs,attributes:lM,supports:{html:!1,className:!1,align:["center","wide","full"]},keywords:[rM("block","blockspare"),rM("tab","blockspare"),rM("tabs","blockspare"),rM("tabbed","blockspare"),rM("content","blockspare")],example:{attributes:{tabTitles:[{title:"Tab 1"},{title:"Tab 2"},{title:"Tab 3"}]},innerBlocks:[{name:"blockspare/blockspare-tab",innerBlocks:[{name:"blockspare/blockspare-tab",attributes:{tabTitles:[{title:"Tab 1"},{title:"Tab 2"},{title:"Tab 3"}]}}]}]},edit:eM,save:aM});var cM=n(93);const uM=wp.element.Component,dM=wp.blockEditor.InnerBlocks;var pM=class extends uM{render(){const e=this.props.attributes.id;return wp.element.createElement("div",{className:`blockspare-tab-content ${1==e?"blockspare-active":""}`},wp.element.createElement(dM.Content,null))}};const mM=wp.element.Component,fM=wp.blockEditor.InnerBlocks;var hM=class extends mM{render(){return wp.element.createElement("div",null,wp.element.createElement(fM,{templateLock:!1}))}};const bM=wp.i18n.__,gM=wp.blocks.registerBlockType,yM=cM.name,_M=cM.category;gM(yM,{title:bM("Tab","blockspare"),category:_M,parent:["blockspare/blockspare-tabs"],supports:{html:!1,inserter:!1,reusable:!1},icon:"cart",attributes:{uniqueId:{type:"string",default:""},id:{type:"number",default:1},customClassName:{type:"string",default:""}},getEditWrapperProps:e=>({"data-tab":e.id,className:`wp-block editor-block-list__block block-editor-block-list__block ${e.customClassName}`}),edit:hM,save:pM});const kM=wp.element.Component;class wM extends kM{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.columns,a=t.columnsGap,r=t.align,o=(e.attributes,i()([this.props.className,"blockspare-testimonial-columns-"+n,"blockspare-testimonial-gap-"+a],{["align"+r]:r}));return wp.element.createElement("div",{className:o||void 0},this.props.children)}}n(472),n(473);var vM=n(94);const MM=wp.i18n.__,LM=wp.element.Component,TM=wp.blockEditor,EM=TM.InspectorControls,SM=TM.PanelColorSettings,xM=wp.components,CM=xM.PanelBody;xM.RangeControl,xM.ToggleControl;class DM extends LM{render(){const e=this.props,t=e.attributes,n=(t.starColor,t.starSize,t.enableRatings,t.titleFontSize),a=t.subtitleFontSize,r=t.headerTagOption,o=t.headertitleColor,i=t.headersubtitleColor,s=t.headerlayoutOption,l=t.titlePaddingTop,c=t.titlePaddingBottom,u=t.subtitlePaddingTop,d=t.subtitlePaddingBottom,p=t.headerboxColor,m=t.dashColor,f=(t.testimonialDescriptionTextSize,t.testimonialDescriptionTextColor),h=(t.backGroundColor,t.enableBoxShadow,t.xOffset,t.yOffset,t.blur,t.spread,t.shadowColor,t.borderRadius,e.setAttributes);return wp.element.createElement(EM,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(CM,{title:MM("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:n,onChangetitleFontSize:e=>h({titleFontSize:e}),subtitleFontSize:a,onChangesubtitleFontSize:e=>h({subtitleFontSize:e}),headerlayoutOption:s,onChangeHeaderStyle:e=>h({headerlayoutOption:e}),headerTagOption:r,onChangeHeaderTag:e=>h({headerTagOption:e}),headerboxColor:p,onChangeboxcolor:e=>h({headerboxColor:e}),dashColor:m,onChangeDashColor:e=>h({dashColor:e}),headertitleColor:o,onChangetitlecolor:e=>h({headertitleColor:e}),titlePaddingTop:l,onChangetitlePaddingTop:e=>h({titlePaddingTop:e}),titlePaddingBottom:c,onChangetitlePaddingBottom:e=>h({titlePaddingBottom:e}),headersubtitleColor:i,onChangesubtitlecolor:e=>h({headersubtitleColor:e}),subtitlePaddingTop:u,onChangesubtitlePaddingTop:e=>h({subtitlePaddingTop:e}),subtitlePaddingBottom:d,onChangesubtitlePaddingBottom:e=>h({subtitlePaddingBottom:e})})),wp.element.createElement(CM,{title:MM("Description Settings","blockspare"),initialOpen:!1},wp.element.createElement(SM,{title:MM("Description Color","blockspare"),initialOpen:!1,colorSettings:[{value:f,onChange:e=>h({testimonialDescriptionTextColor:e}),label:MM("Description Color","blockspare")}]}))))}}function OM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function YM(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?OM(Object(n),!0).forEach((function(t){jM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):OM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const PM=blockspare_globals,NM=["core/image"],BM=[["core/image",{url:PM.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],AM=wp.i18n.__,HM=wp.element,zM=HM.Component,IM=HM.Fragment,FM=wp.blockEditor,RM=FM.RichText,WM=FM.InnerBlocks;function UM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function qM(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?UM(Object(n),!0).forEach((function(t){GM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):UM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function GM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const VM=wp.blockEditor,$M=VM.InnerBlocks,JM=VM.RichText,XM=wp.element.Component;function QM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function KM(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ZM=wp.i18n.__,eL=wp.blocks.registerBlockType,tL=vM.category,nL=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?QM(Object(n),!0).forEach((function(t){KM(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):QM(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Wt,{},vM.attributes,{},Jt),aL={title:ZM("Testimonial Item","blockspare"),description:ZM("Display creative testimonial.","blockspare"),parent:["blockspare/blockspare-testimonial"],icon:"link",category:tL,supports:{html:!1,inserter:!1,reusable:!1},attributes:nL,edit:class extends zM{render(){const e=this.props,t=e.attributes,n=t.testimonialDescription,a=t.enableRatings,r=t.starCount,o=t.starSize,s=t.starColor,l=t.selectedStars,c=t.emptyStarColor,u=t.headerTagOption,d=t.headerTitle,p=t.headerSubTitle,m=t.testimonialDescriptionTextSize,f=t.testimonialDescriptionTextColor,h=t.backGroundColor,b=t.borderRadius,g=e.highlightedStars,y=e.attributes,_=e.setAttributes,k=YM({},Gt(y)),w=YM({},Vt(y)),v=YM({},$t(y));return wp.element.createElement(IM,null,wp.element.createElement(DM,this.props),wp.element.createElement("div",{className:i()("blockspare-block-testimonial-wrap"),style:YM({},Yt(y),{backgroundColor:h||"#fff",borderRadius:b||null})},wp.element.createElement("div",{className:"blockspare-author-wrap"},wp.element.createElement("div",{className:"blockspare-img-wrapper"},wp.element.createElement(WM,{template:BM,allowedBlocks:NM,templateLock:!0,templateInsertUpdatesSelection:!0})),wp.element.createElement("div",{className:"blockspare-author-designation"},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(RM,{tagName:u,placeholder:AM("Title","blockspare"),keepPlaceholderOnFocus:!0,value:d,className:"blockspare-title",style:w,onChange:e=>_({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:k}),wp.element.createElement(RM,{tagName:"p",placeholder:AM("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:p,className:"blockspare-subtitle",style:v,onChange:e=>_({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:k}))))),a&&wp.element.createElement("div",{className:"blockspare-star-rating"},wp.element.createElement("div",{className:"blockspare-star-outer-container"},wp.element.createElement("div",{className:"blockspare-star-inner-container",onMouseLeave:()=>this.setState({highlightedStars:0})},[...Array(r)].map((e,t)=>wp.element.createElement("div",{className:"blockspare-ratings",key:t,onMouseEnter:()=>{this.setState({highlightedStars:t+1})},onClick:()=>{_(l%1==0?{selectedStars:t+(l-1===t?.5:1)}:{selectedStars:t+(l-.5===t?1:.5)})}},t<(g||l)?g?g-1===t?l%1>0?g-l-.5!=0?wp.element.createElement(av,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(rv,{size:o,fillColor:s||"#fbd012"}):g-l!=0?wp.element.createElement(rv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(av,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(rv,{size:o,fillColor:s||"#fbd012"}):l-t>=1?wp.element.createElement(rv,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(av,{size:o,fillColor:s||"#fbd012"}):wp.element.createElement(nv,{size:o,fillColor:c||"#d5d3d3"})))))),wp.element.createElement("div",{className:"blockspare-testimonial-content"},wp.element.createElement(RM,{tagName:"p",className:"blockspare-description",onChange:e=>_({testimonialDescription:e}),value:n,placeholder:AM("Description","blockspare"),style:{fontSize:m+"px",color:f||"#6d6d6d"},keepPlaceholderOnFocus:!0}))))}},save:class extends XM{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.testimonialDescription,a=t.sectionAlignment,r=t.enableRatings,o=t.starCount,s=t.starSize,l=t.starColor,c=t.selectedStars,u=t.emptyStarColor,d=t.headerTagOption,p=t.headerTitle,m=t.headerSubTitle,f=t.testimonialDescriptionTextSize,h=t.testimonialDescriptionTextColor,b=t.backGroundColor,g=t.borderRadius,y=e.attributes,_=qM({},Gt(y)),k=qM({},Vt(y)),w=qM({},$t(y)),v=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"}," ",wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#fbd012",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l0,0l0,0l139.103,120.539L97.41,497.25L255,402.186l0,0 l157.59,95.039l-41.692-179.239L510,197.472z M255,354.348V117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166 L255,354.348z"}))),M=(e,t)=>wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:t||"#d5d3d3",width:e,height:e,viewBox:"0 0 510 510"},wp.element.createElement("path",{d:"M510,197.472l-183.37-15.734L255,12.75l-71.629,168.988L0,197.472l139.103,120.539L97.41,497.25L255,402.186 l157.59,95.064l-41.692-179.239L510,197.472z M255,354.348l-95.957,57.886l25.398-109.166l-84.736-73.389l111.69-9.588 L255,117.172l43.605,102.918l111.689,9.588l-84.711,73.389l25.398,109.166L255,354.348z"})));let L=[];for(let e=0;e<o;e++)L.push(e<c?c-e>=1?(T=s,E=l,wp.element.createElement("div",{className:"blockspare-ratings"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:E||"#fbd012",width:T,height:T,viewBox:"0 0 510 510"},wp.element.createElement("polygon",{points:"255,402.212 412.59,497.25 370.897,318.011 510,197.472 326.63,181.738 255,12.75 183.371,181.738 0,197.472 139.103,318.011 97.41,497.25"})))):v(s,l):M(s,u));var T,E;return wp.element.createElement("div",{className:i()("blockspare-block-testimonial-wrap"),style:qM({},Yt(y),{borderRadius:g||null,backgroundColor:b||"#fff"})},wp.element.createElement("div",{className:"blockspare-author-wrap"},wp.element.createElement("div",{className:"blockspare-img-wrapper"},wp.element.createElement($M.Content,null)),wp.element.createElement("div",{className:"blockspare-section-head-wrap",style:{textAlign:a}},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),p&&wp.element.createElement(JM.Content,{tagName:d,className:"blockspare-title",style:k,value:p}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:_}),m&&wp.element.createElement(JM.Content,{tagName:"p",className:"blockspare-subtitle",style:w,value:m}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:_}))))),r&&wp.element.createElement("div",{className:"blockspare-star-rating"},wp.element.createElement("div",{className:"blockspare-star-outer-container"},wp.element.createElement("div",{className:"blockspare-star-inner-container"},L))),wp.element.createElement("div",{className:"blockspare-testimonial-content"},wp.element.createElement(JM.Content,{tagName:"p",className:"blockspare-description",value:n,style:{fontSize:f+"px",color:h||"#6d6d6d"}})))}}};eL("blockspare/testimonial-item",aL);const rL=wp.i18n.__,oL=wp.element,iL=oL.Component,sL=oL.Fragment,lL=wp.components,cL=(lL.IconButton,lL.PanelBody),uL=lL.RangeControl,dL=(lL.ToggleControl,wp.blocks.createBlock),pL=wp.data,mL=pL.withSelect,fL=pL.withDispatch,hL=wp.blockEditor,bL=hL.InnerBlocks,gL=hL.InspectorControls,yL=wp.compose.compose;var _L=yL([mL((e,t)=>{const n=t.clientId,a=e("core/block-editor"),r=a.getBlock,o=a.isBlockSelected,i=a.hasSelectedInnerBlock;return{block:r(n),isSelectedBlockInRoot:o(n)||i(n,!0)}}),fL(e=>{const t=e("core/block-editor");return{insertBlock:t.insertBlock,updateBlockAttributes:t.updateBlockAttributes}})])(class extends iL{constructor(...e){var t,n,a;super(...e),a=e=>{const t=[],n=e.defaultItems;for(let e=0;e<n;e++)t.push(["blockspare/testimonial-item",{}]);return t},(n="getTestimonialTemplate")in(t=this)?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a}componentDidMount(){const e=this.props,t=e.setAttributes,n=e.clientId,a=e.attributes.uniqueId,r=n.substr(0,6);a?a&&a!=r&&t({uniqueId:r}):t({uniqueId:r})}insertTestimonialItem(){let e;const t=this.props,n=t.clientId,a=t.insertBlock,r=t.block;if(r.innerBlocks&&r.innerBlocks.length){const t=r.innerBlocks[r.innerBlocks.length-1].attributes.itemNumber+1,n=aL.heading;e=Object.assign({},{},{itemNumber:t,heading:n,active:!1,defaultText:""})}else e=aL;a(dL("blockspare/testimonial-item",e),void 0,n)}render(){const e=this.props,t=e.attributes,n=(e.isSelectedBlockInRoot,e.attributes),a=(n.uniqueId,n.columns),r=n.columnsGap;return[wp.element.createElement(sL,null,wp.element.createElement(gL,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(cL,{title:rL("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(uL,{label:rL("Columns","blockspare"),value:a,onChange:e=>this.props.setAttributes({columns:e}),min:1,max:2}),wp.element.createElement(uL,{label:rL("Columns Gap","blockspare"),value:r,onChange:e=>this.props.setAttributes({columnsGap:e}),min:0,max:4,step:1})))),wp.element.createElement(wM,this.props,wp.element.createElement(bL,{template:this.getTestimonialTemplate(t),allowedBlocks:["blockspare/testimonial-item"]})))]}});const kL=wp.element.Component,wL=wp.blockEditor.InnerBlocks;var vL=class extends kL{render(){const e=this.props.attributes,t=e.columns,n=e.columnsGap,a=e.align,r=e.backgroundColor,o=i()([this.props.className,"blockspare-testimonial-wrapper","blockspare-testimonial-columns-"+t,"blockspare-testimonial-gap-"+n],{["align"+a]:a});return wp.element.createElement("div",{className:o||void 0,style:{backgroundColor:r||"transparent"}},wp.element.createElement(wL.Content,null))}},ML=n(64);const LL=wp.i18n.__,TL=wp.blocks.registerBlockType,EL=ML.name,SL=ML.category,xL=ML.attributes;TL(EL,{title:LL("BS Testimonial","blockspare"),description:LL("Add a testimonial","blockspare"),category:SL,icon:r.testimonial,attributes:xL,keywords:[LL("block","blockspare"),LL("testimonial","blockspare"),LL("team","blockspare"),LL("rating","blockspare")],example:{attributes:{cover:"https://blockspare.com",author:"blockspare",pages:500}},supports:{align:["wide","full","center"],html:!0},edit:_L,save:vL});n(474),n(475);var CL=n(65);const DL=wp.i18n.__,OL=wp.element.Component,YL=wp.blockEditor,jL=YL.InspectorControls,PL=YL.PanelColorSettings,NL=wp.components,BL=NL.PanelBody,AL=(NL.ToggleControl,NL.SelectControl),HL=NL.TextControl;NL.RangeControl;class zL extends OL{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.profileTextColor,n=(e.profileBackgroundColor,e.twitter),a=e.facebook,r=(e.instagram,e.youtube,e.linkedin),o=(e.buttonFill,e.paddingTop),i=e.paddingRight,s=e.paddingBottom,l=e.paddingLeft,c=e.marginTop,u=e.marginBottom,d=(e.iconColorOption,e.customfontColorOption,e.custombackgroundColorOption,e.buttonShapes),p=e.buttonSizes,m=e.titleFontSize,f=e.subtitleFontSize,h=e.headerTagOption,b=e.headertitleColor,g=e.headersubtitleColor,y=e.headerlayoutOption,_=e.titlePaddingTop,k=e.titlePaddingBottom,w=e.subtitlePaddingTop,v=e.subtitlePaddingBottom,M=e.headerboxColor,L=e.dashColor,T=(e.enableBoxShadow,e.xOffset,e.yOffset,e.blur,e.spread,e.shadowColor,e.borderRadius,this.props.setAttributes),E=(DL(" Official","blockspare"),DL("Custom","blockspare"),[{value:"blockspare-social-icon-square",label:DL("Square","blockspare")},{value:"blockspare-social-icon-circle",label:DL("Circle","blockspare")},{value:"blockspare-social-icon-rounded",label:DL("Rounded Square","blockspare")}]),S=[{value:"blockspare-social-icon-small",label:DL("Small","blockspare")},{value:"blockspare-social-icon-medium",label:DL("Medium","blockspare")},{value:"blockspare-social-icon-large",label:DL("Large","blockspare")}];DL("Solid","blockspare"),DL("Border","blockspare"),DL("None","blockspare");return wp.element.createElement(jL,{key:"inspector"},wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(BL,{title:DL("Header Settings","blockspare"),initialOpen:!1},wp.element.createElement(yt,{enableBlockGaps:!1,titleFontSize:m,onChangetitleFontSize:e=>T({titleFontSize:e}),subtitleFontSize:f,onChangesubtitleFontSize:e=>T({subtitleFontSize:e}),headerlayoutOption:y,onChangeHeaderStyle:e=>T({headerlayoutOption:e}),headerTagOption:h,onChangeHeaderTag:e=>T({headerTagOption:e}),headerboxColor:M,onChangeboxcolor:e=>T({headerboxColor:e}),dashColor:L,onChangeDashColor:e=>T({dashColor:e}),headertitleColor:b,onChangetitlecolor:e=>T({headertitleColor:e}),titlePaddingTop:_,onChangetitlePaddingTop:e=>T({titlePaddingTop:e}),titlePaddingBottom:k,onChangetitlePaddingBottom:e=>T({titlePaddingBottom:e}),headersubtitleColor:g,onChangesubtitlecolor:e=>T({headersubtitleColor:e}),subtitlePaddingTop:w,onChangesubtitlePaddingTop:e=>T({subtitlePaddingTop:e}),subtitlePaddingBottom:v,onChangesubtitlePaddingBottom:e=>T({subtitlePaddingBottom:e})})),wp.element.createElement(BL,{title:DL("Color Settings","blockspare"),initialOpen:!1},wp.element.createElement(PL,{title:DL("Colors","blockspare"),initialOpen:!1,colorSettings:[{value:t,onChange:e=>T({profileTextColor:e}),label:DL("Description Color","blockspare")}]})),wp.element.createElement(BL,{title:DL("Social link Urls","blockspare"),className:"blockspare-hide-query",initialOpen:!1},wp.element.createElement(HL,{label:DL("Facebook Url","blockspare"),type:"text",value:a,onChange:e=>this.props.setAttributes({facebook:e})}),wp.element.createElement(HL,{label:DL("LinkedIn Url","blockspare"),type:"text",value:r,onChange:e=>this.props.setAttributes({linkedin:e})}),wp.element.createElement(HL,{label:DL("Twitter Url","blockspare"),type:"text",value:n,onChange:e=>this.props.setAttributes({twitter:e})})),wp.element.createElement(BL,{title:DL("Social Icon Option","blockspare"),initialOpen:!1},wp.element.createElement(AL,{label:DL("Size","blockspare"),options:S,value:p,onChange:e=>this.props.setAttributes({buttonSizes:e})}),wp.element.createElement(AL,{label:DL("Shape","blockspare"),options:E,value:d,onChange:e=>this.props.setAttributes({buttonShapes:e})})),wp.element.createElement(BL,{title:DL("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(BL,{title:DL("Padding Settings","blockspare"),initialOpen:!1},wp.element.createElement(it,{paddingEnableTop:!0,paddingTop:o,paddingTopMin:"0",paddingTopMax:"100",onChangePaddingTop:e=>T({paddingTop:e}),paddingEnableRight:!0,paddingRight:i,paddingRightMin:"0",paddingRightMax:"100",onChangePaddingRight:e=>T({paddingRight:e}),paddingEnableBottom:!0,paddingBottom:s,paddingBottomMin:"0",paddingBottomMax:"100",onChangePaddingBottom:e=>T({paddingBottom:e}),paddingEnableLeft:!0,paddingLeft:l,paddingLeftMin:"0",paddingLeftMax:"100",onChangePaddingLeft:e=>T({paddingLeft:e})}),wp.element.createElement(ut,{marginEnableTop:!0,marginTop:c,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>T({marginTop:e}),marginEnableBottom:!0,marginBottom:u,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>T({marginBottom:e})})))))}}function IL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function FL(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?IL(Object(n),!0).forEach((function(t){RL(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):IL(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function RL(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const WL=wp.element.Component;class UL extends WL{constructor(e){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.profileImgURL,r=t.profileFontSize,o=t.profileBackgroundColor,s=t.profileTextColor,l=t.profileAvatarShape,c=t.borderRadius,u=e.attributes;let d="";return d="left"==n?"blockspare-layout-left":"right"==n?"blockspare-layout-right":"blockspare-layout-center",wp.element.createElement("div",{style:FL({},Yt(u),{backgroundColor:o||"#f2f2f2",color:s||"#6d6d6d",borderRadius:c||null}),className:i()(this.props.className,l,d,{"blockspare-has-avatar":a},"blockspare-font-size-"+r,"blockspare-block-profile","blockspare-profile-columns")},this.props.children)}}const qL=wp.i18n.__,GL=wp.element.Component;class VL extends GL{constructor(e){super(...arguments)}render(){let e="";return e="blockspare-default-official-color"!=this.props.attributes.iconColorOption?{color:this.props.attributes.customfontColorOption,backgroundColor:this.props.attributes.custombackgroundColorOption}:{},wp.element.createElement("ul",{className:i()("blockspare-social-links",this.props.attributes.iconColorOption,this.props.attributes.buttonShapes,this.props.attributes.buttonSizes,this.props.attributes.buttonOptions,this.props.attributes.buttonFills)},this.props.attributes.facebook&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.facebook,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-facebook-f"}),wp.element.createElement("span",{className:"screen-reader-text"},qL("Facebook","blockspare")))),this.props.attributes.linkedin&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.linkedin,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-linkedin"}),wp.element.createElement("span",{className:"screen-reader-text"},qL("Linkedin","blockspare")))),this.props.attributes.instagram&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.instagram,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-instagram"}),wp.element.createElement("span",{className:"screen-reader-text"},qL("Instagram","blockspare")))),this.props.attributes.twitter&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.twitter,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-twitter"}),wp.element.createElement("span",{className:"screen-reader-text"},qL("Twitter","blockspare")))),this.props.attributes.youtube&&wp.element.createElement("li",null,wp.element.createElement("a",{style:e,href:this.props.attributes.youtube,className:"",target:"_blank",rel:"noopener noreferrer"},wp.element.createElement("i",{className:"fab fa-youtube"}),wp.element.createElement("span",{className:"screen-reader-text"},qL("Youtube","blockspare")))))}}const $L=wp.element.Component;class JL extends $L{constructor(e){super(...arguments)}render(){return wp.element.createElement("div",{className:"blockspare-profile-column blockspare-profile-avatar-wrap"},wp.element.createElement("div",{className:"blockspare-profile-image-wrap"},this.props.children))}}function XL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function QL(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?XL(Object(n),!0).forEach((function(t){KL(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):XL(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function KL(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ZL=blockspare_globals,eT=["core/image"],tT=[["core/image",{url:ZL.menu_img_url,className:"is-style-circle-mask",width:120,height:120,align:"center"}]],nT=wp.i18n.__,aT=wp.element,rT=aT.Component,oT=(aT.Fragment,wp.blockEditor),iT=oT.RichText,sT=oT.AlignmentToolbar,lT=oT.BlockControls,cT=oT.InnerBlocks;class uT extends rT{constructor(){super(...arguments)}render(){const e=this.props,t=e.attributes,n=t.sectionAlignment,a=t.headerTagOption,r=t.headerTitle,o=t.headerSubTitle,s=t.profileContent,l=t.paddingTop,c=t.paddingRight,u=t.paddingBottom,d=t.paddingLeft,p=t.marginTop,m=t.marginBottom,f=t.profileContentFontSize,h=e.attributes,b=e.setAttributes,g={paddingTop:l?l+"px":"0px",paddingRight:c?c+"px":"0px",paddingBottom:u?u+"px":"0px",paddingLeft:d?d+"px":"0px",marginTop:p?p+"px":"0px",marginBottom:m?m+"px":"0px"},y=QL({},Gt(h)),_=QL({},Vt(h)),k=QL({},$t(h));return[wp.element.createElement("div",{className:"blockspare-author-wrapper blockspare-blocks",style:g},wp.element.createElement(lT,{key:"controls"},wp.element.createElement(sT,{value:n,onChange:e=>b({sectionAlignment:e})})),wp.element.createElement(zL,QL({setAttributes:b},this.props)),wp.element.createElement(UL,this.props,wp.element.createElement(JL,this.props,wp.element.createElement(cT,{template:tT,allowedBlocks:eT,templateLock:!0,templateInsertUpdatesSelection:!0})),wp.element.createElement("div",{className:i()("blockspare-profile-column blockspare-profile-content-wrap")},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),wp.element.createElement(iT,{tagName:a,placeholder:nT("Title","blockspare"),keepPlaceholderOnFocus:!0,value:r,className:"blockspare-title",style:_,onChange:e=>b({headerTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:y}),wp.element.createElement(iT,{tagName:"p",placeholder:nT("Sub Title","blockspare"),keepPlaceholderOnFocus:!0,value:o,className:"blockspare-subtitle",style:k,onChange:e=>b({headerSubTitle:e})}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:y}))),wp.element.createElement(iT,{tagName:"div",className:"blockspare-profile-text",multiline:"p",placeholder:nT("Add your content...","blockspare"),keepPlaceholderOnFocus:!0,value:s,style:{fontSize:f+"px"},allowedFormats:["bold","italic","strikethrough","link"],onChange:e=>b({profileContent:e})}),wp.element.createElement(VL,this.props))))]}}function dT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function pT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dT(Object(n),!0).forEach((function(t){mT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const fT=wp.element.Component,hT=wp.blockEditor,bT=hT.RichText,gT=hT.InnerBlocks;class yT extends fT{constructor(){super(...arguments)}render(){const e=this.props.attributes,t=(e.sectionAlignment,e.profileContent),n=e.paddingTop,a=e.paddingRight,r=e.paddingBottom,o=e.paddingLeft,s=e.marginTop,l=e.marginBottom,c=e.headerTagOption,u=e.headerTitle,d=e.headerSubTitle,p=e.profileContentFontSize,m={paddingTop:n?n+"px":"0px",paddingRight:a?a+"px":"0px",paddingBottom:r?r+"px":"0px",paddingLeft:o?o+"px":"0px",marginTop:s?s+"px":"0px",marginBottom:l?l+"px":"0px"},f=pT({},Gt(this.props.attributes)),h=pT({},Vt(this.props.attributes)),b=pT({},$t(this.props.attributes));return wp.element.createElement("div",{className:"blockspare-author-wrapper blockspare-blocks",style:m},wp.element.createElement(UL,this.props,wp.element.createElement(JL,this.props,wp.element.createElement(gT.Content,null)),wp.element.createElement("div",{className:i()("blockspare-profile-column blockspare-profile-content-wrap")},wp.element.createElement(Rt,this.props,wp.element.createElement("div",{className:"blockspare-title-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:f}),u&&wp.element.createElement(bT.Content,{tagName:c,className:"blockspare-title",style:h,value:u}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:f})),wp.element.createElement("div",{className:"blockspare-subtitle-wrapper"},wp.element.createElement("span",{className:"blockspare-title-dash blockspare-upper-dash",style:f}),d&&wp.element.createElement(bT.Content,{tagName:"p",className:"blockspare-subtitle",style:b,value:d}),wp.element.createElement("span",{className:"blockspare-title-dash blockspare-lower-dash",style:f}))),t&&wp.element.createElement(bT.Content,{tagName:"div",className:"blockspare-profile-text",value:t,style:{fontSize:p+"px"}}),wp.element.createElement(VL,this.props))))}}function _T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function kT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const wT=wp.i18n.__,vT=wp.blocks.registerBlockType,MT=CL.name,LT=CL.category,TT=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_T(Object(n),!0).forEach((function(t){kT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_T(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Wt,{},CL.attributes,{},Jt);vT(MT,{title:wT("BS User Profile","blockspare"),description:wT("Add User profile","blockspare"),category:LT,icon:r.userprofile,attributes:TT,keywords:[wT("block","blockspare"),wT("user","blockspare"),wT("profile","blockspare"),wT("team","blockspare")],example:{attributes:{profileBackgroundColor:"#f2f2f2"}},edit:e=>wp.element.createElement(uT,e),save:e=>wp.element.createElement(yT,e)});n(476),n(477);const ET=wp.i18n.__,ST=wp.element,xT=ST.Component,CT=(ST.Fragment,wp.blockEditor),DT=CT.InspectorControls,OT=CT.PanelColorSettings,YT=wp.components,jT=YT.PanelBody,PT=YT.RangeControl;class NT extends xT{constructor(e){super(...arguments)}render(){const e=this.props.attributes,t=e.design,n=void 0===t?"double-wave":t,a=(e.width,e.height),r=e.color,o=e.marginTop,i=e.marginBottom,s=this.props.setAttributes;return wp.element.createElement(DT,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(Fn,null,wp.element.createElement(Bn,{onChange:e=>s({design:e}),selected:n,excludeDesigns:["straight-1"]})),wp.element.createElement(jT,{title:ET("Divider Settings","blockspare"),initialOpen:!1},wp.element.createElement(OT,{title:ET("Shape Color","blockspare"),initialOpen:!0,colorSettings:[{value:r,onChange:e=>s({color:e}),label:ET("Shape Color","blockspare")}]}),wp.element.createElement(PT,{label:ET("Height","blockspare"),value:a,onChange:e=>s({height:e}),min:30,step:2,max:300})),wp.element.createElement(jT,{title:ET("Block Gaps Settings","blockspare"),initialOpen:!1},wp.element.createElement(jT,{title:ET("Margin Settings","blockspare"),initialOpen:!0},wp.element.createElement(ut,{marginEnableTop:!0,marginTop:o,marginTopMin:"0",marginTopMax:"100",onChangeMarginTop:e=>s({marginTop:e}),marginEnableBottom:!0,marginBottom:i,marginBottomMin:"0",marginBottomMax:"100",onChangeMarginBottom:e=>s({marginBottom:e})})))))}}function BT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function AT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?BT(Object(n),!0).forEach((function(t){HT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):BT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function HT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}wp.i18n.__;const zT=wp.element,IT=zT.Component,FT=zT.Fragment;function RT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function WT(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?RT(Object(n),!0).forEach((function(t){UT(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):RT(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function UT(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const qT=wp.element,GT=qT.Component,VT=qT.Fragment;var $T=n(66);const JT=wp.i18n.__,XT=wp.blocks.registerBlockType,QT=$T.name,KT=$T.category,ZT=$T.attributes;XT(QT,{title:JT("BS Shape Divider","blockspare"),description:JT("Decorations for section shapes.","blockspare"),category:KT,icon:r.shapediviver,attributes:ZT,keywords:[JT("block","blockspare"),JT("shape","blockspare"),JT("divider","blockspare"),JT("space","blockspare")],supports:{align:["wide","full","center"]},example:{design:"double-wave",color:"#3c1a5b"},edit:class extends IT{constructor(e){super(...arguments)}render(){const e=this.props,t=e.className,n=e.attributes,a=n.design,r=void 0===a?"double-wave":a,o=n.layer1Shadow,s=void 0!==o&&o,l=n.width,c=n.height,u=n.verticalFlip,d=n.horizontalFlip,p=n.color,m=e.attributes,f=e.isSelected,h=e.setAttributes;let b=i()("blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(l),t,{"is-vertically-flipped":u,"is-horizontally-flipped":d});return wp.element.createElement(FT,null,wp.element.createElement(NT,AT({setAttributes:h},this.props)),f&&wp.element.createElement(sr,this.props),wp.element.createElement("div",{className:b,style:AT({color:p||"#3c1a5b",height:c},jt(m))},wp.element.createElement(Za,{design:r,shadow:s,className:"blockspare-svg-svg-inner"})))}},save:class extends GT{render(){const e=this.props.className,t=this.props,n=t.attributes,a=n.design,r=void 0===a?"double-wave":a,o=n.align,s=n.width,l=n.height,c=n.verticalFlip,u=n.horizontalFlip,d=n.color,p=t.attributes;let m=i()(e,{"is-vertically-flipped":c,"is-horizontally-flipped":u},"align"+o,"blockspare-blocks blockspare-svg-wrapper",function(e){return"has-width-"+e.toString().replace(".","-")}(s));return wp.element.createElement(VT,null,wp.element.createElement("div",{className:m,style:WT({color:d||"#3c1a5b",height:l},jt(p))},wp.element.createElement(Za,{design:r,className:"blockspare-svg-svg-inner"})))}}});var eE=n(67);const tE=wp.i18n.__,nE=wp.element.Component,aE=wp.blockEditor,rE=aE.PanelColorSettings,oE=aE.InspectorControls,iE=wp.components,sE=iE.RangeControl,lE=iE.PanelBody;class cE extends nE{render(){const e=this.props.attributes,t=e.height,n=e.backGroundColor,a=this.props.setAttributes;return wp.element.createElement(oE,null,wp.element.createElement("div",{className:"blockspare-inspector-wrapper"},wp.element.createElement(lE,{title:tE("Block Settings","blockspare"),initialOpen:!1},wp.element.createElement(sE,{label:tE("Height","blockspare"),value:t,onChange:e=>a({height:e}),min:0,step:5,max:150}),wp.element.createElement(rE,{title:tE("Background Color","blockspare"),initialOpen:!0,colorSettings:[{value:n,onChange:e=>a({backGroundColor:e}),label:tE("Background Color","blockspare")}]}))))}}function uE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function dE(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const pE=wp.element.Fragment,mE=eE.name,fE=eE.category,hE=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?uE(Object(n),!0).forEach((function(t){dE(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):uE(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},eE.attributes),bE=wp.blocks.registerBlockType,gE=wp.i18n.__;bE(mE,{title:gE("BS Empty Section","blockspare"),description:gE("Empty Section","blockspare"),category:fE,icon:r.emptySpaces,attributes:hE,keywords:[gE("empty","blockspare")],supports:{align:["wide","full","center"]},example:{attributes:{cover:"https://blockspare.com",author:"Blockspare",pages:500}},edit:function(e){const t=e.attributes,n=t.height,a=t.backGroundColor;return wp.element.createElement(pE,null,wp.element.createElement(cE,e),wp.element.createElement("div",{className:"blockspare-blocks blockspare-empty-section-wrapper"},wp.element.createElement("div",{className:"blockspare-section",style:{height:n+"px",width:"100%",backgroundColor:a||"#fff"}})))},save:function(e){const t=e.attributes,n=t.height,a=t.backGroundColor;return wp.element.createElement("div",{className:"blockspare-blocks blockspare-empty-section-wrapper"},wp.element.createElement("div",{className:"blockspare-section",style:{height:n+"px",width:"100%",backgroundColor:a||"#fff"}}))}})},function(e,t){},,,,function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},,function(e,t){},,function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){}]); |
| 82 |
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2pxdWVyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL29taXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb21wYWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNQcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJdGVyYXRlZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL3V0aWxzL2lubmVyU2xpZGVyVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9nZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1VuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3BpY2tCeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbm9kZVV0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldEFsbEtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ldi1lbWl0dGVyL2V2LWVtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2dldC1zaXplL2dldC1zaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZmxhdFJlc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxBcnJheXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW5xdWlyZS5qcy9zcmMvVXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tU0cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3ItY3lybC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2NvbGxlY3Rpb24tdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9icm93c2VyLWRldGVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb3VudHVwL2J1aWxkL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1zbGljay9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9waWNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1tYXNvbnJ5LWNvbXBvbmVudC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21lbWl6ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RpbWVzLmpzIiwid2VicGFjazovLy8uL3NyYy9hc3NldHMvaWNvbnMvaWNvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weUFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fRGF0YVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lUmVnRXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21lbW9pemVDYXBwZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZW1vaXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNsaWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2N1c3RvbU9taXRDbG9uZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9mbGF0dGVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzRmxhdHRlbmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2hvcnRPdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93YXJuaW5nL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvdW50dXAuanMvZGlzdC9jb3VudFVwLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VFYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxPYmplY3RzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eURlZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL3NsaWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL2lubmVyLXNsaWRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9pbml0aWFsLXN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2guZGVib3VuY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi90cmFjay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2xpY2svbGliL2RvdHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9hcnJvd3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbC9kaXN0L1Jlc2l6ZU9ic2VydmVyLmVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc29uMm1xL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHJpbmctY29udmVydC9jYW1lbDJoeXBoZW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXNsaWNrL2xpYi9kZWZhdWx0LXByb3BzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW5xdWlyZS5qcy9zcmMvTWVkaWFRdWVyeURpc3BhdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9NZWRpYVF1ZXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbnF1aXJlLmpzL3NyYy9RdWVyeUhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUgc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9tYXNvbnJ5LWxheW91dC9tYXNvbnJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9vdXRsYXllci9vdXRsYXllci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZml6enktdWktdXRpbHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlc2FuZHJvLW1hdGNoZXMtc2VsZWN0b3IvbWF0Y2hlcy1zZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvb3V0bGF5ZXIvaXRlbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW1hZ2VzbG9hZGVkL2ltYWdlc2xvYWRlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvZWxlbWVudC11dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2xpc3RlbmVyLWhhbmRsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1nZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1oYW5kbGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvcmVwb3J0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhdGNoLXByb2Nlc3Nvci9zcmMvYmF0Y2gtcHJvY2Vzc29yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYXRjaC1wcm9jZXNzb3Ivc3JjL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvc3RhdGUtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxlbWVudC1yZXNpemUtZGV0ZWN0b3Ivc3JjL2RldGVjdGlvbi1zdHJhdGVneS9vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1yZWFjdC1jbGFzcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLXJlYWN0LWNsYXNzL2ZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2ZianMvbGliL2VtcHR5T2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9mYmpzL2xpYi9pbnZhcmlhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy9hc3NldHMvaWNvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9ibG9jay1jYXRlZ29yeS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMtZmlsdGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9pbmMvaWNvbi1saWIvYWNjb3JkaW9uLWljb24tbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9pbm5lci1pdGVtL0ljb25MaXN0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvYWNjb3JkaW9uL2lubmVyLWl0ZW0vRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9pbm5lci1pdGVtL1NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9hY2NvcmRpb24vaW5uZXItaXRlbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2FjY29yZGlvbi9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvYWNjb3JkaW9uL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9hY2NvcmRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2J1dHRvbi9idXR0b24tc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZ3JhZGllbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvYXR0cmlidXRlcy9idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9idXR0b24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvbWFyZ2luLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvYm94c2hhZG93L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY2FsbC10by1hY3Rpb24vY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvYm94LXNoYWRvdy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NhbGwtdG8tYWN0aW9uL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9wYWRkaW5nLW1hcmdpbi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVycy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2guanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9hdHRyaWJ1dGVzL2JveC1zaGFkb3cuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jYWxsLXRvLWFjdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9jb250ZW50LWJveC1zdHlsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWl0ZW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLWNvbnRyb2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvZG91YmxlLXdhdmUucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvd2F2eS5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zbG9wZWQucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvZ3Jvdy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9hbmdsZWQucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1wYW5lbC1ib2R5L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY29udGVudC1ib3gvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9zdHlsZS0xLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL3N0eWxlLTIucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtMy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250ZW50LWJveC9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250ZW50LWJveC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2F0dHJpYnV0ZXMvc2VwYXJhdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2JnLWdyYWRpZW50LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvYXR0cmlidXRlcy9iZy1ncmFkaWVudC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvbnRhaW5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3NlcGFyYXRvci9zZXBhcmF0b3JzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc2VwYXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2hhcGUtZGl2aWRlci9jb250cm9scy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvbnRhaW5lci9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb250YWluZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luYy9pY29uLWxpYi9pY29uTGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ljb24tc2V0L2NvbXBvbmVudHMvSWNvbkxpc3QuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pY29uLXNldC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb3VudGVyL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvc3R5bGVzL2ljb24tY29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9jb3VudGVyL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2NvdW50ZXIvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvY291bnRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ljb24tc2V0L2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaWNvbi1zZXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1pbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2dhbGxlcnktcGxhY2Vob2xkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2dhbGxlcnktZHJvcHpvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9jb21wb25lbnRzL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1jYXJvdXNlbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci9saW5lLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3Byb2dyZXNzYmFyL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3Byb2dyZXNzYmFyL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saW5lYXItcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpbmVhci1wcm9ncmVzc2Jhci9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGluZWFyLXByb2dyZXNzYmFyL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saW5lYXItcHJvZ3Jlc3NiYXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luYy9pY29uLWxpYi9jdXN0b20taWNvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9saXN0L2ljb24tbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvY29tcG9uZW50cy9pY29uLXNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGlzdC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3Qvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sb2dvcy9jb21wb25lbnQvbG9nb3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sb2dvcy9jb21wb25lbnQvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xvZ29zL2NvbXBvbmVudC9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbG9nb3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sYXRlc3QtcG9zdHMtZ3JpZC9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTIucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0zLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWdyaWQvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2xhdGVzdC1wb3N0cy1ncmlkL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWxpc3QvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0yLnBuZyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMy5wbmciLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9sYXRlc3QtcG9zdHMtbGlzdC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvbGF0ZXN0LXBvc3RzLWxpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2NhcHRpb24tb3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1saW5rLXNldHRpbmdzLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaW1hZ2UtbWFzb25yeS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2ltYWdlLW1hc29ucnkvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvaW1hZ2UtbWFzb25yeS9jb21wb25lbnRzL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91dGlscy9nYWxsZXJ5L2F0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9pbWFnZS1tYXNvbnJ5L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvbm90aWNlLWJhci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL25vdGljZS1iYXIvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvbm90aWNlLWJhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNlLWxpc3QvbGlzdC13cmFwcGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9saXN0LWl0ZW0vY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljZS1saXN0L2xpc3QtaXRlbS9FZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9saXN0LWl0ZW0vU2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNlLWxpc3QvbGlzdC1pdGVtL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2UtbGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvY29tcG9uZW50cy9wcmljaW5nLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2luZy10YWJsZS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvcHJpY2luZy10YWJsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3RpdGxlL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3RpdGxlL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3ByaWNlL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL3ByaWNlL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9wcmljZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2Rlc2NyaXB0aW9uL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2Rlc2NyaXB0aW9uL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9wcmljaW5nLXRhYmxlL3ByaWNpbmctdGFibGUtaW5uZXIvY29tcG9uZW50cy9idXR0b24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3ByaWNpbmctdGFibGUvcHJpY2luZy10YWJsZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9jb21wb25lbnRzL3NvY2lhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLWxpbmtzL2NvbXBvbmVudHMvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1saW5rcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NvY2lhbC1zaGFyaW5nL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLXNoYXJpbmcvY29tcG9uZW50cy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc29jaWFsLXNoYXJpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlY3Rpb24taGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvY29tcG9uZW50cy9zZXJ2aWNlcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9zZXJ2aWNlLWlubmVyL2NvbXBvbmVudHMvdGl0bGUvZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy90aXRsZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zZXJ2aWNlcy9zZXJ2aWNlLWlubmVyL2NvbXBvbmVudHMvZGVzY3JpcHRpb24vZWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9kZXNjcmlwdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3NlcnZpY2VzL3NlcnZpY2UtaW5uZXIvY29tcG9uZW50cy9idXR0b24vaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2VydmljZXMvc2VydmljZS1pbm5lci9jb21wb25lbnRzL2J1dHRvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5jL2ljb24tbGliL3N0YXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zdGFyLXJhdGluZ3MvY29tcG9uZW50cy9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zdGFyLXJhdGluZ3MvRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3N0YXItcmF0aW5ncy9TYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc3Rhci1yYXRpbmdzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9jb21wb25lbnQvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3RhYnMvdGFiL1NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90YWJzL3RhYi9FZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGFicy90YWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90ZXN0aW1vbmlhbC90ZXN0aW1vbmlhbC13cmFwcGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGVzdGltb25pYWwvdGVzdGltb25pYWwtaXRlbS9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vRWRpdC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vU2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL3Rlc3RpbW9uaWFsLWl0ZW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy90ZXN0aW1vbmlhbC9lZGl0LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdGVzdGltb25pYWwvc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3Rlc3RpbW9uaWFsL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2NvbXBvbmVudHMvaW5zcGVjdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2NvbXBvbmVudHMvcHJvZmlsZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL3NvY2lhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL2F2YXRhci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL3VzZXItcHJvZmlsZS9jb21wb25lbnRzL2VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy91c2VyLXByb2ZpbGUvY29tcG9uZW50cy9zYXZlLmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvdXNlci1wcm9maWxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3Mvc2hhcGUtZGl2aWRlci9pbnNwZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL0VkaXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Jsb2Nrcy9zaGFwZS1kaXZpZGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9ibG9ja3MvZW1wdHktc2VjdGlvbi9jb21wb25lbnRzL2luc3BlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYmxvY2tzL2VtcHR5LXNlY3Rpb24vaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJhcHBseSIsImpvaW4iLCJkZWZhdWx0IiwiaG9va0NhbGxiYWNrIiwic29tZSIsImhvb2tzIiwiaW5wdXQiLCJ0b1N0cmluZyIsImlzT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJpc051bWJlciIsImlzRGF0ZSIsIkRhdGUiLCJtYXAiLCJhcnIiLCJmbiIsInJlcyIsImhhc093blByb3AiLCJhIiwiYiIsImV4dGVuZCIsInZhbHVlT2YiLCJjcmVhdGVVVEMiLCJmb3JtYXQiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZ2V0UGFyc2luZ0ZsYWdzIiwiX3BmIiwiZW1wdHkiLCJ1bnVzZWRUb2tlbnMiLCJ1bnVzZWRJbnB1dCIsIm92ZXJmbG93IiwiY2hhcnNMZWZ0T3ZlciIsIm51bGxJbnB1dCIsImludmFsaWRNb250aCIsImludmFsaWRGb3JtYXQiLCJ1c2VySW52YWxpZGF0ZWQiLCJpc28iLCJwYXJzZWREYXRlUGFydHMiLCJtZXJpZGllbSIsInJmYzI4MjIiLCJ3ZWVrZGF5TWlzbWF0Y2giLCJpc1ZhbGlkIiwiX2lzVmFsaWQiLCJmbGFncyIsInBhcnNlZFBhcnRzIiwiaXNOb3dWYWxpZCIsImlzTmFOIiwiX2QiLCJnZXRUaW1lIiwiaW52YWxpZFdlZWtkYXkiLCJfc3RyaWN0IiwidW5kZWZpbmVkIiwiYmlnSG91ciIsImlzRnJvemVuIiwiY3JlYXRlSW52YWxpZCIsIk5hTiIsImZ1biIsInRoaXMiLCJsZW4iLCJtb21lbnRQcm9wZXJ0aWVzIiwiY29weUNvbmZpZyIsInRvIiwiZnJvbSIsInByb3AiLCJ2YWwiLCJfaXNBTW9tZW50T2JqZWN0IiwiX2kiLCJfZiIsIl9sIiwiX3R6bSIsIl9pc1VUQyIsIl9vZmZzZXQiLCJfbG9jYWxlIiwidXBkYXRlSW5Qcm9ncmVzcyIsIk1vbWVudCIsImNvbmZpZyIsInVwZGF0ZU9mZnNldCIsImlzTW9tZW50Iiwib2JqIiwiYWJzRmxvb3IiLCJudW1iZXIiLCJNYXRoIiwiY2VpbCIsImZsb29yIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsImlzRmluaXRlIiwiY29tcGFyZUFycmF5cyIsImFycmF5MSIsImFycmF5MiIsImRvbnRDb252ZXJ0IiwibWluIiwibGVuZ3RoRGlmZiIsImFicyIsImRpZmZzIiwid2FybiIsIm1zZyIsInN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncyIsImNvbnNvbGUiLCJkZXByZWNhdGUiLCJmaXJzdFRpbWUiLCJkZXByZWNhdGlvbkhhbmRsZXIiLCJhcmdzIiwic2xpY2UiLCJFcnJvciIsInN0YWNrIiwia2V5cyIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsImlzRnVuY3Rpb24iLCJGdW5jdGlvbiIsIm1lcmdlQ29uZmlncyIsInBhcmVudENvbmZpZyIsImNoaWxkQ29uZmlnIiwiTG9jYWxlIiwic2V0IiwiYWxpYXNlcyIsImFkZFVuaXRBbGlhcyIsInVuaXQiLCJzaG9ydGhhbmQiLCJsb3dlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVVuaXRzIiwidW5pdHMiLCJub3JtYWxpemVPYmplY3RVbml0cyIsImlucHV0T2JqZWN0Iiwibm9ybWFsaXplZFByb3AiLCJub3JtYWxpemVkSW5wdXQiLCJwcmlvcml0aWVzIiwiYWRkVW5pdFByaW9yaXR5IiwicHJpb3JpdHkiLCJ6ZXJvRmlsbCIsInRhcmdldExlbmd0aCIsImZvcmNlU2lnbiIsImFic051bWJlciIsInplcm9zVG9GaWxsIiwicG93IiwibWF4Iiwic3Vic3RyIiwiZm9ybWF0dGluZ1Rva2VucyIsImxvY2FsRm9ybWF0dGluZ1Rva2VucyIsImZvcm1hdEZ1bmN0aW9ucyIsImZvcm1hdFRva2VuRnVuY3Rpb25zIiwiYWRkRm9ybWF0VG9rZW4iLCJ0b2tlbiIsInBhZGRlZCIsIm9yZGluYWwiLCJjYWxsYmFjayIsImZ1bmMiLCJsb2NhbGVEYXRhIiwiZm9ybWF0TW9tZW50IiwiZXhwYW5kRm9ybWF0IiwiYXJyYXkiLCJtYXRjaCIsInJlcGxhY2UiLCJtb20iLCJvdXRwdXQiLCJtYWtlRm9ybWF0RnVuY3Rpb24iLCJpbnZhbGlkRGF0ZSIsInJlcGxhY2VMb25nRGF0ZUZvcm1hdFRva2VucyIsImxvbmdEYXRlRm9ybWF0IiwibGFzdEluZGV4IiwidGVzdCIsIm1hdGNoMSIsIm1hdGNoMiIsIm1hdGNoMyIsIm1hdGNoNCIsIm1hdGNoNiIsIm1hdGNoMXRvMiIsIm1hdGNoM3RvNCIsIm1hdGNoNXRvNiIsIm1hdGNoMXRvMyIsIm1hdGNoMXRvNCIsIm1hdGNoMXRvNiIsIm1hdGNoVW5zaWduZWQiLCJtYXRjaFNpZ25lZCIsIm1hdGNoT2Zmc2V0IiwibWF0Y2hTaG9ydE9mZnNldCIsIm1hdGNoV29yZCIsInJlZ2V4ZXMiLCJhZGRSZWdleFRva2VuIiwicmVnZXgiLCJzdHJpY3RSZWdleCIsImlzU3RyaWN0IiwiZ2V0UGFyc2VSZWdleEZvclRva2VuIiwiUmVnRXhwIiwicmVnZXhFc2NhcGUiLCJtYXRjaGVkIiwicDEiLCJwMiIsInAzIiwicDQiLCJ0b2tlbnMiLCJhZGRQYXJzZVRva2VuIiwiYWRkV2Vla1BhcnNlVG9rZW4iLCJfdyIsImFkZFRpbWVUb0FycmF5RnJvbVRva2VuIiwiX2EiLCJkYXlzSW5ZZWFyIiwieWVhciIsImlzTGVhcFllYXIiLCJ5IiwicGFyc2VUd29EaWdpdFllYXIiLCJwYXJzZUludCIsImluZGV4T2YiLCJnZXRTZXRZZWFyIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwic2V0JDEiLCJtb250aCIsImRhdGUiLCJkYXlzSW5Nb250aCIsIngiLCJtb2RNb250aCIsIm1vbnRoc1Nob3J0IiwibW9udGhzIiwibW9udGhzU2hvcnRSZWdleCIsIm1vbnRoc1JlZ2V4IiwibW9udGhzUGFyc2UiLCJNT05USFNfSU5fRk9STUFUIiwiZGVmYXVsdExvY2FsZU1vbnRocyIsInNwbGl0IiwiZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0IiwiaGFuZGxlU3RyaWN0UGFyc2UiLCJtb250aE5hbWUiLCJpaSIsImxsYyIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX21vbnRoc1BhcnNlIiwiX2xvbmdNb250aHNQYXJzZSIsIl9zaG9ydE1vbnRoc1BhcnNlIiwic2V0TW9udGgiLCJkYXlPZk1vbnRoIiwiZ2V0U2V0TW9udGgiLCJkZWZhdWx0TW9udGhzU2hvcnRSZWdleCIsImRlZmF1bHRNb250aHNSZWdleCIsImNvbXB1dGVNb250aHNQYXJzZSIsImNtcExlblJldiIsInNob3J0UGllY2VzIiwibG9uZ1BpZWNlcyIsIm1peGVkUGllY2VzIiwic29ydCIsIl9tb250aHNSZWdleCIsIl9tb250aHNTaG9ydFJlZ2V4IiwiX21vbnRoc1N0cmljdFJlZ2V4IiwiX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgiLCJjcmVhdGVEYXRlIiwiaCIsIk0iLCJtcyIsImdldEZ1bGxZZWFyIiwic2V0RnVsbFllYXIiLCJjcmVhdGVVVENEYXRlIiwiVVRDIiwiZ2V0VVRDRnVsbFllYXIiLCJzZXRVVENGdWxsWWVhciIsImZpcnN0V2Vla09mZnNldCIsImRvdyIsImRveSIsImZ3ZCIsImdldFVUQ0RheSIsImRheU9mWWVhckZyb21XZWVrcyIsIndlZWsiLCJ3ZWVrZGF5IiwicmVzWWVhciIsInJlc0RheU9mWWVhciIsImRheU9mWWVhciIsIndlZWtPZlllYXIiLCJyZXNXZWVrIiwid2Vla09mZnNldCIsIndlZWtzSW5ZZWFyIiwid2Vla09mZnNldE5leHQiLCJzaGlmdFdlZWtkYXlzIiwid3MiLCJjb25jYXQiLCJ3ZWVrZGF5c01pbiIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzTWluUmVnZXgiLCJ3ZWVrZGF5c1Nob3J0UmVnZXgiLCJ3ZWVrZGF5c1JlZ2V4Iiwid2Vla2RheXNQYXJzZSIsImRlZmF1bHRMb2NhbGVXZWVrZGF5cyIsImRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluIiwiaGFuZGxlU3RyaWN0UGFyc2UkMSIsIndlZWtkYXlOYW1lIiwiX3dlZWtkYXlzUGFyc2UiLCJfc2hvcnRXZWVrZGF5c1BhcnNlIiwiX21pbldlZWtkYXlzUGFyc2UiLCJkYXkiLCJkZWZhdWx0V2Vla2RheXNSZWdleCIsImRlZmF1bHRXZWVrZGF5c1Nob3J0UmVnZXgiLCJkZWZhdWx0V2Vla2RheXNNaW5SZWdleCIsImNvbXB1dGVXZWVrZGF5c1BhcnNlIiwibWlucCIsInNob3J0cCIsImxvbmdwIiwibWluUGllY2VzIiwiX3dlZWtkYXlzUmVnZXgiLCJfd2Vla2RheXNTaG9ydFJlZ2V4IiwiX3dlZWtkYXlzTWluUmVnZXgiLCJfd2Vla2RheXNTdHJpY3RSZWdleCIsIl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgiLCJfd2Vla2RheXNNaW5TdHJpY3RSZWdleCIsImhGb3JtYXQiLCJob3VycyIsImxvd2VyY2FzZSIsIm1pbnV0ZXMiLCJtYXRjaE1lcmlkaWVtIiwiX21lcmlkaWVtUGFyc2UiLCJzZWNvbmRzIiwia0lucHV0IiwiX2lzUG0iLCJpc1BNIiwiX21lcmlkaWVtIiwicG9zIiwicG9zMSIsInBvczIiLCJnbG9iYWxMb2NhbGUiLCJnZXRTZXRIb3VyIiwiYmFzZUNvbmZpZyIsImNhbGVuZGFyIiwic2FtZURheSIsIm5leHREYXkiLCJuZXh0V2VlayIsImxhc3REYXkiLCJsYXN0V2VlayIsInNhbWVFbHNlIiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsInJlbGF0aXZlVGltZSIsImZ1dHVyZSIsInBhc3QiLCJzcyIsIm1tIiwiaGgiLCJkZCIsIk1NIiwieXkiLCJtZXJpZGllbVBhcnNlIiwibG9jYWxlcyIsImxvY2FsZUZhbWlsaWVzIiwibm9ybWFsaXplTG9jYWxlIiwibG9hZExvY2FsZSIsIm9sZExvY2FsZSIsIl9hYmJyIiwiZ2V0U2V0R2xvYmFsTG9jYWxlIiwiZSIsInZhbHVlcyIsImRhdGEiLCJnZXRMb2NhbGUiLCJkZWZpbmVMb2NhbGUiLCJhYmJyIiwiX2NvbmZpZyIsInBhcmVudExvY2FsZSIsImZvckVhY2giLCJuYW1lcyIsImoiLCJuZXh0IiwiY2hvb3NlTG9jYWxlIiwiY2hlY2tPdmVyZmxvdyIsIl9vdmVyZmxvd0RheU9mWWVhciIsIl9vdmVyZmxvd1dlZWtzIiwiX292ZXJmbG93V2Vla2RheSIsImRlZmF1bHRzIiwiY29uZmlnRnJvbUFycmF5IiwiY3VycmVudERhdGUiLCJleHBlY3RlZFdlZWtkYXkiLCJ5ZWFyVG9Vc2UiLCJub3dWYWx1ZSIsIm5vdyIsIl91c2VVVEMiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRNb250aCIsImdldERhdGUiLCJjdXJyZW50RGF0ZUFycmF5IiwidyIsIndlZWtZZWFyIiwidGVtcCIsIndlZWtkYXlPdmVyZmxvdyIsIkdHIiwiVyIsIkUiLCJjcmVhdGVMb2NhbCIsIl93ZWVrIiwiY3VyV2VlayIsImdnIiwiX2RheU9mWWVhciIsImRheU9mWWVhckZyb21XZWVrSW5mbyIsIl9uZXh0RGF5IiwiZ2V0RGF5Iiwic2V0VVRDTWludXRlcyIsImdldFVUQ01pbnV0ZXMiLCJleHRlbmRlZElzb1JlZ2V4IiwiYmFzaWNJc29SZWdleCIsInR6UmVnZXgiLCJpc29EYXRlcyIsImlzb1RpbWVzIiwiYXNwTmV0SnNvblJlZ2V4IiwiY29uZmlnRnJvbUlTTyIsImFsbG93VGltZSIsImRhdGVGb3JtYXQiLCJ0aW1lRm9ybWF0IiwidHpGb3JtYXQiLCJzdHJpbmciLCJleGVjIiwiY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCIsInVudHJ1bmNhdGVZZWFyIiwieWVhclN0ciIsIm9ic09mZnNldHMiLCJVVCIsIkdNVCIsIkVEVCIsIkVTVCIsIkNEVCIsIkNTVCIsIk1EVCIsIk1TVCIsIlBEVCIsIlBTVCIsImNvbmZpZ0Zyb21SRkMyODIyIiwibW9udGhTdHIiLCJkYXlTdHIiLCJob3VyU3RyIiwibWludXRlU3RyIiwic2Vjb25kU3RyIiwicmVzdWx0IiwicGFyc2VkQXJyYXkiLCJ3ZWVrZGF5U3RyIiwicGFyc2VkSW5wdXQiLCJjaGVja1dlZWtkYXkiLCJvYnNPZmZzZXQiLCJtaWxpdGFyeU9mZnNldCIsIm51bU9mZnNldCIsImhtIiwiY2FsY3VsYXRlT2Zmc2V0IiwiSVNPXzg2MDEiLCJSRkNfMjgyMiIsInNraXBwZWQiLCJzdHJpbmdMZW5ndGgiLCJ0b3RhbFBhcnNlZElucHV0TGVuZ3RoIiwiaG91ciIsImlzUG0iLCJtZXJpZGllbUhvdXIiLCJtZXJpZGllbUZpeFdyYXAiLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJ0ZW1wQ29uZmlnIiwiYmVzdE1vbWVudCIsInNjb3JlVG9CZWF0IiwiY3VycmVudFNjb3JlIiwic2NvcmUiLCJjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkiLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsImNvbmZpZ0Zyb21TdHJpbmciLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCIsImNvbmZpZ0Zyb21PYmplY3QiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsImdldE93blByb3BlcnR5TmFtZXMiLCJrIiwiaXNPYmplY3RFbXB0eSIsImFkZCIsInByb3RvdHlwZU1pbiIsIm90aGVyIiwicHJvdG90eXBlTWF4IiwicGlja0J5IiwibW9tZW50cyIsIm9yZGVyaW5nIiwiRHVyYXRpb24iLCJkdXJhdGlvbiIsInllYXJzIiwicXVhcnRlcnMiLCJxdWFydGVyIiwid2Vla3MiLCJpc29XZWVrIiwiZGF5cyIsIm1pbGxpc2Vjb25kcyIsInVuaXRIYXNEZWNpbWFsIiwicGFyc2VGbG9hdCIsImlzRHVyYXRpb25WYWxpZCIsIl9taWxsaXNlY29uZHMiLCJfZGF5cyIsIl9tb250aHMiLCJfZGF0YSIsIl9idWJibGUiLCJpc0R1cmF0aW9uIiwiYWJzUm91bmQiLCJyb3VuZCIsIm9mZnNldCIsInNlcGFyYXRvciIsInV0Y09mZnNldCIsInNpZ24iLCJvZmZzZXRGcm9tU3RyaW5nIiwiY2h1bmtPZmZzZXQiLCJtYXRjaGVyIiwibWF0Y2hlcyIsInBhcnRzIiwiY2xvbmVXaXRoT2Zmc2V0IiwibW9kZWwiLCJkaWZmIiwiY2xvbmUiLCJzZXRUaW1lIiwibG9jYWwiLCJnZXREYXRlT2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJpc1V0YyIsImFzcE5ldFJlZ2V4IiwiaXNvUmVnZXgiLCJjcmVhdGVEdXJhdGlvbiIsInJldCIsImRpZmZSZXMiLCJiYXNlIiwicGFyc2VJc28iLCJpc0JlZm9yZSIsInBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UiLCJpbnAiLCJpc0FmdGVyIiwiY3JlYXRlQWRkZXIiLCJkaXJlY3Rpb24iLCJwZXJpb2QiLCJ0bXAiLCJhZGRTdWJ0cmFjdCIsImlzQWRkaW5nIiwiaW52YWxpZCIsInN1YnRyYWN0IiwibW9udGhEaWZmIiwid2hvbGVNb250aERpZmYiLCJhbmNob3IiLCJuZXdMb2NhbGVEYXRhIiwiZGVmYXVsdEZvcm1hdCIsImRlZmF1bHRGb3JtYXRVdGMiLCJsYW5nIiwibW9kJDEiLCJkaXZpZGVuZCIsImRpdmlzb3IiLCJsb2NhbFN0YXJ0T2ZEYXRlIiwidXRjU3RhcnRPZkRhdGUiLCJhZGRXZWVrWWVhckZvcm1hdFRva2VuIiwiZ2V0U2V0V2Vla1llYXJIZWxwZXIiLCJ3ZWVrc1RhcmdldCIsInNldFdlZWtBbGwiLCJkYXlPZlllYXJEYXRhIiwiaXNvV2Vla1llYXIiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsIl9vcmRpbmFsUGFyc2UiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQiLCJnZXRTZXREYXlPZk1vbnRoIiwiZ2V0U2V0TWludXRlIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsImdldFNldE1pbGxpc2Vjb25kIiwicHJvdG8iLCJwcmVQYXJzZVBvc3RGb3JtYXQiLCJ0aW1lIiwiZm9ybWF0cyIsInNvZCIsInN0YXJ0T2YiLCJjYWxlbmRhckZvcm1hdCIsImFzRmxvYXQiLCJ0aGF0Iiwiem9uZURlbHRhIiwiZW5kT2YiLCJzdGFydE9mRGF0ZSIsImlzb1dlZWtkYXkiLCJpbnB1dFN0cmluZyIsInBvc3Rmb3JtYXQiLCJ3aXRob3V0U3VmZml4IiwiaHVtYW5pemUiLCJmcm9tTm93IiwidG9Ob3ciLCJpbnZhbGlkQXQiLCJsb2NhbElucHV0IiwiaXNCZXR3ZWVuIiwiaW5jbHVzaXZpdHkiLCJsb2NhbEZyb20iLCJsb2NhbFRvIiwiaXNTYW1lIiwiaW5wdXRNcyIsImlzU2FtZU9yQWZ0ZXIiLCJpc1NhbWVPckJlZm9yZSIsInBhcnNpbmdGbGFncyIsInByaW9yaXRpemVkIiwidW5pdHNPYmoiLCJ1IiwiZ2V0UHJpb3JpdGl6ZWRVbml0cyIsInRvQXJyYXkiLCJ0b09iamVjdCIsInRvRGF0ZSIsInRvSVNPU3RyaW5nIiwia2VlcE9mZnNldCIsImluc3BlY3QiLCJ6b25lIiwiaXNMb2NhbCIsInByZWZpeCIsInN1ZmZpeCIsInRvSlNPTiIsInVuaXgiLCJjcmVhdGlvbkRhdGEiLCJpc29XZWVrcyIsIndlZWtJbmZvIiwiaXNvV2Vla3NJblllYXIiLCJwYXJzZVdlZWtkYXkiLCJwYXJzZUlzb1dlZWtkYXkiLCJrZWVwTG9jYWxUaW1lIiwia2VlcE1pbnV0ZXMiLCJsb2NhbEFkanVzdCIsIl9jaGFuZ2VJblByb2dyZXNzIiwicGFyc2Vab25lIiwidFpvbmUiLCJoYXNBbGlnbmVkSG91ck9mZnNldCIsImlzRFNUIiwiaXNVdGNPZmZzZXQiLCJ6b25lQWJiciIsInpvbmVOYW1lIiwiZGF0ZXMiLCJpc0RTVFNoaWZ0ZWQiLCJfaXNEU1RTaGlmdGVkIiwicHJvdG8kMSIsImdldCQxIiwiaW5kZXgiLCJmaWVsZCIsInNldHRlciIsImxpc3RNb250aHNJbXBsIiwib3V0IiwibGlzdFdlZWtkYXlzSW1wbCIsImxvY2FsZVNvcnRlZCIsInNoaWZ0IiwiX2NhbGVuZGFyIiwiX2xvbmdEYXRlRm9ybWF0IiwiZm9ybWF0VXBwZXIiLCJ0b1VwcGVyQ2FzZSIsIl9pbnZhbGlkRGF0ZSIsIl9vcmRpbmFsIiwiaXNGdXR1cmUiLCJfcmVsYXRpdmVUaW1lIiwicGFzdEZ1dHVyZSIsInNvdXJjZSIsImlzRm9ybWF0IiwiX21vbnRoc1Nob3J0IiwiX21vbnRoc1BhcnNlRXhhY3QiLCJmaXJzdERheU9mWWVhciIsImZpcnN0RGF5T2ZXZWVrIiwiX3dlZWtkYXlzIiwiX3dlZWtkYXlzTWluIiwiX3dlZWtkYXlzU2hvcnQiLCJfd2Vla2RheXNQYXJzZUV4YWN0IiwiX2Z1bGxXZWVrZGF5c1BhcnNlIiwiY2hhckF0IiwiaXNMb3dlciIsImxhbmdEYXRhIiwibWF0aEFicyIsImFkZFN1YnRyYWN0JDEiLCJhYnNDZWlsIiwiZGF5c1RvTW9udGhzIiwibW9udGhzVG9EYXlzIiwibWFrZUFzIiwiYWxpYXMiLCJhcyIsImFzTWlsbGlzZWNvbmRzIiwiYXNTZWNvbmRzIiwiYXNNaW51dGVzIiwiYXNIb3VycyIsImFzRGF5cyIsImFzV2Vla3MiLCJhc01vbnRocyIsImFzUXVhcnRlcnMiLCJhc1llYXJzIiwibWFrZUdldHRlciIsInRocmVzaG9sZHMiLCJzdWJzdGl0dXRlVGltZUFnbyIsImFicyQxIiwidG9JU09TdHJpbmckMSIsIlkiLCJEIiwidG9GaXhlZCIsInRvdGFsIiwidG90YWxTaWduIiwieW1TaWduIiwiZGF5c1NpZ24iLCJobXNTaWduIiwicHJvdG8kMiIsIm1vbnRoc0Zyb21EYXlzIiwid2l0aFN1ZmZpeCIsInBvc05lZ0R1cmF0aW9uIiwicmVsYXRpdmVUaW1lJDEiLCJ0b0lzb1N0cmluZyIsInZlcnNpb24iLCJ1cGRhdGVMb2NhbGUiLCJ0bXBMb2NhbGUiLCJyZWxhdGl2ZVRpbWVSb3VuZGluZyIsInJvdW5kaW5nRnVuY3Rpb24iLCJyZWxhdGl2ZVRpbWVUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJsaW1pdCIsIm15TW9tZW50IiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUwiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwiREFURVRJTUVfTE9DQUxfTVMiLCJEQVRFIiwiVElNRSIsIlRJTUVfU0VDT05EUyIsIlRJTUVfTVMiLCJXRUVLIiwiTU9OVEgiLCJmYWN0b3J5IiwiZnJlZUdsb2JhbCIsImZyZWVTZWxmIiwic2VsZiIsInJvb3QiLCJ0eXBlIiwiZ2xvYmFsIiwiZG9jdW1lbnQiLCJ3aW5kb3ciLCJub0dsb2JhbCIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJjbGFzczJ0eXBlIiwiZm5Ub1N0cmluZyIsIk9iamVjdEZ1bmN0aW9uU3RyaW5nIiwic3VwcG9ydCIsIm5vZGVUeXBlIiwiaXNXaW5kb3ciLCJwcmVzZXJ2ZWRTY3JpcHRBdHRyaWJ1dGVzIiwic3JjIiwibm9uY2UiLCJub01vZHVsZSIsIkRPTUV2YWwiLCJjb2RlIiwibm9kZSIsImRvYyIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaGVhZCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidG9UeXBlIiwialF1ZXJ5Iiwic2VsZWN0b3IiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwibGFzdCIsImVuZCIsInNwbGljZSIsIm9wdGlvbnMiLCJjb3B5IiwiY29weUlzQXJyYXkiLCJ0YXJnZXQiLCJkZWVwIiwiaXNQbGFpbk9iamVjdCIsImV4cGFuZG8iLCJyYW5kb20iLCJpc1JlYWR5IiwiZXJyb3IiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJjb250YWlucyIsInByZWZlcnJlZERvYyIsImRpcnJ1bnMiLCJkb25lIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJub25uYXRpdmVTZWxlY3RvckNhY2hlIiwic29ydE9yZGVyIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRlc3BhY2UiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyZGVzY2VuZCIsInJwc2V1ZG8iLCJyaWRlbnRpZmllciIsIm1hdGNoRXhwciIsInJodG1sIiwicmlucHV0cyIsInJoZWFkZXIiLCJybmF0aXZlIiwicnF1aWNrRXhwciIsInJzaWJsaW5nIiwicnVuZXNjYXBlIiwiZnVuZXNjYXBlIiwiXyIsImVzY2FwZWQiLCJlc2NhcGVkV2hpdGVzcGFjZSIsImhpZ2giLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBlIiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJjaGFyQ29kZUF0IiwidW5sb2FkSGFuZGxlciIsImluRGlzYWJsZWRGaWVsZHNldCIsImFkZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsIm5vZGVOYW1lIiwiZGlyIiwiY2hpbGROb2RlcyIsImVscyIsInNlZWQiLCJuaWQiLCJncm91cHMiLCJuZXdTZWxlY3RvciIsIm5ld0NvbnRleHQiLCJvd25lckRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInFzYSIsInRvU2VsZWN0b3IiLCJ0ZXN0Q29udGV4dCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJxc2FFcnJvciIsInJlbW92ZUF0dHJpYnV0ZSIsImNhY2hlIiwiY2FjaGVMZW5ndGgiLCJtYXJrRnVuY3Rpb24iLCJhc3NlcnQiLCJlbCIsImFkZEhhbmRsZSIsImF0dHJzIiwiaGFuZGxlciIsImF0dHJIYW5kbGUiLCJzaWJsaW5nQ2hlY2siLCJjdXIiLCJzb3VyY2VJbmRleCIsIm5leHRTaWJsaW5nIiwiY3JlYXRlSW5wdXRQc2V1ZG8iLCJjcmVhdGVCdXR0b25Qc2V1ZG8iLCJjcmVhdGVEaXNhYmxlZFBzZXVkbyIsImlzRGlzYWJsZWQiLCJjcmVhdGVQb3NpdGlvbmFsUHNldWRvIiwiYXJndW1lbnQiLCJtYXRjaEluZGV4ZXMiLCJuYW1lc3BhY2UiLCJuYW1lc3BhY2VVUkkiLCJkb2N1bWVudEVsZW1lbnQiLCJoYXNDb21wYXJlIiwic3ViV2luZG93IiwiZGVmYXVsdFZpZXciLCJ0b3AiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJjbGFzc05hbWUiLCJjcmVhdGVDb21tZW50IiwiZ2V0QnlJZCIsImdldEVsZW1lbnRzQnlOYW1lIiwiZmlsdGVyIiwiYXR0cklkIiwiZmluZCIsImdldEF0dHJpYnV0ZU5vZGUiLCJ0YWciLCJpbm5lckhUTUwiLCJtYXRjaGVzU2VsZWN0b3IiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJkaXNjb25uZWN0ZWRNYXRjaCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiYWRvd24iLCJidXAiLCJjb21wYXJlIiwic29ydERldGFjaGVkIiwiYXVwIiwiYXAiLCJicCIsInVuc2hpZnQiLCJleHByIiwiZWxlbWVudHMiLCJhdHRyIiwic3BlY2lmaWVkIiwiZXNjYXBlIiwic2VsIiwidW5pcXVlU29ydCIsImR1cGxpY2F0ZXMiLCJkZXRlY3REdXBsaWNhdGVzIiwic29ydFN0YWJsZSIsInRleHRDb250ZW50IiwiZmlyc3RDaGlsZCIsIm5vZGVWYWx1ZSIsInNlbGVjdG9ycyIsImNyZWF0ZVBzZXVkbyIsInJlbGF0aXZlIiwicHJlRmlsdGVyIiwiZXhjZXNzIiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVybiIsIm9wZXJhdG9yIiwiY2hlY2siLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInN0YXJ0IiwicGFyZW50IiwidXNlQ2FjaGUiLCJsYXN0Q2hpbGQiLCJ1bmlxdWVJRCIsInBzZXVkbyIsInNldEZpbHRlcnMiLCJpZHgiLCJ1bm1hdGNoZWQiLCJlbGVtTGFuZyIsImhhc2giLCJsb2NhdGlvbiIsImFjdGl2ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhyZWYiLCJ0YWJJbmRleCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImNvbWJpbmF0b3IiLCJza2lwIiwiY2hlY2tOb25FbGVtZW50cyIsImRvbmVOYW1lIiwib2xkQ2FjaGUiLCJuZXdDYWNoZSIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJjb25kZW5zZSIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsImNvbnRleHRzIiwibXVsdGlwbGVDb250ZXh0cyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJmaWx0ZXJzIiwicGFyc2VPbmx5Iiwic29GYXIiLCJwcmVGaWx0ZXJzIiwiY2FjaGVkIiwic2V0TWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJieVNldCIsImJ5RWxlbWVudCIsInN1cGVyTWF0Y2hlciIsIm91dGVybW9zdCIsIm1hdGNoZWRDb3VudCIsInNldE1hdGNoZWQiLCJjb250ZXh0QmFja3VwIiwiZGlycnVuc1VuaXF1ZSIsIm1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyIsImNvbXBpbGVkIiwiZGVmYXVsdFZhbHVlIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJlc2NhcGVTZWxlY3RvciIsInVudGlsIiwidHJ1bmNhdGUiLCJpcyIsInNpYmxpbmdzIiwicm5lZWRzQ29udGV4dCIsIm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJub3QiLCJyb290alF1ZXJ5IiwicGFyc2VIVE1MIiwicmVhZHkiLCJycGFyZW50c3ByZXYiLCJndWFyYW50ZWVkVW5pcXVlIiwiY2hpbGRyZW4iLCJjb250ZW50cyIsInByZXYiLCJzaWJsaW5nIiwiaGFzIiwidGFyZ2V0cyIsImNsb3Nlc3QiLCJwcmV2QWxsIiwiYWRkQmFjayIsInBhcmVudHMiLCJwYXJlbnRzVW50aWwiLCJuZXh0QWxsIiwibmV4dFVudGlsIiwicHJldlVudGlsIiwiY29udGVudERvY3VtZW50IiwiY29udGVudCIsInJldmVyc2UiLCJybm90aHRtbHdoaXRlIiwiSWRlbnRpdHkiLCJ2IiwiVGhyb3dlciIsImV4IiwiYWRvcHRWYWx1ZSIsInJlc29sdmUiLCJyZWplY3QiLCJub1ZhbHVlIiwibWV0aG9kIiwicHJvbWlzZSIsImZhaWwiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwicmVtb3ZlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwic3RhdGUiLCJhbHdheXMiLCJkZWZlcnJlZCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsIm1lc3NhZ2UiLCJyZWFkeUV4Y2VwdGlvbiIsInJlYWR5TGlzdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjYXRjaCIsInJlYWR5V2FpdCIsIndhaXQiLCJyZWFkeVN0YXRlIiwiZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImFsbCIsImxldHRlciIsImNhbWVsQ2FzZSIsImFjY2VwdERhdGEiLCJvd25lciIsIkRhdGEiLCJ1aWQiLCJjb25maWd1cmFibGUiLCJoYXNEYXRhIiwiZGF0YVByaXYiLCJkYXRhVXNlciIsInJicmFjZSIsInJtdWx0aURhc2giLCJkYXRhQXR0ciIsIkpTT04iLCJwYXJzZSIsImdldERhdGEiLCJyZW1vdmVEYXRhIiwiX3JlbW92ZURhdGEiLCJkZXF1ZXVlIiwic3RhcnRMZW5ndGgiLCJfcXVldWVIb29rcyIsInN0b3AiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJkZWZlciIsInBudW0iLCJyY3NzTnVtIiwiY3NzRXhwYW5kIiwiaXNBdHRhY2hlZCIsImNvbXBvc2VkIiwiZ2V0Um9vdE5vZGUiLCJpc0hpZGRlbldpdGhpblRyZWUiLCJzdHlsZSIsImRpc3BsYXkiLCJjc3MiLCJzd2FwIiwib2xkIiwiYWRqdXN0Q1NTIiwidmFsdWVQYXJ0cyIsInR3ZWVuIiwiYWRqdXN0ZWQiLCJzY2FsZSIsIm1heEl0ZXJhdGlvbnMiLCJjdXJyZW50VmFsdWUiLCJpbml0aWFsIiwiY3NzTnVtYmVyIiwiaW5pdGlhbEluVW5pdCIsImRlZmF1bHREaXNwbGF5TWFwIiwiZ2V0RGVmYXVsdERpc3BsYXkiLCJib2R5Iiwic2hvd0hpZGUiLCJzaG93IiwiaGlkZSIsInRvZ2dsZSIsInJjaGVja2FibGVUeXBlIiwicnRhZ05hbWUiLCJyc2NyaXB0VHlwZSIsIndyYXBNYXAiLCJvcHRpb24iLCJ0aGVhZCIsImNvbCIsInRyIiwidGQiLCJfZGVmYXVsdCIsImdldEFsbCIsInNldEdsb2JhbEV2YWwiLCJyZWZFbGVtZW50cyIsIm9wdGdyb3VwIiwidGJvZHkiLCJ0Zm9vdCIsImNvbGdyb3VwIiwiY2FwdGlvbiIsInRoIiwiZGl2IiwiYnVpbGRGcmFnbWVudCIsInNjcmlwdHMiLCJzZWxlY3Rpb24iLCJpZ25vcmVkIiwid3JhcCIsImF0dGFjaGVkIiwiZnJhZ21lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50Iiwibm9kZXMiLCJodG1sUHJlZmlsdGVyIiwiY3JlYXRlVGV4dE5vZGUiLCJjaGVja0Nsb25lIiwiY2xvbmVOb2RlIiwibm9DbG9uZUNoZWNrZWQiLCJya2V5RXZlbnQiLCJybW91c2VFdmVudCIsInJ0eXBlbmFtZXNwYWNlIiwicmV0dXJuVHJ1ZSIsInJldHVybkZhbHNlIiwiZXhwZWN0U3luYyIsImVyciIsInNhZmVBY3RpdmVFbGVtZW50Iiwib24iLCJ0eXBlcyIsIm9uZSIsIm9yaWdGbiIsImV2ZW50Iiwib2ZmIiwibGV2ZXJhZ2VOYXRpdmUiLCJub3RBc3luYyIsInNhdmVkIiwiaXNUcmlnZ2VyIiwiZGVsZWdhdGVUeXBlIiwic3RvcFByb3BhZ2F0aW9uIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJ0cmlnZ2VyIiwiRXZlbnQiLCJoYW5kbGVPYmpJbiIsImV2ZW50SGFuZGxlIiwiZXZlbnRzIiwiaGFuZGxlT2JqIiwiaGFuZGxlcnMiLCJuYW1lc3BhY2VzIiwib3JpZ1R5cGUiLCJlbGVtRGF0YSIsImhhbmRsZSIsInRyaWdnZXJlZCIsImRpc3BhdGNoIiwiYmluZFR5cGUiLCJkZWxlZ2F0ZUNvdW50Iiwic2V0dXAiLCJtYXBwZWRUeXBlcyIsIm9yaWdDb3VudCIsInRlYXJkb3duIiwicmVtb3ZlRXZlbnQiLCJuYXRpdmVFdmVudCIsImhhbmRsZXJRdWV1ZSIsImZpeCIsImRlbGVnYXRlVGFyZ2V0IiwicHJlRGlzcGF0Y2giLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsImN1cnJlbnRUYXJnZXQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsInJuYW1lc3BhY2UiLCJwb3N0RGlzcGF0Y2giLCJtYXRjaGVkSGFuZGxlcnMiLCJtYXRjaGVkU2VsZWN0b3JzIiwiYnV0dG9uIiwiYWRkUHJvcCIsImhvb2siLCJvcmlnaW5hbEV2ZW50Iiwid3JpdGFibGUiLCJsb2FkIiwibm9CdWJibGUiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVyblZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwicmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFuZ2VkVG91Y2hlcyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBhZ2VYIiwicGFnZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyQ29kZSIsImtleUNvZGUiLCJidXR0b25zIiwiY2xpZW50WCIsImNsaWVudFkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInBvaW50ZXJJZCIsInBvaW50ZXJUeXBlIiwic2NyZWVuWCIsInNjcmVlblkiLCJ0YXJnZXRUb3VjaGVzIiwidG9FbGVtZW50IiwidG91Y2hlcyIsIndoaWNoIiwiZm9jdXMiLCJibHVyIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJjaGVja2VkIiwicmNsZWFuU2NyaXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1ciIsImZpeElucHV0IiwiZG9tTWFuaXAiLCJjb2xsZWN0aW9uIiwiaGFzU2NyaXB0cyIsImlOb0Nsb25lIiwidmFsdWVJc0Z1bmN0aW9uIiwiaHRtbCIsIl9ldmFsVXJsIiwia2VlcERhdGEiLCJjbGVhbkRhdGEiLCJkYXRhQW5kRXZlbnRzIiwiZGVlcERhdGFBbmRFdmVudHMiLCJzcmNFbGVtZW50cyIsImRlc3RFbGVtZW50cyIsImluUGFnZSIsImRldGFjaCIsImFwcGVuZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJhZnRlciIsInJlcGxhY2VXaXRoIiwicmVwbGFjZUNoaWxkIiwiYXBwZW5kVG8iLCJwcmVwZW5kVG8iLCJpbnNlcnRBZnRlciIsInJlcGxhY2VBbGwiLCJvcmlnaW5hbCIsImluc2VydCIsInJudW1ub25weCIsImdldFN0eWxlcyIsIm9wZW5lciIsImdldENvbXB1dGVkU3R5bGUiLCJyYm94U3R5bGUiLCJjdXJDU1MiLCJjb21wdXRlZCIsIndpZHRoIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImdldFByb3BlcnR5VmFsdWUiLCJwaXhlbEJveFN0eWxlcyIsImFkZEdldEhvb2tJZiIsImNvbmRpdGlvbkZuIiwiaG9va0ZuIiwiY29tcHV0ZVN0eWxlVGVzdHMiLCJjb250YWluZXIiLCJjc3NUZXh0IiwiZGl2U3R5bGUiLCJwaXhlbFBvc2l0aW9uVmFsIiwicmVsaWFibGVNYXJnaW5MZWZ0VmFsIiwicm91bmRQaXhlbE1lYXN1cmVzIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwicGl4ZWxCb3hTdHlsZXNWYWwiLCJib3hTaXppbmdSZWxpYWJsZVZhbCIsInBvc2l0aW9uIiwic2Nyb2xsYm94U2l6ZVZhbCIsIm9mZnNldFdpZHRoIiwibWVhc3VyZSIsImJhY2tncm91bmRDbGlwIiwiY2xlYXJDbG9uZVN0eWxlIiwiYm94U2l6aW5nUmVsaWFibGUiLCJwaXhlbFBvc2l0aW9uIiwicmVsaWFibGVNYXJnaW5MZWZ0Iiwic2Nyb2xsYm94U2l6ZSIsImNzc1ByZWZpeGVzIiwiZW1wdHlTdHlsZSIsInZlbmRvclByb3BzIiwiZmluYWxQcm9wTmFtZSIsImZpbmFsIiwiY3NzUHJvcHMiLCJjYXBOYW1lIiwidmVuZG9yUHJvcE5hbWUiLCJyZGlzcGxheXN3YXAiLCJyY3VzdG9tUHJvcCIsImNzc1Nob3ciLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJzZXRQb3NpdGl2ZU51bWJlciIsImJveE1vZGVsQWRqdXN0bWVudCIsImRpbWVuc2lvbiIsImJveCIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiY29tcHV0ZWRWYWwiLCJleHRyYSIsImRlbHRhIiwiZ2V0V2lkdGhPckhlaWdodCIsInZhbHVlSXNCb3JkZXJCb3giLCJvZmZzZXRQcm9wIiwiZ2V0Q2xpZW50UmVjdHMiLCJUd2VlbiIsImVhc2luZyIsImNzc0hvb2tzIiwib3BhY2l0eSIsIm9yaWdOYW1lIiwiaXNDdXN0b21Qcm9wIiwic2V0UHJvcGVydHkiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxib3hTaXplQnVnZ3kiLCJsZWZ0IiwibWFyZ2luIiwicGFkZGluZyIsImJvcmRlciIsImV4cGFuZCIsImV4cGFuZGVkIiwicHJvcEhvb2tzIiwicnVuIiwicGVyY2VudCIsImVhc2VkIiwic3RlcCIsImZ4Iiwic2Nyb2xsVG9wIiwic2Nyb2xsTGVmdCIsImxpbmVhciIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsImluUHJvZ3Jlc3MiLCJyZnh0eXBlcyIsInJydW4iLCJzY2hlZHVsZSIsImhpZGRlbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImludGVydmFsIiwidGljayIsImNyZWF0ZUZ4Tm93IiwiZ2VuRngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFuaW1hdGlvbiIsInR3ZWVuZXJzIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwiY3VycmVudFRpbWUiLCJzdGFydFRpbWUiLCJ0d2VlbnMiLCJvcHRzIiwic3BlY2lhbEVhc2luZyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJwcm9wRmlsdGVyIiwiY29tcGxldGUiLCJ0aW1lciIsImFuaW0iLCJ0d2VlbmVyIiwib2xkZmlyZSIsInByb3BUd2VlbiIsInJlc3RvcmVEaXNwbGF5IiwiaXNCb3giLCJkYXRhU2hvdyIsInVucXVldWVkIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwicHJlZmlsdGVyIiwic3BlZWQiLCJvcHQiLCJzcGVlZHMiLCJmYWRlVG8iLCJhbmltYXRlIiwib3B0YWxsIiwiZG9BbmltYXRpb24iLCJmaW5pc2giLCJzdG9wUXVldWUiLCJ0aW1lcnMiLCJjc3NGbiIsInNsaWRlRG93biIsInNsaWRlVXAiLCJzbGlkZVRvZ2dsZSIsImZhZGVJbiIsImZhZGVPdXQiLCJmYWRlVG9nZ2xlIiwic2xvdyIsImZhc3QiLCJkZWxheSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJjaGVja09uIiwib3B0U2VsZWN0ZWQiLCJyYWRpb1ZhbHVlIiwiYm9vbEhvb2siLCJyZW1vdmVBdHRyIiwiblR5cGUiLCJhdHRySG9va3MiLCJib29sIiwiYXR0ck5hbWVzIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiY2xhc3Nlc1RvQXJyYXkiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsInRhYmluZGV4IiwiYWRkQ2xhc3MiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInJlbW92ZUNsYXNzIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZVZhbCIsImlzVmFsaWRWYWx1ZSIsImhhc0NsYXNzIiwicnJldHVybiIsInZhbEhvb2tzIiwib3B0aW9uU2V0IiwiZm9jdXNpbiIsInJmb2N1c01vcnBoIiwic3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2siLCJvbmx5SGFuZGxlcnMiLCJidWJibGVUeXBlIiwib250eXBlIiwibGFzdEVsZW1lbnQiLCJldmVudFBhdGgiLCJwYXJlbnRXaW5kb3ciLCJzaW11bGF0ZSIsInRyaWdnZXJIYW5kbGVyIiwiYXR0YWNoZXMiLCJycXVlcnkiLCJwYXJzZVhNTCIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInJicmFja2V0IiwickNSTEYiLCJyc3VibWl0dGVyVHlwZXMiLCJyc3VibWl0dGFibGUiLCJidWlsZFBhcmFtcyIsInRyYWRpdGlvbmFsIiwicGFyYW0iLCJ2YWx1ZU9yRnVuY3Rpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemUiLCJzZXJpYWxpemVBcnJheSIsInIyMCIsInJoYXNoIiwicmFudGlDYWNoZSIsInJoZWFkZXJzIiwicm5vQ29udGVudCIsInJwcm90b2NvbCIsInRyYW5zcG9ydHMiLCJhbGxUeXBlcyIsIm9yaWdpbkFuY2hvciIsImFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsInN0cnVjdHVyZSIsImRhdGFUeXBlRXhwcmVzc2lvbiIsImRhdGFUeXBlIiwiZGF0YVR5cGVzIiwiaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJqcVhIUiIsImluc3BlY3RlZCIsInNlZWtpbmdUcmFuc3BvcnQiLCJwcmVmaWx0ZXJPckZhY3RvcnkiLCJkYXRhVHlwZU9yVHJhbnNwb3J0IiwiYWpheEV4dGVuZCIsImZsYXRPcHRpb25zIiwiYWpheFNldHRpbmdzIiwiYWN0aXZlIiwibGFzdE1vZGlmaWVkIiwiZXRhZyIsInVybCIsInByb3RvY29sIiwicHJvY2Vzc0RhdGEiLCJhc3luYyIsImNvbnRlbnRUeXBlIiwiYWNjZXB0cyIsImpzb24iLCJyZXNwb25zZUZpZWxkcyIsImNvbnZlcnRlcnMiLCJhamF4U2V0dXAiLCJzZXR0aW5ncyIsImFqYXhQcmVmaWx0ZXIiLCJhamF4VHJhbnNwb3J0IiwiYWpheCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImhlYWRlcnMiLCJiZWZvcmVTZW5kIiwic3VjY2VzcyIsInNlbmQiLCJuYXRpdmVTdGF0dXNUZXh0IiwicmVzcG9uc2VzIiwiaXNTdWNjZXNzIiwicmVzcG9uc2UiLCJtb2RpZmllZCIsImN0IiwiZmluYWxEYXRhVHlwZSIsImZpcnN0RGF0YVR5cGUiLCJhamF4SGFuZGxlUmVzcG9uc2VzIiwiY29udjIiLCJjdXJyZW50IiwiY29udiIsImRhdGFGaWx0ZXIiLCJ0aHJvd3MiLCJhamF4Q29udmVydCIsImdldEpTT04iLCJnZXRTY3JpcHQiLCJ3cmFwQWxsIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJ3cmFwSW5uZXIiLCJodG1sSXNGdW5jdGlvbiIsInVud3JhcCIsInZpc2libGUiLCJvZmZzZXRIZWlnaHQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsInhoclN1Y2Nlc3NTdGF0dXMiLCIwIiwiMTIyMyIsInhoclN1cHBvcnRlZCIsImNvcnMiLCJlcnJvckNhbGxiYWNrIiwib3BlbiIsInVzZXJuYW1lIiwieGhyRmllbGRzIiwib25sb2FkIiwib25lcnJvciIsIm9uYWJvcnQiLCJvbnRpbWVvdXQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJiaW5hcnkiLCJzY3JpcHRBdHRycyIsImNoYXJzZXQiLCJzY3JpcHRDaGFyc2V0IiwiZXZ0Iiwib2xkQ2FsbGJhY2tzIiwicmpzb25wIiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwib3JpZ2luYWxTZXR0aW5ncyIsImNhbGxiYWNrTmFtZSIsIm92ZXJ3cml0dGVuIiwicmVzcG9uc2VDb250YWluZXIiLCJqc29uUHJvcCIsImNyZWF0ZUhUTUxEb2N1bWVudCIsImltcGxlbWVudGF0aW9uIiwia2VlcFNjcmlwdHMiLCJwYXJzZWQiLCJwYXJhbXMiLCJhbmltYXRlZCIsInNldE9mZnNldCIsImN1clBvc2l0aW9uIiwiY3VyTGVmdCIsImN1ckNTU1RvcCIsImN1clRvcCIsImN1ck9mZnNldCIsImN1ckNTU0xlZnQiLCJjdXJFbGVtIiwidXNpbmciLCJyZWN0Iiwid2luIiwicGFnZVlPZmZzZXQiLCJwYWdlWE9mZnNldCIsIm9mZnNldFBhcmVudCIsInBhcmVudE9mZnNldCIsInNjcm9sbFRvIiwiSGVpZ2h0IiwiV2lkdGgiLCJkZWZhdWx0RXh0cmEiLCJmdW5jTmFtZSIsImhvdmVyIiwiZm5PdmVyIiwiZm5PdXQiLCJ1bmJpbmQiLCJkZWxlZ2F0ZSIsInVuZGVsZWdhdGUiLCJwcm94eSIsImhvbGRSZWFkeSIsImhvbGQiLCJwYXJzZUpTT04iLCJpc051bWVyaWMiLCJfalF1ZXJ5IiwiXyQiLCIkIiwibm9Db25mbGljdCIsImFycmF5TWFwIiwiYmFzZUNsb25lIiwiYmFzZVVuc2V0IiwiY2FzdFBhdGgiLCJjb3B5T2JqZWN0IiwiY3VzdG9tT21pdENsb25lIiwiZmxhdFJlc3QiLCJnZXRBbGxLZXlzSW4iLCJvbWl0IiwicGF0aHMiLCJpc0RlZXAiLCJwYXRoIiwiQ0xPTkVfREVFUF9GTEFHIiwiYmFzZUlzTmF0aXZlIiwiZ2V0VmFsdWUiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInN5bVRvU3RyaW5nVGFnIiwiYXNzaWduVmFsdWUiLCJiYXNlQXNzaWduVmFsdWUiLCJjdXN0b21pemVyIiwiaXNOZXciLCJuZXdWYWx1ZSIsImFycmF5TGlrZUtleXMiLCJiYXNlS2V5cyIsImlzTGVuZ3RoIiwiaXNLZXkiLCJzdHJpbmdUb1BhdGgiLCJpc1N5bWJvbCIsImFycmF5RmlsdGVyIiwiYmFzZUZpbHRlciIsImJhc2VJdGVyYXRlZSIsInByZWRpY2F0ZSIsInJlc0luZGV4IiwiYmFzZU1hcCIsIml0ZXJhdGVlIiwibGlzdENhY2hlQ2xlYXIiLCJsaXN0Q2FjaGVEZWxldGUiLCJsaXN0Q2FjaGVHZXQiLCJsaXN0Q2FjaGVIYXMiLCJsaXN0Q2FjaGVTZXQiLCJMaXN0Q2FjaGUiLCJlbnRyaWVzIiwiY2xlYXIiLCJlbnRyeSIsIm5hdGl2ZUNyZWF0ZSIsImdldE5hdGl2ZSIsImlzS2V5YWJsZSIsIl9fZGF0YV9fIiwib2JqVmFsdWUiLCJ3ZWJwYWNrUG9seWZpbGwiLCJyZUlzVWludCIsIm9iamVjdFByb3RvIiwiRGF0YVZpZXciLCJNYXAiLCJQcm9taXNlIiwiU2V0IiwiV2Vha01hcCIsImJhc2VHZXRUYWciLCJ0b1NvdXJjZSIsImRhdGFWaWV3Q3RvclN0cmluZyIsIm1hcEN0b3JTdHJpbmciLCJwcm9taXNlQ3RvclN0cmluZyIsInNldEN0b3JTdHJpbmciLCJ3ZWFrTWFwQ3RvclN0cmluZyIsImdldFRhZyIsIkFycmF5QnVmZmVyIiwiY3RvclN0cmluZyIsImlzT2JqZWN0TGlrZSIsInRvS2V5IiwiYmFzZU1hdGNoZXMiLCJiYXNlTWF0Y2hlc1Byb3BlcnR5IiwiaWRlbnRpdHkiLCJjYW5Vc2VET00iLCJzbGlkZXNPbkxlZnQiLCJzbGlkZXNPblJpZ2h0Iiwic2libGluZ0RpcmVjdGlvbiIsImdldFRvdGFsU2xpZGVzIiwiZ2V0UG9zdENsb25lcyIsImdldFByZUNsb25lcyIsImdldFRyYWNrTGVmdCIsImdldFRyYWNrQW5pbWF0ZUNTUyIsImdldFRyYWNrQ1NTIiwiY2hlY2tTcGVjS2V5cyIsImdldFNsaWRlQ291bnQiLCJjaGVja05hdmlnYWJsZSIsImdldE5hdmlnYWJsZUluZGV4ZXMiLCJzd2lwZUVuZCIsInN3aXBlTW92ZSIsInN3aXBlU3RhcnQiLCJrZXlIYW5kbGVyIiwiY2hhbmdlU2xpZGUiLCJzbGlkZUhhbmRsZXIiLCJpbml0aWFsaXplZFN0YXRlIiwiZXh0cmFjdE9iamVjdCIsImNhbkdvTmV4dCIsImdldFN3aXBlRGlyZWN0aW9uIiwiZ2V0SGVpZ2h0IiwiZ2V0V2lkdGgiLCJsYXp5U2xpZGVzT25SaWdodCIsImxhenlTbGlkZXNPbkxlZnQiLCJsYXp5RW5kSW5kZXgiLCJsYXp5U3RhcnRJbmRleCIsImdldFJlcXVpcmVkTGF6eVNsaWRlcyIsImdldE9uRGVtYW5kTGF6eVNsaWRlcyIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3REb20iLCJfb2JqZWN0U3ByZWFkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9kZWZpbmVQcm9wZXJ0eSIsInNwZWMiLCJvbkRlbWFuZFNsaWRlcyIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInNsaWRlSW5kZXgiLCJsYXp5TG9hZGVkTGlzdCIsInJlcXVpcmVkU2xpZGVzIiwiY3VycmVudFNsaWRlIiwiY2VudGVyTW9kZSIsInNsaWRlc1RvU2hvdyIsImNlbnRlclBhZGRpbmciLCJ0b3VjaE9iamVjdCIsInhEaXN0IiwieURpc3QiLCJzd2lwZUFuZ2xlIiwidmVydGljYWxTd2lwaW5nIiwic3RhcnRYIiwiY3VyWCIsInN0YXJ0WSIsImN1clkiLCJhdGFuMiIsImNhbkdvIiwiaW5maW5pdGUiLCJzbGlkZUNvdW50IiwibmV3T2JqZWN0Iiwic2xpZGVXaWR0aCIsIkNoaWxkcmVuIiwibGlzdFdpZHRoIiwiZmluZERPTU5vZGUiLCJsaXN0UmVmIiwidHJhY2tXaWR0aCIsInRyYWNrUmVmIiwidmVydGljYWwiLCJjZW50ZXJQYWRkaW5nQWRqIiwic2xpZGVIZWlnaHQiLCJxdWVyeVNlbGVjdG9yIiwibGlzdEhlaWdodCIsImluaXRpYWxTbGlkZSIsInJ0bCIsInNsaWRlc1RvTG9hZCIsImF1dG9wbGF5aW5nIiwiYXV0b3BsYXkiLCJ3YWl0Rm9yQW5pbWF0ZSIsImFuaW1hdGluZyIsImZhZGUiLCJsYXp5TG9hZCIsInNsaWRlc1RvU2Nyb2xsIiwidXNlQ1NTIiwiZmluYWxTbGlkZSIsImFuaW1hdGlvbkxlZnQiLCJmaW5hbExlZnQiLCJhbmltYXRpb25TbGlkZSIsIm5leHRTdGF0ZSIsInRyYWNrU3R5bGUiLCJzd2lwZUxlZnQiLCJpbmRleE9mZnNldCIsInByZXZpb3VzSW50Iiwic2xpZGVPZmZzZXQiLCJ0YXJnZXRTbGlkZSIsIk51bWJlciIsImFjY2Vzc2liaWxpdHkiLCJ0YWdOYW1lIiwic3dpcGUiLCJkcmFnZ2FibGUiLCJkcmFnZ2luZyIsInNjcm9sbGluZyIsInN3aXBlVG9TbGlkZSIsImVkZ2VGcmljdGlvbiIsImVkZ2VEcmFnZ2VkIiwib25FZGdlIiwic3dpcGVkIiwic3dpcGluZyIsInN3aXBlRXZlbnQiLCJzd2lwZUxlbmd0aCIsInNxcnQiLCJ2ZXJ0aWNhbFN3aXBlTGVuZ3RoIiwicG9zaXRpb25PZmZzZXQiLCJkb3RDb3VudCIsInN3aXBlRGlyZWN0aW9uIiwidG91Y2hTd2lwZUxlbmd0aCIsInRvdWNoVGhyZXNob2xkIiwib25Td2lwZSIsIm1pblN3aXBlIiwibmV3U2xpZGUiLCJjdXJyZW50TGVmdCIsImJyZWFrcG9pbnQiLCJjb3VudGVyIiwiaW5kZXhlcyIsIm5hdmlnYWJsZXMiLCJwcmV2TmF2aWdhYmxlIiwiY2VudGVyT2Zmc2V0Iiwic3dpcGVkU2xpZGUiLCJzbGlkZXMiLCJldmVyeSIsInNsaWRlIiwib2Zmc2V0VG9wIiwib2Zmc2V0TGVmdCIsImN1cnJlbnRJbmRleCIsImRhdGFzZXQiLCJrZXlzQXJyYXkiLCJyZWR1Y2UiLCJ0cmFja0hlaWdodCIsInRyYWNrQ2hpbGRyZW4iLCJ0cmFuc2l0aW9uIiwiV2Via2l0VHJhbnNpdGlvbiIsInVzZVRyYW5zZm9ybSIsIldlYmtpdFRyYW5zZm9ybSIsInRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwibWFyZ2luVG9wIiwiY3NzRWFzZSIsInVuc2xpY2siLCJ0YXJnZXRMZWZ0IiwidmFyaWFibGVXaWR0aCIsInNsaWRlc1RvT2Zmc2V0IiwidGFyZ2V0U2xpZGVJbmRleCIsInRyYWNrRWxlbSIsIl9yZWYiLCJfcmVmMiIsImJhc2VHZXQiLCJiYXNlUGlja0J5Iiwic3RhY2tDbGVhciIsInN0YWNrRGVsZXRlIiwic3RhY2tHZXQiLCJzdGFja0hhcyIsInN0YWNrU2V0IiwiU3RhY2siLCJzaXplIiwiZyIsIm1hcENhY2hlQ2xlYXIiLCJtYXBDYWNoZURlbGV0ZSIsIm1hcENhY2hlR2V0IiwibWFwQ2FjaGVIYXMiLCJtYXBDYWNoZVNldCIsIk1hcENhY2hlIiwiYmFzZUlzQXJndW1lbnRzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJpc0FyZ3VtZW50cyIsInN0dWJGYWxzZSIsImZyZWVFeHBvcnRzIiwiZnJlZU1vZHVsZSIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiZnJlZVByb2Nlc3MiLCJub2RlVXRpbCIsInJlcXVpcmUiLCJiaW5kaW5nIiwic3R1YkFycmF5IiwibmF0aXZlR2V0U3ltYm9scyIsImdldFN5bWJvbHMiLCJzeW1ib2wiLCJnZXRQcm90b3R5cGUiLCJvdmVyQXJnIiwiYmFzZUdldEFsbEtleXMiLCJnZXRTeW1ib2xzSW4iLCJrZXlzSW4iLCJVaW50OEFycmF5IiwiYXJyYXlCdWZmZXIiLCJieXRlTGVuZ3RoIiwicmVJc0RlZXBQcm9wIiwicmVJc1BsYWluUHJvcCIsInByb3BJc0VudW1lcmFibGUiLCJhc3NpZ24iLCJ0ZXN0MSIsInRlc3QyIiwidGVzdDMiLCJzaG91bGRVc2VOYXRpdmUiLCJzeW1ib2xzIiwiRXZFbWl0dGVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJfZXZlbnRzIiwibGlzdGVuZXJzIiwib25jZUV2ZW50cyIsIl9vbmNlRXZlbnRzIiwiZW1pdEV2ZW50Iiwib25jZUxpc3RlbmVycyIsImFsbE9mZiIsImdldFN0eWxlU2l6ZSIsImxvZ0Vycm9yIiwibWVhc3VyZW1lbnRzIiwibWVhc3VyZW1lbnRzTGVuZ3RoIiwiZ2V0U3R5bGUiLCJpc0JveFNpemVPdXRlciIsImlzU2V0dXAiLCJnZXRTaXplIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImJveFNpemluZyIsImlubmVyV2lkdGgiLCJpbm5lckhlaWdodCIsIm91dGVyV2lkdGgiLCJvdXRlckhlaWdodCIsImdldFplcm9TaXplIiwibWVhc3VyZW1lbnQiLCJwYWRkaW5nV2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdIZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpbldpZHRoIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5IZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVySGVpZ2h0IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImlzQm9yZGVyQm94U2l6ZU91dGVyIiwic3R5bGVXaWR0aCIsInN0eWxlSGVpZ2h0IiwiZnVuY1RvU3RyaW5nIiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsImlzVHlwZWRBcnJheSIsImluaGVyaXRlZCIsImlzQXJyIiwiaXNBcmciLCJpc0J1ZmYiLCJpc1R5cGUiLCJza2lwSW5kZXhlcyIsImJhc2VJc1R5cGVkQXJyYXkiLCJiYXNlVW5hcnkiLCJub2RlSXNUeXBlZEFycmF5IiwiYmFzZUtleXNJbiIsImFycmF5UHVzaCIsImtleXNGdW5jIiwic3ltYm9sc0Z1bmMiLCJmbGF0dGVuIiwib3ZlclJlc3QiLCJzZXRUb1N0cmluZyIsIm5hdGl2ZU1heCIsIm90aGVyQXJncyIsImJhc2VTZXRUb1N0cmluZyIsInNob3J0T3V0IiwiYmFzZUZvck93biIsImJhc2VFYWNoIiwiY3JlYXRlQmFzZUVhY2giLCJiYXNlSXNFcXVhbERlZXAiLCJiYXNlSXNFcXVhbCIsImJpdG1hc2siLCJTZXRDYWNoZSIsImFycmF5U29tZSIsImNhY2hlSGFzIiwiZXF1YWxGdW5jIiwiaXNQYXJ0aWFsIiwiYXJyTGVuZ3RoIiwib3RoTGVuZ3RoIiwic3RhY2tlZCIsInNlZW4iLCJhcnJWYWx1ZSIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvdGhJbmRleCIsInNyY1ZhbHVlIiwiYmFzZUhhc0luIiwiaGFzUGF0aCIsImNoZWNrRENFIiwiX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiYmFzZVNldCIsInRvRmluaXRlIiwicmVtYWluZGVyIiwicmVUcmltIiwicmVJc0JhZEhleCIsInJlSXNCaW5hcnkiLCJyZUlzT2N0YWwiLCJmcmVlUGFyc2VJbnQiLCJpc0JpbmFyeSIsIm1vbWVudCIsInN5bWJvbE1hcCIsIm51bWJlck1hcCIsInBsdXJhbEZvcm0iLCJwbHVyYWxzIiwicGx1cmFsaXplIiwiZiIsInN0ciIsIndlZWtkYXlzUGFyc2VFeGFjdCIsInN1ZmZpeGVzIiwiMSIsIjUiLCI4IiwiNzAiLCI4MCIsIjIiLCI3IiwiMjAiLCI1MCIsIjMiLCI0IiwiMTAwIiwiNiIsIjkiLCIxMCIsIjMwIiwiNjAiLCI5MCIsInJlbGF0aXZlVGltZVdpdGhQbHVyYWwiLCJmb3JtcyIsInN0YW5kYWxvbmUiLCJsYXN0RGlnaXQiLCJsYXN0MkRpZ2l0cyIsInJlbGF0aXZlVGltZVdpdGhNdXRhdGlvbiIsIm11dGF0aW9uVGFibGUiLCJzdWJzdHJpbmciLCJzb2Z0TXV0YXRpb24iLCJtdXRhdGlvbiIsImxhc3ROdW1iZXIiLCJ0cmFuc2xhdGUiLCJtb250aHNQYXJzZUV4YWN0IiwibGwiLCJsbGwiLCJsbGxsIiwicGx1cmFsIiwibW9udGhzU3RyaWN0UmVnZXgiLCJtb250aHNTaG9ydFN0cmljdFJlZ2V4IiwibG9uZ01vbnRoc1BhcnNlIiwic2hvcnRNb250aHNQYXJzZSIsInByb2Nlc3NSZWxhdGl2ZVRpbWUiLCJtb250aHNOb21pbmF0aXZlRWwiLCJtb250aHNHZW5pdGl2ZUVsIiwibW9tZW50VG9Gb3JtYXQiLCJfbW9udGhzR2VuaXRpdmVFbCIsIl9tb250aHNOb21pbmF0aXZlRWwiLCJjYWxlbmRhckVsIiwiX2NhbGVuZGFyRWwiLCJtb250aHNTaG9ydERvdCIsIm51bWJlcnNQYXN0IiwibnVtYmVyc0Z1dHVyZSIsInZlcmJhbE51bWJlciIsIm1vbnRoc1Nob3J0V2l0aERvdHMiLCJtb250aHNTaG9ydFdpdGhvdXREb3RzIiwid2Vla0VuZGluZ3MiLCI0MCIsImlzVXBwZXIiLCJlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIiLCJ0cmFuc2xhdGVTaW5ndWxhciIsInJlbGF0aXZlVGltZVdpdGhTaW5ndWxhciIsInRyYW5zbGF0b3IiLCJ3b3JkcyIsImNvcnJlY3RHcmFtbWF0aWNhbENhc2UiLCJ3b3JkS2V5IiwicmVsYXRpdmVUaW1lTXIiLCJtb250aHNOb21pbmF0aXZlIiwibW9udGhzU3ViamVjdGl2ZSIsIjEyIiwiMTMiLCJudW1iZXJzTm91bnMiLCJudW1iZXJOb3VuIiwiaHVuZHJlZCIsInRlbiIsIndvcmQiLCJudW1iZXJBc05vdW4iLCJwcm9jZXNzSG91cnNGdW5jdGlvbiIsImRldGVjdG9yIiwiaXNJRSIsImFnZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidW5kZWYiLCJpc0xlZ2FjeU9wZXJhIiwib3BlcmEiLCJfaW50ZXJvcERlZmF1bHQiLCJQcm9wVHlwZXMiLCJSZWFjdCIsIlJlYWN0X19kZWZhdWx0Iiwid2FybmluZyIsIkNvdW50VXAkMSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlT25seSIsIl9nZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX3NldFByb3RvdHlwZU9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9hcnIiLCJfbiIsIl9lIiwiX3MiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwiY3JlYXRlQ291bnRVcEluc3RhbmNlIiwiZGVjaW1hbCIsImRlY2ltYWxzIiwiZWFzaW5nRm4iLCJmb3JtYXR0aW5nRm4iLCJ1c2VFYXNpbmciLCJ1c2VHcm91cGluZyIsIkNvdW50VXAiLCJfQ29tcG9uZW50IiwiX2dldFByb3RvdHlwZU9mMiIsIl90aGlzIiwiX2xlbiIsIl9rZXkiLCJjb250YWluZXJSZWYiLCJIVE1MRWxlbWVudCIsIlNWR1RleHRFbGVtZW50IiwiU1ZHVFNwYW5FbGVtZW50IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplIiwicmVzdGFydCIsInVwZGF0ZSIsIm9uUGF1c2VSZXN1bWUiLCJwYXVzZVJlc3VtZSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIiLCJvblJlc2V0IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplMyIsIl90aGlzJHByb3BzIiwib25FbmQiLCJvblN0YXJ0IiwidGltZW91dElkIiwibmV3RW5kIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplNCIsIm9uVXBkYXRlIiwiY3JlYXRlUmVmIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX2luaGVyaXRzIiwiX3RoaXMkcHJvcHMyIiwiY3JlYXRlSW5zdGFuY2UiLCJuZXh0UHJvcHMiLCJfdGhpcyRwcm9wczMiLCJyZWRyYXciLCJwcmV2UHJvcHMiLCJfdGhpcyRwcm9wczQiLCJwcmVzZXJ2ZVZhbHVlIiwiX3RoaXMkcHJvcHM1IiwiY291bnRVcFJlZiIsInJlZiIsIkNvbXBvbmVudCIsImlzUmVxdWlyZWQiLCJzdGFydE9uTW91bnQiLCJNT0NLX0VMRU1FTlQiLCJ1c2VDb3VudFVwIiwiX3Byb3BzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfb2JqZWN0U3ByZWFkMiIsImRlZmF1bHRQcm9wcyIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsInNldENvdW50IiwidXNlUmVmIiwiZ2V0Q291bnRVcCIsImNvdW50VXAiLCJuZXdDb3VudFVwIiwiZm9ybWF0dGluZ0ZuUmVmIiwidXNlRWZmZWN0IiwiYmFzZVBpY2siLCJwaWNrIiwiYmFzZUZpbmRJbmRleCIsInRvSW50ZWdlciIsImZyb21JbmRleCIsImlzQnJvd3NlciIsIk1hc29ucnkiLCJpbWFnZXNsb2FkZWQiLCJlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciIsImRlYm91bmNlIiwiY3JlYXRlUmVhY3RDbGFzcyIsInByb3BUeXBlcyIsImVuYWJsZVJlc2l6YWJsZUNoaWxkcmVuIiwiZGlzYWJsZUltYWdlc0xvYWRlZCIsIm9uSW1hZ2VzTG9hZGVkIiwidXBkYXRlT25FYWNoSW1hZ2VMb2FkIiwiaW1hZ2VzTG9hZGVkT3B0aW9ucyIsImVsZW1lbnRUeXBlIiwib25MYXlvdXRDb21wbGV0ZSIsIm9uUmVtb3ZlQ29tcGxldGUiLCJNYXNvbnJ5Q29tcG9uZW50IiwibWFzb25yeSIsImVyZCIsImxhdGVzdEtub3duRG9tQ2hpbGRyZW4iLCJkaXNwbGF5TmFtZSIsImltYWdlc0xvYWRlZENhbmNlbFJlZiIsImdldERlZmF1bHRQcm9wcyIsImluaXRpYWxpemVNYXNvbnJ5IiwiZm9yY2UiLCJtYXNvbnJ5Q29udGFpbmVyIiwiZ2V0Q3VycmVudERvbUNoaWxkcmVuIiwiaXRlbVNlbGVjdG9yIiwiZGlmZkRvbUNoaWxkcmVuIiwiZm9yY2VJdGVtUmVsb2FkIiwia25vd25DaGlsZHJlblN0aWxsQXR0YWNoZWQiLCJlbGVtZW50IiwiY3VycmVudERvbUNoaWxkcmVuIiwicmVtb3ZlZCIsImF0dGFjaGVkS25vd25DaGlsZCIsIm5ld0RvbUNoaWxkcmVuIiwiY3VycmVudENoaWxkIiwiYmVnaW5uaW5nSW5kZXgiLCJwcmVwZW5kZWQiLCJuZXdDaGlsZCIsImFwcGVuZGVkIiwibW92ZWQiLCJjaGlsZCIsIm5ldyIsInBlcmZvcm1MYXlvdXQiLCJyZWxvYWRJdGVtcyIsInJlbW92ZUFsbExpc3RlbmVycyIsImxpc3RlblRvRWxlbWVudFJlc2l6ZSIsImxheW91dCIsImRlcmVmSW1hZ2VzTG9hZGVkIiwiaW1hZ2VzTG9hZGVkIiwiaW1nTG9hZCIsImNhbmNlbCIsImluaXRpYWxpemVSZXNpemFibGVDaGlsZHJlbiIsInN0cmF0ZWd5IiwibGlzdGVuVG8iLCJkZXN0cm95RXJkIiwidW5pbnN0YWxsIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRlc3Ryb3kiLCJzZXRSZWYiLCJyZW5kZXIiLCJ0YWlsIiwibWVtb2l6ZWQiLCJzZWFyY2hDYWNoZSIsIm1heFNpemUiLCJjYXN0RnVuY3Rpb24iLCJuYXRpdmVNaW4iLCJ3cCIsImNhdGVnb3J5SWNvbiIsImZpbGwiLCJibG9ja3MiLCJ1cGRhdGVDYXRlZ29yeSIsImljb24iLCJhcnJheUVhY2giLCJiYXNlQXNzaWduIiwiYmFzZUFzc2lnbkluIiwiY2xvbmVCdWZmZXIiLCJjb3B5QXJyYXkiLCJjb3B5U3ltYm9scyIsImNvcHlTeW1ib2xzSW4iLCJnZXRBbGxLZXlzIiwiaW5pdENsb25lQXJyYXkiLCJpbml0Q2xvbmVCeVRhZyIsImluaXRDbG9uZU9iamVjdCIsImlzTWFwIiwiaXNTZXQiLCJjbG9uZWFibGVUYWdzIiwiaXNGbGF0IiwiaXNGdWxsIiwiaXNGdW5jIiwic3ViVmFsdWUiLCJhc3NvY0luZGV4T2YiLCJwYWlycyIsIkxBUkdFX0FSUkFZX1NJWkUiLCJpc01hc2tlZCIsInJlSXNIb3N0Q3RvciIsImZ1bmNQcm90byIsInJlSXNOYXRpdmUiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsImlzT3duIiwidW5tYXNrZWQiLCJjb3JlSnNEYXRhIiwibWFza1NyY0tleSIsIklFX1BST1RPIiwiSGFzaCIsImhhc2hDbGVhciIsImhhc2hEZWxldGUiLCJoYXNoR2V0IiwiaGFzaEhhcyIsImhhc2hTZXQiLCJnZXRNYXBEYXRhIiwidHlwZWRBcnJheVRhZ3MiLCJpc1Byb3RvdHlwZSIsIm5hdGl2ZUtleXMiLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwiYWxsb2NVbnNhZmUiLCJidWZmZXIiLCJjbG9uZUFycmF5QnVmZmVyIiwiY2xvbmVEYXRhVmlldyIsImNsb25lUmVnRXhwIiwiY2xvbmVTeW1ib2wiLCJjbG9uZVR5cGVkQXJyYXkiLCJkYXRhVmlldyIsImJ5dGVPZmZzZXQiLCJyZUZsYWdzIiwicmVnZXhwIiwic3ltYm9sUHJvdG8iLCJzeW1ib2xWYWx1ZU9mIiwidHlwZWRBcnJheSIsImJhc2VDcmVhdGUiLCJvYmplY3RDcmVhdGUiLCJiYXNlSXNNYXAiLCJub2RlSXNNYXAiLCJiYXNlSXNTZXQiLCJub2RlSXNTZXQiLCJtZW1vaXplQ2FwcGVkIiwicmVQcm9wTmFtZSIsInJlRXNjYXBlQ2hhciIsInF1b3RlIiwic3ViU3RyaW5nIiwibWVtb2l6ZSIsInJlc29sdmVyIiwiQ2FjaGUiLCJiYXNlVG9TdHJpbmciLCJzeW1ib2xUb1N0cmluZyIsImJhc2VTbGljZSIsIm9iamVjdEN0b3JTdHJpbmciLCJiYXNlRmxhdHRlbiIsImlzRmxhdHRlbmFibGUiLCJzcHJlYWRhYmxlU3ltYm9sIiwiaXNDb25jYXRTcHJlYWRhYmxlIiwidGhpc0FyZyIsImNvbnN0YW50IiwibmF0aXZlTm93IiwibGFzdENhbGxlZCIsInN0YW1wIiwiZm9yIiwicSIsInoiLCJBIiwiQiIsIkMiLCJpc01vdW50ZWQiLCJlbnF1ZXVlRm9yY2VVcGRhdGUiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZVNldFN0YXRlIiwiRiIsInJlZnMiLCJ1cGRhdGVyIiwiRyIsIkgiLCJpc1JlYWN0Q29tcG9uZW50Iiwic2V0U3RhdGUiLCJmb3JjZVVwZGF0ZSIsIkkiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsIkoiLCJLIiwiX19zZWxmIiwiX19zb3VyY2UiLCIkJHR5cGVvZiIsIl9vd25lciIsIk8iLCJQIiwiUSIsIlIiLCJrZXlQcmVmaXgiLCJTIiwiViIsIlQiLCJVIiwiYWEiLCJYIiwiTiIsIloiLCJiYSIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIiLCJSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyIsInN1c3BlbnNlIiwiUmVhY3RDdXJyZW50T3duZXIiLCJJc1NvbWVSZW5kZXJlckFjdGluZyIsIm9ubHkiLCJGcmFnbWVudCIsIlByb2ZpbGVyIiwiUHVyZUNvbXBvbmVudCIsIlN0cmljdE1vZGUiLCJTdXNwZW5zZSIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlQ29udGV4dCIsIl9jYWxjdWxhdGVDaGFuZ2VkQml0cyIsIl9jdXJyZW50VmFsdWUiLCJfY3VycmVudFZhbHVlMiIsIl90aHJlYWRDb3VudCIsIlByb3ZpZGVyIiwiQ29uc3VtZXIiLCJfY29udGV4dCIsImNyZWF0ZUZhY3RvcnkiLCJmb3J3YXJkUmVmIiwiaXNWYWxpZEVsZW1lbnQiLCJsYXp5IiwiX2N0b3IiLCJfc3RhdHVzIiwiX3Jlc3VsdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VEZWJ1Z1ZhbHVlIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWR1Y2VyIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFueSIsImFycmF5T2YiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIm51bWVyYWxzIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpbml0aWFsaXplIiwiaW5pdGlhbGl6ZWQiLCJzdGFydFZhbCIsImVuZFZhbCIsImRlYyIsImNvdW50RG93biIsImZyYW1lVmFsIiwicHJpbnRWYWx1ZSIsInRpbWVzdGFtcCIsInJBRiIsInBhdXNlZCIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRm9yIiwiZnJvbVJpZ2h0IiwiaXRlcmFibGUiLCJlYWNoRnVuYyIsImJhc2VJc01hdGNoIiwiZ2V0TWF0Y2hEYXRhIiwibWF0Y2hlc1N0cmljdENvbXBhcmFibGUiLCJtYXRjaERhdGEiLCJub0N1c3RvbWl6ZXIiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsImVxdWFsQXJyYXlzIiwiZXF1YWxCeVRhZyIsImVxdWFsT2JqZWN0cyIsIm9iamVjdFRhZyIsIm9iaklzQXJyIiwib3RoSXNBcnIiLCJvYmpUYWciLCJvdGhUYWciLCJvYmpJc09iaiIsIm90aElzT2JqIiwiaXNTYW1lVGFnIiwib2JqSXNXcmFwcGVkIiwib3RoSXNXcmFwcGVkIiwib2JqVW53cmFwcGVkIiwib3RoVW53cmFwcGVkIiwic2V0Q2FjaGVBZGQiLCJzZXRDYWNoZUhhcyIsIm1hcFRvQXJyYXkiLCJzZXRUb0FycmF5IiwiY29udmVydCIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwic2tpcEN0b3IiLCJvYmpDdG9yIiwib3RoQ3RvciIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImhhc0luIiwiaGFzRnVuYyIsImJhc2VQcm9wZXJ0eSIsImJhc2VQcm9wZXJ0eURlZXAiLCJfaW5uZXJTbGlkZXIiLCJfanNvbjJtcSIsIl9kZWZhdWx0UHJvcHMiLCJfaW5uZXJTbGlkZXJVdGlscyIsIl90eXBlb2YiLCJfZXh0ZW5kcyIsImVucXVpcmUiLCJTbGlkZXIiLCJfUmVhY3QkQ29tcG9uZW50IiwiaW5uZXJTbGlkZXIiLCJzbGlja1ByZXYiLCJzbGlja05leHQiLCJkb250QW5pbWF0ZSIsInNsaWNrR29UbyIsInBhdXNlIiwiYXV0b1BsYXkiLCJfcmVzcG9uc2l2ZU1lZGlhSGFuZGxlcnMiLCJxdWVyeSIsInJlZ2lzdGVyIiwiX3RoaXMyIiwicmVzcG9uc2l2ZSIsImJyZWFrcG9pbnRzIiwiYnJlYWtwdCIsImJRdWVyeSIsIm1lZGlhIiwidW5yZWdpc3RlciIsIm5ld1Byb3BzIiwiX3RoaXMzIiwicmVzcCIsInJvd3MiLCJzbGlkZXNQZXJSb3ciLCJuZXdDaGlsZHJlbiIsImN1cnJlbnRXaWR0aCIsInJvdyIsIklubmVyU2xpZGVyIiwiaW5uZXJTbGlkZXJSZWZIYW5kbGVyIiwiX2luaXRpYWxTdGF0ZSIsIl9sb2Rhc2giLCJfY2xhc3NuYW1lcyIsIl90cmFjayIsIl9kb3RzIiwiX2Fycm93cyIsIl9yZXNpemVPYnNlcnZlclBvbHlmaWxsIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwidHJhY2siLCJhZGFwdGl2ZUhlaWdodCIsInNzckluaXQiLCJvbkluaXQiLCJwcmV2U3RhdGUiLCJvbkxhenlMb2FkIiwidXBkYXRlU3RhdGUiLCJhZGFwdEhlaWdodCIsImxhenlMb2FkVGltZXIiLCJzZXRJbnRlcnZhbCIsInByb2dyZXNzaXZlTGF6eUxvYWQiLCJybyIsIm9uV2luZG93UmVzaXplZCIsImNhbGxiYWNrVGltZXJzIiwib2JzZXJ2ZSIsIm9uZm9jdXMiLCJwYXVzZU9uRm9jdXMiLCJvblNsaWRlRm9jdXMiLCJvbmJsdXIiLCJvblNsaWRlQmx1ciIsImFuaW1hdGlvbkVuZENhbGxiYWNrIiwiY2xlYXJJbnRlcnZhbCIsImRldGFjaEV2ZW50IiwiYXV0b3BsYXlUaW1lciIsInNldFRyYWNrU3R5bGUiLCJjaGVja0ltYWdlc0xvYWQiLCJvblJlSW5pdCIsImRlYm91bmNlZFJlc2l6ZSIsInJlc2l6ZVdpbmRvdyIsInVwZGF0ZWRTdGF0ZSIsIl90cmFja1dpZHRoIiwiX3RyYWNrTGVmdCIsImNoaWxkcmVuV2lkdGhzIiwicHJlQ2xvbmVzIiwicG9zdENsb25lcyIsIl9pMiIsIl9pMyIsIl90cmFja1N0eWxlIiwiY2hpbGRyZW5Db3VudCIsInRyYWNrTGVmdCIsImltYWdlcyIsImltYWdlc0NvdW50IiwibG9hZGVkQ291bnQiLCJvbmNsaWNrIiwicHJldkNsaWNrSGFuZGxlciIsIm9uTGF6eUxvYWRFcnJvciIsIl9pbmRleCIsImFzTmF2Rm9yIiwiYmVmb3JlQ2hhbmdlIiwiYWZ0ZXJDaGFuZ2UiLCJfc2xpZGVIYW5kbGVyIiwiZmlyc3RCYXRjaCIsImNsaWNrYWJsZSIsIm9udG91Y2htb3ZlIiwiZGlzYWJsZUJvZHlTY3JvbGwiLCJ0cmlnZ2VyU2xpZGVIYW5kbGVyIiwiZW5hYmxlQm9keVNjcm9sbCIsIm5leHRJbmRleCIsInBsYXlUeXBlIiwicGxheSIsImF1dG9wbGF5U3BlZWQiLCJwYXVzZVR5cGUiLCJkb3RzIiwicHJldkFycm93IiwibmV4dEFycm93IiwidHJhY2tQcm9wcyIsInBhdXNlT25Ib3ZlciIsIm9uTW91c2VFbnRlciIsIm9uVHJhY2tPdmVyIiwib25Nb3VzZUxlYXZlIiwib25UcmFja0xlYXZlIiwib25Nb3VzZU92ZXIiLCJmb2N1c09uU2VsZWN0Iiwic2VsZWN0SGFuZGxlciIsImRvdFByb3BzIiwicGF1c2VPbkRvdHNIb3ZlciIsImNsaWNrSGFuZGxlciIsIm9uRG90c0xlYXZlIiwib25Eb3RzT3ZlciIsIkRvdHMiLCJhcnJvd1Byb3BzIiwiYXJyb3dzIiwiUHJldkFycm93IiwiTmV4dEFycm93IiwidmVydGljYWxIZWlnaHRTdHlsZSIsImNlbnRlclBhZGRpbmdTdHlsZSIsImxpc3RTdHlsZSIsInRvdWNoTW92ZSIsImxpc3RQcm9wcyIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsIm9uTW91c2VNb3ZlIiwib25Nb3VzZVVwIiwib25Ub3VjaFN0YXJ0Iiwib25Ub3VjaE1vdmUiLCJvblRvdWNoRW5kIiwib25Ub3VjaENhbmNlbCIsIm9uS2V5RG93biIsImlubmVyU2xpZGVyUHJvcHMiLCJsaXN0UmVmSGFuZGxlciIsIlRyYWNrIiwidHJhY2tSZWZIYW5kbGVyIiwib25FcnJvciIsImRhIiwiZWEiLCJmYSIsImhhIiwiaWEiLCJqYSIsImxhIiwibWEiLCJuYSIsIm9hIiwia2EiLCJwYSIsInFhIiwicmEiLCJzYSIsImV4dHJhY3RFdmVudHMiLCJldmVudFR5cGVzIiwidGEiLCJwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyIsInVhIiwicmVnaXN0cmF0aW9uTmFtZSIsInZhIiwid2EiLCJkZXBlbmRlbmNpZXMiLCJ4YSIsInlhIiwiemEiLCJBYSIsIkJhIiwiQ2EiLCJzdGF0ZU5vZGUiLCJEYSIsIkVhIiwiRmEiLCJHYSIsIkhhIiwiSWEiLCJKYSIsIkthIiwiTGEiLCJNYSIsIk5hIiwiT2EiLCJQYSIsIlFhIiwiYWNjZXB0c0Jvb2xlYW5zIiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZU5hbWVzcGFjZSIsIm11c3RVc2VQcm9wZXJ0eSIsInByb3BlcnR5TmFtZSIsInNhbml0aXplVVJMIiwiVWEiLCJWYSIsInhsaW5rSHJlZiIsIldhIiwiWGEiLCJTYSIsIlRhIiwiUmEiLCJzZXRBdHRyaWJ1dGVOUyIsIllhIiwiWmEiLCIkYSIsImFiIiwiYmIiLCJjYiIsImRiIiwiZWIiLCJmYiIsImdiIiwiaGIiLCJpYiIsImpiIiwia2IiLCJsYiIsIm1iIiwibmIiLCJwYiIsInFiIiwiX2RlYnVnT3duZXIiLCJfZGVidWdTb3VyY2UiLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJyZXR1cm4iLCJyYiIsInNiIiwieGIiLCJfdmFsdWVUcmFja2VyIiwic2V0VmFsdWUiLCJzdG9wVHJhY2tpbmciLCJ0YiIsInliIiwiemIiLCJkZWZhdWx0Q2hlY2tlZCIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIkFiIiwiaW5pdGlhbFZhbHVlIiwiY29udHJvbGxlZCIsIkJiIiwiQ2IiLCJEYiIsIkViIiwiR2IiLCJGYiIsIkhiIiwiZGVmYXVsdFNlbGVjdGVkIiwiSWIiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIkpiIiwiS2IiLCJMYiIsIk1iIiwiTmIiLCJPYiIsIlBiIiwiUWIiLCJNU0FwcCIsImV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uIiwiUmIiLCJTYiIsIlRiIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwiVWIiLCJWYiIsIldiIiwiWGIiLCJZYiIsIlpiIiwiJGIiLCJhYyIsImJjIiwiY2MiLCJkYyIsImFsdGVybmF0ZSIsImVmZmVjdFRhZyIsImVjIiwibWVtb2l6ZWRTdGF0ZSIsImRlaHlkcmF0ZWQiLCJmYyIsImhjIiwiZ2MiLCJpYyIsImpjIiwia2MiLCJsYyIsIl9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyIsImlzUGVyc2lzdGVudCIsInJlbGVhc2UiLCJtYyIsIm5jIiwic3JjRWxlbWVudCIsImNvcnJlc3BvbmRpbmdVc2VFbGVtZW50Iiwib2MiLCJwYyIsInFjIiwidG9wTGV2ZWxUeXBlIiwidGFyZ2V0SW5zdCIsImFuY2VzdG9ycyIsInJjIiwiZXZlbnRTeXN0ZW1GbGFncyIsInNjIiwiY29udGFpbmVySW5mbyIsInRjIiwidWMiLCJ2YyIsIndjIiwieGMiLCJ5YyIsInpjIiwiQWMiLCJCYyIsIkNjIiwiRGMiLCJFYyIsIkZjIiwiR2MiLCJIYyIsIkljIiwiS2MiLCJibG9ja2VkT24iLCJMYyIsImRlbGV0ZSIsIk1jIiwiTmMiLCJQYyIsInVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSIsImh5ZHJhdGUiLCJRYyIsIlJjIiwiU2MiLCJUYyIsIlVjIiwidW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayIsInVuc3RhYmxlX05vcm1hbFByaW9yaXR5IiwiVmMiLCJXYyIsIlljIiwiWmMiLCIkYyIsImFkIiwiYnViYmxlZCIsImNhcHR1cmVkIiwiZXZlbnRQcmlvcml0eSIsImJkIiwiY2QiLCJ1bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSIsImVkIiwiZmQiLCJnZCIsImhkIiwiT2MiLCJqZCIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImNvbHVtbnMiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZEFyZWEiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTcGFuIiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1uU3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImxpbmVDbGFtcCIsImxpbmVIZWlnaHQiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsImtkIiwibGQiLCJtZCIsIm5kIiwibWVudWl0ZW0iLCJhcmVhIiwiYnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJ3YnIiLCJvZCIsInBkIiwicWQiLCJyZCIsInNkIiwidWQiLCJ2ZCIsInhkIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50V2luZG93IiwieWQiLCJjb250ZW50RWRpdGFibGUiLCJEZCIsIkVkIiwiRmQiLCJhdXRvRm9jdXMiLCJHZCIsIl9faHRtbCIsIkhkIiwiSWQiLCJKZCIsIktkIiwicHJldmlvdXNTaWJsaW5nIiwiTGQiLCJNZCIsIk5kIiwiT2QiLCJQZCIsIlFkIiwiUmQiLCJTZCIsIlRkIiwiZGlzcGF0Y2hDb25maWciLCJVZCIsIl90YXJnZXRJbnN0IiwiVmQiLCJXZCIsIlhkIiwiWWQiLCJaZCIsIiRkIiwiYWUiLCJiZSIsImNlIiwiSW50ZXJmYWNlIiwiZWUiLCJldmVudFBvb2wiLCJmZSIsImRlc3RydWN0b3IiLCJkZSIsImdldFBvb2xlZCIsImNhbmNlbEJ1YmJsZSIsInBlcnNpc3QiLCJpc1RydXN0ZWQiLCJnZSIsImhlIiwiaWUiLCJqZSIsImtlIiwiZG9jdW1lbnRNb2RlIiwibGUiLCJtZSIsIm5lIiwib2UiLCJiZWZvcmVJbnB1dCIsImNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uVXBkYXRlIiwicGUiLCJxZSIsInJlIiwic2UiLCJ2ZSIsInRlIiwiY2hhciIsInVlIiwid2UiLCJjb2xvciIsImRhdGV0aW1lIiwiZW1haWwiLCJyYW5nZSIsInNlYXJjaCIsInRlbCIsInhlIiwieWUiLCJjaGFuZ2UiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiX2lzSW5wdXRFdmVudFN1cHBvcnRlZCIsIk5lIiwiT2UiLCJBbHQiLCJDb250cm9sIiwiTWV0YSIsIlNoaWZ0IiwiUGUiLCJnZXRNb2RpZmllclN0YXRlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiZnJvbUVsZW1lbnQiLCJtb3ZlbWVudFgiLCJtb3ZlbWVudFkiLCJXZSIsInByZXNzdXJlIiwidGFuZ2VudGlhbFByZXNzdXJlIiwidGlsdFgiLCJ0aWx0WSIsInR3aXN0IiwiaXNQcmltYXJ5IiwiWGUiLCJtb3VzZUVudGVyIiwibW91c2VMZWF2ZSIsInBvaW50ZXJFbnRlciIsInBvaW50ZXJMZWF2ZSIsIlllIiwiJGUiLCJhZiIsImJmIiwiY2YiLCJkZiIsImVmIiwiZmYiLCJnZiIsImhmIiwiamYiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImFuY2hvck5vZGUiLCJnZXRTZWxlY3Rpb24iLCJhbmNob3JPZmZzZXQiLCJmb2N1c05vZGUiLCJmb2N1c09mZnNldCIsImtmIiwib25TZWxlY3QiLCJsZiIsImFuaW1hdGlvbk5hbWUiLCJlbGFwc2VkVGltZSIsInBzZXVkb0VsZW1lbnQiLCJtZiIsImNsaXBib2FyZERhdGEiLCJuZiIsIm9mIiwicGYiLCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIsIk1lbnUiLCJBcHBzIiwiU2Nyb2xsIiwiTW96UHJpbnRhYmxlS2V5IiwicWYiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjI3IiwiMzIiLCIzMyIsIjM0IiwiMzUiLCIzNiIsIjM3IiwiMzgiLCIzOSIsIjQ1IiwiNDYiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIxMTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCIxMjMiLCIxNDQiLCIxNDUiLCIyMjQiLCJyZiIsInJlcGVhdCIsInNmIiwiZGF0YVRyYW5zZmVyIiwidGYiLCJ1ZiIsInZmIiwiZGVsdGFYIiwid2hlZWxEZWx0YVgiLCJkZWx0YVkiLCJ3aGVlbERlbHRhWSIsIndoZWVsRGVsdGEiLCJkZWx0YVoiLCJkZWx0YU1vZGUiLCJ3ZiIsIlNpbXBsZUV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hhbmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVnaW4iLCJ5ZiIsInpmIiwiQWYiLCJCZiIsIkNmIiwiY29udGV4dFR5cGVzIiwiX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0IiwiY2hpbGRDb250ZXh0VHlwZXMiLCJEZiIsIkVmIiwiRmYiLCJnZXRDaGlsZENvbnRleHQiLCJHZiIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiSGYiLCJJZiIsIkpmIiwiS2YiLCJ1bnN0YWJsZV9jYW5jZWxDYWxsYmFjayIsIkxmIiwidW5zdGFibGVfcmVxdWVzdFBhaW50IiwiTWYiLCJ1bnN0YWJsZV9ub3ciLCJOZiIsInVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsIiwiT2YiLCJ1bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSIsIlBmIiwiUWYiLCJSZiIsInVuc3RhYmxlX0xvd1ByaW9yaXR5IiwiU2YiLCJ1bnN0YWJsZV9JZGxlUHJpb3JpdHkiLCJUZiIsIlVmIiwidW5zdGFibGVfc2hvdWxkWWllbGQiLCJWZiIsIldmIiwiWGYiLCJZZiIsIlpmIiwiJGYiLCJhZyIsImJnIiwiY2ciLCJkZyIsImVnIiwiZmciLCJoZyIsImlnIiwiamciLCJrZyIsImxnIiwibWciLCJuZyIsIm9nIiwicGciLCJjaGlsZEV4cGlyYXRpb25UaW1lIiwicWciLCJmaXJzdENvbnRleHQiLCJleHBpcmF0aW9uVGltZSIsInJnIiwic2ciLCJvYnNlcnZlZEJpdHMiLCJyZXNwb25kZXJzIiwidGciLCJ1ZyIsInVwZGF0ZVF1ZXVlIiwiYmFzZVN0YXRlIiwiYmFzZVF1ZXVlIiwic2hhcmVkIiwicGVuZGluZyIsImVmZmVjdHMiLCJ2ZyIsIndnIiwic3VzcGVuc2VDb25maWciLCJwYXlsb2FkIiwieGciLCJ5ZyIsInpnIiwiY2EiLCJBZyIsIkJnIiwiQ2ciLCJEZyIsIkVnIiwiRmciLCJKZyIsIl9yZWFjdEludGVybmFsRmliZXIiLCJHZyIsIkhnIiwiSWciLCJLZyIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsIkxnIiwiY29udGV4dFR5cGUiLCJNZyIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIk5nIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbE1vdW50IiwiT2ciLCJQZyIsIl9zdHJpbmdSZWYiLCJRZyIsIlJnIiwibGFzdEVmZmVjdCIsIm5leHRFZmZlY3QiLCJmaXJzdEVmZmVjdCIsIlNnIiwiVGciLCJVZyIsIlZnIiwiV2ciLCJYZyIsIllnIiwiWmciLCIkZyIsImFoIiwiYmgiLCJkaCIsImVoIiwiZmgiLCJnaCIsIm1lbW9pemVkUHJvcHMiLCJyZXZlYWxPcmRlciIsImloIiwicmVzcG9uZGVyIiwiamgiLCJraCIsImxoIiwibWgiLCJuaCIsIm9oIiwicGgiLCJxaCIsInJoIiwic2giLCJ1aCIsInZoIiwid2giLCJsYXN0UmVuZGVyZWRSZWR1Y2VyIiwiYWN0aW9uIiwiZWFnZXJSZWR1Y2VyIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwieGgiLCJ5aCIsInpoIiwiQWgiLCJkZXBzIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJGaCIsIkdoIiwiSGgiLCJJaCIsIkpoIiwiS2giLCJMaCIsIk1oIiwiTmgiLCJyZWFkQ29udGV4dCIsInVzZVJlc3BvbmRlciIsInVzZURlZmVycmVkVmFsdWUiLCJ1c2VUcmFuc2l0aW9uIiwiT2giLCJQaCIsIlFoIiwiUmgiLCJTaCIsIlRoIiwicGVuZGluZ1Byb3BzIiwiVWgiLCJWaCIsIldoIiwiWGgiLCJZaCIsIlpoIiwiJGgiLCJhaSIsImJpIiwiY2kiLCJkaSIsImVpIiwiZmkiLCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJnaSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImhpIiwicGVuZGluZ0NvbnRleHQiLCJuaSIsInBpIiwicWkiLCJyZXRyeVRpbWUiLCJqaSIsImZhbGxiYWNrIiwidW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2siLCJraSIsImxpIiwiaXNCYWNrd2FyZHMiLCJyZW5kZXJpbmciLCJyZW5kZXJpbmdTdGFydFRpbWUiLCJ0YWlsRXhwaXJhdGlvbiIsInRhaWxNb2RlIiwibWkiLCJyaSIsInNpIiwid2FzTXVsdGlwbGUiLCJtdWx0aXBsZSIsImNyZWF0ZUVsZW1lbnROUyIsInRpIiwidWkiLCJ2aSIsIndpIiwieGkiLCJ5aSIsInppIiwiQWkiLCJCaSIsIldlYWtTZXQiLCJDaSIsIkZpIiwiRWkiLCJHaSIsIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlIiwiSGkiLCJJaSIsIkppIiwiS2kiLCJMaSIsIkRpIiwiTWkiLCJOaSIsIk9pIiwiUGkiLCJRaSIsIl9yZWFjdFJvb3RDb250YWluZXIiLCJSaSIsIlNpIiwiVGkiLCJVaSIsIlZpIiwiV2kiLCJYaSIsIllpIiwiWmkiLCIkaSIsImNvbXBvbmVudERpZENhdGNoIiwiYWoiLCJjb21wb25lbnRTdGFjayIsIlJqIiwiYmoiLCJjaiIsImRqIiwia2oiLCJsaiIsIm1qIiwibmoiLCJvaiIsInFqIiwicmoiLCJzaiIsInRqIiwidWoiLCJ2aiIsIndqIiwidGltZW91dE1zIiwieGoiLCJ5aiIsInpqIiwibGFzdEV4cGlyZWRUaW1lIiwiQWoiLCJmaXJzdFBlbmRpbmdUaW1lIiwibGFzdFBpbmdlZFRpbWUiLCJuZXh0S25vd25QZW5kaW5nTGV2ZWwiLCJjYWxsYmFja0V4cGlyYXRpb25UaW1lIiwiY2FsbGJhY2tQcmlvcml0eSIsImNhbGxiYWNrTm9kZSIsIkJqIiwiQ2oiLCJEaiIsIkVqIiwiRmoiLCJHaiIsIkhqIiwiZmluaXNoZWRXb3JrIiwiZmluaXNoZWRFeHBpcmF0aW9uVGltZSIsImxhc3RTdXNwZW5kZWRUaW1lIiwiSWoiLCJ0aW1lb3V0SGFuZGxlIiwiSmoiLCJidXN5TWluRHVyYXRpb25NcyIsImJ1c3lEZWxheU1zIiwiS2oiLCJNaiIsIk5qIiwicGluZ0NhY2hlIiwiT2oiLCJ1YiIsIlBqIiwiWGMiLCJRaiIsIlNqIiwiZmlyc3RTdXNwZW5kZWRUaW1lIiwicmFuZ2VDb3VudCIsIndiIiwiYWN0aXZlRWxlbWVudERldGFjaGVkIiwiZm9jdXNlZEVsZW0iLCJzZWxlY3Rpb25SYW5nZSIsIlRqIiwid2QiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJzZXRFbmQiLCJ2YiIsIlVqIiwiVmoiLCJXaiIsIm9iIiwiWGoiLCJ1bnN0YWJsZV9vYnNlcnZlZEJpdHMiLCJaaiIsInBlbmRpbmdDaGlsZHJlbiIsImFrIiwiYmsiLCJjayIsImRrIiwiZWsiLCJmayIsIkpjIiwiX2ludGVybmFsUm9vdCIsImdrIiwiaWsiLCJoYXNBdHRyaWJ1dGUiLCJoayIsImprIiwia2siLCJ1bm1vdW50Iiwic3RyaW5naWZ5IiwiZm9ybSIsIkxqIiwibGsiLCJFdmVudHMiLCJmaW5kRmliZXJCeUhvc3RJbnN0YW5jZSIsImJ1bmRsZVR5cGUiLCJyZW5kZXJlclBhY2thZ2VOYW1lIiwic3VwcG9ydHNGaWJlciIsImluamVjdCIsIm9uQ29tbWl0RmliZXJSb290Iiwib25Db21taXRGaWJlclVubW91bnQiLCJZaiIsIm92ZXJyaWRlSG9va1N0YXRlIiwib3ZlcnJpZGVQcm9wcyIsInNldFN1c3BlbnNlSGFuZGxlciIsInNjaGVkdWxlVXBkYXRlIiwiY3VycmVudERpc3BhdGNoZXJSZWYiLCJmaW5kSG9zdEluc3RhbmNlQnlGaWJlciIsImZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaCIsInNjaGVkdWxlUmVmcmVzaCIsInNjaGVkdWxlUm9vdCIsInNldFJlZnJlc2hIYW5kbGVyIiwiZ2V0Q3VycmVudEZpYmVyIiwiY3JlYXRlUG9ydGFsIiwiZmx1c2hTeW5jIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfY3JlYXRlUG9ydGFsIiwidW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIiLCJNZXNzYWdlQ2hhbm5lbCIsInVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlIiwicGVyZm9ybWFuY2UiLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwicG9zdE1lc3NhZ2UiLCJzb3J0SW5kZXgiLCJwcmlvcml0eUxldmVsIiwidW5zdGFibGVfUHJvZmlsaW5nIiwidW5zdGFibGVfY29udGludWVFeGVjdXRpb24iLCJ1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZSIsInVuc3RhYmxlX25leHQiLCJ1bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbiIsInVuc3RhYmxlX3dyYXBDYWxsYmFjayIsImN1cnJlbnREaXJlY3Rpb24iLCJ0b051bWJlciIsImxhc3RBcmdzIiwibGFzdFRoaXMiLCJtYXhXYWl0IiwidGltZXJJZCIsImxhc3RDYWxsVGltZSIsImxhc3RJbnZva2VUaW1lIiwibGVhZGluZyIsIm1heGluZyIsInRyYWlsaW5nIiwiaW52b2tlRnVuYyIsImxlYWRpbmdFZGdlIiwidGltZXJFeHBpcmVkIiwic2hvdWxkSW52b2tlIiwidGltZVNpbmNlTGFzdENhbGwiLCJ0cmFpbGluZ0VkZ2UiLCJyZW1haW5pbmdXYWl0IiwiZGVib3VuY2VkIiwiaXNJbnZva2luZyIsImZsdXNoIiwiZ2V0U2xpZGVDbGFzc2VzIiwic2xpY2tBY3RpdmUiLCJzbGlja0NlbnRlciIsInNsaWNrQ2xvbmVkIiwiZ2V0S2V5IiwiZmFsbGJhY2tLZXkiLCJyZW5kZXJTbGlkZXMiLCJwcmVDbG9uZVNsaWRlcyIsInBvc3RDbG9uZVNsaWRlcyIsImNoaWxkT25DbGlja09wdGlvbnMiLCJjaGlsZFN0eWxlIiwiZ2V0U2xpZGVTdHlsZSIsInNsaWRlQ2xhc3MiLCJzbGlkZUNsYXNzZXMiLCJvdXRsaW5lIiwicHJlQ2xvbmVObyIsIl9SZWFjdCRQdXJlQ29tcG9uZW50IiwibW91c2VFdmVudHMiLCJsZWZ0Qm91bmQiLCJyaWdodEJvdW5kIiwiZG90T3B0aW9ucyIsImN1c3RvbVBhZ2luZyIsImFwcGVuZERvdHMiLCJkb3RzQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJwcmV2Q2xhc3NlcyIsInByZXZIYW5kbGVyIiwicHJldkFycm93UHJvcHMiLCJjdXN0b21Qcm9wcyIsIl9SZWFjdCRQdXJlQ29tcG9uZW50MiIsIm5leHRDbGFzc2VzIiwibmV4dEhhbmRsZXIiLCJuZXh0QXJyb3dQcm9wcyIsIk1hcFNoaW0iLCJnZXRJbmRleCIsImNsYXNzXzEiLCJfX2VudHJpZXNfXyIsImN0eCIsImdsb2JhbCQxIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEiLCJ0cmFuc2l0aW9uS2V5cyIsIm11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQiLCJNdXRhdGlvbk9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIiwiY29ubmVjdGVkXyIsIm11dGF0aW9uRXZlbnRzQWRkZWRfIiwibXV0YXRpb25zT2JzZXJ2ZXJfIiwib2JzZXJ2ZXJzXyIsIm9uVHJhbnNpdGlvbkVuZF8iLCJyZWZyZXNoIiwibGVhZGluZ0NhbGwiLCJ0cmFpbGluZ0NhbGwiLCJyZXNvbHZlUGVuZGluZyIsInRpbWVvdXRDYWxsYmFjayIsInRocm90dGxlIiwiYWRkT2JzZXJ2ZXIiLCJvYnNlcnZlciIsImNvbm5lY3RfIiwicmVtb3ZlT2JzZXJ2ZXIiLCJvYnNlcnZlcnMiLCJkaXNjb25uZWN0XyIsInVwZGF0ZU9ic2VydmVyc18iLCJhY3RpdmVPYnNlcnZlcnMiLCJnYXRoZXJBY3RpdmUiLCJoYXNBY3RpdmUiLCJicm9hZGNhc3RBY3RpdmUiLCJjaGlsZExpc3QiLCJjaGFyYWN0ZXJEYXRhIiwic3VidHJlZSIsImRpc2Nvbm5lY3QiLCJfYiIsImdldEluc3RhbmNlIiwiaW5zdGFuY2VfIiwiZGVmaW5lQ29uZmlndXJhYmxlIiwiZ2V0V2luZG93T2YiLCJlbXB0eVJlY3QiLCJjcmVhdGVSZWN0SW5pdCIsInRvRmxvYXQiLCJnZXRCb3JkZXJzU2l6ZSIsInBvc2l0aW9ucyIsImdldEhUTUxFbGVtZW50Q29udGVudFJlY3QiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsInBhZGRpbmdzIiwicG9zaXRpb25zXzEiLCJnZXRQYWRkaW5ncyIsImhvcml6UGFkIiwidmVydFBhZCIsImJvdHRvbSIsImlzRG9jdW1lbnRFbGVtZW50IiwidmVydFNjcm9sbGJhciIsImhvcml6U2Nyb2xsYmFyIiwiaXNTVkdHcmFwaGljc0VsZW1lbnQiLCJTVkdHcmFwaGljc0VsZW1lbnQiLCJTVkdFbGVtZW50IiwiZ2V0QkJveCIsImdldENvbnRlbnRSZWN0IiwiYmJveCIsImdldFNWR0NvbnRlbnRSZWN0IiwiUmVzaXplT2JzZXJ2YXRpb24iLCJicm9hZGNhc3RXaWR0aCIsImJyb2FkY2FzdEhlaWdodCIsImNvbnRlbnRSZWN0XyIsImlzQWN0aXZlIiwiYnJvYWRjYXN0UmVjdCIsIlJlc2l6ZU9ic2VydmVyRW50cnkiLCJyZWN0SW5pdCIsIkNvbnN0ciIsImNvbnRlbnRSZWN0IiwiRE9NUmVjdFJlYWRPbmx5IiwiUmVzaXplT2JzZXJ2ZXJTUEkiLCJjb250cm9sbGVyIiwiY2FsbGJhY2tDdHgiLCJhY3RpdmVPYnNlcnZhdGlvbnNfIiwib2JzZXJ2YXRpb25zXyIsImNhbGxiYWNrXyIsImNvbnRyb2xsZXJfIiwiY2FsbGJhY2tDdHhfIiwiRWxlbWVudCIsIm9ic2VydmF0aW9ucyIsInVub2JzZXJ2ZSIsImNsZWFyQWN0aXZlIiwib2JzZXJ2YXRpb24iLCJSZXNpemVPYnNlcnZlciIsImNhbWVsMmh5cGhlbiIsIm9iajJtcSIsIm1xIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiaXNEaW1lbnNpb24iLCJNZWRpYVF1ZXJ5RGlzcGF0Y2giLCJNZWRpYVF1ZXJ5IiwiVXRpbCIsIm1hdGNoTWVkaWEiLCJxdWVyaWVzIiwiYnJvd3NlcklzSW5jYXBhYmxlIiwic2hvdWxkRGVncmFkZSIsImlzVW5jb25kaXRpb25hbCIsImFkZEhhbmRsZXIiLCJyZW1vdmVIYW5kbGVyIiwiUXVlcnlIYW5kbGVyIiwibXFsIiwiYXNzZXNzIiwiYWRkTGlzdGVuZXIiLCJjb25zdHVjdG9yIiwiZXF1YWxzIiwicmVtb3ZlTGlzdGVuZXIiLCJkZWZlclNldHVwIiwiaW5pdGlhbGlzZWQiLCJ1bm1hdGNoIiwibmVzdGVkIiwid2VicGFja0NvbnRleHQiLCJyZXEiLCJ3ZWJwYWNrQ29udGV4dFJlc29sdmUiLCJPdXRsYXllciIsImNvbXBhdE9wdGlvbnMiLCJmaXRXaWR0aCIsIl9yZXNldExheW91dCIsIl9nZXRNZWFzdXJlbWVudCIsIm1lYXN1cmVDb2x1bW5zIiwiY29sWXMiLCJjb2xzIiwibWF4WSIsImhvcml6b250YWxDb2xJbmRleCIsImdldENvbnRhaW5lcldpZHRoIiwiY29sdW1uV2lkdGgiLCJmaXJzdEl0ZW0iLCJpdGVtcyIsImZpcnN0SXRlbUVsZW0iLCJjb250YWluZXJXaWR0aCIsImd1dHRlciIsIl9nZXRPcHRpb24iLCJfZ2V0SXRlbUxheW91dFBvc2l0aW9uIiwiaXRlbSIsImNvbFNwYW4iLCJjb2xQb3NpdGlvbiIsImhvcml6b250YWxPcmRlciIsInNldEhlaWdodCIsInNldE1heCIsIl9nZXRUb3BDb2xQb3NpdGlvbiIsImNvbEdyb3VwIiwiX2dldFRvcENvbEdyb3VwIiwibWluaW11bVkiLCJncm91cENvdW50IiwiX2dldENvbEdyb3VwWSIsImdyb3VwQ29sWXMiLCJfZ2V0SG9yaXpvbnRhbENvbFBvc2l0aW9uIiwiaGFzU2l6ZSIsIl9tYW5hZ2VTdGFtcCIsInN0YW1wU2l6ZSIsIl9nZXRFbGVtZW50T2Zmc2V0IiwiZmlyc3RYIiwibGFzdFgiLCJmaXJzdENvbCIsImxhc3RDb2wiLCJzdGFtcE1heFkiLCJfZ2V0Q29udGFpbmVyU2l6ZSIsIl9nZXRDb250YWluZXJGaXRXaWR0aCIsInVudXNlZENvbHMiLCJuZWVkc1Jlc2l6ZUxheW91dCIsInByZXZpb3VzV2lkdGgiLCJ1dGlscyIsIkl0ZW0iLCJHVUlEIiwiaW5zdGFuY2VzIiwicXVlcnlFbGVtZW50IiwiZ2V0UXVlcnlFbGVtZW50IiwiJGVsZW1lbnQiLCJvdXRsYXllckdVSUQiLCJfY3JlYXRlIiwiY29udGFpbmVyU3R5bGUiLCJpbml0TGF5b3V0Iiwib3JpZ2luTGVmdCIsIm9yaWdpblRvcCIsInJlc2l6ZSIsInJlc2l6ZUNvbnRhaW5lciIsInRyYW5zaXRpb25EdXJhdGlvbiIsImhpZGRlblN0eWxlIiwidmlzaWJsZVN0eWxlIiwic3ViY2xhc3MiLCJQYXJlbnQiLCJTdWJDbGFzcyIsIm9sZE9wdGlvbiIsImhvcml6b250YWwiLCJsYXlvdXRJbnN0YW50Iiwic3RhbXBzIiwiYmluZFJlc2l6ZSIsIl9pdGVtaXplIiwiaXRlbUVsZW1zIiwiX2ZpbHRlckZpbmRJdGVtRWxlbWVudHMiLCJmaWx0ZXJGaW5kRWxlbWVudHMiLCJnZXRJdGVtRWxlbWVudHMiLCJfbWFuYWdlU3RhbXBzIiwiaXNJbnN0YW50IiwiX2lzTGF5b3V0SW5pdGVkIiwibGF5b3V0SXRlbXMiLCJfaW5pdCIsIl9nZXRJdGVtc0ZvckxheW91dCIsIl9sYXlvdXRJdGVtcyIsIl9wb3N0TGF5b3V0IiwiaXNJZ25vcmVkIiwiX2VtaXRDb21wbGV0ZU9uSXRlbXMiLCJpc0xheW91dEluc3RhbnQiLCJfcHJvY2Vzc0xheW91dFF1ZXVlIiwidXBkYXRlU3RhZ2dlciIsIl9wb3NpdGlvbkl0ZW0iLCJzdGFnZ2VyIiwibXNVbml0cyIsImdldE1pbGxpc2Vjb25kcyIsImdvVG8iLCJtb3ZlVG8iLCJfc2V0Q29udGFpbmVyTWVhc3VyZSIsImlzV2lkdGgiLCJlbGVtU2l6ZSIsIm9uQ29tcGxldGUiLCJkaXNwYXRjaEV2ZW50IiwiZG9uZUNvdW50IiwiZW1pdEFyZ3MiLCIkZXZlbnQiLCJpZ25vcmUiLCJnZXRJdGVtIiwidW5pZ25vcmUiLCJfZmluZCIsInVuc3RhbXAiLCJyZW1vdmVGcm9tIiwiX2dldEJvdW5kaW5nUmVjdCIsImJvdW5kaW5nUmVjdCIsIl9ib3VuZGluZ1JlY3QiLCJ0aGlzUmVjdCIsImhhbmRsZUV2ZW50IiwiaXNSZXNpemVCb3VuZCIsInVuYmluZFJlc2l6ZSIsIm9ucmVzaXplIiwiZGVib3VuY2VNZXRob2QiLCJhZGRJdGVtcyIsInJldmVhbCIsInByZXZpb3VzSXRlbXMiLCJyZXZlYWxJdGVtRWxlbWVudHMiLCJnZXRJdGVtcyIsImhpZGVJdGVtRWxlbWVudHMiLCJyZW1vdmVJdGVtcyIsIkxheW91dCIsImh0bWxJbml0IiwiYnJpZGdldCIsImFycmF5U2xpY2UiLCJhcnkiLCJnZXRQYXJlbnQiLCJmZkVsZW1zIiwiY2hpbGRFbGVtcyIsIl9jbGFzcyIsIm1ldGhvZE5hbWUiLCJ0aW1lb3V0TmFtZSIsImRvY1JlYWR5IiwidG9EYXNoZWQiLCIkMSIsIiQyIiwiV2lkZ2V0Q2xhc3MiLCJkYXNoZWROYW1lc3BhY2UiLCJkYXRhQXR0ckVsZW1zIiwianNEYXNoRWxlbXMiLCJkYXRhT3B0aW9uc0F0dHIiLCJtYXRjaGVzTWV0aG9kIiwiRWxlbVByb3RvIiwicHJlZml4ZXMiLCJkb2NFbGVtU3R5bGUiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJ0cmFuc2Zvcm1Qcm9wZXJ0eSIsInRyYW5zaXRpb25FbmRFdmVudCIsInZlbmRvclByb3BlcnRpZXMiLCJ0cmFuc2l0aW9uRGVsYXkiLCJfdHJhbnNuIiwiaW5nUHJvcGVydGllcyIsImNsZWFuIiwiZWxlbVN0eWxlIiwiZ2V0UG9zaXRpb24iLCJpc09yaWdpbkxlZnQiLCJpc09yaWdpblRvcCIsInhWYWx1ZSIsInlWYWx1ZSIsImxheW91dFNpemUiLCJsYXlvdXRQb3NpdGlvbiIsInhQYWRkaW5nIiwieFByb3BlcnR5IiwieFJlc2V0UHJvcGVydHkiLCJnZXRYVmFsdWUiLCJ5UGFkZGluZyIsInlQcm9wZXJ0eSIsInlSZXNldFByb3BlcnR5IiwiZ2V0WVZhbHVlIiwiaXNIb3Jpem9udGFsIiwicGVyY2VudFBvc2l0aW9uIiwiX3RyYW5zaXRpb25UbyIsImRpZE5vdE1vdmUiLCJzZXRQb3NpdGlvbiIsImlzVHJhbnNpdGlvbmluZyIsInRyYW5zWCIsInRyYW5zWSIsInRyYW5zaXRpb25TdHlsZSIsImdldFRyYW5zbGF0ZSIsIm9uVHJhbnNpdGlvbkVuZCIsImlzQ2xlYW5pbmciLCJfbm9uVHJhbnNpdGlvbiIsIl9yZW1vdmVTdHlsZXMiLCJfdHJhbnNpdGlvbiIsImVuYWJsZVRyYW5zaXRpb24iLCJ0cmFuc2l0aW9uUHJvcHMiLCJzdGFnZ2VyRGVsYXkiLCJvbndlYmtpdFRyYW5zaXRpb25FbmQiLCJvbnRyYW5zaXRpb25lbmQiLCJvbm90cmFuc2l0aW9uZW5kIiwiZGFzaGVkVmVuZG9yUHJvcGVydGllcyIsImlzRW1wdHlPYmoiLCJkaXNhYmxlVHJhbnNpdGlvbiIsInJlbW92ZVRyYW5zaXRpb25TdHlsZXMiLCJjbGVhblN0eWxlIiwiY2xlYW5UcmFuc2l0aW9uU3R5bGUiLCJyZW1vdmVFbGVtIiwiaXNIaWRkZW4iLCJnZXRIaWRlUmV2ZWFsVHJhbnNpdGlvbkVuZFByb3BlcnR5Iiwib25SZXZlYWxUcmFuc2l0aW9uRW5kIiwic3R5bGVQcm9wZXJ0eSIsIm9wdGlvblN0eWxlIiwib25IaWRlVHJhbnNpdGlvbkVuZCIsIkltYWdlc0xvYWRlZCIsIm9uQWx3YXlzIiwicXVlcnlFbGVtIiwiZ2V0SW1hZ2VzIiwianFEZWZlcnJlZCIsImFkZEVsZW1lbnRJbWFnZXMiLCJhZGRJbWFnZSIsImJhY2tncm91bmQiLCJhZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcyIsImVsZW1lbnROb2RlVHlwZXMiLCJjaGlsZEltZ3MiLCIxMSIsIkxvYWRpbmdJbWFnZSIsIkJhY2tncm91bmQiLCJJbWFnZSIsInJlVVJMIiwiYmFja2dyb3VuZEltYWdlIiwiYWRkQmFja2dyb3VuZCIsImxvYWRpbmdJbWFnZSIsInByb2dyZXNzZWRDb3VudCIsImhhc0FueUJyb2tlbiIsImlzTG9hZGVkIiwiZGVidWciLCJsb2ciLCJpc0NvbXBsZXRlIiwianFNZXRob2QiLCJnZXRJc0ltYWdlQ29tcGxldGUiLCJjb25maXJtIiwibmF0dXJhbFdpZHRoIiwicHJveHlJbWFnZSIsInVuYmluZEV2ZW50cyIsIm1ha2VKUXVlcnlQbHVnaW4iLCJjcmVhdGVBc3NpZ25lciIsImJhc2VSZXN0IiwiaXNJdGVyYXRlZUNhbGwiLCJhc3NpZ25lciIsInNvdXJjZXMiLCJndWFyZCIsImVsZW1lbnRVdGlsc01ha2VyIiwibGlzdGVuZXJIYW5kbGVyTWFrZXIiLCJpZEdlbmVyYXRvck1ha2VyIiwiaWRIYW5kbGVyTWFrZXIiLCJyZXBvcnRlck1ha2VyIiwiYnJvd3NlckRldGVjdG9yIiwiYmF0Y2hQcm9jZXNzb3JNYWtlciIsInN0YXRlSGFuZGxlciIsIm9iamVjdFN0cmF0ZWd5TWFrZXIiLCJzY3JvbGxTdHJhdGVneU1ha2VyIiwiaXNDb2xsZWN0aW9uIiwiaXNFbGVtZW50IiwiZ2V0T3B0aW9uIiwiaWRIYW5kbGVyIiwiaWRHZW5lcmF0b3IiLCJkZWZhdWx0SWRIYW5kbGVyIiwicmVwb3J0ZXIiLCJiYXRjaFByb2Nlc3NvciIsImdsb2JhbE9wdGlvbnMiLCJjYWxsT25BZGQiLCJkZXRlY3Rpb25TdHJhdGVneSIsImV2ZW50TGlzdGVuZXJIYW5kbGVyIiwiZWxlbWVudFV0aWxzIiwiZGVzaXJlZFN0cmF0ZWd5IiwiaW1wb3J0YW50Q3NzUnVsZXMiLCJzdHJhdGVneU9wdGlvbnMiLCJpbXBvcnRhbnQiLCJvblJlYWR5Q2FsbGJhY2tzIiwib25SZXNpemVDYWxsYmFjayIsImVsZW1lbnRzUmVhZHkiLCJvblJlYWR5Q2FsbGJhY2siLCJnZXRTdGF0ZSIsImluaXRTdGF0ZSIsImlzRGV0ZWN0YWJsZSIsImlzQnVzeSIsIm1hcmtCdXN5IiwibWFrZURldGVjdGFibGUiLCJtYXJrQXNEZXRlY3RhYmxlIiwic3RhcnRTaXplIiwiY2xlYW5TdGF0ZSIsImluaXREb2N1bWVudCIsInRhcmdldERvY3VtZW50IiwiYnVzeSIsImV2ZW50TGlzdGVuZXJzIiwiZ2V0TGlzdGVuZXJzIiwiaWRDb3VudCIsImdlbmVyYXRlIiwicXVpZXQiLCJhdHRhY2hGdW5jdGlvbiIsIkJhdGNoIiwiYmF0Y2giLCJ0b3BMZXZlbCIsImJvdHRvbUxldmVsIiwibGV2ZWwiLCJhc3luY1Byb2Nlc3MiLCJhdXRvUHJvY2VzcyIsImFzeW5jRnJhbWVIYW5kbGVyIiwiaXNQcm9jZXNzaW5nIiwicHJvY2Vzc0JhdGNoIiwicHJvY2Vzc2luZ0JhdGNoIiwicHJvY2Vzc0JhdGNoQXN5bmMiLCJsb2NhbEFzeW5jUHJvY2VzcyIsImJ1aWxkQ3NzVGV4dFN0cmluZyIsInJ1bGVzIiwic2VwZXJhdG9yIiwiZ2V0T2JqZWN0IiwiT0JKRUNUX1NUWUxFIiwicG9zaXRpb25DaGVja1BlcmZvcm1lZCIsIm11dGF0ZURvbSIsImFsdGVyUG9zaXRpb25TdHlsZXMiLCJyZW1vdmVSZWxhdGl2ZVN0eWxlcyIsImdldE51bWVyaWNhbFZhbHVlIiwiZ2V0RG9jdW1lbnQiLCJjaGVja0Zvck9iamVjdERvY3VtZW50VGltZW91dElkIiwib2JqZWN0RG9jdW1lbnQiLCJpbmplY3RPYmplY3QiLCJsaXN0ZW5lclByb3h5IiwiaGFzU3RhdGUiLCJzY3JvbGxiYXJTaXplcyIsIndpZHRoU2l6ZSIsImhlaWdodFNpemUiLCJnZXRTY3JvbGxiYXJTaXplcyIsInN0eWxlSWQiLCJjb250YWluZXJDbGFzcyIsImNvbnRhaW5lckFuaW1hdGlvbkNsYXNzIiwiY29udGFpbmVyQW5pbWF0aW9uQWN0aXZlQ2xhc3MiLCJzdHlsZUVsZW1lbnQiLCJpbmplY3RTdHlsZSIsImluamVjdFNjcm9sbFN0eWxlIiwiYWRkRXZlbnQiLCJnZXRFeHBhbmRFbGVtZW50IiwiZ2V0U2hyaW5rRWxlbWVudCIsImlzVW5yZW5kZXJlZCIsImVsZW1lbnRTdHlsZSIsIndpZHRoQ1NTIiwiaGVpZ2h0Q1NTIiwic3RvcmVTdHlsZSIsInN0b3JlQ3VycmVudFNpemUiLCJsYXN0V2lkdGgiLCJsYXN0SGVpZ2h0IiwiZ2V0V2lkdGhPZmZzZXQiLCJnZXRIZWlnaHRPZmZzZXQiLCJnZXRFeHBhbmRXaWR0aCIsImdldEV4cGFuZEhlaWdodCIsInBvc2l0aW9uU2Nyb2xsYmFycyIsInNocmluayIsImV4cGFuZFdpZHRoIiwiZXhwYW5kSGVpZ2h0Iiwic2hyaW5rV2lkdGgiLCJnZXRTaHJpbmtXaWR0aCIsInNocmlua0hlaWdodCIsImdldFNocmlua0hlaWdodCIsImluamVjdENvbnRhaW5lckVsZW1lbnQiLCJhZGRBbmltYXRpb25DbGFzcyIsIm9uQW5pbWF0aW9uU3RhcnQiLCJvblJlbmRlcmVkIiwiaW5qZWN0U2Nyb2xsRWxlbWVudHMiLCJyb290Q29udGFpbmVyIiwic2Nyb2xsYmFyV2lkdGgiLCJzY3JvbGxiYXJIZWlnaHQiLCJjb250YWluZXJDb250YWluZXJTdHlsZSIsImV4cGFuZFN0eWxlIiwic2hyaW5rU3R5bGUiLCJleHBhbmRDaGlsZFN0eWxlIiwic2hyaW5rQ2hpbGRTdHlsZSIsImNvbnRhaW5lckNvbnRhaW5lciIsImV4cGFuZENoaWxkIiwic2hyaW5rQ2hpbGQiLCJvbkV4cGFuZFNjcm9sbCIsIm9uU2hyaW5rU2Nyb2xsIiwib25FeHBhbmQiLCJvblNocmluayIsInJlZ2lzdGVyTGlzdGVuZXJzQW5kUG9zaXRpb25FbGVtZW50cyIsInVwZGF0ZUNoaWxkU2l6ZXMiLCJnZXRFeHBhbmRDaGlsZEVsZW1lbnQiLCJ1cGRhdGVEZXRlY3RvckVsZW1lbnRzIiwic2l6ZUNoYW5nZWQiLCJhcmVFbGVtZW50c0luamVjdGVkIiwibm90aWZ5TGlzdGVuZXJzSWZOZWVkZWQiLCJsYXN0Tm90aWZpZWRXaWR0aCIsImxhc3ROb3RpZmllZEhlaWdodCIsImhhbmRsZVNjcm9sbCIsImZpbmFsaXplRG9tTXV0YXRpb24iLCJpbnN0YWxsIiwiaXNJbkRvY3VtZW50IiwiaXNEZXRhY2hlZCIsInRpbWVXYWl0aW5nIiwiUmVhY3ROb29wVXBkYXRlUXVldWUiLCJfYXNzaWduIiwiZW1wdHlPYmplY3QiLCJfaW52YXJpYW50IiwiUmVhY3RDb21wb25lbnQiLCJpbmplY3RlZE1peGlucyIsIlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJtaXhpbnMiLCJzdGF0aWNzIiwiZ2V0SW5pdGlhbFN0YXRlIiwidXBkYXRlQ29tcG9uZW50IiwiUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZSIsIlJFU0VSVkVEX1NQRUNfS0VZUyIsIm1peFNwZWNJbnRvQ29tcG9uZW50IiwiY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24iLCJzcGVjUG9saWN5IiwibWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQiLCJhdXRvYmluZCIsInZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwiUmVhY3RDbGFzc01peGluIiwiYXV0b0JpbmRQYWlycyIsIl9fcmVhY3RBdXRvQmluZFBhaXJzIiwiaXNSZWFjdENsYXNzTWV0aG9kIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsInR3byIsImJpbmRBdXRvQmluZE1ldGhvZCIsImNvbXBvbmVudCIsIklzTW91bnRlZFByZU1peGluIiwiX19pc01vdW50ZWQiLCJJc01vdW50ZWRQb3N0TWl4aW4iLCJyZXBsYWNlU3RhdGUiLCJuZXdTdGF0ZSIsIlJlYWN0Q2xhc3NDb21wb25lbnQiLCJhdXRvQmluZEtleSIsImJpbmRBdXRvQmluZE1ldGhvZHMiLCJpbml0aWFsU3RhdGUiLCJjb25kaXRpb24iLCJhcmdJbmRleCIsImZyYW1lc1RvUG9wIiwiaWNvbnMiLCJjYXRlZ29yeSIsInhtbG5zIiwidmlld0JveCIsInBvaW50cyIsImFjY29yZGlvbiIsImN4IiwiY3kiLCJjbGFzcyIsImNvbnRlbnRib3giLCJ1c2VycHJvZmlsZSIsInN0YXJyYXRpbmciLCJpbWFnZWNhcm91c2VsIiwiaW1hZ2VzbGlkZXIiLCJwb3N0bGlzdCIsInBvc3RncmlkIiwicG9zdGNhcm91c2VsIiwiaWNvbmJsb2Nrc3BhcmUiLCJpY29ubGlzdCIsImN0YSIsImxvZ29iYWRnZSIsIm5vdGljZSIsInByb2dyZXNzQmFyIiwicHJpY2luZ1RhYmxlIiwicHJpY2luZ0xpc3QiLCJzb2NpYWxTaGFyZSIsInNvY2lhbGxpbmtzIiwidGFicyIsInNoYXBlZGl2aXZlciIsInRlc3RpbW9uaWFsIiwidXBsb2FkIiwic2VjdGlvbkhlYWRlciIsInNlcnZpY2VzIiwiZW1wdHlTcGFjZXMiLCJsYXlvdXRzIiwiZmxpcFgiLCJmbGlwWSIsImVkaXQiLCJibG9ja3NwYXJlX3BsYWNlaG9sZGVyIiwiZ2V0Q2F0ZWdvcmllcyIsInNldENhdGVnb3JpZXMiLCJfXyIsImkxOG4iLCJzbHVnIiwiYWRkRmlsdGVyIiwiY3JlYXRlSGlnaGVyT3JkZXJDb21wb25lbnQiLCJjb21wb3NlIiwiYWxsb3dlZEJsb2NrcyIsIndpdGhBdHRyaWJ1dGVzIiwiQmxvY2tFZGl0IiwiYmxvY2tOYW1lIiwiaW5jbHVkZXMiLCJibG9ja3NwYXJlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsIkljb25MaXN0Iiwic3VwZXIiLCJpc09wZW4iLCJmaWx0ZXJUZXh0Iiwic2hvd0ljb25zIiwiZGlzYWJsZVRvZ2dsZSIsImNvbG9yU2V0dGluZ3MiLCJpY29uQ29sb3IiLCJvbkNvbG9yQ2hhbmdlIiwiZmluYWxEYXRhIiwiSWNvbkxpc3REYXRhIiwibGFiZWwiLCJUb2dnbGUiLCJvbkNoYW5nZSIsIkNvbG9yIiwicGxhY2Vob2xkZXIiLCJhdXRvQ29tcGxldGUiLCJ3aXRoU2VsZWN0Iiwid2l0aERpc3BhdGNoIiwiY29tcG9uZW50cyIsIkJ1dHRvbiIsIlBhbmVsQm9keSIsIlNlbGVjdENvbnRyb2wiLCJSYW5nZUNvbnRyb2wiLCJibG9ja0VkaXRvciIsIklubmVyQmxvY2tzIiwiUmljaFRleHQiLCJJbnNwZWN0b3JDb250cm9scyIsIlBhbmVsQ29sb3JTZXR0aW5ncyIsIm93blByb3BzIiwiY2xpZW50SWQiLCJnZXRCbG9ja0hpZXJhcmNoeVJvb3RDbGllbnRJZCIsImdldEJsb2NrIiwiaXNCbG9ja1NlbGVjdGVkIiwiaGFzU2VsZWN0ZWRJbm5lckJsb2NrIiwiYmxvY2siLCJpc1NlbGVjdGVkQmxvY2tJblJvb3QiLCJyb290QmxvY2siLCJyZW1vdmVCbG9jayIsInVwZGF0ZUJsb2NrQXR0cmlidXRlcyIsImZpbmRQYXJlbnRBY2NvcmRpb24iLCJkZXZpY2UiLCJzZXRBdHRyaWJ1dGVzIiwidW5pcXVlSWQiLCJfY2xpZW50IiwiaW5uZXJCbG9ja3MiLCJzZXRHbG9iYWxTZXR0aW5ncyIsInBhcmVudEFjY29yZGlvbiIsInVwZGF0ZVJvb3RCbG9jayIsInVwZGF0ZUl0ZW1OdW1iZXIiLCJpdGVtTnVtYmVyIiwiX29uQ2xpY2tMYWJlbCIsIml0ZW1Ub2dnbGUiLCJkZWZhdWx0VGV4dCIsImZpbGxUeXBlIiwiaGVhZGluZyIsImljb25Qb3NpdGlvbiIsInBhbmVsQ29sb3IiLCJwYW5lbEFjdGl2ZUNvbG9yIiwidGV4dENvbG9yIiwiYWN0aXZlVGV4dENvbG9yIiwicGFuZWxCYWNrR3JvdW5kQ29sb3IiLCJpc1NlbGVjdGVkIiwicGFuZWxfYWN0X2NvbG9yIiwicGFuZWxfY29sb3IiLCJhY3RfcGFuZWxfdGV4dF9jb2xvciIsInBhbmVsX3RleHRfY29sb3IiLCJwYW5lbF9ib2R5X2JnIiwicGFuZWxTdHlsZSIsImJhY2tncm91bmRDb2xvciIsInBhbmVsR2FwIiwidGl0bGUiLCJpbml0aWFsT3BlbiIsInJvbGUiLCJhbGxvd2VkRm9ybWF0cyIsImtlZXBQbGFjZWhvbGRlck9uRm9jdXMiLCJ1cGRhdGVMYWJlbCIsImRhdGEtYmciLCJ0ZW1wbGF0ZSIsImN1c3RvbUZvbnRTaXplIiwidGVtcGxhdGVMb2NrIiwiU2F2ZSIsIm9wZW5GaXJzdEl0ZW0iLCJkZWZhdWx0VGV4dFNpemUiLCJkYXRhLWFjdC1jb2xvciIsImRhdGEtdHh0LWNvbG9yIiwiZGF0YS1hY3RpdmUiLCJkYXRhLXBhbiIsIkNvbnRlbnQiLCJyZWdpc3RlckJsb2NrVHlwZSIsIm1ldGFkYXRhIiwiYWNjb3JkaW9uSXRlbVNldHRpbmdzIiwiZGVzY3JpcHRpb24iLCJzdXBwb3J0cyIsImluc2VydGVyIiwicmV1c2FibGUiLCJFZGl0Iiwic2F2ZSIsIkljb25CdXR0b24iLCJjcmVhdGVCbG9jayIsImluc2VydEJsb2NrIiwiZGVmYXVsdEl0ZW1zIiwiaW5zZXJ0QWNjb3JkaW9uSXRlbSIsIm5ld0Jsb2NrQXR0cmlidXRlcyIsImxhc3RCbG9ja0F0dHJpYnV0ZXMiLCJnZXRBY2NvcmRpb25UZW1wbGF0ZSIsImRhdGEtaXRlbS10b2dnbGUiLCJrZXl3b3JkcyIsImFsaWduIiwiZXhhbXBsZSIsIkFjY29yZGlvbkJsb2NrIiwiQlNCdXR0b24iLCJ0ZXh0QWxpZ24iLCJzZWN0aW9uQWxpZ25tZW50IiwiY2xhc3NuYW1lcyIsIlRvZ2dsZUNvbnRyb2wiLCJCU2J1dHRvblNldHRpbmdzIiwiZW5hYmxlQnV0dG9uQmFja2dyb3VuZENvbG9yIiwiYnV0dG9uQmFja2dyb3VuZENvbG9yIiwib25DaGFuZ2VCdXR0b25Db2xvciIsImJ1dHRvblRleHRDb2xvciIsIm9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yIiwiZW5hYmxlQnV0dG9uU2l6ZSIsImJ1dHRvblNpemUiLCJvbkNoYW5nZUJ1dHRvblNpemUiLCJlbmFibGVCdXR0b25TaGFwZSIsImJ1dHRvblNoYXBlIiwib25DaGFuZ2VCdXR0b25TaGFwZSIsImVuYWJsZUJ1dHRvblN0eWxlIiwiYnV0dG9uU3R5bGUiLCJvbkNoYW5nZUJvcmRlclN0eWxlIiwiZW5hYmxlQnV0dG9uVGFyZ2V0IiwiYnV0dG9uVGFyZ2V0Iiwib25DaGFuZ2VCdXR0b25UYXJnZXQiLCJib3JkZXJDb2xvciIsIm9uY2hhbmdlQm9yZGVyQ29sb3IiLCJib3JkZXJCdG5UZXh0Q29sb3IiLCJvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvciIsImVuYWJsZUJ0bkJvcmRlcldpZHRoIiwiYnRuQm9yZGVyV2lkdGgiLCJvbmNoYW5nZWJ0bkJvcmRlcldpZHRoIiwiZW5hYmxlQnRuRm9udFdlaWdodCIsImJ0bkZvbnRXZWlnaHQiLCJvbmNoYW5nZUJ0bkZvbnRXZWlnaHQiLCJidXR0b25TaXplT3B0aW9ucyIsImJ1dHRvblNoYXBlT3B0aW9ucyIsImJ1dHRvblN0eWxlT3B0aW9ucyIsImJ0bkZvbnRXaWdodE9wdGlvbnMiLCJHcmFkaWVudENvbG9ycyIsImJhY2tncm91bmRDb2xvcjEiLCJiYWNrZ3JvdW5kQ29sb3IyIiwiZ3JhZGllbnRBbmdsZSIsImNvbG9yTG9jYXRpb24xIiwiY29sb3JMb2NhdGlvbjIiLCJvbkNoYW5nZUJhY2tncm91bmRDb2xvcjEiLCJvbkNoYW5nZUJhY2tncm91bmRDb2xvcjIiLCJvbkNoYW5nZUdyYWRpZW50QW5nbGUiLCJvbkNoYW5nZUNvbG9yTG9jYXRpb24xIiwib25DaGFuZ2VDb2xvckxvY2F0aW9uMiIsIkluc3BlY3RvciIsImVuYWJsZUdyYWRpZW50Iiwib25DaGFuZ2VHcmFkaWVudCIsImJ1dHRvblN0eWxlT3B0aW9uIiwiYnV0dG9uU3R5bGVzIiwiYW5nbGUiLCJsb2NhMSIsImxvY2EyIiwiYnV0dG9uQXR0cmlidXRlcyIsImJ1dHRvblRleHQiLCJidXR0b25VcmwiLCJhdHRyaWJ1dGUiLCJBbGlnbm1lbnRUb29sYmFyIiwiQmxvY2tDb250cm9scyIsIlVSTElucHV0IiwiRGFzaGljb24iLCJidG5TdHlsZSIsIm9uU3VibWl0IiwicmVsIiwiUGFkZGluZyIsInBhZGRpbmdUaXRsZSIsInBhZGRpbmdIZWxwIiwicGFkZGluZ01pbiIsInBhZGRpbmdNYXgiLCJwYWRkaW5nRW5hYmxlIiwib25DaGFuZ2VQYWRkaW5nIiwicGFkZGluZ1RvcE1pbiIsInBhZGRpbmdUb3BNYXgiLCJwYWRkaW5nRW5hYmxlVG9wIiwib25DaGFuZ2VQYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0TWluIiwicGFkZGluZ1JpZ2h0TWF4IiwicGFkZGluZ0VuYWJsZVJpZ2h0Iiwib25DaGFuZ2VQYWRkaW5nUmlnaHQiLCJwYWRkaW5nQm90dG9tTWluIiwicGFkZGluZ0JvdHRvbU1heCIsInBhZGRpbmdFbmFibGVCb3R0b20iLCJvbkNoYW5nZVBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdE1pbiIsInBhZGRpbmdMZWZ0TWF4IiwicGFkZGluZ0VuYWJsZUxlZnQiLCJvbkNoYW5nZVBhZGRpbmdMZWZ0IiwicGFkZGluZ1ZlcnRpY2FsIiwicGFkZGluZ0VuYWJsZVZlcnRpY2FsIiwicGFkZGluZ1ZlcnRpY2FsTWluIiwicGFkZGluZ1ZlcnRpY2FsTWF4Iiwib25DaGFuZ2VQYWRkaW5nVmVydGljYWwiLCJwYWRkaW5nSG9yaXpvbnRhbCIsInBhZGRpbmdFbmFibGVIb3Jpem9udGFsIiwicGFkZGluZ0hvcml6b250YWxNaW4iLCJwYWRkaW5nSG9yaXpvbnRhbE1heCIsIm9uQ2hhbmdlUGFkZGluZ0hvcml6b250YWwiLCJoZWxwIiwiTWFyZ2luIiwibWFyZ2luVGl0bGUiLCJtYXJnaW5IZWxwIiwibWFyZ2luTWluIiwibWFyZ2luTWF4IiwibWFyZ2luRW5hYmxlIiwib25DaGFuZ2VNYXJnaW4iLCJtYXJnaW5Ub3BNaW4iLCJtYXJnaW5Ub3BNYXgiLCJtYXJnaW5FbmFibGVUb3AiLCJvbkNoYW5nZU1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbU1pbiIsIm1hcmdpbkJvdHRvbU1heCIsIm1hcmdpbkVuYWJsZUJvdHRvbSIsIm9uQ2hhbmdlTWFyZ2luQm90dG9tIiwiQlNIZWFkZXJTZXR0aW5ncyIsImVuYWJsZUJsb2NrR2FwcyIsImVuYWJsZWhlYWRlcmxheW91dE9wdGlvbiIsImhlYWRlcmxheW91dE9wdGlvbiIsIm9uQ2hhbmdlSGVhZGVyU3R5bGUiLCJ0aXRsZUZvbnRTaXplIiwib25DaGFuZ2V0aXRsZUZvbnRTaXplIiwiaGVhZGVyVGFnT3B0aW9uIiwic3VidGl0bGVGb250U2l6ZSIsIm9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZSIsIm9uQ2hhbmdlSGVhZGVyVGFnIiwiZGFzaENvbG9yIiwiZW5hYmxlaGVhZGVyYm94Q29sb3IiLCJoZWFkZXJib3hDb2xvciIsIm9uQ2hhbmdlYm94Y29sb3IiLCJvbkNoYW5nZURhc2hDb2xvciIsImhlYWRlcnRpdGxlQ29sb3IiLCJvbkNoYW5nZXRpdGxlY29sb3IiLCJ0aXRsZVBhZGRpbmdUb3AiLCJvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcCIsInRpdGxlUGFkZGluZ0JvdHRvbSIsIm9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tIiwic3VidGl0bGVQYWRkaW5nVG9wIiwiaGVhZGVyc3VidGl0bGVDb2xvciIsIm9uQ2hhbmdlc3VidGl0bGVjb2xvciIsIm9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nVG9wIiwic3VidGl0bGVQYWRkaW5nQm90dG9tIiwib25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b20iLCJoZWFkZXJwYWRkaW5nVG9wIiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nVG9wIiwiaGVhZGVycGFkZGluZ1JpZ2h0Iiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHQiLCJoZWFkZXJwYWRkaW5nQm90dG9tIiwib25DaGFuZ2VoZWFkZXJwYWRkaW5nQm90dG9tIiwiaGVhZGVycGFkZGluZ0xlZnQiLCJvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0IiwiaGVhZGVybWFyZ2luVG9wIiwib25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3AiLCJoZWFkZXJtYXJnaW5Cb3R0b20iLCJvbkNoYW5nZWhlYWRlcm1hcmdpbkJvdHRvbSIsImhlYWRlclN0eWxlT3B0aW9uIiwiaGVhZGVyVGFnU2VsZWN0T3B0aW9uIiwiTWVkaWFVcGxvYWQiLCJvcGFjaXR5UmF0aW8iLCJjdGFCYWNrR3JvdW5kQ29sb3IiLCJzaG93SW1hZ2UiLCJpbWdVUkwiLCJpbWdJRCIsImltZ0FsdCIsImJhY2tncm91bmRGaXgiLCJib3JkZXJSYWRpdXMiLCJlbmFibGVCb3hTaGFkb3ciLCJ4T2Zmc2V0IiwieU9mZnNldCIsInNwcmVhZCIsInNoYWRvd0NvbG9yIiwib25SZW1vdmVJbWFnZSIsImFsdCIsImJveFNoYWRvd1N0eWxlcyIsImJveFN0eWxlcyIsImJveFNoYWRvdyIsIm1hcmdpblBhZGRpbmdTdHlsZXMiLCJDYWxsVG9BY3Rpb24iLCJlZGl0U3R5bGVzIiwicGFkZGluZ01hcmdpbiIsImJsb2NrU3R5bGVzIiwiQlNIZWFkZXIiLCJzZWN0aW9uSGVhZGVyQXR0cmlidXRlcyIsImhlYWRlclRpdGxlIiwiaGVhZGVyU3ViVGl0bGUiLCJoZWFkZXJ0aXRsZURhc2hDb2xvciIsIm1hcmdpblBhZGRpbmciLCJkYXNoQ29sb3JzIiwiZGFzaFN0eWxlIiwidGl0bGVDb2xvciIsInRpdGxlU3R5bGVzIiwiZm9udFNpemUiLCJzdWJ0aXRsZUNvbG9yIiwic3VidGl0bGVTdHlsZXMiLCJib3hTaGFkb3dBdHRyaWJ1dGVzIiwicHJldl9pbWciLCJibG9ja3NwYXJlX2dsb2JhbHMiLCJCbG9ja0FsaWdubWVudFRvb2xiYXIiLCJhbGlnbm1lbnRPcHRpb25zIiwib3BhY2l0eVJhdGlvVG9DbGFzcyIsInJhdGlvIiwiaW5jb3MiLCJjb3ZlciIsImF1dGhvciIsInBhZ2VzIiwiZ2V0RWRpdFdyYXBwZXJQcm9wcyIsImJ1dHRvbkFsaWdubWVudCIsInRpdGxlRGFzaFN0eWxlcyIsInBsYWNlX2hvbGRlcl9pbWFnZSIsImNvbnRyb2xzIiwiYmxvZ1Bvc3RTdHlsZXMiLCJibG9nU3R5bGVzIiwiZGVzaWduIiwiZW5hYmxlQmFja2dyb3VuZENvbG9yIiwiYmFja0dyb3VuZENvbG9yIiwic3JjVXJsIiwiRGVzaWduUGFuZWxJdGVtIiwiaW1hZ2VGaWxlIiwiaW1hZ2VIb3ZlckZpbGUiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJzcmNIb3ZlciIsIlJhZGlvQ29udHJvbCIsIkRlc2lnbkNvbnRyb2wiLCJmaXhlZE9wdGlvbnMiLCJob3ZlckltYWdlIiwiaXNQcm8iLCJCYXNlQ29udHJvbCIsImFwcGx5RmlsdGVycyIsImRlc2lnbnMiLCJEZXNpZ25TZXBhcmF0b3JDb250cm9sIiwiZXhjbHVkZURlc2lnbnMiLCJEZXNpZ25QYW5lbEJvZHkiLCJzZWxlY3RlZE9wdGlvbkluVGl0bGUiLCJzZWxlY3RlZE9wdGlvbiIsInBhbmVsVGl0bGUiLCJtYWluQ2xhc3NlcyIsImltZ1NoYXBlT3B0aW9ucyIsImltYWdlU2hhcGUiLCJkZXNjcmlwdGlvbkNvbG9yIiwic2hvd0NvbnRlbnRJbWciLCJzaG93QnV0dG9uIiwibGF5b3V0T3B0aW9uIiwic2VjdGlvbkRlc2NyaXB0aW9uIiwiYnRuU3R5bGVzIiwic2VwYXJhdG9yQXR0cmlidXRlcyIsImxheWVyMVNoYWRvdyIsImJnR3JhZGllbnQiLCJiZ0dyYWRpZW50U3R5bGVzIiwiYmdHcmFkaWVudEF0dHJpYnV0ZXMiLCJzZXBhcmF0b3JFbmFibGUiLCJzaG93RnJvbnQiLCJ6aW5kZXhEaXZpZGVyIiwiZGl2aWRlclBvc2l0aW9uIiwidG9wRGl2aWRlck1hcmdpbiIsImJvdHRvbURpdmlkZXJNYXJnaW4iLCJlbmFibGVHYXAiLCJTVkdEb3VibGVXYXZlIiwiU1ZHRmFuIiwiU1ZHV2F2eSIsIlNWR1dhdmVzIiwiU1ZHU2xvcGVkIiwiU1ZHQ3VydmUiLCJTVkdTaGFwZU9jZWFuIiwiU1ZHR3JvdyIsIlNWR0Nsb3VkcyIsIlNWR0FuZ2xlZCIsInNlcGFyYXRvcnMiLCJTZXBhcmF0b3IiLCJTZXBhcmF0b3JDb21wIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsImFyaWEtaGlkZGVuIiwic2hhZG93IiwiVG9vbGJhciIsIkNvbnRyb2xzIiwidmVydGljYWxGbGlwIiwiaG9yaXpvbnRhbEZsaXAiLCJ0b29sYmFyQ29udHJvbHMiLCJiYWNrZ3JvdW5kSW1nIiwid2lkdGhSYXRpbyIsInNlcFN0eWxlcyIsInJlbmRlckFwcGVuZGVyIiwiaGFzSW5uZXJCbG9ja3MiLCJEZWZhdWx0QmxvY2tBcHBlbmRlciIsIkJ1dHRvbkJsb2NrQXBwZW5kZXIiLCJtaW5IZWlnaHQiLCJ0cmFuc2Zvcm1zIiwiaXNNdWx0aUJsb2NrIiwiX19leHBlcmltZW50YWxDb252ZXJ0IiwiYWxpZ25tZW50cyIsIndpZGVzdEFsaWdubWVudCIsImdyb3VwSW5uZXJCbG9ja3MiLCJCU0ljb25TZXR0aW5ncyIsIm9uQ2hhbmdlTmFtZSIsImVuYWJsZWljb25TaXplIiwiaWNvblNpemUiLCJvbkNoYW5nZUljb25TaXplT3B0aW9ucyIsImVuYWJsZWljb25TdHlsZXMiLCJpY29uU3R5bGVzIiwib25DaGFuZ2VJY29uU3R5bGVzIiwiaWNvbkJhY2tncm91bmRDb2xvciIsIm9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvciIsImljb25Cb3JkZXJDb2xvciIsIm9uQ2hhbmdlSWNvbkJvcmRlckNvbG9yIiwiT25DaGFuZ2VJY29uQ29sb3IiLCJpY29uU2l6ZU9wdGlvbnMiLCJvbkNoYW5nZUJvcmRlclJhZGl1cyIsImljb25TdHlsZXNPcHRpb25zIiwiY291bnRlckZvbnRDb2xvciIsImltZ0ljb25PcHRpb24iLCJibG9ja0JvcmRlclJhZGl1cyIsImljb25Db2xvck9wdGlvbnMiLCJBTExPV0VEX0JMT0NLUyIsIlRFTVBMQVRFIiwiRGVzY3JpcHRpb24iLCJpY29uU3R5bGVzY3NzIiwidGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uIiwic3BhY2VyIiwiaWNvblN0eWxlc0NzcyIsIm5leHRBbGlnbiIsIlRleHRDb250cm9sIiwiaW1hZ2VTaXplU2VsZWN0IiwiZ2V0U2V0dGluZ3MiLCJnZXRFZGl0b3JTZXR0aW5ncyIsImNvbXBhY3QiLCJpbWFnZVNpemVzIiwibnVtYmVyb2ZTbGlkZSIsInNob3dzbGlkZXJOZXh0UHJldiIsImNhcm91c2VsU3BlZWQiLCJzaG93RG90cyIsImNhcm91c2VsTmV4dEljb24iLCJuYXZpZ2F0aW9uQ29sb3IiLCJndXR0ZXJTcGFjZSIsIm5hdmlnYXRpb25TaXplIiwiY29sb3JGaWx0ZXIiLCJzaG93T3JpZ2luYWxPbkhvdmVyIiwiZW5hYmxlQXV0b1BsYXkiLCJhYkltYWdlU2l6ZVNlbGVjdCIsIm5hdmlnYXRpb25TaXplT3B0aW9uIiwiU3Bpbm5lciIsImtleWNvZGVzIiwiaXNCbG9iVVJMIiwiQkFDS1NQQUNFIiwiREVMRVRFIiwiYmxvYiIsImdldE1lZGlhIiwib25JbWFnZUNsaWNrIiwib25TZWxlY3RDYXB0aW9uIiwiYmluZENvbnRhaW5lciIsInNhdmVDdXN0b21MaW5rIiwiY2FwdGlvblNlbGVjdGVkIiwiY2FwdGlvbkZvY3VzZWQiLCJpc1NhdmVkIiwiaW1nTGluayIsInNvdXJjZV91cmwiLCJhbHRfdGV4dCIsImNhcHRpb25zIiwiZ3V0dGVyTW9iaWxlIiwiaXNGaXJzdEl0ZW0iLCJpc0xhc3RJdGVtIiwibGlua1RvIiwib25Nb3ZlQmFja3dhcmQiLCJvbk1vdmVGb3J3YXJkIiwib25SZW1vdmUiLCJzdXBwb3J0c0NhcHRpb24iLCJzdXBwb3J0c01vdmluZyIsInZlcnRpY2FsTW92aW5nIiwic2l6ZXMiLCJpbnNwZWN0b3JTaXplIiwiYXJpYUxhYmVsIiwiaW1ndXJsIiwibWVkaXVtIiwibGFyZ2UiLCJmdWxsIiwiaW1nQ2xhc3NlcyIsImRhdGEtaWQiLCJkYXRhLWltZ2xpbmsiLCJhcmlhLWxhYmVsIiwiY2FwdGlvblN0eWxlcyIsImFyaWEtZGlzYWJsZWQiLCJpc0VtcHR5IiwibmV3Q2FwdGlvbiIsInVuc3RhYmxlT25Gb2N1cyIsImlubGluZVRvb2xiYXIiLCJwaWNrUmVsZXZhbnRNZWRpYUZpbGVzIiwiaW1hZ2VQcm9wcyIsImltZ0tleSIsImZpbmRJbmRleCIsIkFMTE9XRURfR0FMTEVSWV9NRURJQV9UWVBFUyIsInNwcmludGYiLCJNZWRpYVBsYWNlaG9sZGVyIiwiQmxvY2tJY29uIiwiR2FsbGVyeVBsYWNlaG9sZGVyIiwib25TZWxlY3RJbWFnZXMiLCJoZWxwZXIiLCJub3RpY2VPcGVyYXRpb25zIiwibm90aWNlVUkiLCJoYXNJbWFnZXMiLCJhZGRUb0dhbGxlcnkiLCJpc0FwcGVuZGVyIiwiZHJvcFpvbmVVSU9ubHkiLCJsYWJlbHMiLCJpbnN0cnVjdGlvbnMiLCJhY2NlcHQiLCJhbGxvd2VkVHlwZXMiLCJjcmVhdGVFcnJvck5vdGljZSIsIm5vdGljZXMiLCJtZWRpYVVwbG9hZCIsIkRyb3Bab25lIiwiR2FsbGVyeURyb3Bab25lIiwiYWRkTWVkaWFGaWxlcyIsImZpbGVzIiwiY3VycmVudEltYWdlcyIsImZpbGVzTGlzdCIsIm9uRmlsZUNoYW5nZSIsImltYWdlc05vcm1hbGl6ZWQiLCJvbkZpbGVzRHJvcCIsIndpdGhOb3RpY2VzIiwiUmVzaXphYmxlQm94IiwiTWVkaWFVcGxvYWRDaGVjayIsIm9uU2VsZWN0SW1hZ2UiLCJzZXRJbWFnZUF0dHJpYnV0ZXMiLCJvbkl0ZW1DbGljayIsIm9uRWRpdFNlbGVjdEltYWdlcyIsInNlbGVjdGVkSW1hZ2UiLCJsaWdodGJveCIsImxpZ2h0Ym94U3R5bGUiLCJyYWRpdXMiLCJncmlkU2l6ZSIsIm9uTW92ZSIsIm9sZEluZGV4IiwibmV3SW5kZXgiLCJfaW1nIiwiZHJvcFpvbmUiLCJuZXh0YXJyb3ciLCJwcmV2YXJyb3ciLCJCc05leHRBcnJvdzEiLCJCc1ByZXZBcnJvdzEiLCJCc05leHRBcnJvdzIiLCJCc1ByZXZBcnJvdzIiLCJCc05leHRBcnJvdzMiLCJCc1ByZXZBcnJvdzMiLCJCc05leHRBcnJvdzQiLCJCc1ByZXZBcnJvdzQiLCJCc05leHRBcnJvdzUiLCJCc1ByZXZBcnJvdzUiLCJsb29wIiwiZ2FsbGVyeSIsIkdhbGxlcnlDYXJvdXNlbEVkaXQiLCJwcmV2c3RyIiwiY2Fyb3VzZWxfYXJncyIsImpzb25EYXRhIiwiZGF0YS1uZXh0IiwiZGF0YS1wcmV2IiwiZGF0YS1zbGljayIsIkxpbmUiLCJpbmRpY2F0b3IiLCJiYXJDb2xvciIsImJhclRoaWNrbmVzcyIsInBlcmNlbnRhZ2VUZXh0Q29sb3IiLCJwcm9ncmVzc0JhclBhdGgiLCJzdHJva2UiLCJ0ZXh0U2l6ZSIsInByb2dyZXNzSXRlbVNldHRpbmdzIiwicGVyY2VudGFnZSIsImJsb2NrSUQiLCJsaW5lU3R5bGUiLCJkYXRhLXBlcmNlbnQiLCJpbnNlcnRQcm9ncmVzc2Jhckl0ZW0iLCJ0aXRsZTEiLCJnZXRQcm9ncmVzc2JhclRlbXBsYXRlIiwiaW50ZXJhY3Rpb24iLCJMaW5lYXJQcm9ncmVzc0Jsb2NrIiwiQlNMaXN0SWNvblNldHRpbmdzIiwibGlzdFR5cGUiLCJvbkNoYW5nZUxpc3RTdHlsZSIsIm9yZGVyTGlzdFN0eWxlIiwib25DaGFuZ2VPcmRlckxpc3RTdHlsZSIsIm9uY2hhbmdlQ29sb3IiLCJsaXN0QmFja0dyb3VuZENvbG9yIiwibGlzdERhdGEiLCJjbGFzc2VzTmFtZSIsIm11bHRpbGluZSIsIml0ZW1Qcm9wIiwiTG9nb3MiLCJncmF5c2NhbGUiLCJkYXRhLWxpbmsiLCJRdWVyeUNvbnRyb2xzIiwiYWRkUXVlcnlBcmdzIiwiYXBpRmV0Y2giLCJjYXRlZ29yaWVzTGlzdCIsInN0aWxsTW91bnRlZCIsImZldGNoUmVxdWVzdCIsInBlcl9wYWdlIiwicG9zdFR5cGUiLCJkaXNwbGF5UG9zdENhdGVnb3J5IiwiZGlzcGxheVBvc3RUaXRsZSIsImRpc3BsYXlQb3N0QXV0aG9yIiwiZGlzcGxheVBvc3REYXRlIiwiZGlzcGxheVBvc3RFeGNlcnB0IiwiZGlzcGxheVBvc3RMaW5rIiwiZXhjZXJwdExlbmd0aCIsInJlYWRNb3JlVGV4dCIsInBvc3RzVG9TaG93IiwiaW1hZ2VTaXplIiwib3JkZXJCeSIsImNhdGVnb3JpZXMiLCJwb3N0VGl0bGVDb2xvciIsImNvbnRlbnRPcmRlciIsImVxdWFsSW1hZ2VIZWlnaHQiLCJwb3N0VGl0bGVGb250U2l6ZSIsImxpbmtDb2xvciIsImdlbmVyYWxDb2xvciIsImxhdGVzdFBvc3RzIiwiaGFzUG9zdHMiLCJpc1Bvc3QiLCJzZWxlY3RlZENhdGVnb3J5SWQiLCJvbkNhdGVnb3J5Q2hhbmdlIiwib25PcmRlckNoYW5nZSIsIm9uT3JkZXJCeUNoYW5nZSIsImRlY29kZUVudGl0aWVzIiwiaHRtbEVudGl0aWVzIiwiUGxhY2Vob2xkZXIiLCJnZXRFbnRpdHlSZWNvcmRzIiwibGF0ZXN0UG9zdHNRdWVyeSIsIm9yZGVyYnkiLCJzZWN0aW9uVGFnIiwiZGlzcGxheVBvc3RzIiwiU2VjdGlvblRhZyIsIml0ZW1TdHlsZSIsImxpbmtjb2xvciIsImdlbmVyYWxjb2xvciIsImVkaXRDb250ZW50UGFkZGluZyIsInBvc3QiLCJmZWF0dXJlZEltYWdlIiwiZmVhdHVyZWRfaW1hZ2VfdXJscyIsImNhdGVnb3J5X2luZm8iLCJyZW5kZXJlZCIsImF1dGhvcl9pbmZvIiwiZGlzcGxheV9uYW1lIiwiYXV0aG9yX2xpbmsiLCJkYXRlX2dtdCIsImRhdGVUaW1lIiwiZXhjZXJwdCIsIm5vX3dvcmRzIiwiTGF0ZXN0UG9zdHNCbG9ja0dyaWQiLCJMYXRlc3RQb3N0c0Jsb2NrTGlzdCIsInNldENhcHRpb25TdHlsZVRvIiwiY2FwdGlvblN0eWxlIiwiZ2V0Q2FwdGlvbnNIZWxwIiwibWFzb25yeU9wdGlvbnMiLCJlZGl0b3JTaWRlYmFyT3BlbmVkIiwiaXNFZGl0b3JTaWRlYmFyT3BlbmVkIiwicGx1Z2luU2lkZWJhck9wZW5lZCIsImlzUGx1Z2luU2lkZWJhck9wZW5lZCIsInB1Ymxpc2hTaWRlYmFyT3BlbmVkIiwiaXNQdWJsaXNoU2lkZWJhck9wZW5lZCIsIndpZGVDb250cm9sc0VuYWJsZWQiLCJhbGlnbldpZGUiLCJtYXNvbnJ5Q2xhc3NlcyIsImlubmVyQ2xhc3NlcyIsIkJzR2FsbGVyeUF0dHJpYnV0ZXMiLCJjYXB0aW9uQ29sb3IiLCJtZW51X2ltZ191cmwiLCJ0ZXh0c0NvbG9yIiwiYm94Qm9yZGVyQ29sb3IiLCJlbmFibGVCdXR0b24iLCJCU05vdGljZUJhciIsIm5vdGljZUNvbnRlbnQiLCJQcmljaW5nTGlzdCIsImxheW91dE9wdGlvbnMiLCJwcmljZVVuaXRQb3NpdGlvbiIsInByaWNlQ29sb3IiLCJwcmljZVRpdGxlQ29sb3IiLCJwcmljZVVuaXRDb2xvciIsInByaWNlRGVzY3JpcHRpb25Db2xvciIsInByaWNlTGlzdEl0ZW1TZXR0aW5ncyIsInByaWNlIiwicHJpY2VUaXRsZSIsInByaWNlRGVzY3JpcHRpb24iLCJwcmljZVVuaXQiLCJpbnNlcnRQcmljZUl0ZW0iLCJnZXRQcmljZVRlbXBsYXRlIiwiUHJpY2VMaXN0QmxvY2siLCJQcmljaW5nVGFibGUiLCJjb2x1bW5zR2FwIiwiUGFuZWxSb3ciLCJ3aXRoSW5wdXRGaWVsZCIsIkJsb2NrRGVzY3JpcHRpb24iLCJGb3JtVG9nZ2xlIiwic2VjdGlvblNjYWxlIiwiZW5hYmxlQmFkZ2UiLCJiYWRnZVRleHQiLCJiYWRnZVN0eWxlIiwiYmFkZ2VPcHRpb24iLCJpbWdJRDEiLCJpbWdVUkwxIiwiaW1nQWx0MSIsImJhZGdlVGV4dENvbG9yIiwiYmFkZ2VCYWNrR3JvdW5kQ29sb3IiLCJiYWRnZUltZ1NpemUiLCJwcmljZUl0ZW1TZXR0aW5ncyIsImFsaWdubWVudCIsImJhZGdlU3R5bGVzIiwiYmFkZ2VJbWdTdHlsZSIsImJhZGdlY2xhc3MiLCJzY2FsZVJhdGlvQ2xhc3MiLCJjdXJyZW5jeSIsInRlcm0iLCJtdWx0aWxpbmVUYWciLCJvcmRlcmVkIiwiRm9udFNpemUiLCJpdGVtU2NvcGUiLCJpdGVtVHlwZSIsImluc2VydFNlcnZpY2VJdGVtIiwiZ2V0U2VydmljZVRlbXBsYXRlIiwidGltZXMiLCJ3aXRoRmFsbGJhY2tTdHlsZXMiLCJnZXRGb250U2l6ZUNsYXNzIiwiZ2V0Q29sb3JDbGFzc05hbWUiLCJ3aXRoRm9udFNpemVzIiwiRm9udFNpemVQaWNrZXIiLCJ3aXRoQ29sb3JzIiwiQ29udHJhc3RDaGVja2VyIiwiYXBwbHlGYWxsYmFja1N0eWxlcyIsImVkaXRhYmxlTm9kZSIsImNvbXB1dGVkU3R5bGVzIiwiZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3IiLCJmYWxsYmFja1RleHRDb2xvciIsImZhbGxiYWNrRm9udFNpemUiLCJzaG93VGVybSIsInNob3dDdXJyZW5jeSIsInNldEZvbnRTaXplIiwic2V0VGV4dENvbG9yIiwic2V0QmFja2dyb3VuZENvbG9yIiwiZWRpdENsYXNzV3JhcHBlck5hbWUiLCJlZGl0Q2xhc3NOYW1lIiwiZWRpdFdyYXBTdHlsZXMiLCJjdXJyZW5jeVNpemUiLCJjdXJyZW5jeVN0eWxlcyIsInRlcm1TaXplIiwidGVybVN0eWxlcyIsImN1c3RvbUJhY2tncm91bmRDb2xvciIsImN1c3RvbVRleHRDb2xvciIsImZvbnRTaXplQ2xhc3MiLCJiYWNrZ3JvdW5kQ2xhc3MiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwid3JhcHBlclN0eWxlcyIsImNvbXB1dGVkRm9udFNpemUiLCJDb2xvclBhbGV0dGUiLCJ0ZXh0Q2xhc3MiLCJCdXR0b25FZGl0IiwiaWNvblNoYXBlcyIsImNsaWVudHMiLCJpY29uU2l6ZXMiLCJidXR0b25TaGFwZXMiLCJidXR0b25TaXplcyIsImZhY2Vib29rVGl0bGUiLCJmYWNlYm9va1VybCIsInR3aXR0ZXJUaXRsZSIsInR3aXR0ZXJVcmwiLCJpbnN0YWdyYW1UaXRsZSIsImluc3RhZ3JhbVVybCIsInlvdXR1YmVUaXRsZSIsInlvdXR1YmVVcmwiLCJsaW5rZWRpblRpdGxlIiwibGlua2VkaW5VcmwiLCJwaW50ZXJlc3RUaXRsZSIsInBpbnRlcmVzdFVybCIsIlNvY2lhbExpbmtzIiwiY29sb3JTdHlsZXMiLCJpY29uQ29sb3JPcHRpb24iLCJjdXN0b21mb250Q29sb3JPcHRpb24iLCJjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb24iLCJidXR0b25PcHRpb25zIiwiYnV0dG9uRmlsbHMiLCJ0dW1ibHJVcmwiLCJ0dW1ibHJUaXRsZSIsInRlbGVncmFtVXJsIiwidGVsZWdyYW1UaXRsZSIsInJlZGRpdFVybCIsInJlZGRpdFRpdGxlIiwiZmxpY2tyVXJsIiwiZmxpY2tyVGl0bGUiLCJkcmliYmJsZVVybCIsImRyaWJiYmxlVGl0bGUiLCJ2a1VybCIsInZrVGl0bGUiLCJ5ZWxwVXJsIiwieWVscFRpdGxlIiwicXVvcmFVcmwiLCJxdW9yYVRpdGxlIiwibWVldHVwVXJsIiwibWVldHVwVGl0bGUiLCJnaXRodWJVcmwiLCJnaXRodWJUaXRsZSIsImZhY2Vib29rIiwidHdpdHRlciIsInBpbnRlcmVzdCIsImxpbmtlZGluIiwicmVkZGl0IiwiZW1haWxUaXRsZSIsIlNlcnZpY2VzIiwic2VydmljZUl0ZW1zIiwic2VydmljZUl0ZW1TZXR0aW5ncyIsIlNlcnZpY2VMaXN0QmxvY2siLCJFbXB0eVN0YXIiLCJmaWxsQ29sb3IiLCJIYWxmU3RhciIsIkZ1bGxTdGFyIiwic3RhckNvdW50Iiwic3RhclNpemUiLCJzdGFyQ29sb3IiLCJzdGFyQWxpZ24iLCJzZWxlY3RlZFN0YXJzIiwiZW1wdHlTdGFyQ29sb3IiLCJoaWdobGlnaHRlZFN0YXJzIiwiYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhciIsImJsb2Nrc3BhcmVfbWFrZV9lbXB0eV9zdGFyIiwic3RhcnMiLCJ0YWJMYXlvdXQiLCJ0YWJTdHlsZSIsInRhYkJhY2tHcm91bmRDb2xvciIsImFjdGl2ZVRhYkJhY2tncm91bmRDb2xvciIsInRhYlRleHRDb2xvciIsImFjdGl2ZXRhYlRleHRDb2xvciIsInRhYkFsaWdubWVudCIsInRhYkxheW91dE9wdGlvbnMiLCJUb29sdGlwIiwidGFiVGl0bGVzIiwidGhpc0luZGV4IiwiYWN0X3RhYl9iZyIsInRhYl9iZyIsImFjdF90YWJfdGV4dCIsInRhYl90ZXh0IiwiY3VycmVudFRhYkJsb2NrIiwic2hvd0ljb25QaWNrZXIiLCJhY3RpdmVUYWIiLCJpY29uTmFtZSIsImluaXRpYWxSZW5kZXIiLCJ1cGRhdGVUaXRsZXMiLCJkZWxldGVUYWIiLCJuZXh0QWN0aXZlVGFiIiwibmV3VGl0bGVzIiwicmVuZGVyVGFiVGl0bGVzIiwiYXJlYUxhYmVsIiwiY3VzdG9tQ2xhc3NOYW1lIiwidGFiLWJnIiwiYXRhYi1iZyIsInRhYi10ZXh0IiwiYXRhYi10ZXh0IiwiVGVzdGltb25pYWxXcmFwcGVyIiwiZW5hYmxlUmF0aW5ncyIsInRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3IiLCJ0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUiLCJ0ZXN0aW1vbmlhbEl0ZW1TZXR0aW5ncyIsInRlc3RpbW9uaWFsRGVzY3JpcHRpb24iLCJpbnNlcnRUZXN0aW1vbmlhbEl0ZW0iLCJnZXRUZXN0aW1vbmlhbFRlbXBsYXRlIiwiVGVzdGltb25pYWxMaXN0QmxvY2siLCJwcm9maWxlVGV4dENvbG9yIiwicHJvZmlsZUJhY2tncm91bmRDb2xvciIsImluc3RhZ3JhbSIsInlvdXR1YmUiLCJidXR0b25GaWxsIiwiUHJvZmlsZUJveCIsInByb2ZpbGVJbWdVUkwiLCJwcm9maWxlRm9udFNpemUiLCJwcm9maWxlQXZhdGFyU2hhcGUiLCJvcHRpbnNMYXlwdXRzIiwiU29jaWFsSWNvbnMiLCJBdmF0YXJDb2x1bW4iLCJwcm9maWxlQ29udGVudCIs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LElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLGFBQWMsSUFDZCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxhQUFjLElBQ2QsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxnQkFBaUIsSUFDakIsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLFVBQVcsSUFDWCxhQUFjLElBQ2QsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsYUFBYyxJQUNkLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLFVBQVcsSUFDWCxhQUFjLElBQ2QsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLGFBQWMsSUFDZCxVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxPQUFRLElBQ1IsVUFBVyxJQUNYLE9BQVEsSUFDUixVQUFXLElBQ1gsT0FBUSxJQUNSLFVBQVcsSUFDWCxP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LGtXQUFVLElBQ1R3aUgsR0FBU3hpSCxZQUdUdWlILEdBQXFCaC9ELEdBQUdHLE9BQXhCNitELGtCQUNBeEcsR0FBTXg0RCxHQUFHeTRELEtBQVRELEdBRVB3RyxHQUFrQng0SSxHQUFNLENBQ3BCczNJLE1BQU90RixHQUFHLG1CQUFvQixjQUM5QjJHLFlBQWEzRyxHQUFHLGdCQUFpQixjQUNqQ3hDLFNBSG9CLEdBSXBCMzFELEtBQU0wMUQsRUFBTWlDLFlBQ1p2N0csV0FMb0IsR0FNcEJ5akgsU0FBVSxDQUNOMUgsR0FBRyxRQUFTLGVBR2hCNEcsU0FBVSxDQUNOZSxNQUFPLENBQUMsT0FBUSxPQUFPLFdBRTNCQyxRQUFTLENBQ0wzakgsV0FBWSxDQUNSd3dILE1BQU8seUJBQ1BDLE9BQVEsYUFDUkMsTUFBTyxNQUdmL1UsS0FBTSxTQUFTMTlGLEdBQU0sUUFNYkEsRUFBTWplLFdBSE4ycEIsRUFIYSxFQUdiQSxPQUNBeW5HLEVBSmEsRUFJYkEsZ0JBR0osT0FDSSx5QkFBQyxHQUFELEtBQ0kseUJBQUMsR0FBY256RyxHQUVuQixnQ0FBS2haLFVBQVksc0RBQ2IsZ0NBQUtBLFVBQVkscUJBQ2pCd1IsTUFBTyxDQUNIa1QsT0FBT0EsRUFBTyxLQUNkaEcsTUFBTSxPQUNOdzlGLGdCQUFnQmlRLEdBQWdDLGFBT2hFck8sS0FBSyxTQUFTOWtHLEdBQU0sUUFLWkEsRUFBTWplLFdBSE4ycEIsRUFGWSxFQUVaQSxPQUNBeW5HLEVBSFksRUFHWkEsZ0JBR0osT0FFSSxnQ0FBS25zSCxVQUFZLHNEQUNiLGdDQUFLQSxVQUFZLHFCQUNad1IsTUFBTyxDQUNIa1QsT0FBT0EsRUFBTyxLQUNkaEcsTUFBTSxPQUNOdzlGLGdCQUFnQmlRLEdBQWdDLGUiLCJmaWxlIjoiYmxvY2tzLmJ1aWxkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQyMSk7XG4iLCIvKiFcbiAgQ29weXJpZ2h0IChjKSAyMDE3IEplZCBXYXRzb24uXG4gIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG4gIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpICYmIGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRpZiAoaW5uZXIpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCIvLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkLCBoLCBNLCBzLCBtcyk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoeSwgbSwgZCwgaCwgTSwgcywgbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZTtcbiAgICAgICAgLy8gdGhlIERhdGUuVVRDIGZ1bmN0aW9uIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OVxuICAgICAgICBpZiAoeSA8IDEwMCAmJiB5ID49IDApIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIC8vIHByZXNlcnZlIGxlYXAgeWVhcnMgdXNpbmcgYSBmdWxsIDQwMCB5ZWFyIGN5Y2xlLCB0aGVuIHJlc2V0XG4gICAgICAgICAgICBhcmdzWzBdID0geSArIDQwMDtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxsLCBhcmdzKSk7XG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUoZGF0ZS5nZXRVVENGdWxsWWVhcigpKSkge1xuICAgICAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvLyBzdGFydC1vZi1maXJzdC13ZWVrIC0gc3RhcnQtb2YteWVhclxuICAgIGZ1bmN0aW9uIGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gICAgICAgICAgICBmd2QgPSA3ICsgZG93IC0gZG95LFxuICAgICAgICAgICAgLy8gZmlyc3Qtd2VlayBkYXkgbG9jYWwgd2Vla2RheSAtLSB3aGljaCBsb2NhbCB3ZWVrZGF5IGlzIGZ3ZFxuICAgICAgICAgICAgZndkbHcgPSAoNyArIGNyZWF0ZVVUQ0RhdGUoeWVhciwgMCwgZndkKS5nZXRVVENEYXkoKSAtIGRvdykgJSA3O1xuXG4gICAgICAgIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUjQ2FsY3VsYXRpbmdfYV9kYXRlX2dpdmVuX3RoZV95ZWFyLjJDX3dlZWtfbnVtYmVyX2FuZF93ZWVrZGF5XG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtzKHllYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSB7XG4gICAgICAgIHZhciBsb2NhbFdlZWtkYXkgPSAoNyArIHdlZWtkYXkgLSBkb3cpICUgNyxcbiAgICAgICAgICAgIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldCxcbiAgICAgICAgICAgIHJlc1llYXIsIHJlc0RheU9mWWVhcjtcblxuICAgICAgICBpZiAoZGF5T2ZZZWFyIDw9IDApIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyIC0gMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheXNJblllYXIocmVzWWVhcikgKyBkYXlPZlllYXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyKSkge1xuICAgICAgICAgICAgcmVzWWVhciA9IHllYXIgKyAxO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyO1xuICAgICAgICAgICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXIsXG4gICAgICAgICAgICBkYXlPZlllYXI6IHJlc0RheU9mWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtPZlllYXIobW9tLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldChtb20ueWVhcigpLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrID0gTWF0aC5mbG9vcigobW9tLmRheU9mWWVhcigpIC0gd2Vla09mZnNldCAtIDEpIC8gNykgKyAxLFxuICAgICAgICAgICAgcmVzV2VlaywgcmVzWWVhcjtcblxuICAgICAgICBpZiAod2VlayA8IDEpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpIC0gMTtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrICsgd2Vla3NJblllYXIocmVzWWVhciwgZG93LCBkb3kpO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWsgPiB3ZWVrc0luWWVhcihtb20ueWVhcigpLCBkb3csIGRveSkpIHtcbiAgICAgICAgICAgIHJlc1dlZWsgPSB3ZWVrIC0gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCkgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzWWVhciA9IG1vbS55ZWFyKCk7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3ZWVrOiByZXNXZWVrLFxuICAgICAgICAgICAgeWVhcjogcmVzWWVhclxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdlZWtzSW5ZZWFyKHllYXIsIGRvdywgZG95KSB7XG4gICAgICAgIHZhciB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIHdlZWtPZmZzZXROZXh0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIgKyAxLCBkb3csIGRveSk7XG4gICAgICAgIHJldHVybiAoZGF5c0luWWVhcih5ZWFyKSAtIHdlZWtPZmZzZXQgKyB3ZWVrT2Zmc2V0TmV4dCkgLyA3O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd3JywgWyd3dycsIDJdLCAnd28nLCAnd2VlaycpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdXJywgWydXVycsIDJdLCAnV28nLCAnaXNvV2VlaycpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrJywgJ3cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWsnLCAnVycpO1xuXG4gICAgLy8gUFJJT1JJVElFU1xuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrJywgNSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrJywgNSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCd3JywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignd3cnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignVycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1dXJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWyd3JywgJ3d3JywgJ1cnLCAnV1cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDEpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIExPQ0FMRVNcblxuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWsgKG1vbSkge1xuICAgICAgICByZXR1cm4gd2Vla09mWWVhcihtb20sIHRoaXMuX3dlZWsuZG93LCB0aGlzLl93ZWVrLmRveSkud2VlaztcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWsgPSB7XG4gICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZXZWVrICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvY2FsZUZpcnN0RGF5T2ZZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWsuZG95O1xuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gdGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWsgKGlucHV0KSB7XG4gICAgICAgIHZhciB3ZWVrID0gd2Vla09mWWVhcih0aGlzLCAxLCA0KS53ZWVrO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWsgOiB0aGlzLmFkZCgoaW5wdXQgLSB3ZWVrKSAqIDcsICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2QnLCAwLCAnZG8nLCAnZGF5Jyk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGRkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdlJywgMCwgMCwgJ3dlZWtkYXknKTtcbiAgICBhZGRGb3JtYXRUb2tlbignRScsIDAsIDAsICdpc29XZWVrZGF5Jyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RheScsICdkJyk7XG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrZGF5JywgJ2UnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtkYXknLCAnRScpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheScsIDExKTtcbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrZGF5JywgMTEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignZCcsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignRScsICAgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNNaW5SZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignZGRkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1JlZ2V4KGlzU3RyaWN0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZGQnLCAnZGRkJywgJ2RkZGQnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHZhciB3ZWVrZGF5ID0gY29uZmlnLl9sb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIHdlZWtkYXkgbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkXG4gICAgICAgIGlmICh3ZWVrZGF5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHdlZWsuZCA9IHdlZWtkYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkV2Vla2RheSA9IGlucHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2QnLCAnZScsICdFJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTmFOKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGlucHV0LCAxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCA9IGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvV2Vla2RheShpbnB1dCwgbG9jYWxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQpICUgNyB8fCA3O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc05hTihpbnB1dCkgPyBudWxsIDogaW5wdXQ7XG4gICAgfVxuXG4gICAgLy8gTE9DQUxFU1xuICAgIGZ1bmN0aW9uIHNoaWZ0V2Vla2RheXMgKHdzLCBuKSB7XG4gICAgICAgIHJldHVybiB3cy5zbGljZShuLCA3KS5jb25jYXQod3Muc2xpY2UoMCwgbikpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICB2YXIgd2Vla2RheXMgPSBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzWyhtICYmIG0gIT09IHRydWUgJiYgdGhpcy5fd2Vla2RheXMuaXNGb3JtYXQudGVzdChmb3JtYXQpKSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgcmV0dXJuIChtID09PSB0cnVlKSA/IHNoaWZ0V2Vla2RheXMod2Vla2RheXMsIHRoaXMuX3dlZWsuZG93KVxuICAgICAgICAgICAgOiAobSkgPyB3ZWVrZGF5c1ttLmRheSgpXSA6IHdlZWtkYXlzO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCA9ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNTaG9ydCAobSkge1xuICAgICAgICByZXR1cm4gKG0gPT09IHRydWUpID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c1Nob3J0LCB0aGlzLl93ZWVrLmRvdylcbiAgICAgICAgICAgIDogKG0pID8gdGhpcy5fd2Vla2RheXNTaG9ydFttLmRheSgpXSA6IHRoaXMuX3dlZWtkYXlzU2hvcnQ7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrZGF5c01pbiA9ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrZGF5c01pbiAobSkge1xuICAgICAgICByZXR1cm4gKG0gPT09IHRydWUpID8gc2hpZnRXZWVrZGF5cyh0aGlzLl93ZWVrZGF5c01pbiwgdGhpcy5fd2Vlay5kb3cpXG4gICAgICAgICAgICA6IChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSB3LmUgKyBkb3c7XG4gICAgICAgICAgICAgICAgaWYgKHcuZSA8IDAgfHwgdy5lID4gNikge1xuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5T3ZlcmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgICAgICAgICAgICAgIHdlZWtkYXkgPSBkb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdlZWsgPCAxIHx8IHdlZWsgPiB3ZWVrc0luWWVhcih3ZWVrWWVhciwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrcyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAod2Vla2RheU92ZXJmbG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLl9vdmVyZmxvd1dlZWtkYXkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVtcCA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICAgICAgY29uZmlnLl9hW1lFQVJdID0gdGVtcC55ZWFyO1xuICAgICAgICAgICAgY29uZmlnLl9kYXlPZlllYXIgPSB0ZW1wLmRheU9mWWVhcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlzbyA4NjAxIHJlZ2V4XG4gICAgLy8gMDAwMC0wMC0wMCAwMDAwLVcwMCBvciAwMDAwLVcwMC0wICsgVCArIDAwIG9yIDAwOjAwIG9yIDAwOjAwOjAwIG9yIDAwOjAwOjAwLjAwMCArICswMDowMCBvciArMDAwMCBvciArMDApXG4gICAgdmFyIGV4dGVuZGVkSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pLSg/OlxcZFxcZC1cXGRcXGR8V1xcZFxcZC1cXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzo6XFxkXFxkKD86OlxcZFxcZCg/OlsuLF1cXGQrKT8pPyk/KShbXFwrXFwtXVxcZFxcZCg/Ojo/XFxkXFxkKT98XFxzKlopPyk/JC87XG4gICAgdmFyIGJhc2ljSXNvUmVnZXggPSAvXlxccyooKD86WystXVxcZHs2fXxcXGR7NH0pKD86XFxkXFxkXFxkXFxkfFdcXGRcXGRcXGR8V1xcZFxcZHxcXGRcXGRcXGR8XFxkXFxkKSkoPzooVHwgKShcXGRcXGQoPzpcXGRcXGQoPzpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuXG4gICAgdmFyIHR6UmVnZXggPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy87XG5cbiAgICB2YXIgaXNvRGF0ZXMgPSBbXG4gICAgICAgIFsnWVlZWVlZLU1NLUREJywgL1srLV1cXGR7Nn0tXFxkXFxkLVxcZFxcZC9dLFxuICAgICAgICBbJ1lZWVktTU0tREQnLCAvXFxkezR9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydHR0dHLVtXXVdXLUUnLCAvXFxkezR9LVdcXGRcXGQtXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVycsIC9cXGR7NH0tV1xcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZLURERCcsIC9cXGR7NH0tXFxkezN9L10sXG4gICAgICAgIFsnWVlZWS1NTScsIC9cXGR7NH0tXFxkXFxkLywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlZWU1NREQnLCAvWystXVxcZHsxMH0vXSxcbiAgICAgICAgWydZWVlZTU1ERCcsIC9cXGR7OH0vXSxcbiAgICAgICAgLy8gWVlZWU1NIGlzIE5PVCBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZFxuICAgICAgICBbJ0dHR0dbV11XV0UnLCAvXFxkezR9V1xcZHszfS9dLFxuICAgICAgICBbJ0dHR0dbV11XVycsIC9cXGR7NH1XXFxkezJ9LywgZmFsc2VdLFxuICAgICAgICBbJ1lZWVlEREQnLCAvXFxkezd9L11cbiAgICBdO1xuXG4gICAgLy8gaXNvIHRpbWUgZm9ybWF0cyBhbmQgcmVnZXhlc1xuICAgIHZhciBpc29UaW1lcyA9IFtcbiAgICAgICAgWydISDptbTpzcy5TU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkXFwuXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzLFNTU1MnLCAvXFxkXFxkOlxcZFxcZDpcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIOm1tOnNzJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkL10sXG4gICAgICAgIFsnSEg6bW0nLCAvXFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIbW1zcy5TU1NTJywgL1xcZFxcZFxcZFxcZFxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISG1tc3MsU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGQsXFxkKy9dLFxuICAgICAgICBbJ0hIbW1zcycsIC9cXGRcXGRcXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISG1tJywgL1xcZFxcZFxcZFxcZC9dLFxuICAgICAgICBbJ0hIJywgL1xcZFxcZC9dXG4gICAgXTtcblxuICAgIHZhciBhc3BOZXRKc29uUmVnZXggPSAvXlxcLz9EYXRlXFwoKFxcLT9cXGQrKS9pO1xuXG4gICAgLy8gZGF0ZSBmcm9tIGlzbyBmb3JtYXRcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSVNPKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgbCxcbiAgICAgICAgICAgIHN0cmluZyA9IGNvbmZpZy5faSxcbiAgICAgICAgICAgIG1hdGNoID0gZXh0ZW5kZWRJc29SZWdleC5leGVjKHN0cmluZykgfHwgYmFzaWNJc29SZWdleC5leGVjKHN0cmluZyksXG4gICAgICAgICAgICBhbGxvd1RpbWUsIGRhdGVGb3JtYXQsIHRpbWVGb3JtYXQsIHR6Rm9ybWF0O1xuXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaXNvID0gdHJ1ZTtcblxuICAgICAgICAgICAgZm9yIChpID0gMCwgbCA9IGlzb0RhdGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpc29EYXRlc1tpXVsxXS5leGVjKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0ID0gaXNvRGF0ZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgIGFsbG93VGltZSA9IGlzb0RhdGVzW2ldWzJdICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGVGb3JtYXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaFszXSkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29UaW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzb1RpbWVzW2ldWzFdLmV4ZWMobWF0Y2hbM10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaFsyXSBzaG91bGQgYmUgJ1QnIG9yIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ID0gKG1hdGNoWzJdIHx8ICcgJykgKyBpc29UaW1lc1tpXVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aW1lRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFsbG93VGltZSAmJiB0aW1lRm9ybWF0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbNF0pIHtcbiAgICAgICAgICAgICAgICBpZiAodHpSZWdleC5leGVjKG1hdGNoWzRdKSkge1xuICAgICAgICAgICAgICAgICAgICB0ekZvcm1hdCA9ICdaJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZy5fZiA9IGRhdGVGb3JtYXQgKyAodGltZUZvcm1hdCB8fCAnJykgKyAodHpGb3JtYXQgfHwgJycpO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSRkMgMjgyMiByZWdleDogRm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI3NlY3Rpb24tMy4zXG4gICAgdmFyIHJmYzI4MjIgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLD9cXHMpPyhcXGR7MSwyfSlcXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXFxzKFxcZHsyLDR9KVxccyhcXGRcXGQpOihcXGRcXGQpKD86OihcXGRcXGQpKT9cXHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KFsrLV1cXGR7NH0pKSQvO1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyh5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW1xuICAgICAgICAgICAgdW50cnVuY2F0ZVllYXIoeWVhclN0ciksXG4gICAgICAgICAgICBkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0ciksXG4gICAgICAgICAgICBwYXJzZUludChkYXlTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGhvdXJTdHIsIDEwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KG1pbnV0ZVN0ciwgMTApXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHNlY29uZFN0cikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VJbnQoc2Vjb25kU3RyLCAxMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bnRydW5jYXRlWWVhcih5ZWFyU3RyKSB7XG4gICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoeWVhclN0ciwgMTApO1xuICAgICAgICBpZiAoeWVhciA8PSA0OSkge1xuICAgICAgICAgICAgcmV0dXJuIDIwMDAgKyB5ZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKHllYXIgPD0gOTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gMTkwMCArIHllYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHllYXI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAgICAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9cXChbXildKlxcKXxbXFxuXFx0XS9nLCAnICcpLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCAnICcpLnJlcGxhY2UoL15cXHNcXHMqLywgJycpLnJlcGxhY2UoL1xcc1xccyokLywgJycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrV2Vla2RheSh3ZWVrZGF5U3RyLCBwYXJzZWRJbnB1dCwgY29uZmlnKSB7XG4gICAgICAgIGlmICh3ZWVrZGF5U3RyKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZXBsYWNlIHRoZSB2YW5pbGxhIEpTIERhdGUgb2JqZWN0IHdpdGggYW4gaW5kZXBlbnRlbnQgZGF5LW9mLXdlZWsgY2hlY2suXG4gICAgICAgICAgICB2YXIgd2Vla2RheVByb3ZpZGVkID0gZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSxcbiAgICAgICAgICAgICAgICB3ZWVrZGF5QWN0dWFsID0gbmV3IERhdGUocGFyc2VkSW5wdXRbMF0sIHBhcnNlZElucHV0WzFdLCBwYXJzZWRJbnB1dFsyXSkuZ2V0RGF5KCk7XG4gICAgICAgICAgICBpZiAod2Vla2RheVByb3ZpZGVkICE9PSB3ZWVrZGF5QWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykud2Vla2RheU1pc21hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIG9ic09mZnNldHMgPSB7XG4gICAgICAgIFVUOiAwLFxuICAgICAgICBHTVQ6IDAsXG4gICAgICAgIEVEVDogLTQgKiA2MCxcbiAgICAgICAgRVNUOiAtNSAqIDYwLFxuICAgICAgICBDRFQ6IC01ICogNjAsXG4gICAgICAgIENTVDogLTYgKiA2MCxcbiAgICAgICAgTURUOiAtNiAqIDYwLFxuICAgICAgICBNU1Q6IC03ICogNjAsXG4gICAgICAgIFBEVDogLTcgKiA2MCxcbiAgICAgICAgUFNUOiAtOCAqIDYwXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChvYnNPZmZzZXQsIG1pbGl0YXJ5T2Zmc2V0LCBudW1PZmZzZXQpIHtcbiAgICAgICAgaWYgKG9ic09mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIG9ic09mZnNldHNbb2JzT2Zmc2V0XTtcbiAgICAgICAgfSBlbHNlIGlmIChtaWxpdGFyeU9mZnNldCkge1xuICAgICAgICAgICAgLy8gdGhlIG9ubHkgYWxsb3dlZCBtaWxpdGFyeSB0eiBpcyBaXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBobSA9IHBhcnNlSW50KG51bU9mZnNldCwgMTApO1xuICAgICAgICAgICAgdmFyIG0gPSBobSAlIDEwMCwgaCA9IChobSAtIG0pIC8gMTAwO1xuICAgICAgICAgICAgcmV0dXJuIGggKiA2MCArIG07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGFuZCB0aW1lIGZyb20gcmVmIDI4MjIgZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHJmYzI4MjIuZXhlYyhwcmVwcm9jZXNzUkZDMjgyMihjb25maWcuX2kpKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICB2YXIgcGFyc2VkQXJyYXkgPSBleHRyYWN0RnJvbVJGQzI4MjJTdHJpbmdzKG1hdGNoWzRdLCBtYXRjaFszXSwgbWF0Y2hbMl0sIG1hdGNoWzVdLCBtYXRjaFs2XSwgbWF0Y2hbN10pO1xuICAgICAgICAgICAgaWYgKCFjaGVja1dlZWtkYXkobWF0Y2hbMV0sIHBhcnNlZEFycmF5LCBjb25maWcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25maWcuX2EgPSBwYXJzZWRBcnJheTtcbiAgICAgICAgICAgIGNvbmZpZy5fdHptID0gY2FsY3VsYXRlT2Zmc2V0KG1hdGNoWzhdLCBtYXRjaFs5XSwgbWF0Y2hbMTBdKTtcblxuICAgICAgICAgICAgY29uZmlnLl9kID0gY3JlYXRlVVRDRGF0ZS5hcHBseShudWxsLCBjb25maWcuX2EpO1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykucmZjMjgyMiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0IG9yIGZhbGxiYWNrXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZyhjb25maWcpIHtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBhc3BOZXRKc29uUmVnZXguZXhlYyhjb25maWcuX2kpO1xuXG4gICAgICAgIGlmIChtYXRjaGVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSgrbWF0Y2hlZFsxXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbVJGQzI4MjIoY29uZmlnKTtcbiAgICAgICAgaWYgKGNvbmZpZy5faXNWYWxpZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjb25maWcuX2lzVmFsaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5hbCBhdHRlbXB0LCB1c2UgSW5wdXQgRmFsbGJhY2tcbiAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICB9XG5cbiAgICBob29rcy5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ3ZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCAnICtcbiAgICAgICAgJ3doaWNoIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgYWxsIGJyb3dzZXJzIGFuZCB2ZXJzaW9ucy4gTm9uIFJGQzI4MjIvSVNPIGRhdGUgZm9ybWF0cyBhcmUgJyArXG4gICAgICAgICdkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byAnICtcbiAgICAgICAgJ2h0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvanMtZGF0ZS8gZm9yIG1vcmUgaW5mby4nLFxuICAgICAgICBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShjb25maWcuX2kgKyAoY29uZmlnLl91c2VVVEMgPyAnIFVUQycgOiAnJykpO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBJU08gc3RhbmRhcmRcbiAgICBob29rcy5JU09fODYwMSA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gY29uc3RhbnQgdGhhdCByZWZlcnMgdG8gdGhlIFJGQyAyODIyIGZvcm1cbiAgICBob29rcy5SRkNfMjgyMiA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gZGF0ZSBmcm9tIHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZ1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKSB7XG4gICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBhbm90aGVyIHBhcnQgb2YgdGhlIGNyZWF0aW9uIGZsb3cgdG8gcHJldmVudCBjaXJjdWxhciBkZXBzXG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLklTT184NjAxKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSVNPKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5fZiA9PT0gaG9va3MuUkZDXzI4MjIpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnLl9hID0gW107XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gdHJ1ZTtcblxuICAgICAgICAvLyBUaGlzIGFycmF5IGlzIHVzZWQgdG8gbWFrZSBhIERhdGUsIGVpdGhlciB3aXRoIGBuZXcgRGF0ZWAgb3IgYERhdGUuVVRDYFxuICAgICAgICB2YXIgc3RyaW5nID0gJycgKyBjb25maWcuX2ksXG4gICAgICAgICAgICBpLCBwYXJzZWRJbnB1dCwgdG9rZW5zLCB0b2tlbiwgc2tpcHBlZCxcbiAgICAgICAgICAgIHN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgICAgICB0b3RhbFBhcnNlZElucHV0TGVuZ3RoID0gMDtcblxuICAgICAgICB0b2tlbnMgPSBleHBhbmRGb3JtYXQoY29uZmlnLl9mLCBjb25maWcuX2xvY2FsZSkubWF0Y2goZm9ybWF0dGluZ1Rva2VucykgfHwgW107XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICBwYXJzZWRJbnB1dCA9IChzdHJpbmcubWF0Y2goZ2V0UGFyc2VSZWdleEZvclRva2VuKHRva2VuLCBjb25maWcpKSB8fCBbXSlbMF07XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndG9rZW4nLCB0b2tlbiwgJ3BhcnNlZElucHV0JywgcGFyc2VkSW5wdXQsXG4gICAgICAgICAgICAvLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBza2lwcGVkID0gc3RyaW5nLnN1YnN0cigwLCBzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkpO1xuICAgICAgICAgICAgICAgIGlmIChza2lwcGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChza2lwcGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKHN0cmluZy5pbmRleE9mKHBhcnNlZElucHV0KSArIHBhcnNlZElucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCArPSBwYXJzZWRJbnB1dC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuXG4gICAgICAgICAgICBpZiAoZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmVtcHR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZFRpbWVUb0FycmF5RnJvbVRva2VuKHRva2VuLCBwYXJzZWRJbnB1dCwgY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5fc3RyaWN0ICYmICFwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZFRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmdcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuY2hhcnNMZWZ0T3ZlciA9IHN0cmluZ0xlbmd0aCAtIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGg7XG4gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkSW5wdXQucHVzaChzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2xlYXIgXzEyaCBmbGFnIGlmIGhvdXIgaXMgPD0gMTJcbiAgICAgICAgaWYgKGNvbmZpZy5fYVtIT1VSXSA8PSAxMiAmJlxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9PT0gdHJ1ZSAmJlxuICAgICAgICAgICAgY29uZmlnLl9hW0hPVVJdID4gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuYmlnSG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnBhcnNlZERhdGVQYXJ0cyA9IGNvbmZpZy5fYS5zbGljZSgwKTtcbiAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykubWVyaWRpZW0gPSBjb25maWcuX21lcmlkaWVtO1xuICAgICAgICAvLyBoYW5kbGUgbWVyaWRpZW1cbiAgICAgICAgY29uZmlnLl9hW0hPVVJdID0gbWVyaWRpZW1GaXhXcmFwKGNvbmZpZy5fbG9jYWxlLCBjb25maWcuX2FbSE9VUl0sIGNvbmZpZy5fbWVyaWRpZW0pO1xuXG4gICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICBjaGVja092ZXJmbG93KGNvbmZpZyk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBtZXJpZGllbUZpeFdyYXAgKGxvY2FsZSwgaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgdmFyIGlzUG07XG5cbiAgICAgICAgaWYgKG1lcmlkaWVtID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubWVyaWRpZW1Ib3VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbGUubWVyaWRpZW1Ib3VyKGhvdXIsIG1lcmlkaWVtKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbGUuaXNQTSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFja1xuICAgICAgICAgICAgaXNQbSA9IGxvY2FsZS5pc1BNKG1lcmlkaWVtKTtcbiAgICAgICAgICAgIGlmIChpc1BtICYmIGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG0gJiYgaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qgc3VwcG9zZWQgdG8gaGFwcGVuXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzXG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbVN0cmluZ0FuZEFycmF5KGNvbmZpZykge1xuICAgICAgICB2YXIgdGVtcENvbmZpZyxcbiAgICAgICAgICAgIGJlc3RNb21lbnQsXG5cbiAgICAgICAgICAgIHNjb3JlVG9CZWF0LFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZTtcblxuICAgICAgICBpZiAoY29uZmlnLl9mLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZEZvcm1hdCA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShOYU4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbmZpZy5fZi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY3VycmVudFNjb3JlID0gMDtcbiAgICAgICAgICAgIHRlbXBDb25maWcgPSBjb3B5Q29uZmlnKHt9LCBjb25maWcpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5fdXNlVVRDICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnLl91c2VVVEMgPSBjb25maWcuX3VzZVVUQztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBDb25maWcuX2YgPSBjb25maWcuX2ZbaV07XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KHRlbXBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQodGVtcENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYW55IGlucHV0IHRoYXQgd2FzIG5vdCBwYXJzZWQgYWRkIGEgcGVuYWx0eSBmb3IgdGhhdCBmb3JtYXRcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuY2hhcnNMZWZ0T3ZlcjtcblxuICAgICAgICAgICAgLy9vciB0b2tlbnNcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSArPSBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykudW51c2VkVG9rZW5zLmxlbmd0aCAqIDEwO1xuXG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3ModGVtcENvbmZpZykuc2NvcmUgPSBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgICAgIGlmIChzY29yZVRvQmVhdCA9PSBudWxsIHx8IGN1cnJlbnRTY29yZSA8IHNjb3JlVG9CZWF0KSB7XG4gICAgICAgICAgICAgICAgc2NvcmVUb0JlYXQgPSBjdXJyZW50U2NvcmU7XG4gICAgICAgICAgICAgICAgYmVzdE1vbWVudCA9IHRlbXBDb25maWc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmQoY29uZmlnLCBiZXN0TW9tZW50IHx8IHRlbXBDb25maWcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21PYmplY3QoY29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpID0gbm9ybWFsaXplT2JqZWN0VW5pdHMoY29uZmlnLl9pKTtcbiAgICAgICAgY29uZmlnLl9hID0gbWFwKFtpLnllYXIsIGkubW9udGgsIGkuZGF5IHx8IGkuZGF0ZSwgaS5ob3VyLCBpLm1pbnV0ZSwgaS5zZWNvbmQsIGkubWlsbGlzZWNvbmRdLCBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqICYmIHBhcnNlSW50KG9iaiwgMTApO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVGcm9tQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBNb21lbnQoY2hlY2tPdmVyZmxvdyhwcmVwYXJlQ29uZmlnKGNvbmZpZykpKTtcbiAgICAgICAgaWYgKHJlcy5fbmV4dERheSkge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGlzIHNtYXJ0IGVub3VnaCBhcm91bmQgRFNUXG4gICAgICAgICAgICByZXMuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICByZXMuX25leHREYXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXBhcmVDb25maWcgKGNvbmZpZykge1xuICAgICAgICB2YXIgaW5wdXQgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBmb3JtYXQgPSBjb25maWcuX2Y7XG5cbiAgICAgICAgY29uZmlnLl9sb2NhbGUgPSBjb25maWcuX2xvY2FsZSB8fCBnZXRMb2NhbGUoY29uZmlnLl9sKTtcblxuICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgKGZvcm1hdCA9PT0gdW5kZWZpbmVkICYmIGlucHV0ID09PSAnJykpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKHtudWxsSW5wdXQ6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWcuX2kgPSBpbnB1dCA9IGNvbmZpZy5fbG9jYWxlLnByZXBhcnNlKGlucHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc01vbWVudChpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3coaW5wdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGUoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBpbnB1dDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdChjb25maWcpO1xuICAgICAgICB9ICBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21JbnB1dChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pO1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZShob29rcy5ub3coKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQudmFsdWVPZigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nKGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYSA9IG1hcChpbnB1dC5zbGljZSgwKSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tT2JqZWN0KGNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIG1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaW5wdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soY29uZmlnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUxvY2FsT3JVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBpc1VUQykge1xuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGlmIChsb2NhbGUgPT09IHRydWUgfHwgbG9jYWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc3RyaWN0ID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChpc09iamVjdChpbnB1dCkgJiYgaXNPYmplY3RFbXB0eShpbnB1dCkpIHx8XG4gICAgICAgICAgICAgICAgKGlzQXJyYXkoaW5wdXQpICYmIGlucHV0Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9iamVjdCBjb25zdHJ1Y3Rpb24gbXVzdCBiZSBkb25lIHRoaXMgd2F5LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQyM1xuICAgICAgICBjLl9pc0FNb21lbnRPYmplY3QgPSB0cnVlO1xuICAgICAgICBjLl91c2VVVEMgPSBjLl9pc1VUQyA9IGlzVVRDO1xuICAgICAgICBjLl9sID0gbG9jYWxlO1xuICAgICAgICBjLl9pID0gaW5wdXQ7XG4gICAgICAgIGMuX2YgPSBmb3JtYXQ7XG4gICAgICAgIGMuX3N0cmljdCA9IHN0cmljdDtcblxuICAgICAgICByZXR1cm4gY3JlYXRlRnJvbUNvbmZpZyhjKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbCAoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsT3JVVEMoaW5wdXQsIGZvcm1hdCwgbG9jYWxlLCBzdHJpY3QsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlTWluID0gZGVwcmVjYXRlKFxuICAgICAgICAnbW9tZW50KCkubWluIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvbWluLW1heC8nLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA8IHRoaXMgPyB0aGlzIDogb3RoZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnZhbGlkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgdmFyIHByb3RvdHlwZU1heCA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPiB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIC8vIFBpY2sgYSBtb21lbnQgbSBmcm9tIG1vbWVudHMgc28gdGhhdCBtW2ZuXShvdGhlcikgaXMgdHJ1ZSBmb3IgYWxsXG4gICAgLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLlxuICAgIC8vXG4gICAgLy8gbW9tZW50cyBzaG91bGQgZWl0aGVyIGJlIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzIG9yIGFuIGFycmF5LCB3aG9zZVxuICAgIC8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuXG4gICAgZnVuY3Rpb24gcGlja0J5KGZuLCBtb21lbnRzKSB7XG4gICAgICAgIHZhciByZXMsIGk7XG4gICAgICAgIGlmIChtb21lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0FycmF5KG1vbWVudHNbMF0pKSB7XG4gICAgICAgICAgICBtb21lbnRzID0gbW9tZW50c1swXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMgPSBtb21lbnRzWzBdO1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbW9tZW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRzW2ldLmlzVmFsaWQoKSB8fCBtb21lbnRzW2ldW2ZuXShyZXMpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gbW9tZW50c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSBbXS5zb3J0IGluc3RlYWQ/XG4gICAgZnVuY3Rpb24gbWluICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNCZWZvcmUnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYXggKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICByZXR1cm4gcGlja0J5KCdpc0FmdGVyJywgYXJncyk7XG4gICAgfVxuXG4gICAgdmFyIG5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIERhdGUubm93ID8gRGF0ZS5ub3coKSA6ICsobmV3IERhdGUoKSk7XG4gICAgfTtcblxuICAgIHZhciBvcmRlcmluZyA9IFsneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCddO1xuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvblZhbGlkKG0pIHtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG0pIHtcbiAgICAgICAgICAgIGlmICghKGluZGV4T2YuY2FsbChvcmRlcmluZywga2V5KSAhPT0gLTEgJiYgKG1ba2V5XSA9PSBudWxsIHx8ICFpc05hTihtW2tleV0pKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdW5pdEhhc0RlY2ltYWwgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmRlcmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKG1bb3JkZXJpbmdbaV1dKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuaXRIYXNEZWNpbWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gb25seSBhbGxvdyBub24taW50ZWdlcnMgZm9yIHNtYWxsZXN0IHVuaXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmxvYXQobVtvcmRlcmluZ1tpXV0pICE9PSB0b0ludChtW29yZGVyaW5nW2ldXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pdEhhc0RlY2ltYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlSW52YWxpZCQxKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oTmFOKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBEdXJhdGlvbiAoZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRJbnB1dCA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGR1cmF0aW9uKSxcbiAgICAgICAgICAgIHllYXJzID0gbm9ybWFsaXplZElucHV0LnllYXIgfHwgMCxcbiAgICAgICAgICAgIHF1YXJ0ZXJzID0gbm9ybWFsaXplZElucHV0LnF1YXJ0ZXIgfHwgMCxcbiAgICAgICAgICAgIG1vbnRocyA9IG5vcm1hbGl6ZWRJbnB1dC5tb250aCB8fCAwLFxuICAgICAgICAgICAgd2Vla3MgPSBub3JtYWxpemVkSW5wdXQud2VlayB8fCBub3JtYWxpemVkSW5wdXQuaXNvV2VlayB8fCAwLFxuICAgICAgICAgICAgZGF5cyA9IG5vcm1hbGl6ZWRJbnB1dC5kYXkgfHwgMCxcbiAgICAgICAgICAgIGhvdXJzID0gbm9ybWFsaXplZElucHV0LmhvdXIgfHwgMCxcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBub3JtYWxpemVkSW5wdXQubWludXRlIHx8IDAsXG4gICAgICAgICAgICBzZWNvbmRzID0gbm9ybWFsaXplZElucHV0LnNlY29uZCB8fCAwLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gbm9ybWFsaXplZElucHV0Lm1pbGxpc2Vjb25kIHx8IDA7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzRHVyYXRpb25WYWxpZChub3JtYWxpemVkSW5wdXQpO1xuXG4gICAgICAgIC8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9ICttaWxsaXNlY29uZHMgK1xuICAgICAgICAgICAgc2Vjb25kcyAqIDFlMyArIC8vIDEwMDBcbiAgICAgICAgICAgIG1pbnV0ZXMgKiA2ZTQgKyAvLyAxMDAwICogNjBcbiAgICAgICAgICAgIGhvdXJzICogMTAwMCAqIDYwICogNjA7IC8vdXNpbmcgMTAwMCAqIDYwICogNjAgaW5zdGVhZCBvZiAzNmU1IHRvIGF2b2lkIGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIGVycm9ycyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjk3OFxuICAgICAgICAvLyBCZWNhdXNlIG9mIGRhdGVBZGRSZW1vdmUgdHJlYXRzIDI0IGhvdXJzIGFzIGRpZmZlcmVudCBmcm9tIGFcbiAgICAgICAgLy8gZGF5IHdoZW4gd29ya2luZyBhcm91bmQgRFNULCB3ZSBuZWVkIHRvIHN0b3JlIHRoZW0gc2VwYXJhdGVseVxuICAgICAgICB0aGlzLl9kYXlzID0gK2RheXMgK1xuICAgICAgICAgICAgd2Vla3MgKiA3O1xuICAgICAgICAvLyBJdCBpcyBpbXBvc3NpYmxlIHRvIHRyYW5zbGF0ZSBtb250aHMgaW50byBkYXlzIHdpdGhvdXQga25vd2luZ1xuICAgICAgICAvLyB3aGljaCBtb250aHMgeW91IGFyZSBhcmUgdGFsa2luZyBhYm91dCwgc28gd2UgaGF2ZSB0byBzdG9yZVxuICAgICAgICAvLyBpdCBzZXBhcmF0ZWx5LlxuICAgICAgICB0aGlzLl9tb250aHMgPSArbW9udGhzICtcbiAgICAgICAgICAgIHF1YXJ0ZXJzICogMyArXG4gICAgICAgICAgICB5ZWFycyAqIDEyO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcblxuICAgICAgICB0aGlzLl9sb2NhbGUgPSBnZXRMb2NhbGUoKTtcblxuICAgICAgICB0aGlzLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0R1cmF0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic1JvdW5kIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKC0xICogbnVtYmVyKSAqIC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIG9mZnNldCAodG9rZW4sIHNlcGFyYXRvcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMudXRjT2Zmc2V0KCk7XG4gICAgICAgICAgICB2YXIgc2lnbiA9ICcrJztcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDtcbiAgICAgICAgICAgICAgICBzaWduID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyB6ZXJvRmlsbCh+fihvZmZzZXQgLyA2MCksIDIpICsgc2VwYXJhdG9yICsgemVyb0ZpbGwofn4ob2Zmc2V0KSAlIDYwLCAyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb2Zmc2V0KCdaJywgJzonKTtcbiAgICBvZmZzZXQoJ1paJywgJycpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWicsICBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRSZWdleFRva2VuKCdaWicsIG1hdGNoU2hvcnRPZmZzZXQpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX3VzZVVUQyA9IHRydWU7XG4gICAgICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyB0aW1lem9uZSBjaHVua2VyXG4gICAgLy8gJysxMDowMCcgPiBbJzEwJywgICcwMCddXG4gICAgLy8gJy0xNTMwJyAgPiBbJy0xNScsICczMCddXG4gICAgdmFyIGNodW5rT2Zmc2V0ID0gLyhbXFwrXFwtXXxcXGRcXGQpL2dpO1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaGVyLCBzdHJpbmcpIHtcbiAgICAgICAgdmFyIG1hdGNoZXMgPSAoc3RyaW5nIHx8ICcnKS5tYXRjaChtYXRjaGVyKTtcblxuICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2h1bmsgICA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXSB8fCBbXTtcbiAgICAgICAgdmFyIHBhcnRzICAgPSAoY2h1bmsgKyAnJykubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsIDAsIDBdO1xuICAgICAgICB2YXIgbWludXRlcyA9ICsocGFydHNbMV0gKiA2MCkgKyB0b0ludChwYXJ0c1syXSk7XG5cbiAgICAgICAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgP1xuICAgICAgICAgIDAgOlxuICAgICAgICAgIHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbiAgICBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIG1vZGVsKSB7XG4gICAgICAgIHZhciByZXMsIGRpZmY7XG4gICAgICAgIGlmIChtb2RlbC5faXNVVEMpIHtcbiAgICAgICAgICAgIHJlcyA9IG1vZGVsLmNsb25lKCk7XG4gICAgICAgICAgICBkaWZmID0gKGlzTW9tZW50KGlucHV0KSB8fCBpc0RhdGUoaW5wdXQpID8gaW5wdXQudmFsdWVPZigpIDogY3JlYXRlTG9jYWwoaW5wdXQpLnZhbHVlT2YoKSkgLSByZXMudmFsdWVPZigpO1xuICAgICAgICAgICAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLlxuICAgICAgICAgICAgcmVzLl9kLnNldFRpbWUocmVzLl9kLnZhbHVlT2YoKSArIGRpZmYpO1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHJlcywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCkubG9jYWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERhdGVPZmZzZXQgKG0pIHtcbiAgICAgICAgLy8gT24gRmlyZWZveC4yNCBEYXRlI2dldFRpbWV6b25lT2Zmc2V0IHJldHVybnMgYSBmbG9hdGluZyBwb2ludC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvcHVsbC8xODcxXG4gICAgICAgIHJldHVybiAtTWF0aC5yb3VuZChtLl9kLmdldFRpbWV6b25lT2Zmc2V0KCkgLyAxNSkgKiAxNTtcbiAgICB9XG5cbiAgICAvLyBIT09LU1xuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG1vbWVudCBpcyBtdXRhdGVkLlxuICAgIC8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuICAgIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4gICAgLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT5cbiAgICAvLyA1OjMxOjI2ICswMjAwIEl0IGlzIHBvc3NpYmxlIHRoYXQgNTozMToyNiBkb2Vzbid0IGV4aXN0IHdpdGggb2Zmc2V0XG4gICAgLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuICAgIC8vXG4gICAgLy8gS2VlcGluZyB0aGUgdGltZSBhY3R1YWxseSBhZGRzL3N1YnRyYWN0cyAob25lIGhvdXIpXG4gICAgLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4gICAgLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpblxuICAgIC8vIF9jaGFuZ2VJblByb2dyZXNzID09IHRydWUgY2FzZSwgdGhlbiB3ZSBoYXZlIHRvIGFkanVzdCwgYmVjYXVzZVxuICAgIC8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG4gICAgZnVuY3Rpb24gZ2V0U2V0T2Zmc2V0IChpbnB1dCwga2VlcExvY2FsVGltZSwga2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX29mZnNldCB8fCAwLFxuICAgICAgICAgICAgbG9jYWxBZGp1c3Q7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE1hdGguYWJzKGlucHV0KSA8IDE2ICYmICFrZWVwTWludXRlcykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgKiA2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIGxvY2FsQWRqdXN0ID0gZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29mZnNldCA9IGlucHV0O1xuICAgICAgICAgICAgdGhpcy5faXNVVEMgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKGxvY2FsQWRqdXN0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZChsb2NhbEFkanVzdCwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgIT09IGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFrZWVwTG9jYWxUaW1lIHx8IHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkU3VidHJhY3QodGhpcywgY3JlYXRlRHVyYXRpb24oaW5wdXQgLSBvZmZzZXQsICdtJyksIDEsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gb2Zmc2V0IDogZ2V0RGF0ZU9mZnNldCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFpvbmUgKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlucHV0ID0gLWlucHV0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldChpbnB1dCwga2VlcExvY2FsVGltZSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC10aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0T2Zmc2V0VG9VVEMgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsIGtlZXBMb2NhbFRpbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvTG9jYWwgKGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdChnZXREYXRlT2Zmc2V0KHRoaXMpLCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0ICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3R6bSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0aGlzLl90em0sIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5faSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhciB0Wm9uZSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIHRoaXMuX2kpO1xuICAgICAgICAgICAgaWYgKHRab25lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCh0Wm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBbGlnbmVkSG91ck9mZnNldCAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0ID0gaW5wdXQgPyBjcmVhdGVMb2NhbChpbnB1dCkudXRjT2Zmc2V0KCkgOiAwO1xuXG4gICAgICAgIHJldHVybiAodGhpcy51dGNPZmZzZXQoKSAtIGlucHV0KSAlIDYwID09PSAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGF5bGlnaHRTYXZpbmdUaW1lICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCkgfHxcbiAgICAgICAgICAgIHRoaXMudXRjT2Zmc2V0KCkgPiB0aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQgKCkge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX2lzRFNUU2hpZnRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYyA9IHt9O1xuXG4gICAgICAgIGNvcHlDb25maWcoYywgdGhpcyk7XG4gICAgICAgIGMgPSBwcmVwYXJlQ29uZmlnKGMpO1xuXG4gICAgICAgIGlmIChjLl9hKSB7XG4gICAgICAgICAgICB2YXIgb3RoZXIgPSBjLl9pc1VUQyA/IGNyZWF0ZVVUQyhjLl9hKSA6IGNyZWF0ZUxvY2FsKGMuX2EpO1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICBjb21wYXJlQXJyYXlzKGMuX2EsIG90aGVyLnRvQXJyYXkoKSkgPiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTG9jYWwgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyAhdGhpcy5faXNVVEMgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1V0Y09mZnNldCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGMgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyAmJiB0aGlzLl9vZmZzZXQgPT09IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBBU1AuTkVUIGpzb24gZGF0ZSBmb3JtYXQgcmVnZXhcbiAgICB2YXIgYXNwTmV0UmVnZXggPSAvXihcXC18XFwrKT8oPzooXFxkKilbLiBdKT8oXFxkKylcXDooXFxkKykoPzpcXDooXFxkKykoXFwuXFxkKik/KT8kLztcblxuICAgIC8vIGZyb20gaHR0cDovL2RvY3MuY2xvc3VyZS1saWJyYXJ5Lmdvb2dsZWNvZGUuY29tL2dpdC9jbG9zdXJlX2dvb2dfZGF0ZV9kYXRlLmpzLnNvdXJjZS5odG1sXG4gICAgLy8gc29tZXdoYXQgbW9yZSBpbiBsaW5lIHdpdGggNC40LjMuMiAyMDA0IHNwZWMsIGJ1dCBhbGxvd3MgZGVjaW1hbCBhbnl3aGVyZVxuICAgIC8vIGFuZCBmdXJ0aGVyIG1vZGlmaWVkIHRvIGFsbG93IGZvciBzdHJpbmdzIGNvbnRhaW5pbmcgYm90aCB3ZWVrIGFuZCBkYXlcbiAgICB2YXIgaXNvUmVnZXggPSAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRHVyYXRpb24gKGlucHV0LCBrZXkpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gaW5wdXQsXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBhZ2FpbnN0IHJlZ2V4cCBpcyBleHBlbnNpdmUsIGRvIGl0IG9uIGRlbWFuZFxuICAgICAgICAgICAgbWF0Y2ggPSBudWxsLFxuICAgICAgICAgICAgc2lnbixcbiAgICAgICAgICAgIHJldCxcbiAgICAgICAgICAgIGRpZmZSZXM7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBtcyA6IGlucHV0Ll9taWxsaXNlY29uZHMsXG4gICAgICAgICAgICAgICAgZCAgOiBpbnB1dC5fZGF5cyxcbiAgICAgICAgICAgICAgICBNICA6IGlucHV0Ll9tb250aHNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uW2tleV0gPSBpbnB1dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb24ubWlsbGlzZWNvbmRzID0gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBhc3BOZXRSZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5ICA6IDAsXG4gICAgICAgICAgICAgICAgZCAgOiB0b0ludChtYXRjaFtEQVRFXSkgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIGggIDogdG9JbnQobWF0Y2hbSE9VUl0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtICA6IHRvSW50KG1hdGNoW01JTlVURV0pICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgcyAgOiB0b0ludChtYXRjaFtTRUNPTkRdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIG1zIDogdG9JbnQoYWJzUm91bmQobWF0Y2hbTUlMTElTRUNPTkRdICogMTAwMCkpICogc2lnbiAvLyB0aGUgbWlsbGlzZWNvbmQgZGVjaW1hbCBwb2ludCBpcyBpbmNsdWRlZCBpbiB0aGUgbWF0Y2hcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoISEobWF0Y2ggPSBpc29SZWdleC5leGVjKGlucHV0KSkpIHtcbiAgICAgICAgICAgIHNpZ24gPSAobWF0Y2hbMV0gPT09ICctJykgPyAtMSA6IDE7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB5IDogcGFyc2VJc28obWF0Y2hbMl0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIE0gOiBwYXJzZUlzbyhtYXRjaFszXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgdyA6IHBhcnNlSXNvKG1hdGNoWzRdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBkIDogcGFyc2VJc28obWF0Y2hbNV0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGggOiBwYXJzZUlzbyhtYXRjaFs2XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgbSA6IHBhcnNlSXNvKG1hdGNoWzddLCBzaWduKSxcbiAgICAgICAgICAgICAgICBzIDogcGFyc2VJc28obWF0Y2hbOF0sIHNpZ24pXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09IG51bGwpIHsvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbiA9PT0gJ29iamVjdCcgJiYgKCdmcm9tJyBpbiBkdXJhdGlvbiB8fCAndG8nIGluIGR1cmF0aW9uKSkge1xuICAgICAgICAgICAgZGlmZlJlcyA9IG1vbWVudHNEaWZmZXJlbmNlKGNyZWF0ZUxvY2FsKGR1cmF0aW9uLmZyb20pLCBjcmVhdGVMb2NhbChkdXJhdGlvbi50bykpO1xuXG4gICAgICAgICAgICBkdXJhdGlvbiA9IHt9O1xuICAgICAgICAgICAgZHVyYXRpb24ubXMgPSBkaWZmUmVzLm1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIGR1cmF0aW9uLk0gPSBkaWZmUmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldCA9IG5ldyBEdXJhdGlvbihkdXJhdGlvbik7XG5cbiAgICAgICAgaWYgKGlzRHVyYXRpb24oaW5wdXQpICYmIGhhc093blByb3AoaW5wdXQsICdfbG9jYWxlJykpIHtcbiAgICAgICAgICAgIHJldC5fbG9jYWxlID0gaW5wdXQuX2xvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgY3JlYXRlRHVyYXRpb24uZm4gPSBEdXJhdGlvbi5wcm90b3R5cGU7XG4gICAgY3JlYXRlRHVyYXRpb24uaW52YWxpZCA9IGNyZWF0ZUludmFsaWQkMTtcblxuICAgIGZ1bmN0aW9uIHBhcnNlSXNvIChpbnAsIHNpZ24pIHtcbiAgICAgICAgLy8gV2UnZCBub3JtYWxseSB1c2Ugfn5pbnAgZm9yIHRoaXMsIGJ1dCB1bmZvcnR1bmF0ZWx5IGl0IGFsc29cbiAgICAgICAgLy8gY29udmVydHMgZmxvYXRzIHRvIGludHMuXG4gICAgICAgIC8vIGlucCBtYXkgYmUgdW5kZWZpbmVkLCBzbyBjYXJlZnVsIGNhbGxpbmcgcmVwbGFjZSBvbiBpdC5cbiAgICAgICAgdmFyIHJlcyA9IGlucCAmJiBwYXJzZUZsb2F0KGlucC5yZXBsYWNlKCcsJywgJy4nKSk7XG4gICAgICAgIC8vIGFwcGx5IHNpZ24gd2hpbGUgd2UncmUgYXQgaXRcbiAgICAgICAgcmV0dXJuIChpc05hTihyZXMpID8gMCA6IHJlcykgKiBzaWduO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlcyA9IHt9O1xuXG4gICAgICAgIHJlcy5tb250aHMgPSBvdGhlci5tb250aCgpIC0gYmFzZS5tb250aCgpICtcbiAgICAgICAgICAgIChvdGhlci55ZWFyKCkgLSBiYXNlLnllYXIoKSkgKiAxMjtcbiAgICAgICAgaWYgKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKS5pc0FmdGVyKG90aGVyKSkge1xuICAgICAgICAgICAgLS1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9ICtvdGhlciAtICsoYmFzZS5jbG9uZSgpLmFkZChyZXMubW9udGhzLCAnTScpKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIGlmICghKGJhc2UuaXNWYWxpZCgpICYmIG90aGVyLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7bWlsbGlzZWNvbmRzOiAwLCBtb250aHM6IDB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3RoZXIgPSBjbG9uZVdpdGhPZmZzZXQob3RoZXIsIGJhc2UpO1xuICAgICAgICBpZiAoYmFzZS5pc0JlZm9yZShvdGhlcikpIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2UoYmFzZSwgb3RoZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShvdGhlciwgYmFzZSk7XG4gICAgICAgICAgICByZXMubWlsbGlzZWNvbmRzID0gLXJlcy5taWxsaXNlY29uZHM7XG4gICAgICAgICAgICByZXMubW9udGhzID0gLXJlcy5tb250aHM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWRcbiAgICBmdW5jdGlvbiBjcmVhdGVBZGRlcihkaXJlY3Rpb24sIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWwsIHBlcmlvZCkge1xuICAgICAgICAgICAgdmFyIGR1ciwgdG1wO1xuICAgICAgICAgICAgLy9pbnZlcnQgdGhlIGFyZ3VtZW50cywgYnV0IGNvbXBsYWluIGFib3V0IGl0XG4gICAgICAgICAgICBpZiAocGVyaW9kICE9PSBudWxsICYmICFpc05hTigrcGVyaW9kKSkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZShuYW1lLCAnbW9tZW50KCkuJyArIG5hbWUgICsgJyhwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4nICsgbmFtZSArICcobnVtYmVyLCBwZXJpb2QpLiAnICtcbiAgICAgICAgICAgICAgICAnU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHRtcCA9IHZhbDsgdmFsID0gcGVyaW9kOyBwZXJpb2QgPSB0bXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbCA9IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gK3ZhbCA6IHZhbDtcbiAgICAgICAgICAgIGR1ciA9IGNyZWF0ZUR1cmF0aW9uKHZhbCwgcGVyaW9kKTtcbiAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGR1ciwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFN1YnRyYWN0IChtb20sIGR1cmF0aW9uLCBpc0FkZGluZywgdXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgZGF5cyA9IGFic1JvdW5kKGR1cmF0aW9uLl9kYXlzKSxcbiAgICAgICAgICAgIG1vbnRocyA9IGFic1JvdW5kKGR1cmF0aW9uLl9tb250aHMpO1xuXG4gICAgICAgIGlmICghbW9tLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgLy8gTm8gb3BcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZU9mZnNldCA9IHVwZGF0ZU9mZnNldCA9PSBudWxsID8gdHJ1ZSA6IHVwZGF0ZU9mZnNldDtcblxuICAgICAgICBpZiAobW9udGhzKSB7XG4gICAgICAgICAgICBzZXRNb250aChtb20sIGdldChtb20sICdNb250aCcpICsgbW9udGhzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXlzKSB7XG4gICAgICAgICAgICBzZXQkMShtb20sICdEYXRlJywgZ2V0KG1vbSwgJ0RhdGUnKSArIGRheXMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICAgICAgbW9tLl9kLnNldFRpbWUobW9tLl9kLnZhbHVlT2YoKSArIG1pbGxpc2Vjb25kcyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXBkYXRlT2Zmc2V0KSB7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQobW9tLCBkYXlzIHx8IG1vbnRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYWRkICAgICAgPSBjcmVhdGVBZGRlcigxLCAnYWRkJyk7XG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlQWRkZXIoLTEsICdzdWJ0cmFjdCcpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q2FsZW5kYXJGb3JtYXQobXlNb21lbnQsIG5vdykge1xuICAgICAgICB2YXIgZGlmZiA9IG15TW9tZW50LmRpZmYobm93LCAnZGF5cycsIHRydWUpO1xuICAgICAgICByZXR1cm4gZGlmZiA8IC02ID8gJ3NhbWVFbHNlJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IC0xID8gJ2xhc3RXZWVrJyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDAgPyAnbGFzdERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAxID8gJ3NhbWVEYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMiA/ICduZXh0RGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDcgPyAnbmV4dFdlZWsnIDogJ3NhbWVFbHNlJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciQxICh0aW1lLCBmb3JtYXRzKSB7XG4gICAgICAgIC8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuXG4gICAgICAgIC8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90LlxuICAgICAgICB2YXIgbm93ID0gdGltZSB8fCBjcmVhdGVMb2NhbCgpLFxuICAgICAgICAgICAgc29kID0gY2xvbmVXaXRoT2Zmc2V0KG5vdywgdGhpcykuc3RhcnRPZignZGF5JyksXG4gICAgICAgICAgICBmb3JtYXQgPSBob29rcy5jYWxlbmRhckZvcm1hdCh0aGlzLCBzb2QpIHx8ICdzYW1lRWxzZSc7XG5cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdHMgJiYgKGlzRnVuY3Rpb24oZm9ybWF0c1tmb3JtYXRdKSA/IGZvcm1hdHNbZm9ybWF0XS5jYWxsKHRoaXMsIG5vdykgOiBmb3JtYXRzW2Zvcm1hdF0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChvdXRwdXQgfHwgdGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIoZm9ybWF0LCB0aGlzLCBjcmVhdGVMb2NhbChub3cpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1vbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KTtcbiAgICAgICAgaWYgKCEodGhpcy5pc1ZhbGlkKCkgJiYgbG9jYWxJbnB1dC5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cykgfHwgJ21pbGxpc2Vjb25kJztcbiAgICAgICAgaWYgKHVuaXRzID09PSAnbWlsbGlzZWNvbmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9mKCkgPiBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbElucHV0LnZhbHVlT2YoKSA8IHRoaXMuY2xvbmUoKS5zdGFydE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCkgPCBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQmV0d2VlbiAoZnJvbSwgdG8sIHVuaXRzLCBpbmNsdXNpdml0eSkge1xuICAgICAgICB2YXIgbG9jYWxGcm9tID0gaXNNb21lbnQoZnJvbSkgPyBmcm9tIDogY3JlYXRlTG9jYWwoZnJvbSksXG4gICAgICAgICAgICBsb2NhbFRvID0gaXNNb21lbnQodG8pID8gdG8gOiBjcmVhdGVMb2NhbCh0byk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsRnJvbS5pc1ZhbGlkKCkgJiYgbG9jYWxUby5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIobG9jYWxGcm9tLCB1bml0cykgOiAhdGhpcy5pc0JlZm9yZShsb2NhbEZyb20sIHVuaXRzKSkgJiZcbiAgICAgICAgICAgIChpbmNsdXNpdml0eVsxXSA9PT0gJyknID8gdGhpcy5pc0JlZm9yZShsb2NhbFRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKGxvY2FsVG8sIHVuaXRzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNTYW1lIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgdmFyIGxvY2FsSW5wdXQgPSBpc01vbWVudChpbnB1dCkgPyBpbnB1dCA6IGNyZWF0ZUxvY2FsKGlucHV0KSxcbiAgICAgICAgICAgIGlucHV0TXM7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpIHx8ICdtaWxsaXNlY29uZCc7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID09PSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0TXMgPSBsb2NhbElucHV0LnZhbHVlT2YoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSB0aGlzLmNsb25lKCkuZW5kT2YodW5pdHMpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZU9yQWZ0ZXIgKGlucHV0LCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWUoaW5wdXQsIHVuaXRzKSB8fCB0aGlzLmlzQWZ0ZXIoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsIHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkaWZmIChpbnB1dCwgdW5pdHMsIGFzRmxvYXQpIHtcbiAgICAgICAgdmFyIHRoYXQsXG4gICAgICAgICAgICB6b25lRGVsdGEsXG4gICAgICAgICAgICBvdXRwdXQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoYXQgPSBjbG9uZVdpdGhPZmZzZXQoaW5wdXQsIHRoaXMpO1xuXG4gICAgICAgIGlmICghdGhhdC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICB6b25lRGVsdGEgPSAodGhhdC51dGNPZmZzZXQoKSAtIHRoaXMudXRjT2Zmc2V0KCkpICogNmU0O1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAxMjsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpIC8gMzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gMWUzOyBicmVhazsgLy8gMTAwMFxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDZlNDsgYnJlYWs7IC8vIDEwMDAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnaG91cic6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAzNmU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjBcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA4NjRlNTsgYnJlYWs7IC8vIDEwMDAgKiA2MCAqIDYwICogMjQsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQgLSB6b25lRGVsdGEpIC8gNjA0OGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCAqIDcsIG5lZ2F0ZSBkc3RcbiAgICAgICAgICAgIGRlZmF1bHQ6IG91dHB1dCA9IHRoaXMgLSB0aGF0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzRmxvYXQgPyBvdXRwdXQgOiBhYnNGbG9vcihvdXRwdXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoRGlmZiAoYSwgYikge1xuICAgICAgICAvLyBkaWZmZXJlbmNlIGluIG1vbnRoc1xuICAgICAgICB2YXIgd2hvbGVNb250aERpZmYgPSAoKGIueWVhcigpIC0gYS55ZWFyKCkpICogMTIpICsgKGIubW9udGgoKSAtIGEubW9udGgoKSksXG4gICAgICAgICAgICAvLyBiIGlzIGluIChhbmNob3IgLSAxIG1vbnRoLCBhbmNob3IgKyAxIG1vbnRoKVxuICAgICAgICAgICAgYW5jaG9yID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiwgJ21vbnRocycpLFxuICAgICAgICAgICAgYW5jaG9yMiwgYWRqdXN0O1xuXG4gICAgICAgIGlmIChiIC0gYW5jaG9yIDwgMCkge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgLSAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvciAtIGFuY2hvcjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5jaG9yMiA9IGEuY2xvbmUoKS5hZGQod2hvbGVNb250aERpZmYgKyAxLCAnbW9udGhzJyk7XG4gICAgICAgICAgICAvLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aFxuICAgICAgICAgICAgYWRqdXN0ID0gKGIgLSBhbmNob3IpIC8gKGFuY2hvcjIgLSBhbmNob3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jaGVjayBmb3IgbmVnYXRpdmUgemVybywgcmV0dXJuIHplcm8gaWYgbmVnYXRpdmUgemVyb1xuICAgICAgICByZXR1cm4gLSh3aG9sZU1vbnRoRGlmZiArIGFkanVzdCkgfHwgMDtcbiAgICB9XG5cbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcbiAgICBob29rcy5kZWZhdWx0Rm9ybWF0VXRjID0gJ1lZWVktTU0tRERUSEg6bW06c3NbWl0nO1xuXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmcoa2VlcE9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdXRjID0ga2VlcE9mZnNldCAhPT0gdHJ1ZTtcbiAgICAgICAgdmFyIG0gPSB1dGMgPyB0aGlzLmNsb25lKCkudXRjKCkgOiB0aGlzO1xuICAgICAgICBpZiAobS55ZWFyKCkgPCAwIHx8IG0ueWVhcigpID4gOTk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE1vbWVudChtLCB1dGMgPyAnWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpKSB7XG4gICAgICAgICAgICAvLyBuYXRpdmUgaW1wbGVtZW50YXRpb24gaXMgfjUweCBmYXN0ZXIsIHVzZSBpdCB3aGVuIHdlIGNhblxuICAgICAgICAgICAgaWYgKHV0Yykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSArIHRoaXMudXRjT2Zmc2V0KCkgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsIGZvcm1hdE1vbWVudChtLCAnWicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdJyA6ICdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGh1bWFuIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9tZW50IHRoYXQgY2FuXG4gICAgICogYWxzbyBiZSBldmFsdWF0ZWQgdG8gZ2V0IGEgbmV3IG1vbWVudCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAqXG4gICAgICogQGxpbmsgaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvbGF0ZXN0L2RvY3MvYXBpL3V0aWwuaHRtbCN1dGlsX2N1c3RvbV9pbnNwZWN0X2Z1bmN0aW9uX29uX29iamVjdHNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtb21lbnQuaW52YWxpZCgvKiAnICsgdGhpcy5faSArICcgKi8pJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnVuYyA9ICdtb21lbnQnO1xuICAgICAgICB2YXIgem9uZSA9ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2NhbCgpKSB7XG4gICAgICAgICAgICBmdW5jID0gdGhpcy51dGNPZmZzZXQoKSA9PT0gMCA/ICdtb21lbnQudXRjJyA6ICdtb21lbnQucGFyc2Vab25lJztcbiAgICAgICAgICAgIHpvbmUgPSAnWic7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZWZpeCA9ICdbJyArIGZ1bmMgKyAnKFwiXSc7XG4gICAgICAgIHZhciB5ZWFyID0gKDAgPD0gdGhpcy55ZWFyKCkgJiYgdGhpcy55ZWFyKCkgPD0gOTk5OSkgPyAnWVlZWScgOiAnWVlZWVlZJztcbiAgICAgICAgdmFyIGRhdGV0aW1lID0gJy1NTS1ERFtUXUhIOm1tOnNzLlNTUyc7XG4gICAgICAgIHZhciBzdWZmaXggPSB6b25lICsgJ1tcIildJztcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQocHJlZml4ICsgeWVhciArIGRhdGV0aW1lICsgc3VmZml4KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQgKGlucHV0U3RyaW5nKSB7XG4gICAgICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nID0gdGhpcy5pc1V0YygpID8gaG9va3MuZGVmYXVsdEZvcm1hdFV0YyA6IGhvb2tzLmRlZmF1bHRGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG91dHB1dCA9IGZvcm1hdE1vbWVudCh0aGlzLCBpbnB1dFN0cmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbSAodGltZSwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgICAgICAgICAgICAoKGlzTW9tZW50KHRpbWUpICYmIHRpbWUuaXNWYWxpZCgpKSB8fFxuICAgICAgICAgICAgICAgICBjcmVhdGVMb2NhbCh0aW1lKS5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24oe3RvOiB0aGlzLCBmcm9tOiB0aW1lfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCF3aXRob3V0U3VmZml4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZnJvbU5vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7ZnJvbTogdGhpcywgdG86IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vdyAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50byhjcmVhdGVMb2NhbCgpLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBwYXNzZWQgYSBsb2NhbGUga2V5LCBpdCB3aWxsIHNldCB0aGUgbG9jYWxlIGZvciB0aGlzXG4gICAgLy8gaW5zdGFuY2UuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvblxuICAgIC8vIHZhcmlhYmxlcyBmb3IgdGhpcyBpbnN0YW5jZS5cbiAgICBmdW5jdGlvbiBsb2NhbGUgKGtleSkge1xuICAgICAgICB2YXIgbmV3TG9jYWxlRGF0YTtcblxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMb2NhbGVEYXRhID0gZ2V0TG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlRGF0YSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxlID0gbmV3TG9jYWxlRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmcgPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLicsXG4gICAgICAgIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlRGF0YSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgdmFyIE1TX1BFUl9TRUNPTkQgPSAxMDAwO1xuICAgIHZhciBNU19QRVJfTUlOVVRFID0gNjAgKiBNU19QRVJfU0VDT05EO1xuICAgIHZhciBNU19QRVJfSE9VUiA9IDYwICogTVNfUEVSX01JTlVURTtcbiAgICB2YXIgTVNfUEVSXzQwMF9ZRUFSUyA9ICgzNjUgKiA0MDAgKyA5NykgKiAyNCAqIE1TX1BFUl9IT1VSO1xuXG4gICAgLy8gYWN0dWFsIG1vZHVsbyAtIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyAoZm9yIGRhdGVzIGJlZm9yZSAxOTcwKTpcbiAgICBmdW5jdGlvbiBtb2QkMShkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgICByZXR1cm4gKGRpdmlkZW5kICUgZGl2aXNvciArIGRpdmlzb3IpICUgZGl2aXNvcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbFN0YXJ0T2ZEYXRlKHksIG0sIGQpIHtcbiAgICAgICAgLy8gdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5XG4gICAgICAgIGlmICh5IDwgMTAwICYmIHkgPj0gMCkge1xuICAgICAgICAgICAgLy8gcHJlc2VydmUgbGVhcCB5ZWFycyB1c2luZyBhIGZ1bGwgNDAwIHllYXIgY3ljbGUsIHRoZW4gcmVzZXRcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ICsgNDAwLCBtLCBkKSAtIE1TX1BFUl80MDBfWUVBUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSwgZCkudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXRjU3RhcnRPZkRhdGUoeSwgbSwgZCkge1xuICAgICAgICAvLyBEYXRlLlVUQyByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwKSB7XG4gICAgICAgICAgICAvLyBwcmVzZXJ2ZSBsZWFwIHllYXJzIHVzaW5nIGEgZnVsbCA0MDAgeWVhciBjeWNsZSwgdGhlbiByZXNldFxuICAgICAgICAgICAgcmV0dXJuIERhdGUuVVRDKHkgKyA0MDAsIG0sIGQpIC0gTVNfUEVSXzQwMF9ZRUFSUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlLlVUQyh5LCBtLCBkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0T2YgKHVuaXRzKSB7XG4gICAgICAgIHZhciB0aW1lO1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcgfHwgIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdGFydE9mRGF0ZSA9IHRoaXMuX2lzVVRDID8gdXRjU3RhcnRPZkRhdGUgOiBsb2NhbFN0YXJ0T2ZEYXRlO1xuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSAtIHRoaXMubW9udGgoKSAlIDMsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtIHRoaXMud2Vla2RheSgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksIE1TX1BFUl9IT1VSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHRoaXMuX2QudmFsdWVPZigpO1xuICAgICAgICAgICAgICAgIHRpbWUgLT0gbW9kJDEodGltZSwgTVNfUEVSX01JTlVURSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lIC09IG1vZCQxKHRpbWUsIE1TX1BFUl9TRUNPTkQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZC5zZXRUaW1lKHRpbWUpO1xuICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB2YXIgdGltZTtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gdW5kZWZpbmVkIHx8IHVuaXRzID09PSAnbWlsbGlzZWNvbmQnIHx8ICF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RhcnRPZkRhdGUgPSB0aGlzLl9pc1VUQyA/IHV0Y1N0YXJ0T2ZEYXRlIDogbG9jYWxTdGFydE9mRGF0ZTtcblxuICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCkgKyAxLCAwLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSAtIHRoaXMubW9udGgoKSAlIDMgKyAzLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGltZSA9IHN0YXJ0T2ZEYXRlKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkgKyAxLCAxKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgICAgICAgICB0aW1lID0gc3RhcnRPZkRhdGUodGhpcy55ZWFyKCksIHRoaXMubW9udGgoKSwgdGhpcy5kYXRlKCkgLSB0aGlzLndlZWtkYXkoKSArIDcpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2lzb1dlZWsnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSAtICh0aGlzLmlzb1dlZWtkYXkoKSAtIDEpICsgNykgLSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSBzdGFydE9mRGF0ZSh0aGlzLnllYXIoKSwgdGhpcy5tb250aCgpLCB0aGlzLmRhdGUoKSArIDEpIC0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9IT1VSIC0gbW9kJDEodGltZSArICh0aGlzLl9pc1VUQyA/IDAgOiB0aGlzLnV0Y09mZnNldCgpICogTVNfUEVSX01JTlVURSksIE1TX1BFUl9IT1VSKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9NSU5VVEUgLSBtb2QkMSh0aW1lLCBNU19QRVJfTUlOVVRFKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9kLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICB0aW1lICs9IE1TX1BFUl9TRUNPTkQgLSBtb2QkMSh0aW1lLCBNU19QRVJfU0VDT05EKSAtIDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kLnNldFRpbWUodGltZSk7XG4gICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsdWVPZiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kLnZhbHVlT2YoKSAtICgodGhpcy5fb2Zmc2V0IHx8IDApICogNjAwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaXggKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKSAvIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRGF0ZSAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9BcnJheSAoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFttLnllYXIoKSwgbS5tb250aCgpLCBtLmRhdGUoKSwgbS5ob3VyKCksIG0ubWludXRlKCksIG0uc2Vjb25kKCksIG0ubWlsbGlzZWNvbmQoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9PYmplY3QgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyczogbS55ZWFyKCksXG4gICAgICAgICAgICBtb250aHM6IG0ubW9udGgoKSxcbiAgICAgICAgICAgIGRhdGU6IG0uZGF0ZSgpLFxuICAgICAgICAgICAgaG91cnM6IG0uaG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IG0ubWludXRlcygpLFxuICAgICAgICAgICAgc2Vjb25kczogbS5zZWNvbmRzKCksXG4gICAgICAgICAgICBtaWxsaXNlY29uZHM6IG0ubWlsbGlzZWNvbmRzKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgICAgICAvLyBuZXcgRGF0ZShOYU4pLnRvSlNPTigpID09PSBudWxsXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMudG9JU09TdHJpbmcoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZCQyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2luZ0ZsYWdzICgpIHtcbiAgICAgICAgcmV0dXJuIGV4dGVuZCh7fSwgZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZhbGlkQXQgKCkge1xuICAgICAgICByZXR1cm4gZ2V0UGFyc2luZ0ZsYWdzKHRoaXMpLm92ZXJmbG93O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0aW9uRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLl9pLFxuICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9mLFxuICAgICAgICAgICAgbG9jYWxlOiB0aGlzLl9sb2NhbGUsXG4gICAgICAgICAgICBpc1VUQzogdGhpcy5faXNVVEMsXG4gICAgICAgICAgICBzdHJpY3Q6IHRoaXMuX3N0cmljdFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnZ2cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53ZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydHRycsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1dlZWtZZWFyKCkgJSAxMDA7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhZGRXZWVrWWVhckZvcm1hdFRva2VuICh0b2tlbiwgZ2V0dGVyKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKDAsIFt0b2tlbiwgdG9rZW4ubGVuZ3RoXSwgMCwgZ2V0dGVyKTtcbiAgICB9XG5cbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnJywgICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ2dnZ2dnJywgICAgJ3dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHRycsICAnaXNvV2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdHR0dHRycsICdpc29XZWVrWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd3ZWVrWWVhcicsICdnZycpO1xuICAgIGFkZFVuaXRBbGlhcygnaXNvV2Vla1llYXInLCAnR0cnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3dlZWtZZWFyJywgMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCdpc29XZWVrWWVhcicsIDEpO1xuXG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdHJywgICAgICBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignZycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdnZycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHRycsICAgbWF0Y2gxdG80LCBtYXRjaDQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdHR0dHRycsICBtYXRjaDF0bzYsIG1hdGNoNik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2dnZ2cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydnZ2dnJywgJ2dnZ2dnJywgJ0dHR0cnLCAnR0dHR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW4uc3Vic3RyKDAsIDIpXSA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2cnLCAnR0cnXSwgZnVuY3Rpb24gKGlucHV0LCB3ZWVrLCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgIHdlZWtbdG9rZW5dID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0V2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrKCksXG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrZGF5KCksXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPV2Vla1llYXIgKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBnZXRTZXRXZWVrWWVhckhlbHBlci5jYWxsKHRoaXMsXG4gICAgICAgICAgICAgICAgaW5wdXQsIHRoaXMuaXNvV2VlaygpLCB0aGlzLmlzb1dlZWtkYXkoKSwgMSwgNCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIgKCkge1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgdmFyIHdlZWtJbmZvID0gdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7XG4gICAgICAgIHJldHVybiB3ZWVrc0luWWVhcih0aGlzLnllYXIoKSwgd2Vla0luZm8uZG93LCB3ZWVrSW5mby5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFySGVscGVyKGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla3NUYXJnZXQ7XG4gICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla09mWWVhcih0aGlzLCBkb3csIGRveSkueWVhcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdlZWtzVGFyZ2V0ID0gd2Vla3NJblllYXIoaW5wdXQsIGRvdywgZG95KTtcbiAgICAgICAgICAgIGlmICh3ZWVrID4gd2Vla3NUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB3ZWVrID0gd2Vla3NUYXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2V0V2Vla0FsbC5jYWxsKHRoaXMsIGlucHV0LCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRXZWVrQWxsKHdlZWtZZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyRGF0YSA9IGRheU9mWWVhckZyb21XZWVrcyh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoZGF5T2ZZZWFyRGF0YS55ZWFyLCAwLCBkYXlPZlllYXJEYXRhLmRheU9mWWVhcik7XG5cbiAgICAgICAgdGhpcy55ZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgICAgIHRoaXMubW9udGgoZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICAgICAgdGhpcy5kYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1EnLCAwLCAnUW8nLCAncXVhcnRlcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdxdWFydGVyJywgJ1EnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3F1YXJ0ZXInLCA3KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1EnLCBtYXRjaDEpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1EnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W01PTlRIXSA9ICh0b0ludChpbnB1dCkgLSAxKSAqIDM7XG4gICAgfSk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRRdWFydGVyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IE1hdGguY2VpbCgodGhpcy5tb250aCgpICsgMSkgLyAzKSA6IHRoaXMubW9udGgoKGlucHV0IC0gMSkgKiAzICsgdGhpcy5tb250aCgpICUgMyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0QnLCBbJ0REJywgMl0sICdEbycsICdkYXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ2RhdGUnLCAnRCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RhdGUnLCA5KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ0QnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdERCcsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdEbycsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBcIm9yZGluYWxQYXJzZVwiIGZhbGxiYWNrIGluIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAgICAgICAgcmV0dXJuIGlzU3RyaWN0ID9cbiAgICAgICAgICAobG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlIHx8IGxvY2FsZS5fb3JkaW5hbFBhcnNlKSA6XG4gICAgICAgICAgbG9jYWxlLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudDtcbiAgICB9KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydEJywgJ0REJ10sIERBVEUpO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0RvJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtEQVRFXSA9IHRvSW50KGlucHV0Lm1hdGNoKG1hdGNoMXRvMilbMF0pO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldERheU9mTW9udGggPSBtYWtlR2V0U2V0KCdEYXRlJywgdHJ1ZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignREREJywgWydEREREJywgM10sICdERERvJywgJ2RheU9mWWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXlPZlllYXInLCAnREREJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnZGF5T2ZZZWFyJywgNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEREQnLCAgbWF0Y2gxdG8zKTtcbiAgICBhZGRSZWdleFRva2VuKCdEREREJywgbWF0Y2gzKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnREREJywgJ0REREQnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdG9JbnQoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0RGF5T2ZZZWFyIChpbnB1dCkge1xuICAgICAgICB2YXIgZGF5T2ZZZWFyID0gTWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ2RheScpIC0gdGhpcy5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKSkgLyA4NjRlNSkgKyAxO1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGRheU9mWWVhciA6IHRoaXMuYWRkKChpbnB1dCAtIGRheU9mWWVhciksICdkJyk7XG4gICAgfVxuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ20nLCBbJ21tJywgMl0sIDAsICdtaW51dGUnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWludXRlJywgJ20nKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbnV0ZScsIDE0KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ20nLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdtbScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsnbScsICdtbSddLCBNSU5VVEUpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldE1pbnV0ZSA9IG1ha2VHZXRTZXQoJ01pbnV0ZXMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigncycsIFsnc3MnLCAyXSwgMCwgJ3NlY29uZCcpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigncycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydzJywgJ3NzJ10sIFNFQ09ORCk7XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0U2Vjb25kID0gbWFrZUdldFNldCgnU2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdTJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTAwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1MnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gfn4odGhpcy5taWxsaXNlY29uZCgpIC8gMTApO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwgMCwgJ21pbGxpc2Vjb25kJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTJywgNF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1MnLCA1XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTJywgNl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDA7XG4gICAgfSk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydTU1NTU1NTJywgN10sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1MnLCA4XSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5taWxsaXNlY29uZCgpICogMTAwMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTU1NTJywgOV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDA7XG4gICAgfSk7XG5cblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbWlsbGlzZWNvbmQnLCAnbXMnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ21pbGxpc2Vjb25kJywgMTYpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignUycsICAgIG1hdGNoMXRvMywgbWF0Y2gxKTtcbiAgICBhZGRSZWdleFRva2VuKCdTUycsICAgbWF0Y2gxdG8zLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1NTUycsICBtYXRjaDF0bzMsIG1hdGNoMyk7XG5cbiAgICB2YXIgdG9rZW47XG4gICAgZm9yICh0b2tlbiA9ICdTU1NTJzsgdG9rZW4ubGVuZ3RoIDw9IDk7IHRva2VuICs9ICdTJykge1xuICAgICAgICBhZGRSZWdleFRva2VuKHRva2VuLCBtYXRjaFVuc2lnbmVkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZU1zKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNSUxMSVNFQ09ORF0gPSB0b0ludCgoJzAuJyArIGlucHV0KSAqIDEwMDApO1xuICAgIH1cblxuICAgIGZvciAodG9rZW4gPSAnUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUGFyc2VUb2tlbih0b2tlbiwgcGFyc2VNcyk7XG4gICAgfVxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaWxsaXNlY29uZCA9IG1ha2VHZXRTZXQoJ01pbGxpc2Vjb25kcycsIGZhbHNlKTtcblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCd6JywgIDAsIDAsICd6b25lQWJicicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd6eicsIDAsIDAsICd6b25lTmFtZScpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0Wm9uZUFiYnIgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVVEMgPyAnVVRDJyA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFpvbmVOYW1lICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE1vbWVudC5wcm90b3R5cGU7XG5cbiAgICBwcm90by5hZGQgICAgICAgICAgICAgICA9IGFkZDtcbiAgICBwcm90by5jYWxlbmRhciAgICAgICAgICA9IGNhbGVuZGFyJDE7XG4gICAgcHJvdG8uY2xvbmUgICAgICAgICAgICAgPSBjbG9uZTtcbiAgICBwcm90by5kaWZmICAgICAgICAgICAgICA9IGRpZmY7XG4gICAgcHJvdG8uZW5kT2YgICAgICAgICAgICAgPSBlbmRPZjtcbiAgICBwcm90by5mb3JtYXQgICAgICAgICAgICA9IGZvcm1hdDtcbiAgICBwcm90by5mcm9tICAgICAgICAgICAgICA9IGZyb207XG4gICAgcHJvdG8uZnJvbU5vdyAgICAgICAgICAgPSBmcm9tTm93O1xuICAgIHByb3RvLnRvICAgICAgICAgICAgICAgID0gdG87XG4gICAgcHJvdG8udG9Ob3cgICAgICAgICAgICAgPSB0b05vdztcbiAgICBwcm90by5nZXQgICAgICAgICAgICAgICA9IHN0cmluZ0dldDtcbiAgICBwcm90by5pbnZhbGlkQXQgICAgICAgICA9IGludmFsaWRBdDtcbiAgICBwcm90by5pc0FmdGVyICAgICAgICAgICA9IGlzQWZ0ZXI7XG4gICAgcHJvdG8uaXNCZWZvcmUgICAgICAgICAgPSBpc0JlZm9yZTtcbiAgICBwcm90by5pc0JldHdlZW4gICAgICAgICA9IGlzQmV0d2VlbjtcbiAgICBwcm90by5pc1NhbWUgICAgICAgICAgICA9IGlzU2FtZTtcbiAgICBwcm90by5pc1NhbWVPckFmdGVyICAgICA9IGlzU2FtZU9yQWZ0ZXI7XG4gICAgcHJvdG8uaXNTYW1lT3JCZWZvcmUgICAgPSBpc1NhbWVPckJlZm9yZTtcbiAgICBwcm90by5pc1ZhbGlkICAgICAgICAgICA9IGlzVmFsaWQkMjtcbiAgICBwcm90by5sYW5nICAgICAgICAgICAgICA9IGxhbmc7XG4gICAgcHJvdG8ubG9jYWxlICAgICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8ubG9jYWxlRGF0YSAgICAgICAgPSBsb2NhbGVEYXRhO1xuICAgIHByb3RvLm1heCAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWF4O1xuICAgIHByb3RvLm1pbiAgICAgICAgICAgICAgID0gcHJvdG90eXBlTWluO1xuICAgIHByb3RvLnBhcnNpbmdGbGFncyAgICAgID0gcGFyc2luZ0ZsYWdzO1xuICAgIHByb3RvLnNldCAgICAgICAgICAgICAgID0gc3RyaW5nU2V0O1xuICAgIHByb3RvLnN0YXJ0T2YgICAgICAgICAgID0gc3RhcnRPZjtcbiAgICBwcm90by5zdWJ0cmFjdCAgICAgICAgICA9IHN1YnRyYWN0O1xuICAgIHByb3RvLnRvQXJyYXkgICAgICAgICAgID0gdG9BcnJheTtcbiAgICBwcm90by50b09iamVjdCAgICAgICAgICA9IHRvT2JqZWN0O1xuICAgIHByb3RvLnRvRGF0ZSAgICAgICAgICAgID0gdG9EYXRlO1xuICAgIHByb3RvLnRvSVNPU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmc7XG4gICAgcHJvdG8uaW5zcGVjdCAgICAgICAgICAgPSBpbnNwZWN0O1xuICAgIHByb3RvLnRvSlNPTiAgICAgICAgICAgID0gdG9KU09OO1xuICAgIHByb3RvLnRvU3RyaW5nICAgICAgICAgID0gdG9TdHJpbmc7XG4gICAgcHJvdG8udW5peCAgICAgICAgICAgICAgPSB1bml4O1xuICAgIHByb3RvLnZhbHVlT2YgICAgICAgICAgID0gdmFsdWVPZjtcbiAgICBwcm90by5jcmVhdGlvbkRhdGEgICAgICA9IGNyZWF0aW9uRGF0YTtcbiAgICBwcm90by55ZWFyICAgICAgID0gZ2V0U2V0WWVhcjtcbiAgICBwcm90by5pc0xlYXBZZWFyID0gZ2V0SXNMZWFwWWVhcjtcbiAgICBwcm90by53ZWVrWWVhciAgICA9IGdldFNldFdlZWtZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtZZWFyID0gZ2V0U2V0SVNPV2Vla1llYXI7XG4gICAgcHJvdG8ucXVhcnRlciA9IHByb3RvLnF1YXJ0ZXJzID0gZ2V0U2V0UXVhcnRlcjtcbiAgICBwcm90by5tb250aCAgICAgICA9IGdldFNldE1vbnRoO1xuICAgIHByb3RvLmRheXNJbk1vbnRoID0gZ2V0RGF5c0luTW9udGg7XG4gICAgcHJvdG8ud2VlayAgICAgICAgICAgPSBwcm90by53ZWVrcyAgICAgICAgPSBnZXRTZXRXZWVrO1xuICAgIHByb3RvLmlzb1dlZWsgICAgICAgID0gcHJvdG8uaXNvV2Vla3MgICAgID0gZ2V0U2V0SVNPV2VlaztcbiAgICBwcm90by53ZWVrc0luWWVhciAgICA9IGdldFdlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmlzb1dlZWtzSW5ZZWFyID0gZ2V0SVNPV2Vla3NJblllYXI7XG4gICAgcHJvdG8uZGF0ZSAgICAgICA9IGdldFNldERheU9mTW9udGg7XG4gICAgcHJvdG8uZGF5ICAgICAgICA9IHByb3RvLmRheXMgICAgICAgICAgICAgPSBnZXRTZXREYXlPZldlZWs7XG4gICAgcHJvdG8ud2Vla2RheSAgICA9IGdldFNldExvY2FsZURheU9mV2VlaztcbiAgICBwcm90by5pc29XZWVrZGF5ID0gZ2V0U2V0SVNPRGF5T2ZXZWVrO1xuICAgIHByb3RvLmRheU9mWWVhciAgPSBnZXRTZXREYXlPZlllYXI7XG4gICAgcHJvdG8uaG91ciA9IHByb3RvLmhvdXJzID0gZ2V0U2V0SG91cjtcbiAgICBwcm90by5taW51dGUgPSBwcm90by5taW51dGVzID0gZ2V0U2V0TWludXRlO1xuICAgIHByb3RvLnNlY29uZCA9IHByb3RvLnNlY29uZHMgPSBnZXRTZXRTZWNvbmQ7XG4gICAgcHJvdG8ubWlsbGlzZWNvbmQgPSBwcm90by5taWxsaXNlY29uZHMgPSBnZXRTZXRNaWxsaXNlY29uZDtcbiAgICBwcm90by51dGNPZmZzZXQgICAgICAgICAgICA9IGdldFNldE9mZnNldDtcbiAgICBwcm90by51dGMgICAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvVVRDO1xuICAgIHByb3RvLmxvY2FsICAgICAgICAgICAgICAgID0gc2V0T2Zmc2V0VG9Mb2NhbDtcbiAgICBwcm90by5wYXJzZVpvbmUgICAgICAgICAgICA9IHNldE9mZnNldFRvUGFyc2VkT2Zmc2V0O1xuICAgIHByb3RvLmhhc0FsaWduZWRIb3VyT2Zmc2V0ID0gaGFzQWxpZ25lZEhvdXJPZmZzZXQ7XG4gICAgcHJvdG8uaXNEU1QgICAgICAgICAgICAgICAgPSBpc0RheWxpZ2h0U2F2aW5nVGltZTtcbiAgICBwcm90by5pc0xvY2FsICAgICAgICAgICAgICA9IGlzTG9jYWw7XG4gICAgcHJvdG8uaXNVdGNPZmZzZXQgICAgICAgICAgPSBpc1V0Y09mZnNldDtcbiAgICBwcm90by5pc1V0YyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLmlzVVRDICAgICAgICAgICAgICAgID0gaXNVdGM7XG4gICAgcHJvdG8uem9uZUFiYnIgPSBnZXRab25lQWJicjtcbiAgICBwcm90by56b25lTmFtZSA9IGdldFpvbmVOYW1lO1xuICAgIHByb3RvLmRhdGVzICA9IGRlcHJlY2F0ZSgnZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4nLCBnZXRTZXREYXlPZk1vbnRoKTtcbiAgICBwcm90by5tb250aHMgPSBkZXByZWNhdGUoJ21vbnRocyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgbW9udGggaW5zdGVhZCcsIGdldFNldE1vbnRoKTtcbiAgICBwcm90by55ZWFycyAgPSBkZXByZWNhdGUoJ3llYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQnLCBnZXRTZXRZZWFyKTtcbiAgICBwcm90by56b25lICAgPSBkZXByZWNhdGUoJ21vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNldCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL3pvbmUvJywgZ2V0U2V0Wm9uZSk7XG4gICAgcHJvdG8uaXNEU1RTaGlmdGVkID0gZGVwcmVjYXRlKCdpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uJywgaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkKTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVVuaXggKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbChpbnB1dCAqIDEwMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluWm9uZSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbC5hcHBseShudWxsLCBhcmd1bWVudHMpLnBhcnNlWm9uZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZVBhcnNlUG9zdEZvcm1hdCAoc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDEgPSBMb2NhbGUucHJvdG90eXBlO1xuXG4gICAgcHJvdG8kMS5jYWxlbmRhciAgICAgICAgPSBjYWxlbmRhcjtcbiAgICBwcm90byQxLmxvbmdEYXRlRm9ybWF0ICA9IGxvbmdEYXRlRm9ybWF0O1xuICAgIHByb3RvJDEuaW52YWxpZERhdGUgICAgID0gaW52YWxpZERhdGU7XG4gICAgcHJvdG8kMS5vcmRpbmFsICAgICAgICAgPSBvcmRpbmFsO1xuICAgIHByb3RvJDEucHJlcGFyc2UgICAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucG9zdGZvcm1hdCAgICAgID0gcHJlUGFyc2VQb3N0Rm9ybWF0O1xuICAgIHByb3RvJDEucmVsYXRpdmVUaW1lICAgID0gcmVsYXRpdmVUaW1lO1xuICAgIHByb3RvJDEucGFzdEZ1dHVyZSAgICAgID0gcGFzdEZ1dHVyZTtcbiAgICBwcm90byQxLnNldCAgICAgICAgICAgICA9IHNldDtcblxuICAgIHByb3RvJDEubW9udGhzICAgICAgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzO1xuICAgIHByb3RvJDEubW9udGhzU2hvcnQgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzU2hvcnQ7XG4gICAgcHJvdG8kMS5tb250aHNQYXJzZSAgICAgICA9ICAgICAgICBsb2NhbGVNb250aHNQYXJzZTtcbiAgICBwcm90byQxLm1vbnRoc1JlZ2V4ICAgICAgID0gbW9udGhzUmVnZXg7XG4gICAgcHJvdG8kMS5tb250aHNTaG9ydFJlZ2V4ICA9IG1vbnRoc1Nob3J0UmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrID0gbG9jYWxlV2VlaztcbiAgICBwcm90byQxLmZpcnN0RGF5T2ZZZWFyID0gbG9jYWxlRmlyc3REYXlPZlllYXI7XG4gICAgcHJvdG8kMS5maXJzdERheU9mV2VlayA9IGxvY2FsZUZpcnN0RGF5T2ZXZWVrO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5cyAgICAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5cztcbiAgICBwcm90byQxLndlZWtkYXlzTWluICAgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzTWluO1xuICAgIHByb3RvJDEud2Vla2RheXNTaG9ydCAgPSAgICAgICAgbG9jYWxlV2Vla2RheXNTaG9ydDtcbiAgICBwcm90byQxLndlZWtkYXlzUGFyc2UgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzUGFyc2U7XG5cbiAgICBwcm90byQxLndlZWtkYXlzUmVnZXggICAgICAgPSAgICAgICAgd2Vla2RheXNSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnRSZWdleCAgPSAgICAgICAgd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2Vla2RheXNNaW5SZWdleCAgICA9ICAgICAgICB3ZWVrZGF5c01pblJlZ2V4O1xuXG4gICAgcHJvdG8kMS5pc1BNID0gbG9jYWxlSXNQTTtcbiAgICBwcm90byQxLm1lcmlkaWVtID0gbG9jYWxlTWVyaWRpZW07XG5cbiAgICBmdW5jdGlvbiBnZXQkMSAoZm9ybWF0LCBpbmRleCwgZmllbGQsIHNldHRlcikge1xuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG4gICAgICAgIHZhciB1dGMgPSBjcmVhdGVVVEMoKS5zZXQoc2V0dGVyLCBpbmRleCk7XG4gICAgICAgIHJldHVybiBsb2NhbGVbZmllbGRdKHV0YywgZm9ybWF0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzSW1wbCAoZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCBpbmRleCwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgaSwgZmllbGQsICdtb250aCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgLy8gKClcbiAgICAvLyAoNSlcbiAgICAvLyAoZm10LCA1KVxuICAgIC8vIChmbXQpXG4gICAgLy8gKHRydWUpXG4gICAgLy8gKHRydWUsIDUpXG4gICAgLy8gKHRydWUsIGZtdCwgNSlcbiAgICAvLyAodHJ1ZSwgZm10KVxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c0ltcGwgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgZmllbGQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGVTb3J0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGxvY2FsZVNvcnRlZDtcbiAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgbG9jYWxlU29ydGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbG9jYWxlID0gZ2V0TG9jYWxlKCksXG4gICAgICAgICAgICBzaGlmdCA9IGxvY2FsZVNvcnRlZCA/IGxvY2FsZS5fd2Vlay5kb3cgOiAwO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0JDEoZm9ybWF0LCAoaW5kZXggKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gZ2V0JDEoZm9ybWF0LCAoaSArIHNoaWZ0KSAlIDcsIGZpZWxkLCAnZGF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0TW9udGhzIChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc1Nob3J0IChmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0TW9udGhzSW1wbChmb3JtYXQsIGluZGV4LCAnbW9udGhzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXMgKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5cycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c1Nob3J0IChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXNTaG9ydCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RXZWVrZGF5c01pbiAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzTWluJyk7XG4gICAgfVxuXG4gICAgZ2V0U2V0R2xvYmFsTG9jYWxlKCdlbicsIHtcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh0b0ludChudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICBob29rcy5sYW5nID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLicsIGdldFNldEdsb2JhbExvY2FsZSk7XG4gICAgaG9va3MubGFuZ0RhdGEgPSBkZXByZWNhdGUoJ21vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4nLCBnZXRMb2NhbGUpO1xuXG4gICAgdmFyIG1hdGhBYnMgPSBNYXRoLmFicztcblxuICAgIGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgICA9IHRoaXMuX2RhdGE7XG5cbiAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzID0gbWF0aEFicyh0aGlzLl9taWxsaXNlY29uZHMpO1xuICAgICAgICB0aGlzLl9kYXlzICAgICAgICAgPSBtYXRoQWJzKHRoaXMuX2RheXMpO1xuICAgICAgICB0aGlzLl9tb250aHMgICAgICAgPSBtYXRoQWJzKHRoaXMuX21vbnRocyk7XG5cbiAgICAgICAgZGF0YS5taWxsaXNlY29uZHMgID0gbWF0aEFicyhkYXRhLm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIGRhdGEuc2Vjb25kcyAgICAgICA9IG1hdGhBYnMoZGF0YS5zZWNvbmRzKTtcbiAgICAgICAgZGF0YS5taW51dGVzICAgICAgID0gbWF0aEFicyhkYXRhLm1pbnV0ZXMpO1xuICAgICAgICBkYXRhLmhvdXJzICAgICAgICAgPSBtYXRoQWJzKGRhdGEuaG91cnMpO1xuICAgICAgICBkYXRhLm1vbnRocyAgICAgICAgPSBtYXRoQWJzKGRhdGEubW9udGhzKTtcbiAgICAgICAgZGF0YS55ZWFycyAgICAgICAgID0gbWF0aEFicyhkYXRhLnllYXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCQxIChkdXJhdGlvbiwgaW5wdXQsIHZhbHVlLCBkaXJlY3Rpb24pIHtcbiAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlRHVyYXRpb24oaW5wdXQsIHZhbHVlKTtcblxuICAgICAgICBkdXJhdGlvbi5fbWlsbGlzZWNvbmRzICs9IGRpcmVjdGlvbiAqIG90aGVyLl9taWxsaXNlY29uZHM7XG4gICAgICAgIGR1cmF0aW9uLl9kYXlzICAgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX2RheXM7XG4gICAgICAgIGR1cmF0aW9uLl9tb250aHMgICAgICAgKz0gZGlyZWN0aW9uICogb3RoZXIuX21vbnRocztcblxuICAgICAgICByZXR1cm4gZHVyYXRpb24uX2J1YmJsZSgpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIGFkZCgxLCAncycpIG9yIGFkZChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBhZGQkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgMSk7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbilcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdCQxIChpbnB1dCwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGFkZFN1YnRyYWN0JDEodGhpcywgaW5wdXQsIHZhbHVlLCAtMSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWJzQ2VpbCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguY2VpbChudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnViYmxlICgpIHtcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IHRoaXMuX2RheXM7XG4gICAgICAgIHZhciBtb250aHMgICAgICAgPSB0aGlzLl9tb250aHM7XG4gICAgICAgIHZhciBkYXRhICAgICAgICAgPSB0aGlzLl9kYXRhO1xuICAgICAgICB2YXIgc2Vjb25kcywgbWludXRlcywgaG91cnMsIHllYXJzLCBtb250aHNGcm9tRGF5cztcblxuICAgICAgICAvLyBpZiB3ZSBoYXZlIGEgbWl4IG9mIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMsIGJ1YmJsZSBkb3duIGZpcnN0XG4gICAgICAgIC8vIGNoZWNrOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMjE2NlxuICAgICAgICBpZiAoISgobWlsbGlzZWNvbmRzID49IDAgJiYgZGF5cyA+PSAwICYmIG1vbnRocyA+PSAwKSB8fFxuICAgICAgICAgICAgICAgIChtaWxsaXNlY29uZHMgPD0gMCAmJiBkYXlzIDw9IDAgJiYgbW9udGhzIDw9IDApKSkge1xuICAgICAgICAgICAgbWlsbGlzZWNvbmRzICs9IGFic0NlaWwobW9udGhzVG9EYXlzKG1vbnRocykgKyBkYXlzKSAqIDg2NGU1O1xuICAgICAgICAgICAgZGF5cyA9IDA7XG4gICAgICAgICAgICBtb250aHMgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGJ1YmJsZXMgdXAgdmFsdWVzLCBzZWUgdGhlIHRlc3RzIGZvclxuICAgICAgICAvLyBleGFtcGxlcyBvZiB3aGF0IHRoYXQgbWVhbnMuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzICUgMTAwMDtcblxuICAgICAgICBzZWNvbmRzICAgICAgICAgICA9IGFic0Zsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICA9IHNlY29uZHMgJSA2MDtcblxuICAgICAgICBtaW51dGVzICAgICAgICAgICA9IGFic0Zsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgID0gbWludXRlcyAlIDYwO1xuXG4gICAgICAgIGhvdXJzICAgICAgICAgICAgID0gYWJzRmxvb3IobWludXRlcyAvIDYwKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgPSBob3VycyAlIDI0O1xuXG4gICAgICAgIGRheXMgKz0gYWJzRmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICAgICAgLy8gY29udmVydCBkYXlzIHRvIG1vbnRoc1xuICAgICAgICBtb250aHNGcm9tRGF5cyA9IGFic0Zsb29yKGRheXNUb01vbnRocyhkYXlzKSk7XG4gICAgICAgIG1vbnRocyArPSBtb250aHNGcm9tRGF5cztcbiAgICAgICAgZGF5cyAtPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHNGcm9tRGF5cykpO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuICAgICAgICBkYXRhLmRheXMgICA9IGRheXM7XG4gICAgICAgIGRhdGEubW9udGhzID0gbW9udGhzO1xuICAgICAgICBkYXRhLnllYXJzICA9IHllYXJzO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNUb01vbnRocyAoZGF5cykge1xuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxNDYwOTcgZGF5cyAodGFraW5nIGludG8gYWNjb3VudCBsZWFwIHllYXIgcnVsZXMpXG4gICAgICAgIC8vIDQwMCB5ZWFycyBoYXZlIDEyIG1vbnRocyA9PT0gNDgwMFxuICAgICAgICByZXR1cm4gZGF5cyAqIDQ4MDAgLyAxNDYwOTc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhzVG9EYXlzIChtb250aHMpIHtcbiAgICAgICAgLy8gdGhlIHJldmVyc2Ugb2YgZGF5c1RvTW9udGhzXG4gICAgICAgIHJldHVybiBtb250aHMgKiAxNDYwOTcgLyA0ODAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzICh1bml0cykge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXlzO1xuICAgICAgICB2YXIgbW9udGhzO1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gdGhpcy5fbWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21vbnRoJyB8fCB1bml0cyA9PT0gJ3F1YXJ0ZXInIHx8IHVuaXRzID09PSAneWVhcicpIHtcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOiAgIHJldHVybiBtb250aHM7XG4gICAgICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiBtb250aHMgLyAzO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOiAgICByZXR1cm4gbW9udGhzIC8gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBoYW5kbGUgbWlsbGlzZWNvbmRzIHNlcGFyYXRlbHkgYmVjYXVzZSBvZiBmbG9hdGluZyBwb2ludCBtYXRoIGVycm9ycyAoaXNzdWUgIzE4NjcpXG4gICAgICAgICAgICBkYXlzID0gdGhpcy5fZGF5cyArIE1hdGgucm91bmQobW9udGhzVG9EYXlzKHRoaXMuX21vbnRocykpO1xuICAgICAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dlZWsnICAgOiByZXR1cm4gZGF5cyAvIDcgICAgICsgbWlsbGlzZWNvbmRzIC8gNjA0OGU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RheScgICAgOiByZXR1cm4gZGF5cyAgICAgICAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnaG91cicgICA6IHJldHVybiBkYXlzICogMjQgICAgKyBtaWxsaXNlY29uZHMgLyAzNmU1O1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pbnV0ZScgOiByZXR1cm4gZGF5cyAqIDE0NDAgICsgbWlsbGlzZWNvbmRzIC8gNmU0O1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZCcgOiByZXR1cm4gZGF5cyAqIDg2NDAwICsgbWlsbGlzZWNvbmRzIC8gMTAwMDtcbiAgICAgICAgICAgICAgICAvLyBNYXRoLmZsb29yIHByZXZlbnRzIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIGhlcmVcbiAgICAgICAgICAgICAgICBjYXNlICdtaWxsaXNlY29uZCc6IHJldHVybiBNYXRoLmZsb29yKGRheXMgKiA4NjRlNSkgKyBtaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHVuaXQgJyArIHVuaXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFVzZSB0aGlzLmFzKCdtcycpP1xuICAgIGZ1bmN0aW9uIHZhbHVlT2YkMSAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyArXG4gICAgICAgICAgICB0aGlzLl9kYXlzICogODY0ZTUgK1xuICAgICAgICAgICAgKHRoaXMuX21vbnRocyAlIDEyKSAqIDI1OTJlNiArXG4gICAgICAgICAgICB0b0ludCh0aGlzLl9tb250aHMgLyAxMikgKiAzMTUzNmU2XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFzIChhbGlhcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXMoYWxpYXMpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBhc01pbGxpc2Vjb25kcyA9IG1ha2VBcygnbXMnKTtcbiAgICB2YXIgYXNTZWNvbmRzICAgICAgPSBtYWtlQXMoJ3MnKTtcbiAgICB2YXIgYXNNaW51dGVzICAgICAgPSBtYWtlQXMoJ20nKTtcbiAgICB2YXIgYXNIb3VycyAgICAgICAgPSBtYWtlQXMoJ2gnKTtcbiAgICB2YXIgYXNEYXlzICAgICAgICAgPSBtYWtlQXMoJ2QnKTtcbiAgICB2YXIgYXNXZWVrcyAgICAgICAgPSBtYWtlQXMoJ3cnKTtcbiAgICB2YXIgYXNNb250aHMgICAgICAgPSBtYWtlQXMoJ00nKTtcbiAgICB2YXIgYXNRdWFydGVycyAgICAgPSBtYWtlQXMoJ1EnKTtcbiAgICB2YXIgYXNZZWFycyAgICAgICAgPSBtYWtlQXMoJ3knKTtcblxuICAgIGZ1bmN0aW9uIGNsb25lJDEgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRHVyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0JDIgKHVuaXRzKSB7XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzW3VuaXRzICsgJ3MnXSgpIDogTmFOO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5fZGF0YVtuYW1lXSA6IE5hTjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gbWFrZUdldHRlcignbWlsbGlzZWNvbmRzJyk7XG4gICAgdmFyIHNlY29uZHMgICAgICA9IG1ha2VHZXR0ZXIoJ3NlY29uZHMnKTtcbiAgICB2YXIgbWludXRlcyAgICAgID0gbWFrZUdldHRlcignbWludXRlcycpO1xuICAgIHZhciBob3VycyAgICAgICAgPSBtYWtlR2V0dGVyKCdob3VycycpO1xuICAgIHZhciBkYXlzICAgICAgICAgPSBtYWtlR2V0dGVyKCdkYXlzJyk7XG4gICAgdmFyIG1vbnRocyAgICAgICA9IG1ha2VHZXR0ZXIoJ21vbnRocycpO1xuICAgIHZhciB5ZWFycyAgICAgICAgPSBtYWtlR2V0dGVyKCd5ZWFycycpO1xuXG4gICAgZnVuY3Rpb24gd2Vla3MgKCkge1xuICAgICAgICByZXR1cm4gYWJzRmxvb3IodGhpcy5kYXlzKCkgLyA3KTtcbiAgICB9XG5cbiAgICB2YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xuICAgIHZhciB0aHJlc2hvbGRzID0ge1xuICAgICAgICBzczogNDQsICAgICAgICAgLy8gYSBmZXcgc2Vjb25kcyB0byBzZWNvbmRzXG4gICAgICAgIHMgOiA0NSwgICAgICAgICAvLyBzZWNvbmRzIHRvIG1pbnV0ZVxuICAgICAgICBtIDogNDUsICAgICAgICAgLy8gbWludXRlcyB0byBob3VyXG4gICAgICAgIGggOiAyMiwgICAgICAgICAvLyBob3VycyB0byBkYXlcbiAgICAgICAgZCA6IDI2LCAgICAgICAgIC8vIGRheXMgdG8gbW9udGhcbiAgICAgICAgTSA6IDExICAgICAgICAgIC8vIG1vbnRocyB0byB5ZWFyXG4gICAgfTtcblxuICAgIC8vIGhlbHBlciBmdW5jdGlvbiBmb3IgbW9tZW50LmZuLmZyb20sIG1vbWVudC5mbi5mcm9tTm93LCBhbmQgbW9tZW50LmR1cmF0aW9uLmZuLmh1bWFuaXplXG4gICAgZnVuY3Rpb24gc3Vic3RpdHV0ZVRpbWVBZ28oc3RyaW5nLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGlzRnV0dXJlLCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5yZWxhdGl2ZVRpbWUobnVtYmVyIHx8IDEsICEhd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lJDEgKHBvc05lZ0R1cmF0aW9uLCB3aXRob3V0U3VmZml4LCBsb2NhbGUpIHtcbiAgICAgICAgdmFyIGR1cmF0aW9uID0gY3JlYXRlRHVyYXRpb24ocG9zTmVnRHVyYXRpb24pLmFicygpO1xuICAgICAgICB2YXIgc2Vjb25kcyAgPSByb3VuZChkdXJhdGlvbi5hcygncycpKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgID0gcm91bmQoZHVyYXRpb24uYXMoJ20nKSk7XG4gICAgICAgIHZhciBob3VycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdoJykpO1xuICAgICAgICB2YXIgZGF5cyAgICAgPSByb3VuZChkdXJhdGlvbi5hcygnZCcpKTtcbiAgICAgICAgdmFyIG1vbnRocyAgID0gcm91bmQoZHVyYXRpb24uYXMoJ00nKSk7XG4gICAgICAgIHZhciB5ZWFycyAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCd5JykpO1xuXG4gICAgICAgIHZhciBhID0gc2Vjb25kcyA8PSB0aHJlc2hvbGRzLnNzICYmIFsncycsIHNlY29uZHNdICB8fFxuICAgICAgICAgICAgICAgIHNlY29uZHMgPCB0aHJlc2hvbGRzLnMgICAmJiBbJ3NzJywgc2Vjb25kc10gfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDw9IDEgICAgICAgICAgICAgJiYgWydtJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbWludXRlcyA8IHRocmVzaG9sZHMubSAgICYmIFsnbW0nLCBtaW51dGVzXSB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ2gnXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBob3VycyAgIDwgdGhyZXNob2xkcy5oICAgJiYgWydoaCcsIGhvdXJzXSAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8PSAxICAgICAgICAgICAgICYmIFsnZCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGRheXMgICAgPCB0aHJlc2hvbGRzLmQgICAmJiBbJ2RkJywgZGF5c10gICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDw9IDEgICAgICAgICAgICAgJiYgWydNJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgbW9udGhzICA8IHRocmVzaG9sZHMuTSAgICYmIFsnTU0nLCBtb250aHNdICB8fFxuICAgICAgICAgICAgICAgIHllYXJzICAgPD0gMSAgICAgICAgICAgICAmJiBbJ3knXSAgICAgICAgICAgfHwgWyd5eScsIHllYXJzXTtcblxuICAgICAgICBhWzJdID0gd2l0aG91dFN1ZmZpeDtcbiAgICAgICAgYVszXSA9ICtwb3NOZWdEdXJhdGlvbiA+IDA7XG4gICAgICAgIGFbNF0gPSBsb2NhbGU7XG4gICAgICAgIHJldHVybiBzdWJzdGl0dXRlVGltZUFnby5hcHBseShudWxsLCBhKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IHRoZSByb3VuZGluZyBmdW5jdGlvbiBmb3IgcmVsYXRpdmUgdGltZSBzdHJpbmdzXG4gICAgZnVuY3Rpb24gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmcgKHJvdW5kaW5nRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKHJvdW5kaW5nRnVuY3Rpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvdW5kO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Yocm91bmRpbmdGdW5jdGlvbikgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdW5kID0gcm91bmRpbmdGdW5jdGlvbjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVUaHJlc2hvbGQgKHRocmVzaG9sZCwgbGltaXQpIHtcbiAgICAgICAgaWYgKHRocmVzaG9sZHNbdGhyZXNob2xkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbWl0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJlc2hvbGRzW3RocmVzaG9sZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhyZXNob2xkc1t0aHJlc2hvbGRdID0gbGltaXQ7XG4gICAgICAgIGlmICh0aHJlc2hvbGQgPT09ICdzJykge1xuICAgICAgICAgICAgdGhyZXNob2xkcy5zcyA9IGxpbWl0IC0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBodW1hbml6ZSAod2l0aFN1ZmZpeCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBsb2NhbGUgPSB0aGlzLmxvY2FsZURhdGEoKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJlbGF0aXZlVGltZSQxKHRoaXMsICF3aXRoU3VmZml4LCBsb2NhbGUpO1xuXG4gICAgICAgIGlmICh3aXRoU3VmZml4KSB7XG4gICAgICAgICAgICBvdXRwdXQgPSBsb2NhbGUucGFzdEZ1dHVyZSgrdGhpcywgb3V0cHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbGUucG9zdGZvcm1hdChvdXRwdXQpO1xuICAgIH1cblxuICAgIHZhciBhYnMkMSA9IE1hdGguYWJzO1xuXG4gICAgZnVuY3Rpb24gc2lnbih4KSB7XG4gICAgICAgIHJldHVybiAoKHggPiAwKSAtICh4IDwgMCkpIHx8ICt4O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSVNPU3RyaW5nJDEoKSB7XG4gICAgICAgIC8vIGZvciBJU08gc3RyaW5ncyB3ZSBkbyBub3QgdXNlIHRoZSBub3JtYWwgYnViYmxpbmcgcnVsZXM6XG4gICAgICAgIC8vICAqIG1pbGxpc2Vjb25kcyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgaG91cnNcbiAgICAgICAgLy8gICogZGF5cyBkbyBub3QgYnViYmxlIGF0IGFsbFxuICAgICAgICAvLyAgKiBtb250aHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIHllYXJzXG4gICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZXh0LWZyZWUgY29udmVyc2lvbiBiZXR3ZWVuIGhvdXJzIGFuZCBkYXlzXG4gICAgICAgIC8vICh0aGluayBvZiBjbG9jayBjaGFuZ2VzKVxuICAgICAgICAvLyBhbmQgYWxzbyBub3QgYmV0d2VlbiBkYXlzIGFuZCBtb250aHMgKDI4LTMxIGRheXMgcGVyIG1vbnRoKVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZWNvbmRzID0gYWJzJDEodGhpcy5fbWlsbGlzZWNvbmRzKSAvIDEwMDA7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSBhYnMkMSh0aGlzLl9kYXlzKTtcbiAgICAgICAgdmFyIG1vbnRocyAgICAgICA9IGFicyQxKHRoaXMuX21vbnRocyk7XG4gICAgICAgIHZhciBtaW51dGVzLCBob3VycywgeWVhcnM7XG5cbiAgICAgICAgLy8gMzYwMCBzZWNvbmRzIC0+IDYwIG1pbnV0ZXMgLT4gMSBob3VyXG4gICAgICAgIG1pbnV0ZXMgICAgICAgICAgID0gYWJzRmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICAgICAgaG91cnMgICAgICAgICAgICAgPSBhYnNGbG9vcihtaW51dGVzIC8gNjApO1xuICAgICAgICBzZWNvbmRzICU9IDYwO1xuICAgICAgICBtaW51dGVzICU9IDYwO1xuXG4gICAgICAgIC8vIDEyIG1vbnRocyAtPiAxIHllYXJcbiAgICAgICAgeWVhcnMgID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cblxuICAgICAgICAvLyBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZG9yZGlsbGUvbW9tZW50LWlzb2R1cmF0aW9uL2Jsb2IvbWFzdGVyL21vbWVudC5pc29kdXJhdGlvbi5qc1xuICAgICAgICB2YXIgWSA9IHllYXJzO1xuICAgICAgICB2YXIgTSA9IG1vbnRocztcbiAgICAgICAgdmFyIEQgPSBkYXlzO1xuICAgICAgICB2YXIgaCA9IGhvdXJzO1xuICAgICAgICB2YXIgbSA9IG1pbnV0ZXM7XG4gICAgICAgIHZhciBzID0gc2Vjb25kcyA/IHNlY29uZHMudG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpIDogJyc7XG4gICAgICAgIHZhciB0b3RhbCA9IHRoaXMuYXNTZWNvbmRzKCk7XG5cbiAgICAgICAgaWYgKCF0b3RhbCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgc2FtZSBhcyBDIydzIChOb2RhKSBhbmQgcHl0aG9uIChpc29kYXRlKS4uLlxuICAgICAgICAgICAgLy8gYnV0IG5vdCBvdGhlciBKUyAoZ29vZy5kYXRlKVxuICAgICAgICAgICAgcmV0dXJuICdQMEQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvdGFsU2lnbiA9IHRvdGFsIDwgMCA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgeW1TaWduID0gc2lnbih0aGlzLl9tb250aHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgZGF5c1NpZ24gPSBzaWduKHRoaXMuX2RheXMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuICAgICAgICB2YXIgaG1zU2lnbiA9IHNpZ24odGhpcy5fbWlsbGlzZWNvbmRzKSAhPT0gc2lnbih0b3RhbCkgPyAnLScgOiAnJztcblxuICAgICAgICByZXR1cm4gdG90YWxTaWduICsgJ1AnICtcbiAgICAgICAgICAgIChZID8geW1TaWduICsgWSArICdZJyA6ICcnKSArXG4gICAgICAgICAgICAoTSA/IHltU2lnbiArIE0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKEQgPyBkYXlzU2lnbiArIEQgKyAnRCcgOiAnJykgK1xuICAgICAgICAgICAgKChoIHx8IG0gfHwgcykgPyAnVCcgOiAnJykgK1xuICAgICAgICAgICAgKGggPyBobXNTaWduICsgaCArICdIJyA6ICcnKSArXG4gICAgICAgICAgICAobSA/IGhtc1NpZ24gKyBtICsgJ00nIDogJycpICtcbiAgICAgICAgICAgIChzID8gaG1zU2lnbiArIHMgKyAnUycgOiAnJyk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvJDIgPSBEdXJhdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcm90byQyLmlzVmFsaWQgICAgICAgID0gaXNWYWxpZCQxO1xuICAgIHByb3RvJDIuYWJzICAgICAgICAgICAgPSBhYnM7XG4gICAgcHJvdG8kMi5hZGQgICAgICAgICAgICA9IGFkZCQxO1xuICAgIHByb3RvJDIuc3VidHJhY3QgICAgICAgPSBzdWJ0cmFjdCQxO1xuICAgIHByb3RvJDIuYXMgICAgICAgICAgICAgPSBhcztcbiAgICBwcm90byQyLmFzTWlsbGlzZWNvbmRzID0gYXNNaWxsaXNlY29uZHM7XG4gICAgcHJvdG8kMi5hc1NlY29uZHMgICAgICA9IGFzU2Vjb25kcztcbiAgICBwcm90byQyLmFzTWludXRlcyAgICAgID0gYXNNaW51dGVzO1xuICAgIHByb3RvJDIuYXNIb3VycyAgICAgICAgPSBhc0hvdXJzO1xuICAgIHByb3RvJDIuYXNEYXlzICAgICAgICAgPSBhc0RheXM7XG4gICAgcHJvdG8kMi5hc1dlZWtzICAgICAgICA9IGFzV2Vla3M7XG4gICAgcHJvdG8kMi5hc01vbnRocyAgICAgICA9IGFzTW9udGhzO1xuICAgIHByb3RvJDIuYXNRdWFydGVycyAgICAgPSBhc1F1YXJ0ZXJzO1xuICAgIHByb3RvJDIuYXNZZWFycyAgICAgICAgPSBhc1llYXJzO1xuICAgIHByb3RvJDIudmFsdWVPZiAgICAgICAgPSB2YWx1ZU9mJDE7XG4gICAgcHJvdG8kMi5fYnViYmxlICAgICAgICA9IGJ1YmJsZTtcbiAgICBwcm90byQyLmNsb25lICAgICAgICAgID0gY2xvbmUkMTtcbiAgICBwcm90byQyLmdldCAgICAgICAgICAgID0gZ2V0JDI7XG4gICAgcHJvdG8kMi5taWxsaXNlY29uZHMgICA9IG1pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLnNlY29uZHMgICAgICAgID0gc2Vjb25kcztcbiAgICBwcm90byQyLm1pbnV0ZXMgICAgICAgID0gbWludXRlcztcbiAgICBwcm90byQyLmhvdXJzICAgICAgICAgID0gaG91cnM7XG4gICAgcHJvdG8kMi5kYXlzICAgICAgICAgICA9IGRheXM7XG4gICAgcHJvdG8kMi53ZWVrcyAgICAgICAgICA9IHdlZWtzO1xuICAgIHByb3RvJDIubW9udGhzICAgICAgICAgPSBtb250aHM7XG4gICAgcHJvdG8kMi55ZWFycyAgICAgICAgICA9IHllYXJzO1xuICAgIHByb3RvJDIuaHVtYW5pemUgICAgICAgPSBodW1hbml6ZTtcbiAgICBwcm90byQyLnRvSVNPU3RyaW5nICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvU3RyaW5nICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLnRvSlNPTiAgICAgICAgID0gdG9JU09TdHJpbmckMTtcbiAgICBwcm90byQyLmxvY2FsZSAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvJDIubG9jYWxlRGF0YSAgICAgPSBsb2NhbGVEYXRhO1xuXG4gICAgcHJvdG8kMi50b0lzb1N0cmluZyA9IGRlcHJlY2F0ZSgndG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscyknLCB0b0lTT1N0cmluZyQxKTtcbiAgICBwcm90byQyLmxhbmcgPSBsYW5nO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1gnLCAwLCAwLCAndW5peCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKCd4JywgMCwgMCwgJ3ZhbHVlT2YnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3gnLCBtYXRjaFNpZ25lZCk7XG4gICAgYWRkUmVnZXhUb2tlbignWCcsIG1hdGNoVGltZXN0YW1wKTtcbiAgICBhZGRQYXJzZVRva2VuKCdYJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQsIDEwKSAqIDEwMDApO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ3gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUodG9JbnQoaW5wdXQpKTtcbiAgICB9KTtcblxuICAgIC8vIFNpZGUgZWZmZWN0IGltcG9ydHNcblxuXG4gICAgaG9va3MudmVyc2lvbiA9ICcyLjI0LjAnO1xuXG4gICAgc2V0SG9va0NhbGxiYWNrKGNyZWF0ZUxvY2FsKTtcblxuICAgIGhvb2tzLmZuICAgICAgICAgICAgICAgICAgICA9IHByb3RvO1xuICAgIGhvb2tzLm1pbiAgICAgICAgICAgICAgICAgICA9IG1pbjtcbiAgICBob29rcy5tYXggICAgICAgICAgICAgICAgICAgPSBtYXg7XG4gICAgaG9va3Mubm93ICAgICAgICAgICAgICAgICAgID0gbm93O1xuICAgIGhvb2tzLnV0YyAgICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVUQztcbiAgICBob29rcy51bml4ICAgICAgICAgICAgICAgICAgPSBjcmVhdGVVbml4O1xuICAgIGhvb2tzLm1vbnRocyAgICAgICAgICAgICAgICA9IGxpc3RNb250aHM7XG4gICAgaG9va3MuaXNEYXRlICAgICAgICAgICAgICAgID0gaXNEYXRlO1xuICAgIGhvb2tzLmxvY2FsZSAgICAgICAgICAgICAgICA9IGdldFNldEdsb2JhbExvY2FsZTtcbiAgICBob29rcy5pbnZhbGlkICAgICAgICAgICAgICAgPSBjcmVhdGVJbnZhbGlkO1xuICAgIGhvb2tzLmR1cmF0aW9uICAgICAgICAgICAgICA9IGNyZWF0ZUR1cmF0aW9uO1xuICAgIGhvb2tzLmlzTW9tZW50ICAgICAgICAgICAgICA9IGlzTW9tZW50O1xuICAgIGhvb2tzLndlZWtkYXlzICAgICAgICAgICAgICA9IGxpc3RXZWVrZGF5cztcbiAgICBob29rcy5wYXJzZVpvbmUgICAgICAgICAgICAgPSBjcmVhdGVJblpvbmU7XG4gICAgaG9va3MubG9jYWxlRGF0YSAgICAgICAgICAgID0gZ2V0TG9jYWxlO1xuICAgIGhvb2tzLmlzRHVyYXRpb24gICAgICAgICAgICA9IGlzRHVyYXRpb247XG4gICAgaG9va3MubW9udGhzU2hvcnQgICAgICAgICAgID0gbGlzdE1vbnRoc1Nob3J0O1xuICAgIGhvb2tzLndlZWtkYXlzTWluICAgICAgICAgICA9IGxpc3RXZWVrZGF5c01pbjtcbiAgICBob29rcy5kZWZpbmVMb2NhbGUgICAgICAgICAgPSBkZWZpbmVMb2NhbGU7XG4gICAgaG9va3MudXBkYXRlTG9jYWxlICAgICAgICAgID0gdXBkYXRlTG9jYWxlO1xuICAgIGhvb2tzLmxvY2FsZXMgICAgICAgICAgICAgICA9IGxpc3RMb2NhbGVzO1xuICAgIGhvb2tzLndlZWtkYXlzU2hvcnQgICAgICAgICA9IGxpc3RXZWVrZGF5c1Nob3J0O1xuICAgIGhvb2tzLm5vcm1hbGl6ZVVuaXRzICAgICAgICA9IG5vcm1hbGl6ZVVuaXRzO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVJvdW5kaW5nICA9IGdldFNldFJlbGF0aXZlVGltZVJvdW5kaW5nO1xuICAgIGhvb2tzLnJlbGF0aXZlVGltZVRocmVzaG9sZCA9IGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZDtcbiAgICBob29rcy5jYWxlbmRhckZvcm1hdCAgICAgICAgPSBnZXRDYWxlbmRhckZvcm1hdDtcbiAgICBob29rcy5wcm90b3R5cGUgICAgICAgICAgICAgPSBwcm90bztcblxuICAgIC8vIGN1cnJlbnRseSBIVE1MNSBpbnB1dCB0eXBlIG9ubHkgc3VwcG9ydHMgMjQtaG91ciBmb3JtYXRzXG4gICAgaG9va3MuSFRNTDVfRk1UID0ge1xuICAgICAgICBEQVRFVElNRV9MT0NBTDogJ1lZWVktTU0tRERUSEg6bW0nLCAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfU0VDT05EUzogJ1lZWVktTU0tRERUSEg6bW06c3MnLCAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgREFURVRJTUVfTE9DQUxfTVM6ICdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycsICAgLy8gPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIHN0ZXA9XCIwLjAwMVwiIC8+XG4gICAgICAgIERBVEU6ICdZWVlZLU1NLUREJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIC8+XG4gICAgICAgIFRJTUU6ICdISDptbScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIC8+XG4gICAgICAgIFRJTUVfU0VDT05EUzogJ0hIOm1tOnNzJywgICAgICAgICAgICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwidGltZVwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgVElNRV9NUzogJ0hIOm1tOnNzLlNTUycsICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgV0VFSzogJ0dHR0ctW1ddV1cnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ3ZWVrXCIgLz5cbiAgICAgICAgTU9OVEg6ICdZWVlZLU1NJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJtb250aFwiIC8+XG4gICAgfTtcblxuICAgIHJldHVybiBob29rcztcblxufSkpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyohXG4gKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYzLjQuMVxuICogaHR0cHM6Ly9qcXVlcnkuY29tL1xuICpcbiAqIEluY2x1ZGVzIFNpenpsZS5qc1xuICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vXG4gKlxuICogQ29weXJpZ2h0IEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZVxuICpcbiAqIERhdGU6IDIwMTktMDUtMDFUMjE6MDRaXG4gKi9cbiggZnVuY3Rpb24oIGdsb2JhbCwgZmFjdG9yeSApIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRpZiAoIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcIm9iamVjdFwiICkge1xuXG5cdFx0Ly8gRm9yIENvbW1vbkpTIGFuZCBDb21tb25KUy1saWtlIGVudmlyb25tZW50cyB3aGVyZSBhIHByb3BlciBgd2luZG93YFxuXHRcdC8vIGlzIHByZXNlbnQsIGV4ZWN1dGUgdGhlIGZhY3RvcnkgYW5kIGdldCBqUXVlcnkuXG5cdFx0Ly8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBoYXZlIGEgYHdpbmRvd2Agd2l0aCBhIGBkb2N1bWVudGBcblx0XHQvLyAoc3VjaCBhcyBOb2RlLmpzKSwgZXhwb3NlIGEgZmFjdG9yeSBhcyBtb2R1bGUuZXhwb3J0cy5cblx0XHQvLyBUaGlzIGFjY2VudHVhdGVzIHRoZSBuZWVkIGZvciB0aGUgY3JlYXRpb24gb2YgYSByZWFsIGB3aW5kb3dgLlxuXHRcdC8vIGUuZy4gdmFyIGpRdWVyeSA9IHJlcXVpcmUoXCJqcXVlcnlcIikod2luZG93KTtcblx0XHQvLyBTZWUgdGlja2V0ICMxNDU0OSBmb3IgbW9yZSBpbmZvLlxuXHRcdG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLmRvY3VtZW50ID9cblx0XHRcdGZhY3RvcnkoIGdsb2JhbCwgdHJ1ZSApIDpcblx0XHRcdGZ1bmN0aW9uKCB3ICkge1xuXHRcdFx0XHRpZiAoICF3LmRvY3VtZW50ICkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50XCIgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFjdG9yeSggdyApO1xuXHRcdFx0fTtcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KCBnbG9iYWwgKTtcblx0fVxuXG4vLyBQYXNzIHRoaXMgaWYgd2luZG93IGlzIG5vdCBkZWZpbmVkIHlldFxufSApKCB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDogdGhpcywgZnVuY3Rpb24oIHdpbmRvdywgbm9HbG9iYWwgKSB7XG5cbi8vIEVkZ2UgPD0gMTIgLSAxMyssIEZpcmVmb3ggPD0xOCAtIDQ1KywgSUUgMTAgLSAxMSwgU2FmYXJpIDUuMSAtIDkrLCBpT1MgNiAtIDkuMVxuLy8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIG5vbi1zdHJpY3QgY29kZSAoZS5nLiwgQVNQLk5FVCA0LjUpIGFjY2Vzc2VzIHN0cmljdCBtb2RlXG4vLyBhcmd1bWVudHMuY2FsbGVlLmNhbGxlciAodHJhYy0xMzMzNSkuIEJ1dCBhcyBvZiBqUXVlcnkgMy4wICgyMDE2KSwgc3RyaWN0IG1vZGUgc2hvdWxkIGJlIGNvbW1vblxuLy8gZW5vdWdoIHRoYXQgYWxsIHN1Y2ggYXR0ZW1wdHMgYXJlIGd1YXJkZWQgaW4gYSB0cnkgYmxvY2suXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGFyciA9IFtdO1xuXG52YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxudmFyIHNsaWNlID0gYXJyLnNsaWNlO1xuXG52YXIgY29uY2F0ID0gYXJyLmNvbmNhdDtcblxudmFyIHB1c2ggPSBhcnIucHVzaDtcblxudmFyIGluZGV4T2YgPSBhcnIuaW5kZXhPZjtcblxudmFyIGNsYXNzMnR5cGUgPSB7fTtcblxudmFyIHRvU3RyaW5nID0gY2xhc3MydHlwZS50b1N0cmluZztcblxudmFyIGhhc093biA9IGNsYXNzMnR5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBmblRvU3RyaW5nID0gaGFzT3duLnRvU3RyaW5nO1xuXG52YXIgT2JqZWN0RnVuY3Rpb25TdHJpbmcgPSBmblRvU3RyaW5nLmNhbGwoIE9iamVjdCApO1xuXG52YXIgc3VwcG9ydCA9IHt9O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIGlzRnVuY3Rpb24oIG9iaiApIHtcblxuICAgICAgLy8gU3VwcG9ydDogQ2hyb21lIDw9NTcsIEZpcmVmb3ggPD01MlxuICAgICAgLy8gSW4gc29tZSBicm93c2VycywgdHlwZW9mIHJldHVybnMgXCJmdW5jdGlvblwiIGZvciBIVE1MIDxvYmplY3Q+IGVsZW1lbnRzXG4gICAgICAvLyAoaS5lLiwgYHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcIm9iamVjdFwiICkgPT09IFwiZnVuY3Rpb25cImApLlxuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjbGFzc2lmeSAqYW55KiBET00gbm9kZSBhcyBhIGZ1bmN0aW9uLlxuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9PSBcIm51bWJlclwiO1xuICB9O1xuXG5cbnZhciBpc1dpbmRvdyA9IGZ1bmN0aW9uIGlzV2luZG93KCBvYmogKSB7XG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PT0gb2JqLndpbmRvdztcblx0fTtcblxuXG5cblxuXHR2YXIgcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyA9IHtcblx0XHR0eXBlOiB0cnVlLFxuXHRcdHNyYzogdHJ1ZSxcblx0XHRub25jZTogdHJ1ZSxcblx0XHRub01vZHVsZTogdHJ1ZVxuXHR9O1xuXG5cdGZ1bmN0aW9uIERPTUV2YWwoIGNvZGUsIG5vZGUsIGRvYyApIHtcblx0XHRkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7XG5cblx0XHR2YXIgaSwgdmFsLFxuXHRcdFx0c2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoIFwic2NyaXB0XCIgKTtcblxuXHRcdHNjcmlwdC50ZXh0ID0gY29kZTtcblx0XHRpZiAoIG5vZGUgKSB7XG5cdFx0XHRmb3IgKCBpIGluIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA2NCssIEVkZ2UgMTgrXG5cdFx0XHRcdC8vIFNvbWUgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgXCJub25jZVwiIHByb3BlcnR5IG9uIHNjcmlwdHMuXG5cdFx0XHRcdC8vIE9uIHRoZSBvdGhlciBoYW5kLCBqdXN0IHVzaW5nIGBnZXRBdHRyaWJ1dGVgIGlzIG5vdCBlbm91Z2ggYXNcblx0XHRcdFx0Ly8gdGhlIGBub25jZWAgYXR0cmlidXRlIGlzIHJlc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB3aGVuZXZlciBpdFxuXHRcdFx0XHQvLyBiZWNvbWVzIGJyb3dzaW5nLWNvbnRleHQgY29ubmVjdGVkLlxuXHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy8yMzY5XG5cdFx0XHRcdC8vIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNub25jZS1hdHRyaWJ1dGVzXG5cdFx0XHRcdC8vIFRoZSBgbm9kZS5nZXRBdHRyaWJ1dGVgIGNoZWNrIHdhcyBhZGRlZCBmb3IgdGhlIHNha2Ugb2Zcblx0XHRcdFx0Ly8gYGpRdWVyeS5nbG9iYWxFdmFsYCBzbyB0aGF0IGl0IGNhbiBmYWtlIGEgbm9uY2UtY29udGFpbmluZyBub2RlXG5cdFx0XHRcdC8vIHZpYSBhbiBvYmplY3QuXG5cdFx0XHRcdHZhbCA9IG5vZGVbIGkgXSB8fCBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZSggaSApO1xuXHRcdFx0XHRpZiAoIHZhbCApIHtcblx0XHRcdFx0XHRzY3JpcHQuc2V0QXR0cmlidXRlKCBpLCB2YWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRkb2MuaGVhZC5hcHBlbmRDaGlsZCggc2NyaXB0ICkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc2NyaXB0ICk7XG5cdH1cblxuXG5mdW5jdGlvbiB0b1R5cGUoIG9iaiApIHtcblx0aWYgKCBvYmogPT0gbnVsbCApIHtcblx0XHRyZXR1cm4gb2JqICsgXCJcIjtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD0yLjMgb25seSAoZnVuY3Rpb25pc2ggUmVnRXhwKVxuXHRyZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgP1xuXHRcdGNsYXNzMnR5cGVbIHRvU3RyaW5nLmNhbGwoIG9iaiApIF0gfHwgXCJvYmplY3RcIiA6XG5cdFx0dHlwZW9mIG9iajtcbn1cbi8qIGdsb2JhbCBTeW1ib2wgKi9cbi8vIERlZmluaW5nIHRoaXMgZ2xvYmFsIGluIC5lc2xpbnRyYy5qc29uIHdvdWxkIGNyZWF0ZSBhIGRhbmdlciBvZiB1c2luZyB0aGUgZ2xvYmFsXG4vLyB1bmd1YXJkZWQgaW4gYW5vdGhlciBwbGFjZSwgaXQgc2VlbXMgc2FmZXIgdG8gZGVmaW5lIGdsb2JhbCBvbmx5IGZvciB0aGlzIG1vZHVsZVxuXG5cblxudmFyXG5cdHZlcnNpb24gPSBcIjMuNC4xXCIsXG5cblx0Ly8gRGVmaW5lIGEgbG9jYWwgY29weSBvZiBqUXVlcnlcblx0alF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xuXG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXG5cdFx0Ly8gTmVlZCBpbml0IGlmIGpRdWVyeSBpcyBjYWxsZWQgKGp1c3QgYWxsb3cgZXJyb3IgdG8gYmUgdGhyb3duIGlmIG5vdCBpbmNsdWRlZClcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seVxuXHQvLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1Bcblx0cnRyaW0gPSAvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2c7XG5cbmpRdWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7XG5cblx0Ly8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZFxuXHRqcXVlcnk6IHZlcnNpb24sXG5cblx0Y29uc3RydWN0b3I6IGpRdWVyeSxcblxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcblx0bGVuZ3RoOiAwLFxuXG5cdHRvQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdH0sXG5cblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxuXHQvLyBHZXQgdGhlIHdob2xlIG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheVxuXHRnZXQ6IGZ1bmN0aW9uKCBudW0gKSB7XG5cblx0XHQvLyBSZXR1cm4gYWxsIHRoZSBlbGVtZW50cyBpbiBhIGNsZWFuIGFycmF5XG5cdFx0aWYgKCBudW0gPT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBzbGljZS5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9uZSBlbGVtZW50IGZyb20gdGhlIHNldFxuXHRcdHJldHVybiBudW0gPCAwID8gdGhpc1sgbnVtICsgdGhpcy5sZW5ndGggXSA6IHRoaXNbIG51bSBdO1xuXHR9LFxuXG5cdC8vIFRha2UgYW4gYXJyYXkgb2YgZWxlbWVudHMgYW5kIHB1c2ggaXQgb250byB0aGUgc3RhY2tcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXG5cdHB1c2hTdGFjazogZnVuY3Rpb24oIGVsZW1zICkge1xuXG5cdFx0Ly8gQnVpbGQgYSBuZXcgalF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXRcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XG5cblx0XHQvLyBBZGQgdGhlIG9sZCBvYmplY3Qgb250byB0aGUgc3RhY2sgKGFzIGEgcmVmZXJlbmNlKVxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcblxuXHRcdC8vIFJldHVybiB0aGUgbmV3bHktZm9ybWVkIGVsZW1lbnQgc2V0XG5cdFx0cmV0dXJuIHJldDtcblx0fSxcblxuXHQvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuXHRlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5lYWNoKCB0aGlzLCBjYWxsYmFjayApO1xuXHR9LFxuXG5cdG1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1hcCggdGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApO1xuXHRcdH0gKSApO1xuXHR9LFxuXG5cdHNsaWNlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHNsaWNlLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSApO1xuXHR9LFxuXG5cdGZpcnN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggMCApO1xuXHR9LFxuXG5cdGxhc3Q6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmVxKCAtMSApO1xuXHR9LFxuXG5cdGVxOiBmdW5jdGlvbiggaSApIHtcblx0XHR2YXIgbGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRqID0gK2kgKyAoIGkgPCAwID8gbGVuIDogMCApO1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggaiA+PSAwICYmIGogPCBsZW4gPyBbIHRoaXNbIGogXSBdIDogW10gKTtcblx0fSxcblxuXHRlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcigpO1xuXHR9LFxuXG5cdC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXG5cdHB1c2g6IHB1c2gsXG5cdHNvcnQ6IGFyci5zb3J0LFxuXHRzcGxpY2U6IGFyci5zcGxpY2Vcbn07XG5cbmpRdWVyeS5leHRlbmQgPSBqUXVlcnkuZm4uZXh0ZW5kID0gZnVuY3Rpb24oKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZSxcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSxcblx0XHRpID0gMSxcblx0XHRsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuXHRcdGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICggdHlwZW9mIHRhcmdldCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0ZGVlcCA9IHRhcmdldDtcblxuXHRcdC8vIFNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbIGkgXSB8fCB7fTtcblx0XHRpKys7XG5cdH1cblxuXHQvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSlcblx0aWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSBcIm9iamVjdFwiICYmICFpc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHtcblx0XHR0YXJnZXQgPSB7fTtcblx0fVxuXG5cdC8vIEV4dGVuZCBqUXVlcnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZFxuXHRpZiAoIGkgPT09IGxlbmd0aCApIHtcblx0XHR0YXJnZXQgPSB0aGlzO1xuXHRcdGktLTtcblx0fVxuXG5cdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmICggKCBvcHRpb25zID0gYXJndW1lbnRzWyBpIF0gKSAhPSBudWxsICkge1xuXG5cdFx0XHQvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRcdGNvcHkgPSBvcHRpb25zWyBuYW1lIF07XG5cblx0XHRcdFx0Ly8gUHJldmVudCBPYmplY3QucHJvdG90eXBlIHBvbGx1dGlvblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggbmFtZSA9PT0gXCJfX3Byb3RvX19cIiB8fCB0YXJnZXQgPT09IGNvcHkgKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0aWYgKCBkZWVwICYmIGNvcHkgJiYgKCBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29weSApIHx8XG5cdFx0XHRcdFx0KCBjb3B5SXNBcnJheSA9IEFycmF5LmlzQXJyYXkoIGNvcHkgKSApICkgKSB7XG5cdFx0XHRcdFx0c3JjID0gdGFyZ2V0WyBuYW1lIF07XG5cblx0XHRcdFx0XHQvLyBFbnN1cmUgcHJvcGVyIHR5cGUgZm9yIHRoZSBzb3VyY2UgdmFsdWVcblx0XHRcdFx0XHRpZiAoIGNvcHlJc0FycmF5ICYmICFBcnJheS5pc0FycmF5KCBzcmMgKSApIHtcblx0XHRcdFx0XHRcdGNsb25lID0gW107XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggIWNvcHlJc0FycmF5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggc3JjICkgKSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHt9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblx0XHR2YXIgbmFtZTtcblxuXHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxuXHRnbG9iYWxFdmFsOiBmdW5jdGlvbiggY29kZSwgb3B0aW9ucyApIHtcblx0XHRET01FdmFsKCBjb2RlLCB7IG5vbmNlOiBvcHRpb25zICYmIG9wdGlvbnMubm9uY2UgfSApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy40XG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcbiAqIGh0dHBzOi8vanMuZm91bmRhdGlvbi9cbiAqXG4gKiBEYXRlOiAyMDE5LTA0LTA4XG4gKi9cbihmdW5jdGlvbiggd2luZG93ICkge1xuXG52YXIgaSxcblx0c3VwcG9ydCxcblx0RXhwcixcblx0Z2V0VGV4dCxcblx0aXNYTUwsXG5cdHRva2VuaXplLFxuXHRjb21waWxlLFxuXHRzZWxlY3QsXG5cdG91dGVybW9zdENvbnRleHQsXG5cdHNvcnRJbnB1dCxcblx0aGFzRHVwbGljYXRlLFxuXG5cdC8vIExvY2FsIGRvY3VtZW50IHZhcnNcblx0c2V0RG9jdW1lbnQsXG5cdGRvY3VtZW50LFxuXHRkb2NFbGVtLFxuXHRkb2N1bWVudElzSFRNTCxcblx0cmJ1Z2d5UVNBLFxuXHRyYnVnZ3lNYXRjaGVzLFxuXHRtYXRjaGVzLFxuXHRjb250YWlucyxcblxuXHQvLyBJbnN0YW5jZS1zcGVjaWZpYyBkYXRhXG5cdGV4cGFuZG8gPSBcInNpenpsZVwiICsgMSAqIG5ldyBEYXRlKCksXG5cdHByZWZlcnJlZERvYyA9IHdpbmRvdy5kb2N1bWVudCxcblx0ZGlycnVucyA9IDAsXG5cdGRvbmUgPSAwLFxuXHRjbGFzc0NhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0dG9rZW5DYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRub25uYXRpdmVTZWxlY3RvckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXDAtXFxcXHhhMF0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXHRyZGVzY2VuZCA9IG5ldyBSZWdFeHAoIHdoaXRlc3BhY2UgKyBcInw+XCIgKSxcblxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxuXHRyaWRlbnRpZmllciA9IG5ldyBSZWdFeHAoIFwiXlwiICsgaWRlbnRpZmllciArIFwiJFwiICksXG5cblx0bWF0Y2hFeHByID0ge1xuXHRcdFwiSURcIjogbmV3IFJlZ0V4cCggXCJeIyhcIiArIGlkZW50aWZpZXIgKyBcIilcIiApLFxuXHRcdFwiQ0xBU1NcIjogbmV3IFJlZ0V4cCggXCJeXFxcXC4oXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBpZGVudGlmaWVyICsgXCJ8WypdKVwiICksXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxuXHRcdFwiUFNFVURPXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgcHNldWRvcyApLFxuXHRcdFwiQ0hJTERcIjogbmV3IFJlZ0V4cCggXCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXFxcKFwiICsgd2hpdGVzcGFjZSArXG5cdFx0XHRcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiICsgd2hpdGVzcGFjZSArIFwiKig/OihbKy1dfClcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKFxcXFxkKyl8KSlcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpXCIsIFwiaVwiICksXG5cdFx0XCJib29sXCI6IG5ldyBSZWdFeHAoIFwiXig/OlwiICsgYm9vbGVhbnMgKyBcIikkXCIsIFwiaVwiICksXG5cdFx0Ly8gRm9yIHVzZSBpbiBsaWJyYXJpZXMgaW1wbGVtZW50aW5nIC5pcygpXG5cdFx0Ly8gV2UgdXNlIHRoaXMgZm9yIFBPUyBtYXRjaGluZyBpbiBgc2VsZWN0YFxuXHRcdFwibmVlZHNDb250ZXh0XCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIiArXG5cdFx0XHR3aGl0ZXNwYWNlICsgXCIqKCg/Oi1cXFxcZCk/XFxcXGQqKVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFwpfCkoPz1bXi1dfCQpXCIsIFwiaVwiIClcblx0fSxcblxuXHRyaHRtbCA9IC9IVE1MJC9pLFxuXHRyaW5wdXRzID0gL14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxcblx0cmhlYWRlciA9IC9eaFxcZCQvaSxcblxuXHRybmF0aXZlID0gL15bXntdK1xce1xccypcXFtuYXRpdmUgXFx3LyxcblxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcblx0cnF1aWNrRXhwciA9IC9eKD86IyhbXFx3LV0rKXwoXFx3Kyl8XFwuKFtcXHctXSspKSQvLFxuXG5cdHJzaWJsaW5nID0gL1srfl0vLFxuXG5cdC8vIENTUyBlc2NhcGVzXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNlc2NhcGVkLWNoYXJhY3RlcnNcblx0cnVuZXNjYXBlID0gbmV3IFJlZ0V4cCggXCJcXFxcXFxcXChbXFxcXGRhLWZdezEsNn1cIiArIHdoaXRlc3BhY2UgKyBcIj98KFwiICsgd2hpdGVzcGFjZSArIFwiKXwuKVwiLCBcImlnXCIgKSxcblx0ZnVuZXNjYXBlID0gZnVuY3Rpb24oIF8sIGVzY2FwZWQsIGVzY2FwZWRXaGl0ZXNwYWNlICkge1xuXHRcdHZhciBoaWdoID0gXCIweFwiICsgZXNjYXBlZCAtIDB4MTAwMDA7XG5cdFx0Ly8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnRcblx0XHQvLyBTdXBwb3J0OiBGaXJlZm94PDI0XG5cdFx0Ly8gV29ya2Fyb3VuZCBlcnJvbmVvdXMgbnVtZXJpYyBpbnRlcnByZXRhdGlvbiBvZiArXCIweFwiXG5cdFx0cmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2UgP1xuXHRcdFx0ZXNjYXBlZCA6XG5cdFx0XHRoaWdoIDwgMCA/XG5cdFx0XHRcdC8vIEJNUCBjb2RlcG9pbnRcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCArIDB4MTAwMDAgKSA6XG5cdFx0XHRcdC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKVxuXHRcdFx0XHRTdHJpbmcuZnJvbUNoYXJDb2RlKCBoaWdoID4+IDEwIHwgMHhEODAwLCBoaWdoICYgMHgzRkYgfCAweERDMDAgKTtcblx0fSxcblxuXHQvLyBDU1Mgc3RyaW5nL2lkZW50aWZpZXIgc2VyaWFsaXphdGlvblxuXHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXNcblx0cmNzc2VzY2FwZSA9IC8oW1xcMC1cXHgxZlxceDdmXXxeLT9cXGQpfF4tJHxbXlxcMC1cXHgxZlxceDdmLVxcdUZGRkZcXHctXS9nLFxuXHRmY3NzZXNjYXBlID0gZnVuY3Rpb24oIGNoLCBhc0NvZGVQb2ludCApIHtcblx0XHRpZiAoIGFzQ29kZVBvaW50ICkge1xuXG5cdFx0XHQvLyBVKzAwMDAgTlVMTCBiZWNvbWVzIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVJcblx0XHRcdGlmICggY2ggPT09IFwiXFwwXCIgKSB7XG5cdFx0XHRcdHJldHVybiBcIlxcdUZGRkRcIjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udHJvbCBjaGFyYWN0ZXJzIGFuZCAoZGVwZW5kZW50IHVwb24gcG9zaXRpb24pIG51bWJlcnMgZ2V0IGVzY2FwZWQgYXMgY29kZSBwb2ludHNcblx0XHRcdHJldHVybiBjaC5zbGljZSggMCwgLTEgKSArIFwiXFxcXFwiICsgY2guY2hhckNvZGVBdCggY2gubGVuZ3RoIC0gMSApLnRvU3RyaW5nKCAxNiApICsgXCIgXCI7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXIgcG90ZW50aWFsbHktc3BlY2lhbCBBU0NJSSBjaGFyYWN0ZXJzIGdldCBiYWNrc2xhc2gtZXNjYXBlZFxuXHRcdHJldHVybiBcIlxcXFxcIiArIGNoO1xuXHR9LFxuXG5cdC8vIFVzZWQgZm9yIGlmcmFtZXNcblx0Ly8gU2VlIHNldERvY3VtZW50KClcblx0Ly8gUmVtb3ZpbmcgdGhlIGZ1bmN0aW9uIHdyYXBwZXIgY2F1c2VzIGEgXCJQZXJtaXNzaW9uIERlbmllZFwiXG5cdC8vIGVycm9yIGluIElFXG5cdHVubG9hZEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcblx0XHRzZXREb2N1bWVudCgpO1xuXHR9LFxuXG5cdGluRGlzYWJsZWRGaWVsZHNldCA9IGFkZENvbWJpbmF0b3IoXG5cdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZmllbGRzZXRcIjtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhbm9ubmF0aXZlU2VsZWN0b3JDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA4IG9ubHlcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0KG5vZGVUeXBlICE9PSAxIHx8IGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJvYmplY3RcIikgKSB7XG5cblx0XHRcdFx0bmV3U2VsZWN0b3IgPSBzZWxlY3Rvcjtcblx0XHRcdFx0bmV3Q29udGV4dCA9IGNvbnRleHQ7XG5cblx0XHRcdFx0Ly8gcVNBIGNvbnNpZGVycyBlbGVtZW50cyBvdXRzaWRlIGEgc2NvcGluZyByb290IHdoZW4gZXZhbHVhdGluZyBjaGlsZCBvclxuXHRcdFx0XHQvLyBkZXNjZW5kYW50IGNvbWJpbmF0b3JzLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LlxuXHRcdFx0XHQvLyBJbiBzdWNoIGNhc2VzLCB3ZSB3b3JrIGFyb3VuZCB0aGUgYmVoYXZpb3IgYnkgcHJlZml4aW5nIGV2ZXJ5IHNlbGVjdG9yIGluIHRoZVxuXHRcdFx0XHQvLyBsaXN0IHdpdGggYW4gSUQgc2VsZWN0b3IgcmVmZXJlbmNpbmcgdGhlIHNjb3BlIGNvbnRleHQuXG5cdFx0XHRcdC8vIFRoYW5rcyB0byBBbmRyZXcgRHVwb250IGZvciB0aGlzIHRlY2huaXF1ZS5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gMSAmJiByZGVzY2VuZC50ZXN0KCBzZWxlY3RvciApICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbaV0gPSBcIiNcIiArIG5pZCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsXG5cdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0bm9ubmF0aXZlU2VsZWN0b3JDYWNoZSggc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRpZiAoIG5pZCA9PT0gZXhwYW5kbyApIHtcblx0XHRcdFx0XHRcdGNvbnRleHQucmVtb3ZlQXR0cmlidXRlKCBcImlkXCIgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBbGwgb3RoZXJzXG5cdHJldHVybiBzZWxlY3QoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xufVxuXG4vKipcbiAqIENyZWF0ZSBrZXktdmFsdWUgY2FjaGVzIG9mIGxpbWl0ZWQgc2l6ZVxuICogQHJldHVybnMge2Z1bmN0aW9uKHN0cmluZywgb2JqZWN0KX0gUmV0dXJucyB0aGUgT2JqZWN0IGRhdGEgYWZ0ZXIgc3RvcmluZyBpdCBvbiBpdHNlbGYgd2l0aFxuICpcdHByb3BlcnR5IG5hbWUgdGhlIChzcGFjZS1zdWZmaXhlZCkgc3RyaW5nIGFuZCAoaWYgdGhlIGNhY2hlIGlzIGxhcmdlciB0aGFuIEV4cHIuY2FjaGVMZW5ndGgpXG4gKlx0ZGVsZXRpbmcgdGhlIG9sZGVzdCBlbnRyeVxuICovXG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcblx0dmFyIGtleXMgPSBbXTtcblxuXHRmdW5jdGlvbiBjYWNoZSgga2V5LCB2YWx1ZSApIHtcblx0XHQvLyBVc2UgKGtleSArIFwiIFwiKSB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCBuYXRpdmUgcHJvdG90eXBlIHByb3BlcnRpZXMgKHNlZSBJc3N1ZSAjMTU3KVxuXHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKyBcIiBcIiApID4gRXhwci5jYWNoZUxlbmd0aCApIHtcblx0XHRcdC8vIE9ubHkga2VlcCB0aGUgbW9zdCByZWNlbnQgZW50cmllc1xuXHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcblx0XHR9XG5cdFx0cmV0dXJuIChjYWNoZVsga2V5ICsgXCIgXCIgXSA9IHZhbHVlKTtcblx0fVxuXHRyZXR1cm4gY2FjaGU7XG59XG5cbi8qKlxuICogTWFyayBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBtYXJrXG4gKi9cbmZ1bmN0aW9uIG1hcmtGdW5jdGlvbiggZm4gKSB7XG5cdGZuWyBleHBhbmRvIF0gPSB0cnVlO1xuXHRyZXR1cm4gZm47XG59XG5cbi8qKlxuICogU3VwcG9ydCB0ZXN0aW5nIHVzaW5nIGFuIGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFBhc3NlZCB0aGUgY3JlYXRlZCBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHRcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KCBmbiApIHtcblx0dmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpO1xuXG5cdHRyeSB7XG5cdFx0cmV0dXJuICEhZm4oIGVsICk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0Ly8gUmVtb3ZlIGZyb20gaXRzIHBhcmVudCBieSBkZWZhdWx0XG5cdFx0aWYgKCBlbC5wYXJlbnROb2RlICkge1xuXHRcdFx0ZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWwgKTtcblx0XHR9XG5cdFx0Ly8gcmVsZWFzZSBtZW1vcnkgaW4gSUVcblx0XHRlbCA9IG51bGw7XG5cdH1cbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBzYW1lIGhhbmRsZXIgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGF0dHJzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXR0cnMgUGlwZS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIGFwcGxpZWRcbiAqL1xuZnVuY3Rpb24gYWRkSGFuZGxlKCBhdHRycywgaGFuZGxlciApIHtcblx0dmFyIGFyciA9IGF0dHJzLnNwbGl0KFwifFwiKSxcblx0XHRpID0gYXJyLmxlbmd0aDtcblxuXHR3aGlsZSAoIGktLSApIHtcblx0XHRFeHByLmF0dHJIYW5kbGVbIGFycltpXSBdID0gaGFuZGxlcjtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrcyBkb2N1bWVudCBvcmRlciBvZiB0d28gc2libGluZ3NcbiAqIEBwYXJhbSB7RWxlbWVudH0gYVxuICogQHBhcmFtIHtFbGVtZW50fSBiXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBSZXR1cm5zIGxlc3MgdGhhbiAwIGlmIGEgcHJlY2VkZXMgYiwgZ3JlYXRlciB0aGFuIDAgaWYgYSBmb2xsb3dzIGJcbiAqL1xuZnVuY3Rpb24gc2libGluZ0NoZWNrKCBhLCBiICkge1xuXHR2YXIgY3VyID0gYiAmJiBhLFxuXHRcdGRpZmYgPSBjdXIgJiYgYS5ub2RlVHlwZSA9PT0gMSAmJiBiLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRhLnNvdXJjZUluZGV4IC0gYi5zb3VyY2VJbmRleDtcblxuXHQvLyBVc2UgSUUgc291cmNlSW5kZXggaWYgYXZhaWxhYmxlIG9uIGJvdGggbm9kZXNcblx0aWYgKCBkaWZmICkge1xuXHRcdHJldHVybiBkaWZmO1xuXHR9XG5cblx0Ly8gQ2hlY2sgaWYgYiBmb2xsb3dzIGFcblx0aWYgKCBjdXIgKSB7XG5cdFx0d2hpbGUgKCAoY3VyID0gY3VyLm5leHRTaWJsaW5nKSApIHtcblx0XHRcdGlmICggY3VyID09PSBiICkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGEgPyAxIDogLTE7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5wdXRQc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gbmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIGJ1dHRvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvblBzZXVkbyggdHlwZSApIHtcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdHJldHVybiAobmFtZSA9PT0gXCJpbnB1dFwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCIpICYmIGVsZW0udHlwZSA9PT0gdHlwZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIDplbmFibGVkLzpkaXNhYmxlZFxuICogQHBhcmFtIHtCb29sZWFufSBkaXNhYmxlZCB0cnVlIGZvciA6ZGlzYWJsZWQ7IGZhbHNlIGZvciA6ZW5hYmxlZFxuICovXG5mdW5jdGlvbiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZGlzYWJsZWQgKSB7XG5cblx0Ly8gS25vd24gOmRpc2FibGVkIGZhbHNlIHBvc2l0aXZlczogZmllbGRzZXRbZGlzYWJsZWRdID4gbGVnZW5kOm50aC1vZi10eXBlKG4rMikgOmNhbi1kaXNhYmxlXG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIE9ubHkgY2VydGFpbiBlbGVtZW50cyBjYW4gbWF0Y2ggOmVuYWJsZWQgb3IgOmRpc2FibGVkXG5cdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjc2VsZWN0b3ItZW5hYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWRpc2FibGVkXG5cdFx0aWYgKCBcImZvcm1cIiBpbiBlbGVtICkge1xuXG5cdFx0XHQvLyBDaGVjayBmb3IgaW5oZXJpdGVkIGRpc2FibGVkbmVzcyBvbiByZWxldmFudCBub24tZGlzYWJsZWQgZWxlbWVudHM6XG5cdFx0XHQvLyAqIGxpc3RlZCBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMgaW4gYSBkaXNhYmxlZCBmaWVsZHNldFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NhdGVnb3J5LWxpc3RlZFxuXHRcdFx0Ly8gICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3Jtcy5odG1sI2NvbmNlcHQtZmUtZGlzYWJsZWRcblx0XHRcdC8vICogb3B0aW9uIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LW9wdGlvbi1kaXNhYmxlZFxuXHRcdFx0Ly8gQWxsIHN1Y2ggZWxlbWVudHMgaGF2ZSBhIFwiZm9ybVwiIHByb3BlcnR5LlxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgJiYgZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0Ly8gT3B0aW9uIGVsZW1lbnRzIGRlZmVyIHRvIGEgcGFyZW50IG9wdGdyb3VwIGlmIHByZXNlbnRcblx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdFx0XHRpZiAoIFwibGFiZWxcIiBpbiBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbS5wYXJlbnROb2RlLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZGlzYWJsZWQgPT09IGRpc2FibGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDYgLSAxMVxuXHRcdFx0XHQvLyBVc2UgdGhlIGlzRGlzYWJsZWQgc2hvcnRjdXQgcHJvcGVydHkgdG8gY2hlY2sgZm9yIGRpc2FibGVkIGZpZWxkc2V0IGFuY2VzdG9yc1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pc0Rpc2FibGVkID09PSBkaXNhYmxlZCB8fFxuXG5cdFx0XHRcdFx0Ly8gV2hlcmUgdGhlcmUgaXMgbm8gaXNEaXNhYmxlZCwgY2hlY2sgbWFudWFsbHlcblx0XHRcdFx0XHQvKiBqc2hpbnQgLVcwMTggKi9cblx0XHRcdFx0XHRlbGVtLmlzRGlzYWJsZWQgIT09ICFkaXNhYmxlZCAmJlxuXHRcdFx0XHRcdFx0aW5EaXNhYmxlZEZpZWxkc2V0KCBlbGVtICkgPT09IGRpc2FibGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cblx0XHQvLyBUcnkgdG8gd2lubm93IG91dCBlbGVtZW50cyB0aGF0IGNhbid0IGJlIGRpc2FibGVkIGJlZm9yZSB0cnVzdGluZyB0aGUgZGlzYWJsZWQgcHJvcGVydHkuXG5cdFx0Ly8gU29tZSB2aWN0aW1zIGdldCBjYXVnaHQgaW4gb3VyIG5ldCAobGFiZWwsIGxlZ2VuZCwgbWVudSwgdHJhY2spLCBidXQgaXQgc2hvdWxkbid0XG5cdFx0Ly8gZXZlbiBleGlzdCBvbiB0aGVtLCBsZXQgYWxvbmUgaGF2ZSBhIGJvb2xlYW4gdmFsdWUuXG5cdFx0fSBlbHNlIGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gUmVtYWluaW5nIGVsZW1lbnRzIGFyZSBuZWl0aGVyIDplbmFibGVkIG5vciA6ZGlzYWJsZWRcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBwb3NpdGlvbmFsc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUG9zaXRpb25hbFBzZXVkbyggZm4gKSB7XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIGFyZ3VtZW50ICkge1xuXHRcdGFyZ3VtZW50ID0gK2FyZ3VtZW50O1xuXHRcdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHR2YXIgaixcblx0XHRcdFx0bWF0Y2hJbmRleGVzID0gZm4oIFtdLCBzZWVkLmxlbmd0aCwgYXJndW1lbnQgKSxcblx0XHRcdFx0aSA9IG1hdGNoSW5kZXhlcy5sZW5ndGg7XG5cblx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhlc1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggc2VlZFsgKGogPSBtYXRjaEluZGV4ZXNbaV0pIF0gKSB7XG5cdFx0XHRcdFx0c2VlZFtqXSA9ICEobWF0Y2hlc1tqXSA9IHNlZWRbal0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBhIG5vZGUgZm9yIHZhbGlkaXR5IGFzIGEgU2l6emxlIGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxPYmplY3Q9fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7RWxlbWVudHxPYmplY3R8Qm9vbGVhbn0gVGhlIGlucHV0IG5vZGUgaWYgYWNjZXB0YWJsZSwgb3RoZXJ3aXNlIGEgZmFsc3kgdmFsdWVcbiAqL1xuZnVuY3Rpb24gdGVzdENvbnRleHQoIGNvbnRleHQgKSB7XG5cdHJldHVybiBjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICYmIGNvbnRleHQ7XG59XG5cbi8vIEV4cG9zZSBzdXBwb3J0IHZhcnMgZm9yIGNvbnZlbmllbmNlXG5zdXBwb3J0ID0gU2l6emxlLnN1cHBvcnQgPSB7fTtcblxuLyoqXG4gKiBEZXRlY3RzIFhNTCBub2Rlc1xuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdH0gZWxlbSBBbiBlbGVtZW50IG9yIGEgZG9jdW1lbnRcbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmZiBlbGVtIGlzIGEgbm9uLUhUTUwgWE1MIG5vZGVcbiAqL1xuaXNYTUwgPSBTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0dmFyIG5hbWVzcGFjZSA9IGVsZW0ubmFtZXNwYWNlVVJJLFxuXHRcdGRvY0VsZW0gPSAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PThcblx0Ly8gQXNzdW1lIEhUTUwgd2hlbiBkb2N1bWVudEVsZW1lbnQgZG9lc24ndCB5ZXQgZXhpc3QsIHN1Y2ggYXMgaW5zaWRlIGxvYWRpbmcgaWZyYW1lc1xuXHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvNDgzM1xuXHRyZXR1cm4gIXJodG1sLnRlc3QoIG5hbWVzcGFjZSB8fCBkb2NFbGVtICYmIGRvY0VsZW0ubm9kZU5hbWUgfHwgXCJIVE1MXCIgKTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0aWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmXG5cdFx0KHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKTtcblx0fSk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIlwiKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmRpc2FibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIik7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaChcIiwuKjpcIik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0aWYgKCBzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciAmJiBkb2N1bWVudElzSFRNTCAmJlxuXHRcdCFub25uYXRpdmVTZWxlY3RvckNhY2hlWyBleHByICsgXCIgXCIgXSAmJlxuXHRcdCggIXJidWdneU1hdGNoZXMgfHwgIXJidWdneU1hdGNoZXMudGVzdCggZXhwciApICkgJiZcblx0XHQoICFyYnVnZ3lRU0EgICAgIHx8ICFyYnVnZ3lRU0EudGVzdCggZXhwciApICkgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xuXG5cdFx0XHQvLyBJRSA5J3MgbWF0Y2hlc1NlbGVjdG9yIHJldHVybnMgZmFsc2Ugb24gZGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0XHRpZiAoIHJldCB8fCBzdXBwb3J0LmRpc2Nvbm5lY3RlZE1hdGNoIHx8XG5cdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcblx0XHRcdFx0XHQvLyBmcmFnbWVudCBpbiBJRSA5XG5cdFx0XHRcdFx0ZWxlbS5kb2N1bWVudCAmJiBlbGVtLmRvY3VtZW50Lm5vZGVUeXBlICE9PSAxMSApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRub25uYXRpdmVTZWxlY3RvckNhY2hlKCBleHByLCB0cnVlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIFNpenpsZSggZXhwciwgZG9jdW1lbnQsIG51bGwsIFsgZWxlbSBdICkubGVuZ3RoID4gMDtcbn07XG5cblNpenpsZS5jb250YWlucyA9IGZ1bmN0aW9uKCBjb250ZXh0LCBlbGVtICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0ICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdH1cblx0cmV0dXJuIGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICk7XG59O1xuXG5TaXp6bGUuYXR0ciA9IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHQvLyBTZXQgZG9jdW1lbnQgdmFycyBpZiBuZWVkZWRcblx0aWYgKCAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBlbGVtICkgIT09IGRvY3VtZW50ICkge1xuXHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdH1cblxuXHR2YXIgZm4gPSBFeHByLmF0dHJIYW5kbGVbIG5hbWUudG9Mb3dlckNhc2UoKSBdLFxuXHRcdC8vIERvbid0IGdldCBmb29sZWQgYnkgT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzIChqUXVlcnkgIzEzODA3KVxuXHRcdHZhbCA9IGZuICYmIGhhc093bi5jYWxsKCBFeHByLmF0dHJIYW5kbGUsIG5hbWUudG9Mb3dlckNhc2UoKSApID9cblx0XHRcdGZuKCBlbGVtLCBuYW1lLCAhZG9jdW1lbnRJc0hUTUwgKSA6XG5cdFx0XHR1bmRlZmluZWQ7XG5cblx0cmV0dXJuIHZhbCAhPT0gdW5kZWZpbmVkID9cblx0XHR2YWwgOlxuXHRcdHN1cHBvcnQuYXR0cmlidXRlcyB8fCAhZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSA6XG5cdFx0XHQodmFsID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcbn07XG5cblNpenpsZS5lc2NhcGUgPSBmdW5jdGlvbiggc2VsICkge1xuXHRyZXR1cm4gKHNlbCArIFwiXCIpLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcbn07XG5cblNpenpsZS5lcnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdHRocm93IG5ldyBFcnJvciggXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIiArIG1zZyApO1xufTtcblxuLyoqXG4gKiBEb2N1bWVudCBzb3J0aW5nIGFuZCByZW1vdmluZyBkdXBsaWNhdGVzXG4gKiBAcGFyYW0ge0FycmF5TGlrZX0gcmVzdWx0c1xuICovXG5TaXp6bGUudW5pcXVlU29ydCA9IGZ1bmN0aW9uKCByZXN1bHRzICkge1xuXHR2YXIgZWxlbSxcblx0XHRkdXBsaWNhdGVzID0gW10sXG5cdFx0aiA9IDAsXG5cdFx0aSA9IDA7XG5cblx0Ly8gVW5sZXNzIHdlICprbm93KiB3ZSBjYW4gZGV0ZWN0IGR1cGxpY2F0ZXMsIGFzc3VtZSB0aGVpciBwcmVzZW5jZVxuXHRoYXNEdXBsaWNhdGUgPSAhc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzO1xuXHRzb3J0SW5wdXQgPSAhc3VwcG9ydC5zb3J0U3RhYmxlICYmIHJlc3VsdHMuc2xpY2UoIDAgKTtcblx0cmVzdWx0cy5zb3J0KCBzb3J0T3JkZXIgKTtcblxuXHRpZiAoIGhhc0R1cGxpY2F0ZSApIHtcblx0XHR3aGlsZSAoIChlbGVtID0gcmVzdWx0c1tpKytdKSApIHtcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSBdICkge1xuXHRcdFx0XHRqID0gZHVwbGljYXRlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHdoaWxlICggai0tICkge1xuXHRcdFx0cmVzdWx0cy5zcGxpY2UoIGR1cGxpY2F0ZXNbIGogXSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENsZWFyIGlucHV0IGFmdGVyIHNvcnRpbmcgdG8gcmVsZWFzZSBvYmplY3RzXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9wdWxsLzIyNVxuXHRzb3J0SW5wdXQgPSBudWxsO1xuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciByZXRyaWV2aW5nIHRoZSB0ZXh0IHZhbHVlIG9mIGFuIGFycmF5IG9mIERPTSBub2Rlc1xuICogQHBhcmFtIHtBcnJheXxFbGVtZW50fSBlbGVtXG4gKi9cbmdldFRleHQgPSBTaXp6bGUuZ2V0VGV4dCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHR2YXIgbm9kZSxcblx0XHRyZXQgPSBcIlwiLFxuXHRcdGkgPSAwLFxuXHRcdG5vZGVUeXBlID0gZWxlbS5ub2RlVHlwZTtcblxuXHRpZiAoICFub2RlVHlwZSApIHtcblx0XHQvLyBJZiBubyBub2RlVHlwZSwgdGhpcyBpcyBleHBlY3RlZCB0byBiZSBhbiBhcnJheVxuXHRcdHdoaWxlICggKG5vZGUgPSBlbGVtW2krK10pICkge1xuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcblx0XHRcdHJldCArPSBnZXRUZXh0KCBub2RlICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMSB8fCBub2RlVHlwZSA9PT0gOSB8fCBub2RlVHlwZSA9PT0gMTEgKSB7XG5cdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xuXHRcdC8vIGlubmVyVGV4dCB1c2FnZSByZW1vdmVkIGZvciBjb25zaXN0ZW5jeSBvZiBuZXcgbGluZXMgKGpRdWVyeSAjMTExNTMpXG5cdFx0aWYgKCB0eXBlb2YgZWxlbS50ZXh0Q29udGVudCA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBUcmF2ZXJzZSBpdHMgY2hpbGRyZW5cblx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xuXHRcdFx0XHRyZXQgKz0gZ2V0VGV4dCggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmICggbm9kZVR5cGUgPT09IDMgfHwgbm9kZVR5cGUgPT09IDQgKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVZhbHVlO1xuXHR9XG5cdC8vIERvIG5vdCBpbmNsdWRlIGNvbW1lbnQgb3IgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rlc1xuXG5cdHJldHVybiByZXQ7XG59O1xuXG5FeHByID0gU2l6emxlLnNlbGVjdG9ycyA9IHtcblxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcblx0Y2FjaGVMZW5ndGg6IDUwLFxuXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxuXG5cdG1hdGNoOiBtYXRjaEV4cHIsXG5cblx0YXR0ckhhbmRsZToge30sXG5cblx0ZmluZDoge30sXG5cblx0cmVsYXRpdmU6IHtcblx0XHRcIj5cIjogeyBkaXI6IFwicGFyZW50Tm9kZVwiLCBmaXJzdDogdHJ1ZSB9LFxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcblx0XHRcIitcIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCJ+XCI6IHsgZGlyOiBcInByZXZpb3VzU2libGluZ1wiIH1cblx0fSxcblxuXHRwcmVGaWx0ZXI6IHtcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHQvLyBNb3ZlIHRoZSBnaXZlbiB2YWx1ZSB0byBtYXRjaFszXSB3aGV0aGVyIHF1b3RlZCBvciB1bnF1b3RlZFxuXHRcdFx0bWF0Y2hbM10gPSAoIG1hdGNoWzNdIHx8IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCIgKS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzJdID09PSBcIn49XCIgKSB7XG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcblx0XHR9LFxuXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHQvKiBtYXRjaGVzIGZyb20gbWF0Y2hFeHByW1wiQ0hJTERcIl1cblx0XHRcdFx0MSB0eXBlIChvbmx5fG50aHwuLi4pXG5cdFx0XHRcdDIgd2hhdCAoY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0MyBhcmd1bWVudCAoZXZlbnxvZGR8XFxkKnxcXGQqbihbKy1dXFxkKyk/fC4uLilcblx0XHRcdFx0NCB4bi1jb21wb25lbnQgb2YgeG4reSBhcmd1bWVudCAoWystXT9cXGQqbnwpXG5cdFx0XHRcdDUgc2lnbiBvZiB4bi1jb21wb25lbnRcblx0XHRcdFx0NiB4IG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ3IHNpZ24gb2YgeS1jb21wb25lbnRcblx0XHRcdFx0OCB5IG9mIHktY29tcG9uZW50XG5cdFx0XHQqL1xuXHRcdFx0bWF0Y2hbMV0gPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRpZiAoIG1hdGNoWzFdLnNsaWNlKCAwLCAzICkgPT09IFwibnRoXCIgKSB7XG5cdFx0XHRcdC8vIG50aC0qIHJlcXVpcmVzIGFyZ3VtZW50XG5cdFx0XHRcdGlmICggIW1hdGNoWzNdICkge1xuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIG51bWVyaWMgeCBhbmQgeSBwYXJhbWV0ZXJzIGZvciBFeHByLmZpbHRlci5DSElMRFxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXG5cdFx0XHRcdG1hdGNoWzRdID0gKyggbWF0Y2hbNF0gPyBtYXRjaFs1XSArIChtYXRjaFs2XSB8fCAxKSA6IDIgKiAoIG1hdGNoWzNdID09PSBcImV2ZW5cIiB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApICk7XG5cdFx0XHRcdG1hdGNoWzVdID0gKyggKCBtYXRjaFs3XSArIG1hdGNoWzhdICkgfHwgbWF0Y2hbM10gPT09IFwib2RkXCIgKTtcblxuXHRcdFx0Ly8gb3RoZXIgdHlwZXMgcHJvaGliaXQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdHZhciBleGNlc3MsXG5cdFx0XHRcdHVucXVvdGVkID0gIW1hdGNoWzZdICYmIG1hdGNoWzJdO1xuXG5cdFx0XHRpZiAoIG1hdGNoRXhwcltcIkNISUxEXCJdLnRlc3QoIG1hdGNoWzBdICkgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBY2NlcHQgcXVvdGVkIGFyZ3VtZW50cyBhcy1pc1xuXHRcdFx0aWYgKCBtYXRjaFszXSApIHtcblx0XHRcdFx0bWF0Y2hbMl0gPSBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTdHJpcCBleGNlc3MgY2hhcmFjdGVycyBmcm9tIHVucXVvdGVkIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggdW5xdW90ZWQgJiYgcnBzZXVkby50ZXN0KCB1bnF1b3RlZCApICYmXG5cdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXG5cdFx0XHRcdChleGNlc3MgPSB0b2tlbml6ZSggdW5xdW90ZWQsIHRydWUgKSkgJiZcblx0XHRcdFx0Ly8gYWR2YW5jZSB0byB0aGUgbmV4dCBjbG9zaW5nIHBhcmVudGhlc2lzXG5cdFx0XHRcdChleGNlc3MgPSB1bnF1b3RlZC5pbmRleE9mKCBcIilcIiwgdW5xdW90ZWQubGVuZ3RoIC0gZXhjZXNzICkgLSB1bnF1b3RlZC5sZW5ndGgpICkge1xuXG5cdFx0XHRcdC8vIGV4Y2VzcyBpcyBhIG5lZ2F0aXZlIGluZGV4XG5cdFx0XHRcdG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0XHRtYXRjaFsyXSA9IHVucXVvdGVkLnNsaWNlKCAwLCBleGNlc3MgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuIG9ubHkgY2FwdHVyZXMgbmVlZGVkIGJ5IHRoZSBwc2V1ZG8gZmlsdGVyIG1ldGhvZCAodHlwZSBhbmQgYXJndW1lbnQpXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcblx0XHR9XG5cdH0sXG5cblx0ZmlsdGVyOiB7XG5cblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWVTZWxlY3RvciApIHtcblx0XHRcdHZhciBub2RlTmFtZSA9IG5vZGVOYW1lU2VsZWN0b3IucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5vZGVOYW1lU2VsZWN0b3IgPT09IFwiKlwiID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9IDpcblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBub2RlTmFtZTtcblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lICkge1xuXHRcdFx0dmFyIHBhdHRlcm4gPSBjbGFzc0NhY2hlWyBjbGFzc05hbWUgKyBcIiBcIiBdO1xuXG5cdFx0XHRyZXR1cm4gcGF0dGVybiB8fFxuXHRcdFx0XHQocGF0dGVybiA9IG5ldyBSZWdFeHAoIFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiICkpICYmXG5cdFx0XHRcdGNsYXNzQ2FjaGUoIGNsYXNzTmFtZSwgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhdHRlcm4udGVzdCggdHlwZW9mIGVsZW0uY2xhc3NOYW1lID09PSBcInN0cmluZ1wiICYmIGVsZW0uY2xhc3NOYW1lIHx8IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpIHx8IFwiXCIgKTtcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbmFtZSwgb3BlcmF0b3IsIGNoZWNrICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gU2l6emxlLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdCA9PSBudWxsICkge1xuXHRcdFx0XHRcdHJldHVybiBvcGVyYXRvciA9PT0gXCIhPVwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggIW9wZXJhdG9yICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmVzdWx0ICs9IFwiXCI7XG5cblx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIj1cIiA/IHJlc3VsdCA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiE9XCIgPyByZXN1bHQgIT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJePVwiID8gY2hlY2sgJiYgcmVzdWx0LmluZGV4T2YoIGNoZWNrICkgPT09IDAgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIio9XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCIkPVwiID8gY2hlY2sgJiYgcmVzdWx0LnNsaWNlKCAtY2hlY2subGVuZ3RoICkgPT09IGNoZWNrIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ+PVwiID8gKCBcIiBcIiArIHJlc3VsdC5yZXBsYWNlKCByd2hpdGVzcGFjZSwgXCIgXCIgKSArIFwiIFwiICkuaW5kZXhPZiggY2hlY2sgKSA+IC0xIDpcblx0XHRcdFx0XHRvcGVyYXRvciA9PT0gXCJ8PVwiID8gcmVzdWx0ID09PSBjaGVjayB8fCByZXN1bHQuc2xpY2UoIDAsIGNoZWNrLmxlbmd0aCArIDEgKSA9PT0gY2hlY2sgKyBcIi1cIiA6XG5cdFx0XHRcdFx0ZmFsc2U7XG5cdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCB0eXBlLCB3aGF0LCBhcmd1bWVudCwgZmlyc3QsIGxhc3QgKSB7XG5cdFx0XHR2YXIgc2ltcGxlID0gdHlwZS5zbGljZSggMCwgMyApICE9PSBcIm50aFwiLFxuXHRcdFx0XHRmb3J3YXJkID0gdHlwZS5zbGljZSggLTQgKSAhPT0gXCJsYXN0XCIsXG5cdFx0XHRcdG9mVHlwZSA9IHdoYXQgPT09IFwib2YtdHlwZVwiO1xuXG5cdFx0XHRyZXR1cm4gZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCA/XG5cblx0XHRcdFx0Ly8gU2hvcnRjdXQgZm9yIDpudGgtKihuKVxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gISFlbGVtLnBhcmVudE5vZGU7XG5cdFx0XHRcdH0gOlxuXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGNhY2hlLCB1bmlxdWVDYWNoZSwgb3V0ZXJDYWNoZSwgbm9kZSwgbm9kZUluZGV4LCBzdGFydCxcblx0XHRcdFx0XHRcdGRpciA9IHNpbXBsZSAhPT0gZm9yd2FyZCA/IFwibmV4dFNpYmxpbmdcIiA6IFwicHJldmlvdXNTaWJsaW5nXCIsXG5cdFx0XHRcdFx0XHRwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGUsXG5cdFx0XHRcdFx0XHRuYW1lID0gb2ZUeXBlICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxcblx0XHRcdFx0XHRcdHVzZUNhY2hlID0gIXhtbCAmJiAhb2ZUeXBlLFxuXHRcdFx0XHRcdFx0ZGlmZiA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cblx0XHRcdFx0XHRcdC8vIDooZmlyc3R8bGFzdHxvbmx5KS0oY2hpbGR8b2YtdHlwZSlcblx0XHRcdFx0XHRcdGlmICggc2ltcGxlICkge1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIGRpciApIHtcblx0XHRcdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gbm9kZVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Ly8gUmV2ZXJzZSBkaXJlY3Rpb24gZm9yIDpvbmx5LSogKGlmIHdlIGhhdmVuJ3QgeWV0IGRvbmUgc28pXG5cdFx0XHRcdFx0XHRcdFx0c3RhcnQgPSBkaXIgPSB0eXBlID09PSBcIm9ubHlcIiAmJiAhc3RhcnQgJiYgXCJuZXh0U2libGluZ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRzdGFydCA9IFsgZm9yd2FyZCA/IHBhcmVudC5maXJzdENoaWxkIDogcGFyZW50Lmxhc3RDaGlsZCBdO1xuXG5cdFx0XHRcdFx0XHQvLyBub24teG1sIDpudGgtY2hpbGQoLi4uKSBzdG9yZXMgY2FjaGUgZGF0YSBvbiBgcGFyZW50YFxuXHRcdFx0XHRcdFx0aWYgKCBmb3J3YXJkICYmIHVzZUNhY2hlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNlZWsgYGVsZW1gIGZyb20gYSBwcmV2aW91c2x5LWNhY2hlZCBpbmRleFxuXG5cdFx0XHRcdFx0XHRcdC8vIC4uLmluIGEgZ3ppcC1mcmllbmRseSB3YXlcblx0XHRcdFx0XHRcdFx0bm9kZSA9IHBhcmVudDtcblx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRjYWNoZSA9IHVuaXF1ZUNhY2hlWyB0eXBlIF0gfHwgW107XG5cdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleCAmJiBjYWNoZVsgMiBdO1xuXHRcdFx0XHRcdFx0XHRub2RlID0gbm9kZUluZGV4ICYmIHBhcmVudC5jaGlsZE5vZGVzWyBub2RlSW5kZXggXTtcblxuXHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRmFsbGJhY2sgdG8gc2Vla2luZyBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHQoZGlmZiA9IG5vZGVJbmRleCA9IDApIHx8IHN0YXJ0LnBvcCgpKSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFdoZW4gZm91bmQsIGNhY2hlIGluZGV4ZXMgb24gYHBhcmVudGAgYW5kIGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICYmICsrZGlmZiAmJiBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgbm9kZUluZGV4LCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gVXNlIHByZXZpb3VzbHktY2FjaGVkIGVsZW1lbnQgaW5kZXggaWYgYXZhaWxhYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBub2RlWyBleHBhbmRvIF0gfHwgKG5vZGVbIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw5IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KG91dGVyQ2FjaGVbIG5vZGUudW5pcXVlSUQgXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRub2RlSW5kZXggPSBjYWNoZVsgMCBdID09PSBkaXJydW5zICYmIGNhY2hlWyAxIF07XG5cdFx0XHRcdFx0XHRcdFx0ZGlmZiA9IG5vZGVJbmRleDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdC8vIHhtbCA6bnRoLWNoaWxkKC4uLilcblx0XHRcdFx0XHRcdFx0Ly8gb3IgOm50aC1sYXN0LWNoaWxkKC4uLikgb3IgOm50aCgtbGFzdCk/LW9mLXR5cGUoLi4uKVxuXHRcdFx0XHRcdFx0XHRpZiAoIGRpZmYgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIFVzZSB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIHRvIHNlZWsgYGVsZW1gIGZyb20gdGhlIHN0YXJ0XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKCAobm9kZSA9ICsrbm9kZUluZGV4ICYmIG5vZGUgJiYgbm9kZVsgZGlyIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoICggb2ZUeXBlID9cblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lIDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0bm9kZS5ub2RlVHlwZSA9PT0gMSApICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCsrZGlmZiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYWNoZSB0aGUgaW5kZXggb2YgZWFjaCBlbmNvdW50ZXJlZCBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggdXNlQ2FjaGUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIHR5cGUgXSA9IFsgZGlycnVucywgZGlmZiBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlID09PSBlbGVtICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEluY29ycG9yYXRlIHRoZSBvZmZzZXQsIHRoZW4gY2hlY2sgYWdhaW5zdCBjeWNsZSBzaXplXG5cdFx0XHRcdFx0XHRkaWZmIC09IGxhc3Q7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gZmlyc3QgfHwgKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50ICkge1xuXHRcdFx0Ly8gcHNldWRvLWNsYXNzIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXG5cdFx0XHQvLyBQcmlvcml0aXplIGJ5IGNhc2Ugc2Vuc2l0aXZpdHkgaW4gY2FzZSBjdXN0b20gcHNldWRvcyBhcmUgYWRkZWQgd2l0aCB1cHBlcmNhc2UgbGV0dGVyc1xuXHRcdFx0Ly8gUmVtZW1iZXIgdGhhdCBzZXRGaWx0ZXJzIGluaGVyaXRzIGZyb20gcHNldWRvc1xuXHRcdFx0dmFyIGFyZ3MsXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnNldEZpbHRlcnNbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF0gfHxcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xuXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XG5cdFx0XHQvLyBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBjcmVhdGUgdGhlIGZpbHRlciBmdW5jdGlvblxuXHRcdFx0Ly8ganVzdCBhcyBTaXp6bGUgZG9lc1xuXHRcdFx0aWYgKCBmblsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRyZXR1cm4gZm4oIGFyZ3VtZW50ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEJ1dCBtYWludGFpbiBzdXBwb3J0IGZvciBvbGQgc2lnbmF0dXJlc1xuXHRcdFx0aWYgKCBmbi5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcblx0XHRcdFx0cmV0dXJuIEV4cHIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSggcHNldWRvLnRvTG93ZXJDYXNlKCkgKSA/XG5cdFx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzICkge1xuXHRcdFx0XHRcdFx0dmFyIGlkeCxcblx0XHRcdFx0XHRcdFx0bWF0Y2hlZCA9IGZuKCBzZWVkLCBhcmd1bWVudCApLFxuXHRcdFx0XHRcdFx0XHRpID0gbWF0Y2hlZC5sZW5ndGg7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWR4ID0gaW5kZXhPZiggc2VlZCwgbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0XHRzZWVkWyBpZHggXSA9ICEoIG1hdGNoZXNbIGlkeCBdID0gbWF0Y2hlZFtpXSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pIDpcblx0XHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmbiggZWxlbSwgMCwgYXJncyApO1xuXHRcdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmbjtcblx0XHR9XG5cdH0sXG5cblx0cHNldWRvczoge1xuXHRcdC8vIFBvdGVudGlhbGx5IGNvbXBsZXggcHNldWRvc1xuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0XHQvLyBUcmltIHRoZSBzZWxlY3RvciBwYXNzZWQgdG8gY29tcGlsZVxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcblx0XHRcdC8vIHNwYWNlcyBhcyBjb21iaW5hdG9yc1xuXHRcdFx0dmFyIGlucHV0ID0gW10sXG5cdFx0XHRcdHJlc3VsdHMgPSBbXSxcblx0XHRcdFx0bWF0Y2hlciA9IGNvbXBpbGUoIHNlbGVjdG9yLnJlcGxhY2UoIHJ0cmltLCBcIiQxXCIgKSApO1xuXG5cdFx0XHRyZXR1cm4gbWF0Y2hlclsgZXhwYW5kbyBdID9cblx0XHRcdFx0bWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCBtYXRjaGVzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0dmFyIGVsZW0sXG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQgPSBtYXRjaGVyKCBzZWVkLCBudWxsLCB4bWwsIFtdICksXG5cdFx0XHRcdFx0XHRpID0gc2VlZC5sZW5ndGg7XG5cblx0XHRcdFx0XHQvLyBNYXRjaCBlbGVtZW50cyB1bm1hdGNoZWQgYnkgYG1hdGNoZXJgXG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0c2VlZFtpXSA9ICEobWF0Y2hlc1tpXSA9IGVsZW0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkgOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0XHRcdGlucHV0WzBdID0gZWxlbTtcblx0XHRcdFx0XHRtYXRjaGVyKCBpbnB1dCwgbnVsbCwgeG1sLCByZXN1bHRzICk7XG5cdFx0XHRcdFx0Ly8gRG9uJ3Qga2VlcCB0aGUgZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdFx0XHRpbnB1dFswXSA9IG51bGw7XG5cdFx0XHRcdFx0cmV0dXJuICFyZXN1bHRzLnBvcCgpO1xuXHRcdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJoYXNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggc2VsZWN0b3IsIGVsZW0gKS5sZW5ndGggPiAwO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdFx0dGV4dCA9IHRleHQucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBcIldoZXRoZXIgYW4gZWxlbWVudCBpcyByZXByZXNlbnRlZCBieSBhIDpsYW5nKCkgc2VsZWN0b3Jcblx0XHQvLyBpcyBiYXNlZCBzb2xlbHkgb24gdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZVxuXHRcdC8vIGJlaW5nIGVxdWFsIHRvIHRoZSBpZGVudGlmaWVyIEMsXG5cdFx0Ly8gb3IgYmVnaW5uaW5nIHdpdGggdGhlIGlkZW50aWZpZXIgQyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBcIi1cIi5cblx0XHQvLyBUaGUgbWF0Y2hpbmcgb2YgQyBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgbGFuZ3VhZ2UgdmFsdWUgaXMgcGVyZm9ybWVkIGNhc2UtaW5zZW5zaXRpdmVseS5cblx0XHQvLyBUaGUgaWRlbnRpZmllciBDIGRvZXMgbm90IGhhdmUgdG8gYmUgYSB2YWxpZCBsYW5ndWFnZSBuYW1lLlwiXG5cdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNsYW5nLXBzZXVkb1xuXHRcdFwibGFuZ1wiOiBtYXJrRnVuY3Rpb24oIGZ1bmN0aW9uKCBsYW5nICkge1xuXHRcdFx0Ly8gbGFuZyB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaWRlbnRpZmllclxuXHRcdFx0aWYgKCAhcmlkZW50aWZpZXIudGVzdChsYW5nIHx8IFwiXCIpICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgbGFuZzogXCIgKyBsYW5nICk7XG5cdFx0XHR9XG5cdFx0XHRsYW5nID0gbGFuZy5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciBlbGVtTGFuZztcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGlmICggKGVsZW1MYW5nID0gZG9jdW1lbnRJc0hUTUwgP1xuXHRcdFx0XHRcdFx0ZWxlbS5sYW5nIDpcblx0XHRcdFx0XHRcdGVsZW0uZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKSApIHtcblxuXHRcdFx0XHRcdFx0ZWxlbUxhbmcgPSBlbGVtTGFuZy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW1MYW5nID09PSBsYW5nIHx8IGVsZW1MYW5nLmluZGV4T2YoIGxhbmcgKyBcIi1cIiApID09PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cdFx0fSksXG5cblx0XHQvLyBNaXNjZWxsYW5lb3VzXG5cdFx0XCJ0YXJnZXRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdHJldHVybiBoYXNoICYmIGhhc2guc2xpY2UoIDEgKSA9PT0gZWxlbS5pZDtcblx0XHR9LFxuXG5cdFx0XCJyb290XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGRvY0VsZW07XG5cdFx0fSxcblxuXHRcdFwiZm9jdXNcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAoIWRvY3VtZW50Lmhhc0ZvY3VzIHx8IGRvY3VtZW50Lmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYgfHwgfmVsZW0udGFiSW5kZXgpO1xuXHRcdH0sXG5cblx0XHQvLyBCb29sZWFuIHByb3BlcnRpZXNcblx0XHRcImVuYWJsZWRcIjogY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGZhbHNlICksXG5cdFx0XCJkaXNhYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggdHJ1ZSApLFxuXG5cdFx0XCJjaGVja2VkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gSW4gQ1NTMywgOmNoZWNrZWQgc2hvdWxkIHJldHVybiBib3RoIGNoZWNrZWQgYW5kIHNlbGVjdGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmICEhZWxlbS5jaGVja2VkKSB8fCAobm9kZU5hbWUgPT09IFwib3B0aW9uXCIgJiYgISFlbGVtLnNlbGVjdGVkKTtcblx0XHR9LFxuXG5cdFx0XCJzZWxlY3RlZFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcblx0XHRcdC8vIG9wdGlvbnMgaW4gU2FmYXJpIHdvcmsgcHJvcGVybHlcblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XG5cdFx0fSxcblxuXHRcdC8vIENvbnRlbnRzXG5cdFx0XCJlbXB0eVwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXG5cdFx0XHQvLyA6ZW1wdHkgaXMgbmVnYXRlZCBieSBlbGVtZW50ICgxKSBvciBjb250ZW50IG5vZGVzICh0ZXh0OiAzOyBjZGF0YTogNDsgZW50aXR5IHJlZjogNSksXG5cdFx0XHQvLyAgIGJ1dCBub3QgYnkgb3RoZXJzIChjb21tZW50OiA4OyBwcm9jZXNzaW5nIGluc3RydWN0aW9uOiA3OyBldGMuKVxuXHRcdFx0Ly8gbm9kZVR5cGUgPCA2IHdvcmtzIGJlY2F1c2UgYXR0cmlidXRlcyAoMikgZG8gbm90IGFwcGVhciBhcyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA8IDYgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0XCJwYXJlbnRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XG5cdFx0fSxcblxuXHRcdC8vIEVsZW1lbnQvaW5wdXQgdHlwZXNcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaGVhZGVyLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiByaW5wdXRzLnRlc3QoIGVsZW0ubm9kZU5hbWUgKTtcblx0XHR9LFxuXG5cdFx0XCJidXR0b25cIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSBcImJ1dHRvblwiIHx8IG5hbWUgPT09IFwiYnV0dG9uXCI7XG5cdFx0fSxcblxuXHRcdFwidGV4dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBhdHRyO1xuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmXG5cdFx0XHRcdGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCIgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRTw4XG5cdFx0XHRcdC8vIE5ldyBIVE1MNSBhdHRyaWJ1dGUgdmFsdWVzIChlLmcuLCBcInNlYXJjaFwiKSBhcHBlYXIgd2l0aCBlbGVtLnR5cGUgPT09IFwidGV4dFwiXG5cdFx0XHRcdCggKGF0dHIgPSBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikpID09IG51bGwgfHwgYXR0ci50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIiApO1xuXHRcdH0sXG5cblx0XHQvLyBQb3NpdGlvbi1pbi1jb2xsZWN0aW9uXG5cdFx0XCJmaXJzdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgMCBdO1xuXHRcdH0pLFxuXG5cdFx0XCJsYXN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIFsgbGVuZ3RoIC0gMSBdO1xuXHRcdH0pLFxuXG5cdFx0XCJlcVwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHRyZXR1cm4gWyBhcmd1bWVudCA8IDAgPyBhcmd1bWVudCArIGxlbmd0aCA6IGFyZ3VtZW50IF07XG5cdFx0fSksXG5cblx0XHRcImV2ZW5cIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkgKz0gMiApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcIm9kZFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMTtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwibHRcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGgsIGFyZ3VtZW50ICkge1xuXHRcdFx0dmFyIGkgPSBhcmd1bWVudCA8IDAgP1xuXHRcdFx0XHRhcmd1bWVudCArIGxlbmd0aCA6XG5cdFx0XHRcdGFyZ3VtZW50ID4gbGVuZ3RoID9cblx0XHRcdFx0XHRsZW5ndGggOlxuXHRcdFx0XHRcdGFyZ3VtZW50O1xuXHRcdFx0Zm9yICggOyAtLWkgPj0gMDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJndFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7ICsraSA8IGxlbmd0aDsgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pXG5cdH1cbn07XG5cbkV4cHIucHNldWRvc1tcIm50aFwiXSA9IEV4cHIucHNldWRvc1tcImVxXCJdO1xuXG4vLyBBZGQgYnV0dG9uL2lucHV0IHR5cGUgcHNldWRvc1xuZm9yICggaSBpbiB7IHJhZGlvOiB0cnVlLCBjaGVja2JveDogdHJ1ZSwgZmlsZTogdHJ1ZSwgcGFzc3dvcmQ6IHRydWUsIGltYWdlOiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlSW5wdXRQc2V1ZG8oIGkgKTtcbn1cbmZvciAoIGkgaW4geyBzdWJtaXQ6IHRydWUsIHJlc2V0OiB0cnVlIH0gKSB7XG5cdEV4cHIucHNldWRvc1sgaSBdID0gY3JlYXRlQnV0dG9uUHNldWRvKCBpICk7XG59XG5cbi8vIEVhc3kgQVBJIGZvciBjcmVhdGluZyBuZXcgc2V0RmlsdGVyc1xuZnVuY3Rpb24gc2V0RmlsdGVycygpIHt9XG5zZXRGaWx0ZXJzLnByb3RvdHlwZSA9IEV4cHIuZmlsdGVycyA9IEV4cHIucHNldWRvcztcbkV4cHIuc2V0RmlsdGVycyA9IG5ldyBzZXRGaWx0ZXJzKCk7XG5cbnRva2VuaXplID0gU2l6emxlLnRva2VuaXplID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBwYXJzZU9ubHkgKSB7XG5cdHZhciBtYXRjaGVkLCBtYXRjaCwgdG9rZW5zLCB0eXBlLFxuXHRcdHNvRmFyLCBncm91cHMsIHByZUZpbHRlcnMsXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdO1xuXG5cdGlmICggY2FjaGVkICkge1xuXHRcdHJldHVybiBwYXJzZU9ubHkgPyAwIDogY2FjaGVkLnNsaWNlKCAwICk7XG5cdH1cblxuXHRzb0ZhciA9IHNlbGVjdG9yO1xuXHRncm91cHMgPSBbXTtcblx0cHJlRmlsdGVycyA9IEV4cHIucHJlRmlsdGVyO1xuXG5cdHdoaWxlICggc29GYXIgKSB7XG5cblx0XHQvLyBDb21tYSBhbmQgZmlyc3QgcnVuXG5cdFx0aWYgKCAhbWF0Y2hlZCB8fCAobWF0Y2ggPSByY29tbWEuZXhlYyggc29GYXIgKSkgKSB7XG5cdFx0XHRpZiAoIG1hdGNoICkge1xuXHRcdFx0XHQvLyBEb24ndCBjb25zdW1lIHRyYWlsaW5nIGNvbW1hcyBhcyB2YWxpZFxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKSB8fCBzb0Zhcjtcblx0XHRcdH1cblx0XHRcdGdyb3Vwcy5wdXNoKCAodG9rZW5zID0gW10pICk7XG5cdFx0fVxuXG5cdFx0bWF0Y2hlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQ29tYmluYXRvcnNcblx0XHRpZiAoIChtYXRjaCA9IHJjb21iaW5hdG9ycy5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHR2YWx1ZTogbWF0Y2hlZCxcblx0XHRcdFx0Ly8gQ2FzdCBkZXNjZW5kYW50IGNvbWJpbmF0b3JzIHRvIHNwYWNlXG5cdFx0XHRcdHR5cGU6IG1hdGNoWzBdLnJlcGxhY2UoIHJ0cmltLCBcIiBcIiApXG5cdFx0XHR9KTtcblx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsdGVyc1xuXHRcdGZvciAoIHR5cGUgaW4gRXhwci5maWx0ZXIgKSB7XG5cdFx0XHRpZiAoIChtYXRjaCA9IG1hdGNoRXhwclsgdHlwZSBdLmV4ZWMoIHNvRmFyICkpICYmICghcHJlRmlsdGVyc1sgdHlwZSBdIHx8XG5cdFx0XHRcdChtYXRjaCA9IHByZUZpbHRlcnNbIHR5cGUgXSggbWF0Y2ggKSkpICkge1xuXHRcdFx0XHRtYXRjaGVkID0gbWF0Y2guc2hpZnQoKTtcblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHRcdHR5cGU6IHR5cGUsXG5cdFx0XHRcdFx0bWF0Y2hlczogbWF0Y2hcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoZWQubGVuZ3RoICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xuXHQvLyBpZiB3ZSdyZSBqdXN0IHBhcnNpbmdcblx0Ly8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvciBvciByZXR1cm4gdG9rZW5zXG5cdHJldHVybiBwYXJzZU9ubHkgP1xuXHRcdHNvRmFyLmxlbmd0aCA6XG5cdFx0c29GYXIgP1xuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcblx0XHRcdC8vIENhY2hlIHRoZSB0b2tlbnNcblx0XHRcdHRva2VuQ2FjaGUoIHNlbGVjdG9yLCBncm91cHMgKS5zbGljZSggMCApO1xufTtcblxuZnVuY3Rpb24gdG9TZWxlY3RvciggdG9rZW5zICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gdG9rZW5zLmxlbmd0aCxcblx0XHRzZWxlY3RvciA9IFwiXCI7XG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdHNlbGVjdG9yICs9IHRva2Vuc1tpXS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIGNvbWJpbmF0b3IsIGJhc2UgKSB7XG5cdHZhciBkaXIgPSBjb21iaW5hdG9yLmRpcixcblx0XHRza2lwID0gY29tYmluYXRvci5uZXh0LFxuXHRcdGtleSA9IHNraXAgfHwgZGlyLFxuXHRcdGNoZWNrTm9uRWxlbWVudHMgPSBiYXNlICYmIGtleSA9PT0gXCJwYXJlbnROb2RlXCIsXG5cdFx0ZG9uZU5hbWUgPSBkb25lKys7XG5cblx0cmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgP1xuXHRcdC8vIENoZWNrIGFnYWluc3QgY2xvc2VzdCBhbmNlc3Rvci9wcmVjZWRpbmcgZWxlbWVudFxuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IDpcblxuXHRcdC8vIENoZWNrIGFnYWluc3QgYWxsIGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50c1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgb2xkQ2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLFxuXHRcdFx0XHRuZXdDYWNoZSA9IFsgZGlycnVucywgZG9uZU5hbWUgXTtcblxuXHRcdFx0Ly8gV2UgY2FuJ3Qgc2V0IGFyYml0cmFyeSBkYXRhIG9uIFhNTCBub2Rlcywgc28gdGhleSBkb24ndCBiZW5lZml0IGZyb20gY29tYmluYXRvciBjYWNoaW5nXG5cdFx0XHRpZiAoIHhtbCApIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2hpbGUgKCAoZWxlbSA9IGVsZW1bIGRpciBdKSApIHtcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgY2hlY2tOb25FbGVtZW50cyApIHtcblx0XHRcdFx0XHRcdG91dGVyQ2FjaGUgPSBlbGVtWyBleHBhbmRvIF0gfHwgKGVsZW1bIGV4cGFuZG8gXSA9IHt9KTtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHR1bmlxdWVDYWNoZSA9IG91dGVyQ2FjaGVbIGVsZW0udW5pcXVlSUQgXSB8fCAob3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRpZiAoIHNraXAgJiYgc2tpcCA9PT0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRlbGVtID0gZWxlbVsgZGlyIF0gfHwgZWxlbTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIChvbGRDYWNoZSA9IHVuaXF1ZUNhY2hlWyBrZXkgXSkgJiZcblx0XHRcdFx0XHRcdFx0b2xkQ2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBvbGRDYWNoZVsgMSBdID09PSBkb25lTmFtZSApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBc3NpZ24gdG8gbmV3Q2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKG5ld0NhY2hlWyAyIF0gPSBvbGRDYWNoZVsgMiBdKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJldXNlIG5ld2NhY2hlIHNvIHJlc3VsdHMgYmFjay1wcm9wYWdhdGUgdG8gcHJldmlvdXMgZWxlbWVudHNcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGVbIGtleSBdID0gbmV3Q2FjaGU7XG5cblx0XHRcdFx0XHRcdFx0Ly8gQSBtYXRjaCBtZWFucyB3ZSdyZSBkb25lOyBhIGZhaWwgbWVhbnMgd2UgaGF2ZSB0byBrZWVwIGNoZWNraW5nXG5cdFx0XHRcdFx0XHRcdGlmICggKG5ld0NhY2hlWyAyIF0gPSBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xufVxuXG5mdW5jdGlvbiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSB7XG5cdHJldHVybiBtYXRjaGVycy5sZW5ndGggPiAxID9cblx0XHRmdW5jdGlvbiggZWxlbSwgY29udGV4dCwgeG1sICkge1xuXHRcdFx0dmFyIGkgPSBtYXRjaGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCAhbWF0Y2hlcnNbaV0oIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSA6XG5cdFx0bWF0Y2hlcnNbMF07XG59XG5cbmZ1bmN0aW9uIG11bHRpcGxlQ29udGV4dHMoIHNlbGVjdG9yLCBjb250ZXh0cywgcmVzdWx0cyApIHtcblx0dmFyIGkgPSAwLFxuXHRcdGxlbiA9IGNvbnRleHRzLmxlbmd0aDtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMgKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gY29uZGVuc2UoIHVubWF0Y2hlZCwgbWFwLCBmaWx0ZXIsIGNvbnRleHQsIHhtbCApIHtcblx0dmFyIGVsZW0sXG5cdFx0bmV3VW5tYXRjaGVkID0gW10sXG5cdFx0aSA9IDAsXG5cdFx0bGVuID0gdW5tYXRjaGVkLmxlbmd0aCxcblx0XHRtYXBwZWQgPSBtYXAgIT0gbnVsbDtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChlbGVtID0gdW5tYXRjaGVkW2ldKSApIHtcblx0XHRcdGlmICggIWZpbHRlciB8fCBmaWx0ZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApICkge1xuXHRcdFx0XHRuZXdVbm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRpZiAoIG1hcHBlZCApIHtcblx0XHRcdFx0XHRtYXAucHVzaCggaSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG5ld1VubWF0Y2hlZDtcbn1cblxuZnVuY3Rpb24gc2V0TWF0Y2hlciggcHJlRmlsdGVyLCBzZWxlY3RvciwgbWF0Y2hlciwgcG9zdEZpbHRlciwgcG9zdEZpbmRlciwgcG9zdFNlbGVjdG9yICkge1xuXHRpZiAoIHBvc3RGaWx0ZXIgJiYgIXBvc3RGaWx0ZXJbIGV4cGFuZG8gXSApIHtcblx0XHRwb3N0RmlsdGVyID0gc2V0TWF0Y2hlciggcG9zdEZpbHRlciApO1xuXHR9XG5cdGlmICggcG9zdEZpbmRlciAmJiAhcG9zdEZpbmRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaW5kZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKTtcblx0fVxuXHRyZXR1cm4gbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWVkLCByZXN1bHRzLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0dmFyIHRlbXAsIGksIGVsZW0sXG5cdFx0XHRwcmVNYXAgPSBbXSxcblx0XHRcdHBvc3RNYXAgPSBbXSxcblx0XHRcdHByZWV4aXN0aW5nID0gcmVzdWx0cy5sZW5ndGgsXG5cblx0XHRcdC8vIEdldCBpbml0aWFsIGVsZW1lbnRzIGZyb20gc2VlZCBvciBjb250ZXh0XG5cdFx0XHRlbGVtcyA9IHNlZWQgfHwgbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgXCIqXCIsIGNvbnRleHQubm9kZVR5cGUgPyBbIGNvbnRleHQgXSA6IGNvbnRleHQsIFtdICksXG5cblx0XHRcdC8vIFByZWZpbHRlciB0byBnZXQgbWF0Y2hlciBpbnB1dCwgcHJlc2VydmluZyBhIG1hcCBmb3Igc2VlZC1yZXN1bHRzIHN5bmNocm9uaXphdGlvblxuXHRcdFx0bWF0Y2hlckluID0gcHJlRmlsdGVyICYmICggc2VlZCB8fCAhc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGNvbmRlbnNlKCBlbGVtcywgcHJlTWFwLCBwcmVGaWx0ZXIsIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0ZWxlbXMsXG5cblx0XHRcdG1hdGNoZXJPdXQgPSBtYXRjaGVyID9cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHBvc3RGaW5kZXIsIG9yIGZpbHRlcmVkIHNlZWQsIG9yIG5vbi1zZWVkIHBvc3RGaWx0ZXIgb3IgcHJlZXhpc3RpbmcgcmVzdWx0cyxcblx0XHRcdFx0cG9zdEZpbmRlciB8fCAoIHNlZWQgPyBwcmVGaWx0ZXIgOiBwcmVleGlzdGluZyB8fCBwb3N0RmlsdGVyICkgP1xuXG5cdFx0XHRcdFx0Ly8gLi4uaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5XG5cdFx0XHRcdFx0W10gOlxuXG5cdFx0XHRcdFx0Ly8gLi4ub3RoZXJ3aXNlIHVzZSByZXN1bHRzIGRpcmVjdGx5XG5cdFx0XHRcdFx0cmVzdWx0cyA6XG5cdFx0XHRcdG1hdGNoZXJJbjtcblxuXHRcdC8vIEZpbmQgcHJpbWFyeSBtYXRjaGVzXG5cdFx0aWYgKCBtYXRjaGVyICkge1xuXHRcdFx0bWF0Y2hlciggbWF0Y2hlckluLCBtYXRjaGVyT3V0LCBjb250ZXh0LCB4bWwgKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBwb3N0RmlsdGVyXG5cdFx0aWYgKCBwb3N0RmlsdGVyICkge1xuXHRcdFx0dGVtcCA9IGNvbmRlbnNlKCBtYXRjaGVyT3V0LCBwb3N0TWFwICk7XG5cdFx0XHRwb3N0RmlsdGVyKCB0ZW1wLCBbXSwgY29udGV4dCwgeG1sICk7XG5cblx0XHRcdC8vIFVuLW1hdGNoIGZhaWxpbmcgZWxlbWVudHMgYnkgbW92aW5nIHRoZW0gYmFjayB0byBtYXRjaGVySW5cblx0XHRcdGkgPSB0ZW1wLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoIChlbGVtID0gdGVtcFtpXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlck91dFsgcG9zdE1hcFtpXSBdID0gIShtYXRjaGVySW5bIHBvc3RNYXBbaV0gXSA9IGVsZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyIHx8IHByZUZpbHRlciApIHtcblx0XHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZmluYWwgbWF0Y2hlck91dCBieSBjb25kZW5zaW5nIHRoaXMgaW50ZXJtZWRpYXRlIGludG8gcG9zdEZpbmRlciBjb250ZXh0c1xuXHRcdFx0XHRcdHRlbXAgPSBbXTtcblx0XHRcdFx0XHRpID0gbWF0Y2hlck91dC5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJlc3RvcmUgbWF0Y2hlckluIHNpbmNlIGVsZW0gaXMgbm90IHlldCBhIGZpbmFsIG1hdGNoXG5cdFx0XHRcdFx0XHRcdHRlbXAucHVzaCggKG1hdGNoZXJJbltpXSA9IGVsZW0pICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBvc3RGaW5kZXIoIG51bGwsIChtYXRjaGVyT3V0ID0gW10pLCB0ZW1wLCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE1vdmUgbWF0Y2hlZCBlbGVtZW50cyBmcm9tIHNlZWQgdG8gcmVzdWx0cyB0byBrZWVwIHRoZW0gc3luY2hyb25pemVkXG5cdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9IG1hdGNoZXJPdXRbaV0pICYmXG5cdFx0XHRcdFx0XHQodGVtcCA9IHBvc3RGaW5kZXIgPyBpbmRleE9mKCBzZWVkLCBlbGVtICkgOiBwcmVNYXBbaV0pID4gLTEgKSB7XG5cblx0XHRcdFx0XHRcdHNlZWRbdGVtcF0gPSAhKHJlc3VsdHNbdGVtcF0gPSBlbGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdC8vIEFkZCBlbGVtZW50cyB0byByZXN1bHRzLCB0aHJvdWdoIHBvc3RGaW5kZXIgaWYgZGVmaW5lZFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyT3V0ID0gY29uZGVuc2UoXG5cdFx0XHRcdG1hdGNoZXJPdXQgPT09IHJlc3VsdHMgP1xuXHRcdFx0XHRcdG1hdGNoZXJPdXQuc3BsaWNlKCBwcmVleGlzdGluZywgbWF0Y2hlck91dC5sZW5ndGggKSA6XG5cdFx0XHRcdFx0bWF0Y2hlck91dFxuXHRcdFx0KTtcblx0XHRcdGlmICggcG9zdEZpbmRlciApIHtcblx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgcmVzdWx0cywgbWF0Y2hlck91dCwgeG1sICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBtYXRjaGVyT3V0ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Ub2tlbnMoIHRva2VucyApIHtcblx0dmFyIGNoZWNrQ29udGV4dCwgbWF0Y2hlciwgaixcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdGxlYWRpbmdSZWxhdGl2ZSA9IEV4cHIucmVsYXRpdmVbIHRva2Vuc1swXS50eXBlIF0sXG5cdFx0aW1wbGljaXRSZWxhdGl2ZSA9IGxlYWRpbmdSZWxhdGl2ZSB8fCBFeHByLnJlbGF0aXZlW1wiIFwiXSxcblx0XHRpID0gbGVhZGluZ1JlbGF0aXZlID8gMSA6IDAsXG5cblx0XHQvLyBUaGUgZm91bmRhdGlvbmFsIG1hdGNoZXIgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFyZSByZWFjaGFibGUgZnJvbSB0b3AtbGV2ZWwgY29udGV4dChzKVxuXHRcdG1hdGNoQ29udGV4dCA9IGFkZENvbWJpbmF0b3IoIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGNoZWNrQ29udGV4dDtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hBbnlDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gaW5kZXhPZiggY2hlY2tDb250ZXh0LCBlbGVtICkgPiAtMTtcblx0XHR9LCBpbXBsaWNpdFJlbGF0aXZlLCB0cnVlICksXG5cdFx0bWF0Y2hlcnMgPSBbIGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgcmV0ID0gKCAhbGVhZGluZ1JlbGF0aXZlICYmICggeG1sIHx8IGNvbnRleHQgIT09IG91dGVybW9zdENvbnRleHQgKSApIHx8IChcblx0XHRcdFx0KGNoZWNrQ29udGV4dCA9IGNvbnRleHQpLm5vZGVUeXBlID9cblx0XHRcdFx0XHRtYXRjaENvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApIDpcblx0XHRcdFx0XHRtYXRjaEFueUNvbnRleHQoIGVsZW0sIGNvbnRleHQsIHhtbCApICk7XG5cdFx0XHQvLyBBdm9pZCBoYW5naW5nIG9udG8gZWxlbWVudCAoaXNzdWUgIzI5OSlcblx0XHRcdGNoZWNrQ29udGV4dCA9IG51bGw7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH0gXTtcblxuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRpZiAoIChtYXRjaGVyID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2ldLnR5cGUgXSkgKSB7XG5cdFx0XHRtYXRjaGVycyA9IFsgYWRkQ29tYmluYXRvcihlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSwgbWF0Y2hlcikgXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWF0Y2hlciA9IEV4cHIuZmlsdGVyWyB0b2tlbnNbaV0udHlwZSBdLmFwcGx5KCBudWxsLCB0b2tlbnNbaV0ubWF0Y2hlcyApO1xuXG5cdFx0XHQvLyBSZXR1cm4gc3BlY2lhbCB1cG9uIHNlZWluZyBhIHBvc2l0aW9uYWwgbWF0Y2hlclxuXHRcdFx0aWYgKCBtYXRjaGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdC8vIEZpbmQgdGhlIG5leHQgcmVsYXRpdmUgb3BlcmF0b3IgKGlmIGFueSkgZm9yIHByb3BlciBoYW5kbGluZ1xuXHRcdFx0XHRqID0gKytpO1xuXHRcdFx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2Vuc1tqXS50eXBlIF0gKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHNldE1hdGNoZXIoXG5cdFx0XHRcdFx0aSA+IDEgJiYgZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICksXG5cdFx0XHRcdFx0aSA+IDEgJiYgdG9TZWxlY3Rvcihcblx0XHRcdFx0XHRcdC8vIElmIHRoZSBwcmVjZWRpbmcgdG9rZW4gd2FzIGEgZGVzY2VuZGFudCBjb21iaW5hdG9yLCBpbnNlcnQgYW4gaW1wbGljaXQgYW55LWVsZW1lbnQgYCpgXG5cdFx0XHRcdFx0XHR0b2tlbnMuc2xpY2UoIDAsIGkgLSAxICkuY29uY2F0KHsgdmFsdWU6IHRva2Vuc1sgaSAtIDIgXS50eXBlID09PSBcIiBcIiA/IFwiKlwiIDogXCJcIiB9KVxuXHRcdFx0XHRcdCkucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLFxuXHRcdFx0XHRcdG1hdGNoZXIsXG5cdFx0XHRcdFx0aSA8IGogJiYgbWF0Y2hlckZyb21Ub2tlbnMoIHRva2Vucy5zbGljZSggaSwgaiApICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiBtYXRjaGVyRnJvbVRva2VucyggKHRva2VucyA9IHRva2Vucy5zbGljZSggaiApKSApLFxuXHRcdFx0XHRcdGogPCBsZW4gJiYgdG9TZWxlY3RvciggdG9rZW5zIClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdG1hdGNoZXJzLnB1c2goIG1hdGNoZXIgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbWVudE1hdGNoZXIoIG1hdGNoZXJzICk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApIHtcblx0dmFyIGJ5U2V0ID0gc2V0TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRieUVsZW1lbnQgPSBlbGVtZW50TWF0Y2hlcnMubGVuZ3RoID4gMCxcblx0XHRzdXBlck1hdGNoZXIgPSBmdW5jdGlvbiggc2VlZCwgY29udGV4dCwgeG1sLCByZXN1bHRzLCBvdXRlcm1vc3QgKSB7XG5cdFx0XHR2YXIgZWxlbSwgaiwgbWF0Y2hlcixcblx0XHRcdFx0bWF0Y2hlZENvdW50ID0gMCxcblx0XHRcdFx0aSA9IFwiMFwiLFxuXHRcdFx0XHR1bm1hdGNoZWQgPSBzZWVkICYmIFtdLFxuXHRcdFx0XHRzZXRNYXRjaGVkID0gW10sXG5cdFx0XHRcdGNvbnRleHRCYWNrdXAgPSBvdXRlcm1vc3RDb250ZXh0LFxuXHRcdFx0XHQvLyBXZSBtdXN0IGFsd2F5cyBoYXZlIGVpdGhlciBzZWVkIGVsZW1lbnRzIG9yIG91dGVybW9zdCBjb250ZXh0XG5cdFx0XHRcdGVsZW1zID0gc2VlZCB8fCBieUVsZW1lbnQgJiYgRXhwci5maW5kW1wiVEFHXCJdKCBcIipcIiwgb3V0ZXJtb3N0ICksXG5cdFx0XHRcdC8vIFVzZSBpbnRlZ2VyIGRpcnJ1bnMgaWZmIHRoaXMgaXMgdGhlIG91dGVybW9zdCBtYXRjaGVyXG5cdFx0XHRcdGRpcnJ1bnNVbmlxdWUgPSAoZGlycnVucyArPSBjb250ZXh0QmFja3VwID09IG51bGwgPyAxIDogTWF0aC5yYW5kb20oKSB8fCAwLjEpLFxuXHRcdFx0XHRsZW4gPSBlbGVtcy5sZW5ndGg7XG5cblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dCA9PT0gZG9jdW1lbnQgfHwgY29udGV4dCB8fCBvdXRlcm1vc3Q7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBlbGVtZW50cyBwYXNzaW5nIGVsZW1lbnRNYXRjaGVycyBkaXJlY3RseSB0byByZXN1bHRzXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTw5LCBTYWZhcmlcblx0XHRcdC8vIFRvbGVyYXRlIE5vZGVMaXN0IHByb3BlcnRpZXMgKElFOiBcImxlbmd0aFwiOyBTYWZhcmk6IDxudW1iZXI+KSBtYXRjaGluZyBlbGVtZW50cyBieSBpZFxuXHRcdFx0Zm9yICggOyBpICE9PSBsZW4gJiYgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIGJ5RWxlbWVudCAmJiBlbGVtICkge1xuXHRcdFx0XHRcdGogPSAwO1xuXHRcdFx0XHRcdGlmICggIWNvbnRleHQgJiYgZWxlbS5vd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCApIHtcblx0XHRcdFx0XHRcdHNldERvY3VtZW50KCBlbGVtICk7XG5cdFx0XHRcdFx0XHR4bWwgPSAhZG9jdW1lbnRJc0hUTUw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBlbGVtZW50TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0sIGNvbnRleHQgfHwgZG9jdW1lbnQsIHhtbCkgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUcmFjayB1bm1hdGNoZWQgZWxlbWVudHMgZm9yIHNldCBmaWx0ZXJzXG5cdFx0XHRcdGlmICggYnlTZXQgKSB7XG5cdFx0XHRcdFx0Ly8gVGhleSB3aWxsIGhhdmUgZ29uZSB0aHJvdWdoIGFsbCBwb3NzaWJsZSBtYXRjaGVyc1xuXHRcdFx0XHRcdGlmICggKGVsZW0gPSAhbWF0Y2hlciAmJiBlbGVtKSApIHtcblx0XHRcdFx0XHRcdG1hdGNoZWRDb3VudC0tO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIExlbmd0aGVuIHRoZSBhcnJheSBmb3IgZXZlcnkgZWxlbWVudCwgbWF0Y2hlZCBvciBub3Rcblx0XHRcdFx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRcdFx0XHR1bm1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBgaWAgaXMgbm93IHRoZSBjb3VudCBvZiBlbGVtZW50cyB2aXNpdGVkIGFib3ZlLCBhbmQgYWRkaW5nIGl0IHRvIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBtYWtlcyB0aGUgbGF0dGVyIG5vbm5lZ2F0aXZlLlxuXHRcdFx0bWF0Y2hlZENvdW50ICs9IGk7XG5cblx0XHRcdC8vIEFwcGx5IHNldCBmaWx0ZXJzIHRvIHVubWF0Y2hlZCBlbGVtZW50c1xuXHRcdFx0Ly8gTk9URTogVGhpcyBjYW4gYmUgc2tpcHBlZCBpZiB0aGVyZSBhcmUgbm8gdW5tYXRjaGVkIGVsZW1lbnRzIChpLmUuLCBgbWF0Y2hlZENvdW50YFxuXHRcdFx0Ly8gZXF1YWxzIGBpYCksIHVubGVzcyB3ZSBkaWRuJ3QgdmlzaXQgX2FueV8gZWxlbWVudHMgaW4gdGhlIGFib3ZlIGxvb3AgYmVjYXVzZSB3ZSBoYXZlXG5cdFx0XHQvLyBubyBlbGVtZW50IG1hdGNoZXJzIGFuZCBubyBzZWVkLlxuXHRcdFx0Ly8gSW5jcmVtZW50aW5nIGFuIGluaXRpYWxseS1zdHJpbmcgXCIwXCIgYGlgIGFsbG93cyBgaWAgdG8gcmVtYWluIGEgc3RyaW5nIG9ubHkgaW4gdGhhdFxuXHRcdFx0Ly8gY2FzZSwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSBcIjAwXCIgYG1hdGNoZWRDb3VudGAgdGhhdCBkaWZmZXJzIGZyb20gYGlgIGJ1dCBpcyBhbHNvXG5cdFx0XHQvLyBudW1lcmljYWxseSB6ZXJvLlxuXHRcdFx0aWYgKCBieVNldCAmJiBpICE9PSBtYXRjaGVkQ291bnQgKSB7XG5cdFx0XHRcdGogPSAwO1xuXHRcdFx0XHR3aGlsZSAoIChtYXRjaGVyID0gc2V0TWF0Y2hlcnNbaisrXSkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlciggdW5tYXRjaGVkLCBzZXRNYXRjaGVkLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHQvLyBSZWludGVncmF0ZSBlbGVtZW50IG1hdGNoZXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIGZvciBzb3J0aW5nXG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkQ291bnQgPiAwICkge1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggISh1bm1hdGNoZWRbaV0gfHwgc2V0TWF0Y2hlZFtpXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c2V0TWF0Y2hlZFtpXSA9IHBvcC5jYWxsKCByZXN1bHRzICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBEaXNjYXJkIGluZGV4IHBsYWNlaG9sZGVyIHZhbHVlcyB0byBnZXQgb25seSBhY3R1YWwgbWF0Y2hlc1xuXHRcdFx0XHRcdHNldE1hdGNoZWQgPSBjb25kZW5zZSggc2V0TWF0Y2hlZCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQWRkIG1hdGNoZXMgdG8gcmVzdWx0c1xuXHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZXRNYXRjaGVkICk7XG5cblx0XHRcdFx0Ly8gU2VlZGxlc3Mgc2V0IG1hdGNoZXMgc3VjY2VlZGluZyBtdWx0aXBsZSBzdWNjZXNzZnVsIG1hdGNoZXJzIHN0aXB1bGF0ZSBzb3J0aW5nXG5cdFx0XHRcdGlmICggb3V0ZXJtb3N0ICYmICFzZWVkICYmIHNldE1hdGNoZWQubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdCggbWF0Y2hlZENvdW50ICsgc2V0TWF0Y2hlcnMubGVuZ3RoICkgPiAxICkge1xuXG5cdFx0XHRcdFx0U2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBPdmVycmlkZSBtYW5pcHVsYXRpb24gb2YgZ2xvYmFscyBieSBuZXN0ZWQgbWF0Y2hlcnNcblx0XHRcdGlmICggb3V0ZXJtb3N0ICkge1xuXHRcdFx0XHRkaXJydW5zID0gZGlycnVuc1VuaXF1ZTtcblx0XHRcdFx0b3V0ZXJtb3N0Q29udGV4dCA9IGNvbnRleHRCYWNrdXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB1bm1hdGNoZWQ7XG5cdFx0fTtcblxuXHRyZXR1cm4gYnlTZXQgP1xuXHRcdG1hcmtGdW5jdGlvbiggc3VwZXJNYXRjaGVyICkgOlxuXHRcdHN1cGVyTWF0Y2hlcjtcbn1cblxuY29tcGlsZSA9IFNpenpsZS5jb21waWxlID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBtYXRjaCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHtcblx0dmFyIGksXG5cdFx0c2V0TWF0Y2hlcnMgPSBbXSxcblx0XHRlbGVtZW50TWF0Y2hlcnMgPSBbXSxcblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCAhY2FjaGVkICkge1xuXHRcdC8vIEdlbmVyYXRlIGEgZnVuY3Rpb24gb2YgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGVhY2ggZWxlbWVudFxuXHRcdGlmICggIW1hdGNoICkge1xuXHRcdFx0bWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IgKTtcblx0XHR9XG5cdFx0aSA9IG1hdGNoLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGNhY2hlZCA9IG1hdGNoZXJGcm9tVG9rZW5zKCBtYXRjaFtpXSApO1xuXHRcdFx0aWYgKCBjYWNoZWRbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0c2V0TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtZW50TWF0Y2hlcnMucHVzaCggY2FjaGVkICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FjaGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uXG5cdFx0Y2FjaGVkID0gY29tcGlsZXJDYWNoZSggc2VsZWN0b3IsIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggZWxlbWVudE1hdGNoZXJzLCBzZXRNYXRjaGVycyApICk7XG5cblx0XHQvLyBTYXZlIHNlbGVjdG9yIGFuZCB0b2tlbml6YXRpb25cblx0XHRjYWNoZWQuc2VsZWN0b3IgPSBzZWxlY3Rvcjtcblx0fVxuXHRyZXR1cm4gY2FjaGVkO1xufTtcblxuLyoqXG4gKiBBIGxvdy1sZXZlbCBzZWxlY3Rpb24gZnVuY3Rpb24gdGhhdCB3b3JrcyB3aXRoIFNpenpsZSdzIGNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb25zXG4gKiBAcGFyYW0ge1N0cmluZ3xGdW5jdGlvbn0gc2VsZWN0b3IgQSBzZWxlY3RvciBvciBhIHByZS1jb21waWxlZFxuICogIHNlbGVjdG9yIGZ1bmN0aW9uIGJ1aWx0IHdpdGggU2l6emxlLmNvbXBpbGVcbiAqIEBwYXJhbSB7RWxlbWVudH0gY29udGV4dFxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdHNdXG4gKiBAcGFyYW0ge0FycmF5fSBbc2VlZF0gQSBzZXQgb2YgZWxlbWVudHMgdG8gbWF0Y2ggYWdhaW5zdFxuICovXG5zZWxlY3QgPSBTaXp6bGUuc2VsZWN0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkICkge1xuXHR2YXIgaSwgdG9rZW5zLCB0b2tlbiwgdHlwZSwgZmluZCxcblx0XHRjb21waWxlZCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICYmIHNlbGVjdG9yLFxuXHRcdG1hdGNoID0gIXNlZWQgJiYgdG9rZW5pemUoIChzZWxlY3RvciA9IGNvbXBpbGVkLnNlbGVjdG9yIHx8IHNlbGVjdG9yKSApO1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFRyeSB0byBtaW5pbWl6ZSBvcGVyYXRpb25zIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNlbGVjdG9yIGluIHRoZSBsaXN0IGFuZCBubyBzZWVkXG5cdC8vICh0aGUgbGF0dGVyIG9mIHdoaWNoIGd1YXJhbnRlZXMgdXMgY29udGV4dClcblx0aWYgKCBtYXRjaC5sZW5ndGggPT09IDEgKSB7XG5cblx0XHQvLyBSZWR1Y2UgY29udGV4dCBpZiB0aGUgbGVhZGluZyBjb21wb3VuZCBzZWxlY3RvciBpcyBhbiBJRFxuXHRcdHRva2VucyA9IG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoIDAgKTtcblx0XHRpZiAoIHRva2Vucy5sZW5ndGggPiAyICYmICh0b2tlbiA9IHRva2Vuc1swXSkudHlwZSA9PT0gXCJJRFwiICYmXG5cdFx0XHRcdGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgZG9jdW1lbnRJc0hUTUwgJiYgRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzFdLnR5cGUgXSApIHtcblxuXHRcdFx0Y29udGV4dCA9ICggRXhwci5maW5kW1wiSURcIl0oIHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZShydW5lc2NhcGUsIGZ1bmVzY2FwZSksIGNvbnRleHQgKSB8fCBbXSApWzBdO1xuXHRcdFx0aWYgKCAhY29udGV4dCApIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cblx0XHRcdC8vIFByZWNvbXBpbGVkIG1hdGNoZXJzIHdpbGwgc3RpbGwgdmVyaWZ5IGFuY2VzdHJ5LCBzbyBzdGVwIHVwIGEgbGV2ZWxcblx0XHRcdH0gZWxzZSBpZiAoIGNvbXBpbGVkICkge1xuXHRcdFx0XHRjb250ZXh0ID0gY29udGV4dC5wYXJlbnROb2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRzZWxlY3RvciA9IHNlbGVjdG9yLnNsaWNlKCB0b2tlbnMuc2hpZnQoKS52YWx1ZS5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGZXRjaCBhIHNlZWQgc2V0IGZvciByaWdodC10by1sZWZ0IG1hdGNoaW5nXG5cdFx0aSA9IG1hdGNoRXhwcltcIm5lZWRzQ29udGV4dFwiXS50ZXN0KCBzZWxlY3RvciApID8gMCA6IHRva2Vucy5sZW5ndGg7XG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0b2tlbiA9IHRva2Vuc1tpXTtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgd2UgaGl0IGEgY29tYmluYXRvclxuXHRcdFx0aWYgKCBFeHByLnJlbGF0aXZlWyAodHlwZSA9IHRva2VuLnR5cGUpIF0gKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAoZmluZCA9IEV4cHIuZmluZFsgdHlwZSBdKSApIHtcblx0XHRcdFx0Ly8gU2VhcmNoLCBleHBhbmRpbmcgY29udGV4dCBmb3IgbGVhZGluZyBzaWJsaW5nIGNvbWJpbmF0b3JzXG5cdFx0XHRcdGlmICggKHNlZWQgPSBmaW5kKFxuXHRcdFx0XHRcdHRva2VuLm1hdGNoZXNbMF0ucmVwbGFjZSggcnVuZXNjYXBlLCBmdW5lc2NhcGUgKSxcblx0XHRcdFx0XHRyc2libGluZy50ZXN0KCB0b2tlbnNbMF0udHlwZSApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdFx0XHRcdCkpICkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgc2VlZCBpcyBlbXB0eSBvciBubyB0b2tlbnMgcmVtYWluLCB3ZSBjYW4gcmV0dXJuIGVhcmx5XG5cdFx0XHRcdFx0dG9rZW5zLnNwbGljZSggaSwgMSApO1xuXHRcdFx0XHRcdHNlbGVjdG9yID0gc2VlZC5sZW5ndGggJiYgdG9TZWxlY3RvciggdG9rZW5zICk7XG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzZWVkICk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIENvbXBpbGUgYW5kIGV4ZWN1dGUgYSBmaWx0ZXJpbmcgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuXHQvLyBQcm92aWRlIGBtYXRjaGAgdG8gYXZvaWQgcmV0b2tlbml6YXRpb24gaWYgd2UgbW9kaWZpZWQgdGhlIHNlbGVjdG9yIGFib3ZlXG5cdCggY29tcGlsZWQgfHwgY29tcGlsZSggc2VsZWN0b3IsIG1hdGNoICkgKShcblx0XHRzZWVkLFxuXHRcdGNvbnRleHQsXG5cdFx0IWRvY3VtZW50SXNIVE1MLFxuXHRcdHJlc3VsdHMsXG5cdFx0IWNvbnRleHQgfHwgcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dFxuXHQpO1xuXHRyZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIE9uZS10aW1lIGFzc2lnbm1lbnRzXG5cbi8vIFNvcnQgc3RhYmlsaXR5XG5zdXBwb3J0LnNvcnRTdGFibGUgPSBleHBhbmRvLnNwbGl0KFwiXCIpLnNvcnQoIHNvcnRPcmRlciApLmpvaW4oXCJcIikgPT09IGV4cGFuZG87XG5cbi8vIFN1cHBvcnQ6IENocm9tZSAxNC0zNStcbi8vIEFsd2F5cyBhc3N1bWUgZHVwbGljYXRlcyBpZiB0aGV5IGFyZW4ndCBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25cbnN1cHBvcnQuZGV0ZWN0RHVwbGljYXRlcyA9ICEhaGFzRHVwbGljYXRlO1xuXG4vLyBJbml0aWFsaXplIGFnYWluc3QgdGhlIGRlZmF1bHQgZG9jdW1lbnRcbnNldERvY3VtZW50KCk7XG5cbi8vIFN1cHBvcnQ6IFdlYmtpdDw1MzcuMzIgLSBTYWZhcmkgNi4wLjMvQ2hyb21lIDI1IChmaXhlZCBpbiBDaHJvbWUgMjcpXG4vLyBEZXRhY2hlZCBub2RlcyBjb25mb3VuZGluZ2x5IGZvbGxvdyAqZWFjaCBvdGhlcipcbnN1cHBvcnQuc29ydERldGFjaGVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0Ly8gU2hvdWxkIHJldHVybiAxLCBidXQgcmV0dXJucyA0IChmb2xsb3dpbmcpXG5cdHJldHVybiBlbC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZpZWxkc2V0XCIpICkgJiAxO1xufSk7XG5cbi8vIFN1cHBvcnQ6IElFPDhcbi8vIFByZXZlbnQgYXR0cmlidXRlL3Byb3BlcnR5IFwiaW50ZXJwb2xhdGlvblwiXG4vLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM2NDI5JTI4VlMuODUlMjkuYXNweFxuaWYgKCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIikgPT09IFwiI1wiIDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidHlwZXxocmVmfGhlaWdodHx3aWR0aFwiLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0aWYgKCAhaXNYTUwgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0eXBlXCIgPyAxIDogMiApO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBkZWZhdWx0VmFsdWUgaW4gcGxhY2Ugb2YgZ2V0QXR0cmlidXRlKFwidmFsdWVcIilcbmlmICggIXN1cHBvcnQuYXR0cmlidXRlcyB8fCAhYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0ZWwuaW5uZXJIVE1MID0gXCI8aW5wdXQvPlwiO1xuXHRlbC5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiLCBcIlwiICk7XG5cdHJldHVybiBlbC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSggXCJ2YWx1ZVwiICkgPT09IFwiXCI7XG59KSApIHtcblx0YWRkSGFuZGxlKCBcInZhbHVlXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiApIHtcblx0XHRcdHJldHVybiBlbGVtLmRlZmF1bHRWYWx1ZTtcblx0XHR9XG5cdH0pO1xufVxuXG4vLyBTdXBwb3J0OiBJRTw5XG4vLyBVc2UgZ2V0QXR0cmlidXRlTm9kZSB0byBmZXRjaCBib29sZWFucyB3aGVuIGdldEF0dHJpYnV0ZSBsaWVzXG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRyZXR1cm4gZWwuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPT0gbnVsbDtcbn0pICkge1xuXHRhZGRIYW5kbGUoIGJvb2xlYW5zLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgaXNYTUwgKSB7XG5cdFx0dmFyIHZhbDtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtWyBuYW1lIF0gPT09IHRydWUgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOlxuXHRcdFx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKSkgJiYgdmFsLnNwZWNpZmllZCA/XG5cdFx0XHRcdFx0dmFsLnZhbHVlIDpcblx0XHRcdFx0bnVsbDtcblx0XHR9XG5cdH0pO1xufVxuXG5yZXR1cm4gU2l6emxlO1xuXG59KSggd2luZG93ICk7XG5cblxuXG5qUXVlcnkuZmluZCA9IFNpenpsZTtcbmpRdWVyeS5leHByID0gU2l6emxlLnNlbGVjdG9ycztcblxuLy8gRGVwcmVjYXRlZFxualF1ZXJ5LmV4cHJbIFwiOlwiIF0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xualF1ZXJ5LnVuaXF1ZVNvcnQgPSBqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7XG5qUXVlcnkudGV4dCA9IFNpenpsZS5nZXRUZXh0O1xualF1ZXJ5LmlzWE1MRG9jID0gU2l6emxlLmlzWE1MO1xualF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zO1xualF1ZXJ5LmVzY2FwZVNlbGVjdG9yID0gU2l6emxlLmVzY2FwZTtcblxuXG5cblxudmFyIGRpciA9IGZ1bmN0aW9uKCBlbGVtLCBkaXIsIHVudGlsICkge1xuXHR2YXIgbWF0Y2hlZCA9IFtdLFxuXHRcdHRydW5jYXRlID0gdW50aWwgIT09IHVuZGVmaW5lZDtcblxuXHR3aGlsZSAoICggZWxlbSA9IGVsZW1bIGRpciBdICkgJiYgZWxlbS5ub2RlVHlwZSAhPT0gOSApIHtcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRpZiAoIHRydW5jYXRlICYmIGpRdWVyeSggZWxlbSApLmlzKCB1bnRpbCApICkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdG1hdGNoZWQucHVzaCggZWxlbSApO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWF0Y2hlZDtcbn07XG5cblxudmFyIHNpYmxpbmdzID0gZnVuY3Rpb24oIG4sIGVsZW0gKSB7XG5cdHZhciBtYXRjaGVkID0gW107XG5cblx0Zm9yICggOyBuOyBuID0gbi5uZXh0U2libGluZyApIHtcblx0XHRpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHtcblx0XHRcdG1hdGNoZWQucHVzaCggbiApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgcm5lZWRzQ29udGV4dCA9IGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtcblxuXG5cbmZ1bmN0aW9uIG5vZGVOYW1lKCBlbGVtLCBuYW1lICkge1xuXG4gIHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG59O1xudmFyIHJzaW5nbGVUYWcgPSAoIC9ePChbYS16XVteXFwvXFwwPjpcXHgyMFxcdFxcclxcblxcZl0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFwvPz4oPzo8XFwvXFwxPnwpJC9pICk7XG5cblxuXG4vLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdFxuZnVuY3Rpb24gd2lubm93KCBlbGVtZW50cywgcXVhbGlmaWVyLCBub3QgKSB7XG5cdGlmICggaXNGdW5jdGlvbiggcXVhbGlmaWVyICkgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XG5cdFx0XHRyZXR1cm4gISFxdWFsaWZpZXIuY2FsbCggZWxlbSwgaSwgZWxlbSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gU2luZ2xlIGVsZW1lbnRcblx0aWYgKCBxdWFsaWZpZXIubm9kZVR5cGUgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBlbGVtID09PSBxdWFsaWZpZXIgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEFycmF5bGlrZSBvZiBlbGVtZW50cyAoalF1ZXJ5LCBhcmd1bWVudHMsIEFycmF5KVxuXHRpZiAoIHR5cGVvZiBxdWFsaWZpZXIgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKCBlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCBpbmRleE9mLmNhbGwoIHF1YWxpZmllciwgZWxlbSApID4gLTEgKSAhPT0gbm90O1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIEZpbHRlcmVkIGRpcmVjdGx5IGZvciBib3RoIHNpbXBsZSBhbmQgY29tcGxleCBzZWxlY3RvcnNcblx0cmV0dXJuIGpRdWVyeS5maWx0ZXIoIHF1YWxpZmllciwgZWxlbWVudHMsIG5vdCApO1xufVxuXG5qUXVlcnkuZmlsdGVyID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1zLCBub3QgKSB7XG5cdHZhciBlbGVtID0gZWxlbXNbIDAgXTtcblxuXHRpZiAoIG5vdCApIHtcblx0XHRleHByID0gXCI6bm90KFwiICsgZXhwciArIFwiKVwiO1xuXHR9XG5cblx0aWYgKCBlbGVtcy5sZW5ndGggPT09IDEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBlbGVtLCBleHByICkgPyBbIGVsZW0gXSA6IFtdO1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeS5maW5kLm1hdGNoZXMoIGV4cHIsIGpRdWVyeS5ncmVwKCBlbGVtcywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XG5cdH0gKSApO1xufTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGksIHJldCxcblx0XHRcdGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0c2VsZiA9IHRoaXM7XG5cblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5KCBzZWxlY3RvciApLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHNlbGZbIGkgXSwgdGhpcyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICkgKTtcblx0XHR9XG5cblx0XHRyZXQgPSB0aGlzLnB1c2hTdGFjayggW10gKTtcblxuXHRcdGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRqUXVlcnkuZmluZCggc2VsZWN0b3IsIHNlbGZbIGkgXSwgcmV0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGxlbiA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggcmV0ICkgOiByZXQ7XG5cdH0sXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgZmFsc2UgKSApO1xuXHR9LFxuXHRub3Q6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyggdGhpcywgc2VsZWN0b3IgfHwgW10sIHRydWUgKSApO1xuXHR9LFxuXHRpczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiAhIXdpbm5vdyhcblx0XHRcdHRoaXMsXG5cblx0XHRcdC8vIElmIHRoaXMgaXMgYSBwb3NpdGlvbmFsL3JlbGF0aXZlIHNlbGVjdG9yLCBjaGVjayBtZW1iZXJzaGlwIGluIHRoZSByZXR1cm5lZCBzZXRcblx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiAmJiBybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9yICkgOlxuXHRcdFx0XHRzZWxlY3RvciB8fCBbXSxcblx0XHRcdGZhbHNlXG5cdFx0KS5sZW5ndGg7XG5cdH1cbn0gKTtcblxuXG4vLyBJbml0aWFsaXplIGEgalF1ZXJ5IG9iamVjdFxuXG5cbi8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxudmFyIHJvb3RqUXVlcnksXG5cblx0Ly8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Ncblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxuXHQvLyBTdHJpY3QgSFRNTCByZWNvZ25pdGlvbiAoIzExMjkwOiBtdXN0IHN0YXJ0IHdpdGggPClcblx0Ly8gU2hvcnRjdXQgc2ltcGxlICNpZCBjYXNlIGZvciBzcGVlZFxuXHRycXVpY2tFeHByID0gL14oPzpcXHMqKDxbXFx3XFxXXSs+KVtePl0qfCMoW1xcdy1dKykpJC8sXG5cblx0aW5pdCA9IGpRdWVyeS5mbi5pbml0ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290ICkge1xuXHRcdHZhciBtYXRjaCwgZWxlbTtcblxuXHRcdC8vIEhBTkRMRTogJChcIlwiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKVxuXHRcdGlmICggIXNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXG5cdFx0Ly8gTWV0aG9kIGluaXQoKSBhY2NlcHRzIGFuIGFsdGVybmF0ZSByb290alF1ZXJ5XG5cdFx0Ly8gc28gbWlncmF0ZSBjYW4gc3VwcG9ydCBqUXVlcnkuc3ViIChnaC0yMTAxKVxuXHRcdHJvb3QgPSByb290IHx8IHJvb3RqUXVlcnk7XG5cblx0XHQvLyBIYW5kbGUgSFRNTCBzdHJpbmdzXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRpZiAoIHNlbGVjdG9yWyAwIF0gPT09IFwiPFwiICYmXG5cdFx0XHRcdHNlbGVjdG9yWyBzZWxlY3Rvci5sZW5ndGggLSAxIF0gPT09IFwiPlwiICYmXG5cdFx0XHRcdHNlbGVjdG9yLmxlbmd0aCA+PSAzICkge1xuXG5cdFx0XHRcdC8vIEFzc3VtZSB0aGF0IHN0cmluZ3MgdGhhdCBzdGFydCBhbmQgZW5kIHdpdGggPD4gYXJlIEhUTUwgYW5kIHNraXAgdGhlIHJlZ2V4IGNoZWNrXG5cdFx0XHRcdG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWF0Y2ggaHRtbCBvciBtYWtlIHN1cmUgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQgZm9yICNpZFxuXHRcdFx0aWYgKCBtYXRjaCAmJiAoIG1hdGNoWyAxIF0gfHwgIWNvbnRleHQgKSApIHtcblxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcblx0XHRcdFx0aWYgKCBtYXRjaFsgMSBdICkge1xuXHRcdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGV4dFsgMCBdIDogY29udGV4dDtcblxuXHRcdFx0XHRcdC8vIE9wdGlvbiB0byBydW4gc2NyaXB0cyBpcyB0cnVlIGZvciBiYWNrLWNvbXBhdFxuXHRcdFx0XHRcdC8vIEludGVudGlvbmFsbHkgbGV0IHRoZSBlcnJvciBiZSB0aHJvd24gaWYgcGFyc2VIVE1MIGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLCBqUXVlcnkucGFyc2VIVE1MKFxuXHRcdFx0XHRcdFx0bWF0Y2hbIDEgXSxcblx0XHRcdFx0XHRcdGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA/IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0IDogZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KSApO1xuXG5cdFx0XHRcdFx0Ly8gSEFORExFOiAkKGh0bWwsIHByb3BzKVxuXHRcdFx0XHRcdGlmICggcnNpbmdsZVRhZy50ZXN0KCBtYXRjaFsgMSBdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcblx0XHRcdFx0XHRcdGZvciAoIG1hdGNoIGluIGNvbnRleHQgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gUHJvcGVydGllcyBvZiBjb250ZXh0IGFyZSBjYWxsZWQgYXMgbWV0aG9kcyBpZiBwb3NzaWJsZVxuXHRcdFx0XHRcdFx0XHRpZiAoIGlzRnVuY3Rpb24oIHRoaXNbIG1hdGNoIF0gKSApIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzWyBtYXRjaCBdKCBjb250ZXh0WyBtYXRjaCBdICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIG90aGVyd2lzZSBzZXQgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYXR0ciggbWF0Y2gsIGNvbnRleHRbIG1hdGNoIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJCgjaWQpXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsgMiBdICk7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHRcdC8vIEluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XG5cdFx0XHRcdFx0XHR0aGlzWyAwIF0gPSBlbGVtO1xuXHRcdFx0XHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKVxuXHRcdFx0fSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29udGV4dC5qcXVlcnkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGNvbnRleHQgfHwgcm9vdCApLmZpbmQoIHNlbGVjdG9yICk7XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCBjb250ZXh0KVxuXHRcdFx0Ly8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIpXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvciggY29udGV4dCApLmZpbmQoIHNlbGVjdG9yICk7XG5cdFx0XHR9XG5cblx0XHQvLyBIQU5ETEU6ICQoRE9NRWxlbWVudClcblx0XHR9IGVsc2UgaWYgKCBzZWxlY3Rvci5ub2RlVHlwZSApIHtcblx0XHRcdHRoaXNbIDAgXSA9IHNlbGVjdG9yO1xuXHRcdFx0dGhpcy5sZW5ndGggPSAxO1xuXHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHQvLyBIQU5ETEU6ICQoZnVuY3Rpb24pXG5cdFx0Ly8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJlYWR5XG5cdFx0fSBlbHNlIGlmICggaXNGdW5jdGlvbiggc2VsZWN0b3IgKSApIHtcblx0XHRcdHJldHVybiByb290LnJlYWR5ICE9PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRyb290LnJlYWR5KCBzZWxlY3RvciApIDpcblxuXHRcdFx0XHQvLyBFeGVjdXRlIGltbWVkaWF0ZWx5IGlmIHJlYWR5IGlzIG5vdCBwcmVzZW50XG5cdFx0XHRcdHNlbGVjdG9yKCBqUXVlcnkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IsIHRoaXMgKTtcblx0fTtcblxuLy8gR2l2ZSB0aGUgaW5pdCBmdW5jdGlvbiB0aGUgalF1ZXJ5IHByb3RvdHlwZSBmb3IgbGF0ZXIgaW5zdGFudGlhdGlvblxuaW5pdC5wcm90b3R5cGUgPSBqUXVlcnkuZm47XG5cbi8vIEluaXRpYWxpemUgY2VudHJhbCByZWZlcmVuY2VcbnJvb3RqUXVlcnkgPSBqUXVlcnkoIGRvY3VtZW50ICk7XG5cblxudmFyIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxuXG5cdC8vIE1ldGhvZHMgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGEgdW5pcXVlIHNldCB3aGVuIHN0YXJ0aW5nIGZyb20gYSB1bmlxdWUgc2V0XG5cdGd1YXJhbnRlZWRVbmlxdWUgPSB7XG5cdFx0Y2hpbGRyZW46IHRydWUsXG5cdFx0Y29udGVudHM6IHRydWUsXG5cdFx0bmV4dDogdHJ1ZSxcblx0XHRwcmV2OiB0cnVlXG5cdH07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0aGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkge1xuXHRcdHZhciB0YXJnZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSxcblx0XHRcdGwgPSB0YXJnZXRzLmxlbmd0aDtcblxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaSA9IDA7XG5cdFx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzWyBpIF0gKSApIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRjbG9zZXN0OiBmdW5jdGlvbiggc2VsZWN0b3JzLCBjb250ZXh0ICkge1xuXHRcdHZhciBjdXIsXG5cdFx0XHRpID0gMCxcblx0XHRcdGwgPSB0aGlzLmxlbmd0aCxcblx0XHRcdG1hdGNoZWQgPSBbXSxcblx0XHRcdHRhcmdldHMgPSB0eXBlb2Ygc2VsZWN0b3JzICE9PSBcInN0cmluZ1wiICYmIGpRdWVyeSggc2VsZWN0b3JzICk7XG5cblx0XHQvLyBQb3NpdGlvbmFsIHNlbGVjdG9ycyBuZXZlciBtYXRjaCwgc2luY2UgdGhlcmUncyBubyBfc2VsZWN0aW9uXyBjb250ZXh0XG5cdFx0aWYgKCAhcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSApIHtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zm9yICggY3VyID0gdGhpc1sgaSBdOyBjdXIgJiYgY3VyICE9PSBjb250ZXh0OyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcblxuXHRcdFx0XHRcdC8vIEFsd2F5cyBza2lwIGRvY3VtZW50IGZyYWdtZW50c1xuXHRcdFx0XHRcdGlmICggY3VyLm5vZGVUeXBlIDwgMTEgJiYgKCB0YXJnZXRzID9cblx0XHRcdFx0XHRcdHRhcmdldHMuaW5kZXgoIGN1ciApID4gLTEgOlxuXG5cdFx0XHRcdFx0XHQvLyBEb24ndCBwYXNzIG5vbi1lbGVtZW50cyB0byBTaXp6bGVcblx0XHRcdFx0XHRcdGN1ci5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGN1ciwgc2VsZWN0b3JzICkgKSApIHtcblxuXHRcdFx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggbWF0Y2hlZC5sZW5ndGggPiAxID8galF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKSA6IG1hdGNoZWQgKTtcblx0fSxcblxuXHQvLyBEZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBzZXRcblx0aW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkge1xuXG5cdFx0Ly8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnRcblx0XHRpZiAoICFlbGVtICkge1xuXHRcdFx0cmV0dXJuICggdGhpc1sgMCBdICYmIHRoaXNbIDAgXS5wYXJlbnROb2RlICkgPyB0aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aCA6IC0xO1xuXHRcdH1cblxuXHRcdC8vIEluZGV4IGluIHNlbGVjdG9yXG5cdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHJldHVybiBpbmRleE9mLmNhbGwoIGpRdWVyeSggZWxlbSApLCB0aGlzWyAwIF0gKTtcblx0XHR9XG5cblx0XHQvLyBMb2NhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZXNpcmVkIGVsZW1lbnRcblx0XHRyZXR1cm4gaW5kZXhPZi5jYWxsKCB0aGlzLFxuXG5cdFx0XHQvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWRcblx0XHRcdGVsZW0uanF1ZXJ5ID8gZWxlbVsgMCBdIDogZWxlbVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkOiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKFxuXHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXG5cdGFkZEJhY2s6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xuXHRcdFx0dGhpcy5wcmV2T2JqZWN0IDogdGhpcy5wcmV2T2JqZWN0LmZpbHRlciggc2VsZWN0b3IgKVxuXHRcdCk7XG5cdH1cbn0gKTtcblxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XG5cdHdoaWxlICggKCBjdXIgPSBjdXJbIGRpciBdICkgJiYgY3VyLm5vZGVUeXBlICE9PSAxICkge31cblx0cmV0dXJuIGN1cjtcbn1cblxualF1ZXJ5LmVhY2goIHtcblx0cGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdHJldHVybiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlICE9PSAxMSA/IHBhcmVudCA6IG51bGw7XG5cdH0sXG5cdHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiICk7XG5cdH0sXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xuXHR9LFxuXHRuZXh0OiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXY6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiApO1xuXHR9LFxuXHRwcmV2QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XG5cdH0sXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0cHJldlVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwcmV2aW91c1NpYmxpbmdcIiwgdW50aWwgKTtcblx0fSxcblx0c2libGluZ3M6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggKCBlbGVtLnBhcmVudE5vZGUgfHwge30gKS5maXJzdENoaWxkLCBlbGVtICk7XG5cdH0sXG5cdGNoaWxkcmVuOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gc2libGluZ3MoIGVsZW0uZmlyc3RDaGlsZCApO1xuXHR9LFxuXHRjb250ZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0aWYgKCB0eXBlb2YgZWxlbS5jb250ZW50RG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5jb250ZW50RG9jdW1lbnQ7XG5cdFx0fVxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG5cdFx0Ly8gVHJlYXQgdGhlIHRlbXBsYXRlIGVsZW1lbnQgYXMgYSByZWd1bGFyIG9uZSBpbiBicm93c2VycyB0aGF0XG5cdFx0Ly8gZG9uJ3Qgc3VwcG9ydCBpdC5cblx0XHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcblx0XHRcdGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcblx0XHR9XG5cblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgZWxlbS5jaGlsZE5vZGVzICk7XG5cdH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBmbiApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggdW50aWwsIHNlbGVjdG9yICkge1xuXHRcdHZhciBtYXRjaGVkID0galF1ZXJ5Lm1hcCggdGhpcywgZm4sIHVudGlsICk7XG5cblx0XHRpZiAoIG5hbWUuc2xpY2UoIC01ICkgIT09IFwiVW50aWxcIiApIHtcblx0XHRcdHNlbGVjdG9yID0gdW50aWw7XG5cdFx0fVxuXG5cdFx0aWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRtYXRjaGVkID0galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIG1hdGNoZWQgKTtcblx0XHR9XG5cblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSApIHtcblxuXHRcdFx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZXNcblx0XHRcdGlmICggIWd1YXJhbnRlZWRVbmlxdWVbIG5hbWUgXSApIHtcblx0XHRcdFx0alF1ZXJ5LnVuaXF1ZVNvcnQoIG1hdGNoZWQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV2ZXJzZSBvcmRlciBmb3IgcGFyZW50cyogYW5kIHByZXYtZGVyaXZhdGl2ZXNcblx0XHRcdGlmICggcnBhcmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHtcblx0XHRcdFx0bWF0Y2hlZC5yZXZlcnNlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkICk7XG5cdH07XG59ICk7XG52YXIgcm5vdGh0bWx3aGl0ZSA9ICggL1teXFx4MjBcXHRcXHJcXG5cXGZdKy9nICk7XG5cblxuXG4vLyBDb252ZXJ0IFN0cmluZy1mb3JtYXR0ZWQgb3B0aW9ucyBpbnRvIE9iamVjdC1mb3JtYXR0ZWQgb25lc1xuZnVuY3Rpb24gY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApIHtcblx0dmFyIG9iamVjdCA9IHt9O1xuXHRqUXVlcnkuZWFjaCggb3B0aW9ucy5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdLCBmdW5jdGlvbiggXywgZmxhZyApIHtcblx0XHRvYmplY3RbIGZsYWcgXSA9IHRydWU7XG5cdH0gKTtcblx0cmV0dXJuIG9iamVjdDtcbn1cblxuLypcbiAqIENyZWF0ZSBhIGNhbGxiYWNrIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuICpcbiAqXHRvcHRpb25zOiBhbiBvcHRpb25hbCBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBvcHRpb25zIHRoYXQgd2lsbCBjaGFuZ2UgaG93XG4gKlx0XHRcdHRoZSBjYWxsYmFjayBsaXN0IGJlaGF2ZXMgb3IgYSBtb3JlIHRyYWRpdGlvbmFsIG9wdGlvbiBvYmplY3RcbiAqXG4gKiBCeSBkZWZhdWx0IGEgY2FsbGJhY2sgbGlzdCB3aWxsIGFjdCBsaWtlIGFuIGV2ZW50IGNhbGxiYWNrIGxpc3QgYW5kIGNhbiBiZVxuICogXCJmaXJlZFwiIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIFBvc3NpYmxlIG9wdGlvbnM6XG4gKlxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxuICpcbiAqXHRtZW1vcnk6XHRcdFx0d2lsbCBrZWVwIHRyYWNrIG9mIHByZXZpb3VzIHZhbHVlcyBhbmQgd2lsbCBjYWxsIGFueSBjYWxsYmFjayBhZGRlZFxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxuICpcdFx0XHRcdFx0dmFsdWVzIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcbiAqXG4gKlx0c3RvcE9uRmFsc2U6XHRpbnRlcnJ1cHQgY2FsbGluZ3Mgd2hlbiBhIGNhbGxiYWNrIHJldHVybnMgZmFsc2VcbiAqXG4gKi9cbmpRdWVyeS5DYWxsYmFja3MgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuXHQvLyBDb252ZXJ0IG9wdGlvbnMgZnJvbSBTdHJpbmctZm9ybWF0dGVkIHRvIE9iamVjdC1mb3JtYXR0ZWQgaWYgbmVlZGVkXG5cdC8vICh3ZSBjaGVjayBpbiBjYWNoZSBmaXJzdClcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cblx0XHRjcmVhdGVPcHRpb25zKCBvcHRpb25zICkgOlxuXHRcdGpRdWVyeS5leHRlbmQoIHt9LCBvcHRpb25zICk7XG5cblx0dmFyIC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmdcblx0XHRmaXJpbmcsXG5cblx0XHQvLyBMYXN0IGZpcmUgdmFsdWUgZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0c1xuXHRcdG1lbW9yeSxcblxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXG5cdFx0ZmlyZWQsXG5cblx0XHQvLyBGbGFnIHRvIHByZXZlbnQgZmlyaW5nXG5cdFx0bG9ja2VkLFxuXG5cdFx0Ly8gQWN0dWFsIGNhbGxiYWNrIGxpc3Rcblx0XHRsaXN0ID0gW10sXG5cblx0XHQvLyBRdWV1ZSBvZiBleGVjdXRpb24gZGF0YSBmb3IgcmVwZWF0YWJsZSBsaXN0c1xuXHRcdHF1ZXVlID0gW10sXG5cblx0XHQvLyBJbmRleCBvZiBjdXJyZW50bHkgZmlyaW5nIGNhbGxiYWNrIChtb2RpZmllZCBieSBhZGQvcmVtb3ZlIGFzIG5lZWRlZClcblx0XHRmaXJpbmdJbmRleCA9IC0xLFxuXG5cdFx0Ly8gRmlyZSBjYWxsYmFja3Ncblx0XHRmaXJlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuZm9yY2Ugc2luZ2xlLWZpcmluZ1xuXHRcdFx0bG9ja2VkID0gbG9ja2VkIHx8IG9wdGlvbnMub25jZTtcblxuXHRcdFx0Ly8gRXhlY3V0ZSBjYWxsYmFja3MgZm9yIGFsbCBwZW5kaW5nIGV4ZWN1dGlvbnMsXG5cdFx0XHQvLyByZXNwZWN0aW5nIGZpcmluZ0luZGV4IG92ZXJyaWRlcyBhbmQgcnVudGltZSBjaGFuZ2VzXG5cdFx0XHRmaXJlZCA9IGZpcmluZyA9IHRydWU7XG5cdFx0XHRmb3IgKCA7IHF1ZXVlLmxlbmd0aDsgZmlyaW5nSW5kZXggPSAtMSApIHtcblx0XHRcdFx0bWVtb3J5ID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdFx0d2hpbGUgKCArK2ZpcmluZ0luZGV4IDwgbGlzdC5sZW5ndGggKSB7XG5cblx0XHRcdFx0XHQvLyBSdW4gY2FsbGJhY2sgYW5kIGNoZWNrIGZvciBlYXJseSB0ZXJtaW5hdGlvblxuXHRcdFx0XHRcdGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggbWVtb3J5WyAwIF0sIG1lbW9yeVsgMSBdICkgPT09IGZhbHNlICYmXG5cdFx0XHRcdFx0XHRvcHRpb25zLnN0b3BPbkZhbHNlICkge1xuXG5cdFx0XHRcdFx0XHQvLyBKdW1wIHRvIGVuZCBhbmQgZm9yZ2V0IHRoZSBkYXRhIHNvIC5hZGQgZG9lc24ndCByZS1maXJlXG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoO1xuXHRcdFx0XHRcdFx0bWVtb3J5ID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvcmdldCB0aGUgZGF0YSBpZiB3ZSdyZSBkb25lIHdpdGggaXRcblx0XHRcdGlmICggIW9wdGlvbnMubWVtb3J5ICkge1xuXHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XG5cblx0XHRcdC8vIENsZWFuIHVwIGlmIHdlJ3JlIGRvbmUgZmlyaW5nIGZvciBnb29kXG5cdFx0XHRpZiAoIGxvY2tlZCApIHtcblxuXHRcdFx0XHQvLyBLZWVwIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGF2ZSBkYXRhIGZvciBmdXR1cmUgYWRkIGNhbGxzXG5cdFx0XHRcdGlmICggbWVtb3J5ICkge1xuXHRcdFx0XHRcdGxpc3QgPSBbXTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIHRoaXMgb2JqZWN0IGlzIHNwZW50XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGlzdCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0Ly8gQWN0dWFsIENhbGxiYWNrcyBvYmplY3Rcblx0XHRzZWxmID0ge1xuXG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0XG5cdFx0XHRhZGQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBoYXZlIG1lbW9yeSBmcm9tIGEgcGFzdCBydW4sIHdlIHNob3VsZCBmaXJlIGFmdGVyIGFkZGluZ1xuXHRcdFx0XHRcdGlmICggbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0XHRmaXJpbmdJbmRleCA9IGxpc3QubGVuZ3RoIC0gMTtcblx0XHRcdFx0XHRcdHF1ZXVlLnB1c2goIG1lbW9yeSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCggZnVuY3Rpb24gYWRkKCBhcmdzICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3MsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggYXJnICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCAhb3B0aW9ucy51bmlxdWUgfHwgIXNlbGYuaGFzKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBhcmcgJiYgYXJnLmxlbmd0aCAmJiB0b1R5cGUoIGFyZyApICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gSW5zcGVjdCByZWN1cnNpdmVseVxuXHRcdFx0XHRcdFx0XHRcdGFkZCggYXJnICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHR9ICkoIGFyZ3VtZW50cyApO1xuXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XG5cdFx0XHRyZW1vdmU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZWFjaCggYXJndW1lbnRzLCBmdW5jdGlvbiggXywgYXJnICkge1xuXHRcdFx0XHRcdHZhciBpbmRleDtcblx0XHRcdFx0XHR3aGlsZSAoICggaW5kZXggPSBqUXVlcnkuaW5BcnJheSggYXJnLCBsaXN0LCBpbmRleCApICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdGxpc3Quc3BsaWNlKCBpbmRleCwgMSApO1xuXG5cdFx0XHRcdFx0XHQvLyBIYW5kbGUgZmlyaW5nIGluZGV4ZXNcblx0XHRcdFx0XHRcdGlmICggaW5kZXggPD0gZmlyaW5nSW5kZXggKSB7XG5cdFx0XHRcdFx0XHRcdGZpcmluZ0luZGV4LS07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2hlY2sgaWYgYSBnaXZlbiBjYWxsYmFjayBpcyBpbiB0aGUgbGlzdC5cblx0XHRcdC8vIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm4gd2hldGhlciBvciBub3QgbGlzdCBoYXMgY2FsbGJhY2tzIGF0dGFjaGVkLlxuXHRcdFx0aGFzOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdHJldHVybiBmbiA/XG5cdFx0XHRcdFx0alF1ZXJ5LmluQXJyYXkoIGZuLCBsaXN0ICkgPiAtMSA6XG5cdFx0XHRcdFx0bGlzdC5sZW5ndGggPiAwO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gUmVtb3ZlIGFsbCBjYWxsYmFja3MgZnJvbSB0aGUgbGlzdFxuXHRcdFx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGxpc3QgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gRGlzYWJsZSAuZmlyZSBhbmQgLmFkZFxuXHRcdFx0Ly8gQWJvcnQgYW55IGN1cnJlbnQvcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHQvLyBDbGVhciBhbGwgY2FsbGJhY2tzIGFuZCB2YWx1ZXNcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsb2NrZWQgPSBxdWV1ZSA9IFtdO1xuXHRcdFx0XHRsaXN0ID0gbWVtb3J5ID0gXCJcIjtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0ZGlzYWJsZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlXG5cdFx0XHQvLyBBbHNvIGRpc2FibGUgLmFkZCB1bmxlc3Mgd2UgaGF2ZSBtZW1vcnkgKHNpbmNlIGl0IHdvdWxkIGhhdmUgbm8gZWZmZWN0KVxuXHRcdFx0Ly8gQWJvcnQgYW55IHBlbmRpbmcgZXhlY3V0aW9uc1xuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGlmICggIW1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWxvY2tlZDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFuZCBhcmd1bWVudHNcblx0XHRcdGZpcmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJncyApIHtcblx0XHRcdFx0aWYgKCAhbG9ja2VkICkge1xuXHRcdFx0XHRcdGFyZ3MgPSBhcmdzIHx8IFtdO1xuXHRcdFx0XHRcdGFyZ3MgPSBbIGNvbnRleHQsIGFyZ3Muc2xpY2UgPyBhcmdzLnNsaWNlKCkgOiBhcmdzIF07XG5cdFx0XHRcdFx0cXVldWUucHVzaCggYXJncyApO1xuXHRcdFx0XHRcdGlmICggIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHNlbGYuZmlyZVdpdGgoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgdGhlIGNhbGxiYWNrcyBoYXZlIGFscmVhZHkgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZVxuXHRcdFx0ZmlyZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcblx0XHRcdH1cblx0XHR9O1xuXG5cdHJldHVybiBzZWxmO1xufTtcblxuXG5mdW5jdGlvbiBJZGVudGl0eSggdiApIHtcblx0cmV0dXJuIHY7XG59XG5mdW5jdGlvbiBUaHJvd2VyKCBleCApIHtcblx0dGhyb3cgZXg7XG59XG5cbmZ1bmN0aW9uIGFkb3B0VmFsdWUoIHZhbHVlLCByZXNvbHZlLCByZWplY3QsIG5vVmFsdWUgKSB7XG5cdHZhciBtZXRob2Q7XG5cblx0dHJ5IHtcblxuXHRcdC8vIENoZWNrIGZvciBwcm9taXNlIGFzcGVjdCBmaXJzdCB0byBwcml2aWxlZ2Ugc3luY2hyb25vdXMgYmVoYXZpb3Jcblx0XHRpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUucHJvbWlzZSApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUgKS5kb25lKCByZXNvbHZlICkuZmFpbCggcmVqZWN0ICk7XG5cblx0XHQvLyBPdGhlciB0aGVuYWJsZXNcblx0XHR9IGVsc2UgaWYgKCB2YWx1ZSAmJiBpc0Z1bmN0aW9uKCAoIG1ldGhvZCA9IHZhbHVlLnRoZW4gKSApICkge1xuXHRcdFx0bWV0aG9kLmNhbGwoIHZhbHVlLCByZXNvbHZlLCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIG5vbi10aGVuYWJsZXNcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb250cm9sIGByZXNvbHZlYCBhcmd1bWVudHMgYnkgbGV0dGluZyBBcnJheSNzbGljZSBjYXN0IGJvb2xlYW4gYG5vVmFsdWVgIHRvIGludGVnZXI6XG5cdFx0XHQvLyAqIGZhbHNlOiBbIHZhbHVlIF0uc2xpY2UoIDAgKSA9PiByZXNvbHZlKCB2YWx1ZSApXG5cdFx0XHQvLyAqIHRydWU6IFsgdmFsdWUgXS5zbGljZSggMSApID0+IHJlc29sdmUoKVxuXHRcdFx0cmVzb2x2ZS5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0uc2xpY2UoIG5vVmFsdWUgKSApO1xuXHRcdH1cblxuXHQvLyBGb3IgUHJvbWlzZXMvQSssIGNvbnZlcnQgZXhjZXB0aW9ucyBpbnRvIHJlamVjdGlvbnNcblx0Ly8gU2luY2UgalF1ZXJ5LndoZW4gZG9lc24ndCB1bndyYXAgdGhlbmFibGVzLCB3ZSBjYW4gc2tpcCB0aGUgZXh0cmEgY2hlY2tzIGFwcGVhcmluZyBpblxuXHQvLyBEZWZlcnJlZCN0aGVuIHRvIGNvbmRpdGlvbmFsbHkgc3VwcHJlc3MgcmVqZWN0aW9uLlxuXHR9IGNhdGNoICggdmFsdWUgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCBvbmx5XG5cdFx0Ly8gU3RyaWN0IG1vZGUgZnVuY3Rpb25zIGludm9rZWQgd2l0aG91dCAuY2FsbC8uYXBwbHkgZ2V0IGdsb2JhbC1vYmplY3QgY29udGV4dFxuXHRcdHJlamVjdC5hcHBseSggdW5kZWZpbmVkLCBbIHZhbHVlIF0gKTtcblx0fVxufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0RGVmZXJyZWQ6IGZ1bmN0aW9uKCBmdW5jICkge1xuXHRcdHZhciB0dXBsZXMgPSBbXG5cblx0XHRcdFx0Ly8gYWN0aW9uLCBhZGQgbGlzdGVuZXIsIGNhbGxiYWNrcyxcblx0XHRcdFx0Ly8gLi4uIC50aGVuIGhhbmRsZXJzLCBhcmd1bWVudCBpbmRleCwgW2ZpbmFsIHN0YXRlXVxuXHRcdFx0XHRbIFwibm90aWZ5XCIsIFwicHJvZ3Jlc3NcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwibWVtb3J5XCIgKSwgMiBdLFxuXHRcdFx0XHRbIFwicmVzb2x2ZVwiLCBcImRvbmVcIiwgalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksIDAsIFwicmVzb2x2ZWRcIiBdLFxuXHRcdFx0XHRbIFwicmVqZWN0XCIsIFwiZmFpbFwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMSwgXCJyZWplY3RlZFwiIF1cblx0XHRcdF0sXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxuXHRcdFx0cHJvbWlzZSA9IHtcblx0XHRcdFx0c3RhdGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiBzdGF0ZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0YWx3YXlzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblx0XHRcdFx0XCJjYXRjaFwiOiBmdW5jdGlvbiggZm4gKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHByb21pc2UudGhlbiggbnVsbCwgZm4gKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdHBpcGU6IGZ1bmN0aW9uKCAvKiBmbkRvbmUsIGZuRmFpbCwgZm5Qcm9ncmVzcyAqLyApIHtcblx0XHRcdFx0XHR2YXIgZm5zID0gYXJndW1lbnRzO1xuXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5EZWZlcnJlZCggZnVuY3Rpb24oIG5ld0RlZmVyICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE1hcCB0dXBsZXMgKHByb2dyZXNzLCBkb25lLCBmYWlsKSB0byBhcmd1bWVudHMgKGRvbmUsIGZhaWwsIHByb2dyZXNzKVxuXHRcdFx0XHRcdFx0XHR2YXIgZm4gPSBpc0Z1bmN0aW9uKCBmbnNbIHR1cGxlWyA0IF0gXSApICYmIGZuc1sgdHVwbGVbIDQgXSBdO1xuXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLnByb2dyZXNzKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLm5vdGlmeSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5kb25lKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlc29sdmUgfSlcblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQuZmFpbChmdW5jdGlvbigpIHsgYmluZCB0byBuZXdEZWZlciBvciBuZXdEZWZlci5yZWplY3QgfSlcblx0XHRcdFx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAxIF0gXSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4gJiYgZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdFx0XHRcdGlmICggcmV0dXJuZWQgJiYgaXNGdW5jdGlvbiggcmV0dXJuZWQucHJvbWlzZSApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQucHJvbWlzZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5IClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LmRvbmUoIG5ld0RlZmVyLnJlc29sdmUgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0ICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXShcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm4gPyBbIHJldHVybmVkIF0gOiBhcmd1bWVudHNcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0XHRmbnMgPSBudWxsO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoZW46IGZ1bmN0aW9uKCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgb25Qcm9ncmVzcyApIHtcblx0XHRcdFx0XHR2YXIgbWF4RGVwdGggPSAwO1xuXHRcdFx0XHRcdGZ1bmN0aW9uIHJlc29sdmUoIGRlcHRoLCBkZWZlcnJlZCwgaGFuZGxlciwgc3BlY2lhbCApIHtcblx0XHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0dmFyIHRoYXQgPSB0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBhcmd1bWVudHMsXG5cdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkLCB0aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuM1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElnbm9yZSBkb3VibGUtcmVzb2x1dGlvbiBhdHRlbXB0c1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCA8IG1heERlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkID0gaGFuZGxlci5hcHBseSggdGhhdCwgYXJncyApO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4xXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC00OFxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCA9PT0gZGVmZXJyZWQucHJvbWlzZSgpICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCBcIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvblwiICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb25zIDIuMy4zLjEsIDMuNVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTRcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTc1XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXRyaWV2ZSBgdGhlbmAgb25seSBvbmNlXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGVuID0gcmV0dXJuZWQgJiZcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy40XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTY0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgY2hlY2sgb2JqZWN0cyBhbmQgZnVuY3Rpb25zIGZvciB0aGVuYWJpbGl0eVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoIHR5cGVvZiByZXR1cm5lZCA9PT0gXCJvYmplY3RcIiB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiByZXR1cm5lZCA9PT0gXCJmdW5jdGlvblwiICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQudGhlbjtcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSGFuZGxlIGEgcmV0dXJuZWQgdGhlbmFibGVcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhlbiApICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFNwZWNpYWwgcHJvY2Vzc29ycyAobm90aWZ5KSBqdXN0IHdhaXQgZm9yIHJlc29sdXRpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE5vcm1hbCBwcm9jZXNzb3JzIChyZXNvbHZlKSBhbHNvIGhvb2sgaW50byBwcm9ncmVzc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gLi4uYW5kIGRpc3JlZ2FyZCBvbGRlciByZXNvbHV0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1heERlcHRoKys7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGVuLmNhbGwoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgSWRlbnRpdHksIHNwZWNpYWwgKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoIG1heERlcHRoLCBkZWZlcnJlZCwgVGhyb3dlciwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYWxsIG90aGVyIHJldHVybmVkIHZhbHVlc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBPbmx5IHN1YnN0aXR1dGUgaGFuZGxlcnMgcGFzcyBvbiBjb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IElkZW50aXR5ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncyA9IFsgcmV0dXJuZWQgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFByb2Nlc3MgdGhlIHZhbHVlKHMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIERlZmF1bHQgcHJvY2VzcyBpcyByZXNvbHZlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggc3BlY2lhbCB8fCBkZWZlcnJlZC5yZXNvbHZlV2l0aCApKCB0aGF0LCBhcmdzICk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgbm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGNhdGNoIGFuZCByZWplY3QgZXhjZXB0aW9uc1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MgPSBzcGVjaWFsID9cblx0XHRcdFx0XHRcdFx0XHRcdG1pZ2h0VGhyb3cgOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2sgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayggZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlICk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjQuMVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTYxXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIHBvc3QtcmVzb2x1dGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBkZXB0aCArIDEgPj0gbWF4RGVwdGggKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGFuZCBtdWx0aXBsZSB2YWx1ZXMgKG5vbi1zcGVjIGJlaGF2aW9yKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBoYW5kbGVyICE9PSBUaHJvd2VyICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyBlIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbiAyLjMuMy4zLjFcblx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNTdcblx0XHRcdFx0XHRcdFx0Ly8gUmUtcmVzb2x2ZSBwcm9taXNlcyBpbW1lZGlhdGVseSB0byBkb2RnZSBmYWxzZSByZWplY3Rpb24gZnJvbVxuXHRcdFx0XHRcdFx0XHQvLyBzdWJzZXF1ZW50IGVycm9yc1xuXHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICkge1xuXHRcdFx0XHRcdFx0XHRcdHByb2Nlc3MoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENhbGwgYW4gb3B0aW9uYWwgaG9vayB0byByZWNvcmQgdGhlIHN0YWNrLCBpbiBjYXNlIG9mIGV4Y2VwdGlvblxuXHRcdFx0XHRcdFx0XHRcdC8vIHNpbmNlIGl0J3Mgb3RoZXJ3aXNlIGxvc3Qgd2hlbiBleGVjdXRpb24gZ29lcyBhc3luY1xuXHRcdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHByb2Nlc3Muc3RhY2tUcmFjZSA9IGpRdWVyeS5EZWZlcnJlZC5nZXRTdGFja0hvb2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoIHByb2Nlc3MgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cblx0XHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25Qcm9ncmVzcyApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUHJvZ3Jlc3MgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHksXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIubm90aWZ5V2l0aFxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAxIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvbkZ1bGZpbGxlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uRnVsZmlsbGVkIDpcblx0XHRcdFx0XHRcdFx0XHRcdElkZW50aXR5XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmFkZCggLi4uIClcblx0XHRcdFx0XHRcdHR1cGxlc1sgMiBdWyAzIF0uYWRkKFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKFxuXHRcdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXIsXG5cdFx0XHRcdFx0XHRcdFx0aXNGdW5jdGlvbiggb25SZWplY3RlZCApID9cblx0XHRcdFx0XHRcdFx0XHRcdG9uUmVqZWN0ZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0VGhyb3dlclxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0gKS5wcm9taXNlKCk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gR2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZFxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XG5cdFx0XHRcdHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9iaiAhPSBudWxsID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcblxuXHRcdC8vIEFkZCBsaXN0LXNwZWNpZmljIG1ldGhvZHNcblx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXG5cdFx0XHRcdHN0YXRlU3RyaW5nID0gdHVwbGVbIDUgXTtcblxuXHRcdFx0Ly8gcHJvbWlzZS5wcm9ncmVzcyA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmRvbmUgPSBsaXN0LmFkZFxuXHRcdFx0Ly8gcHJvbWlzZS5mYWlsID0gbGlzdC5hZGRcblx0XHRcdHByb21pc2VbIHR1cGxlWyAxIF0gXSA9IGxpc3QuYWRkO1xuXG5cdFx0XHQvLyBIYW5kbGUgc3RhdGVcblx0XHRcdGlmICggc3RhdGVTdHJpbmcgKSB7XG5cdFx0XHRcdGxpc3QuYWRkKFxuXHRcdFx0XHRcdGZ1bmN0aW9uKCkge1xuXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVzb2x2ZWRcIiAoaS5lLiwgZnVsZmlsbGVkKVxuXHRcdFx0XHRcdFx0Ly8gc3RhdGUgPSBcInJlamVjdGVkXCJcblx0XHRcdFx0XHRcdHN0YXRlID0gc3RhdGVTdHJpbmc7XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0Ly8gZnVsZmlsbGVkX2NhbGxiYWNrcy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAyIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdHR1cGxlc1sgMyAtIGkgXVsgMyBdLmRpc2FibGUsXG5cblx0XHRcdFx0XHQvLyBwcm9ncmVzc19jYWxsYmFja3MubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAyIF0ubG9jayxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2hhbmRsZXJzLmxvY2tcblx0XHRcdFx0XHR0dXBsZXNbIDAgXVsgMyBdLmxvY2tcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gZnVsZmlsbGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdC8vIHJlamVjdGVkX2hhbmRsZXJzLmZpcmVcblx0XHRcdGxpc3QuYWRkKCB0dXBsZVsgMyBdLmZpcmUgKTtcblxuXHRcdFx0Ly8gZGVmZXJyZWQubm90aWZ5ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLm5vdGlmeVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlc29sdmVXaXRoKC4uLikgfVxuXHRcdFx0Ly8gZGVmZXJyZWQucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGRlZmVycmVkLnJlamVjdFdpdGgoLi4uKSB9XG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSBdID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdICsgXCJXaXRoXCIgXSggdGhpcyA9PT0gZGVmZXJyZWQgPyB1bmRlZmluZWQgOiB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnlXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0Ly8gZGVmZXJyZWQucmVzb2x2ZVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3RXaXRoID0gbGlzdC5maXJlV2l0aFxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdID0gbGlzdC5maXJlV2l0aDtcblx0XHR9ICk7XG5cblx0XHQvLyBNYWtlIHRoZSBkZWZlcnJlZCBhIHByb21pc2Vcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XG5cblx0XHQvLyBDYWxsIGdpdmVuIGZ1bmMgaWYgYW55XG5cdFx0aWYgKCBmdW5jICkge1xuXHRcdFx0ZnVuYy5jYWxsKCBkZWZlcnJlZCwgZGVmZXJyZWQgKTtcblx0XHR9XG5cblx0XHQvLyBBbGwgZG9uZSFcblx0XHRyZXR1cm4gZGVmZXJyZWQ7XG5cdH0sXG5cblx0Ly8gRGVmZXJyZWQgaGVscGVyXG5cdHdoZW46IGZ1bmN0aW9uKCBzaW5nbGVWYWx1ZSApIHtcblx0XHR2YXJcblxuXHRcdFx0Ly8gY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXG5cdFx0XHRyZW1haW5pbmcgPSBhcmd1bWVudHMubGVuZ3RoLFxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bnByb2Nlc3NlZCBhcmd1bWVudHNcblx0XHRcdGkgPSByZW1haW5pbmcsXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGZ1bGZpbGxtZW50IGRhdGFcblx0XHRcdHJlc29sdmVDb250ZXh0cyA9IEFycmF5KCBpICksXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICksXG5cblx0XHRcdC8vIHRoZSBtYXN0ZXIgRGVmZXJyZWRcblx0XHRcdG1hc3RlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXG5cdFx0XHQvLyBzdWJvcmRpbmF0ZSBjYWxsYmFjayBmYWN0b3J5XG5cdFx0XHR1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmVzb2x2ZUNvbnRleHRzWyBpIF0gPSB0aGlzO1xuXHRcdFx0XHRcdHJlc29sdmVWYWx1ZXNbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcblx0XHRcdFx0XHRpZiAoICEoIC0tcmVtYWluaW5nICkgKSB7XG5cdFx0XHRcdFx0XHRtYXN0ZXIucmVzb2x2ZVdpdGgoIHJlc29sdmVDb250ZXh0cywgcmVzb2x2ZVZhbHVlcyApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH07XG5cblx0XHQvLyBTaW5nbGUtIGFuZCBlbXB0eSBhcmd1bWVudHMgYXJlIGFkb3B0ZWQgbGlrZSBQcm9taXNlLnJlc29sdmVcblx0XHRpZiAoIHJlbWFpbmluZyA8PSAxICkge1xuXHRcdFx0YWRvcHRWYWx1ZSggc2luZ2xlVmFsdWUsIG1hc3Rlci5kb25lKCB1cGRhdGVGdW5jKCBpICkgKS5yZXNvbHZlLCBtYXN0ZXIucmVqZWN0LFxuXHRcdFx0XHQhcmVtYWluaW5nICk7XG5cblx0XHRcdC8vIFVzZSAudGhlbigpIHRvIHVud3JhcCBzZWNvbmRhcnkgdGhlbmFibGVzIChjZi4gZ2gtMzAwMClcblx0XHRcdGlmICggbWFzdGVyLnN0YXRlKCkgPT09IFwicGVuZGluZ1wiIHx8XG5cdFx0XHRcdGlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXSAmJiByZXNvbHZlVmFsdWVzWyBpIF0udGhlbiApICkge1xuXG5cdFx0XHRcdHJldHVybiBtYXN0ZXIudGhlbigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE11bHRpcGxlIGFyZ3VtZW50cyBhcmUgYWdncmVnYXRlZCBsaWtlIFByb21pc2UuYWxsIGFycmF5IGVsZW1lbnRzXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCByZXNvbHZlVmFsdWVzWyBpIF0sIHVwZGF0ZUZ1bmMoIGkgKSwgbWFzdGVyLnJlamVjdCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBtYXN0ZXIucHJvbWlzZSgpO1xuXHR9XG59ICk7XG5cblxuLy8gVGhlc2UgdXN1YWxseSBpbmRpY2F0ZSBhIHByb2dyYW1tZXIgbWlzdGFrZSBkdXJpbmcgZGV2ZWxvcG1lbnQsXG4vLyB3YXJuIGFib3V0IHRoZW0gQVNBUCByYXRoZXIgdGhhbiBzd2FsbG93aW5nIHRoZW0gYnkgZGVmYXVsdC5cbnZhciByZXJyb3JOYW1lcyA9IC9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO1xuXG5qUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayA9IGZ1bmN0aW9uKCBlcnJvciwgc3RhY2sgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgOCAtIDkgb25seVxuXHQvLyBDb25zb2xlIGV4aXN0cyB3aGVuIGRldiB0b29scyBhcmUgb3Blbiwgd2hpY2ggY2FuIGhhcHBlbiBhdCBhbnkgdGltZVxuXHRpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4gJiYgZXJyb3IgJiYgcmVycm9yTmFtZXMudGVzdCggZXJyb3IubmFtZSApICkge1xuXHRcdHdpbmRvdy5jb25zb2xlLndhcm4oIFwialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogXCIgKyBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgc3RhY2sgKTtcblx0fVxufTtcblxuXG5cblxualF1ZXJ5LnJlYWR5RXhjZXB0aW9uID0gZnVuY3Rpb24oIGVycm9yICkge1xuXHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0dGhyb3cgZXJyb3I7XG5cdH0gKTtcbn07XG5cblxuXG5cbi8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxudmFyIHJlYWR5TGlzdCA9IGpRdWVyeS5EZWZlcnJlZCgpO1xuXG5qUXVlcnkuZm4ucmVhZHkgPSBmdW5jdGlvbiggZm4gKSB7XG5cblx0cmVhZHlMaXN0XG5cdFx0LnRoZW4oIGZuIClcblxuXHRcdC8vIFdyYXAgalF1ZXJ5LnJlYWR5RXhjZXB0aW9uIGluIGEgZnVuY3Rpb24gc28gdGhhdCB0aGUgbG9va3VwXG5cdFx0Ly8gaGFwcGVucyBhdCB0aGUgdGltZSBvZiBlcnJvciBoYW5kbGluZyBpbnN0ZWFkIG9mIGNhbGxiYWNrXG5cdFx0Ly8gcmVnaXN0cmF0aW9uLlxuXHRcdC5jYXRjaCggZnVuY3Rpb24oIGVycm9yICkge1xuXHRcdFx0alF1ZXJ5LnJlYWR5RXhjZXB0aW9uKCBlcnJvciApO1xuXHRcdH0gKTtcblxuXHRyZXR1cm4gdGhpcztcbn07XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLlxuXHRpc1JlYWR5OiBmYWxzZSxcblxuXHQvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVmb3JlXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXG5cdHJlYWR5V2FpdDogMSxcblxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XG5cdHJlYWR5OiBmdW5jdGlvbiggd2FpdCApIHtcblxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcblx0XHRpZiAoIHdhaXQgPT09IHRydWUgPyAtLWpRdWVyeS5yZWFkeVdhaXQgOiBqUXVlcnkuaXNSZWFkeSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBSZW1lbWJlciB0aGF0IHRoZSBET00gaXMgcmVhZHlcblx0XHRqUXVlcnkuaXNSZWFkeSA9IHRydWU7XG5cblx0XHQvLyBJZiBhIG5vcm1hbCBET00gUmVhZHkgZXZlbnQgZmlyZWQsIGRlY3JlbWVudCwgYW5kIHdhaXQgaWYgbmVlZCBiZVxuXHRcdGlmICggd2FpdCAhPT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcblx0XHRyZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50LCBbIGpRdWVyeSBdICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LnJlYWR5LnRoZW4gPSByZWFkeUxpc3QudGhlbjtcblxuLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgYW5kIHNlbGYgY2xlYW51cCBtZXRob2RcbmZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggXCJsb2FkXCIsIGNvbXBsZXRlZCApO1xuXHRqUXVlcnkucmVhZHkoKTtcbn1cblxuLy8gQ2F0Y2ggY2FzZXMgd2hlcmUgJChkb2N1bWVudCkucmVhZHkoKSBpcyBjYWxsZWRcbi8vIGFmdGVyIHRoZSBicm93c2VyIGV2ZW50IGhhcyBhbHJlYWR5IG9jY3VycmVkLlxuLy8gU3VwcG9ydDogSUUgPD05IC0gMTAgb25seVxuLy8gT2xkZXIgSUUgc29tZXRpbWVzIHNpZ25hbHMgXCJpbnRlcmFjdGl2ZVwiIHRvbyBzb29uXG5pZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiB8fFxuXHQoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiICYmICFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgKSApIHtcblxuXHQvLyBIYW5kbGUgaXQgYXN5bmNocm9ub3VzbHkgdG8gYWxsb3cgc2NyaXB0cyB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsYXkgcmVhZHlcblx0d2luZG93LnNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSApO1xuXG59IGVsc2Uge1xuXG5cdC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2tcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCApO1xuXG5cdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG59XG5cblxuXG5cbi8vIE11bHRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIG9mIGEgY29sbGVjdGlvblxuLy8gVGhlIHZhbHVlL3MgY2FuIG9wdGlvbmFsbHkgYmUgZXhlY3V0ZWQgaWYgaXQncyBhIGZ1bmN0aW9uXG52YXIgYWNjZXNzID0gZnVuY3Rpb24oIGVsZW1zLCBmbiwga2V5LCB2YWx1ZSwgY2hhaW5hYmxlLCBlbXB0eUdldCwgcmF3ICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gZWxlbXMubGVuZ3RoLFxuXHRcdGJ1bGsgPSBrZXkgPT0gbnVsbDtcblxuXHQvLyBTZXRzIG1hbnkgdmFsdWVzXG5cdGlmICggdG9UeXBlKCBrZXkgKSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXHRcdGZvciAoIGkgaW4ga2V5ICkge1xuXHRcdFx0YWNjZXNzKCBlbGVtcywgZm4sIGksIGtleVsgaSBdLCB0cnVlLCBlbXB0eUdldCwgcmF3ICk7XG5cdFx0fVxuXG5cdC8vIFNldHMgb25lIHZhbHVlXG5cdH0gZWxzZSBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0Y2hhaW5hYmxlID0gdHJ1ZTtcblxuXHRcdGlmICggIWlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyYXcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICggYnVsayApIHtcblxuXHRcdFx0Ly8gQnVsayBvcGVyYXRpb25zIHJ1biBhZ2FpbnN0IHRoZSBlbnRpcmUgc2V0XG5cdFx0XHRpZiAoIHJhdyApIHtcblx0XHRcdFx0Zm4uY2FsbCggZWxlbXMsIHZhbHVlICk7XG5cdFx0XHRcdGZuID0gbnVsbDtcblxuXHRcdFx0Ly8gLi4uZXhjZXB0IHdoZW4gZXhlY3V0aW5nIGZ1bmN0aW9uIHZhbHVlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVsayA9IGZuO1xuXHRcdFx0XHRmbiA9IGZ1bmN0aW9uKCBlbGVtLCBrZXksIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiBidWxrLmNhbGwoIGpRdWVyeSggZWxlbSApLCB2YWx1ZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0Zm4oXG5cdFx0XHRcdFx0ZWxlbXNbIGkgXSwga2V5LCByYXcgP1xuXHRcdFx0XHRcdHZhbHVlIDpcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCBlbGVtc1sgaSBdLCBpLCBmbiggZWxlbXNbIGkgXSwga2V5ICkgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggY2hhaW5hYmxlICkge1xuXHRcdHJldHVybiBlbGVtcztcblx0fVxuXG5cdC8vIEdldHNcblx0aWYgKCBidWxrICkge1xuXHRcdHJldHVybiBmbi5jYWxsKCBlbGVtcyApO1xuXHR9XG5cblx0cmV0dXJuIGxlbiA/IGZuKCBlbGVtc1sgMCBdLCBrZXkgKSA6IGVtcHR5R2V0O1xufTtcblxuXG4vLyBNYXRjaGVzIGRhc2hlZCBzdHJpbmcgZm9yIGNhbWVsaXppbmdcbnZhciBybXNQcmVmaXggPSAvXi1tcy0vLFxuXHRyZGFzaEFscGhhID0gLy0oW2Etel0pL2c7XG5cbi8vIFVzZWQgYnkgY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKVxuZnVuY3Rpb24gZmNhbWVsQ2FzZSggYWxsLCBsZXR0ZXIgKSB7XG5cdHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gQ29udmVydCBkYXNoZWQgdG8gY2FtZWxDYXNlOyB1c2VkIGJ5IHRoZSBjc3MgYW5kIGRhdGEgbW9kdWxlc1xuLy8gU3VwcG9ydDogSUUgPD05IC0gMTEsIEVkZ2UgMTIgLSAxNVxuLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxuZnVuY3Rpb24gY2FtZWxDYXNlKCBzdHJpbmcgKSB7XG5cdHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xufVxudmFyIGFjY2VwdERhdGEgPSBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0Ly8gQWNjZXB0cyBvbmx5OlxuXHQvLyAgLSBOb2RlXG5cdC8vICAgIC0gTm9kZS5FTEVNRU5UX05PREVcblx0Ly8gICAgLSBOb2RlLkRPQ1VNRU5UX05PREVcblx0Ly8gIC0gT2JqZWN0XG5cdC8vICAgIC0gQW55XG5cdHJldHVybiBvd25lci5ub2RlVHlwZSA9PT0gMSB8fCBvd25lci5ub2RlVHlwZSA9PT0gOSB8fCAhKCArb3duZXIubm9kZVR5cGUgKTtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIERhdGEoKSB7XG5cdHRoaXMuZXhwYW5kbyA9IGpRdWVyeS5leHBhbmRvICsgRGF0YS51aWQrKztcbn1cblxuRGF0YS51aWQgPSAxO1xuXG5EYXRhLnByb3RvdHlwZSA9IHtcblxuXHRjYWNoZTogZnVuY3Rpb24oIG93bmVyICkge1xuXG5cdFx0Ly8gQ2hlY2sgaWYgdGhlIG93bmVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIGNhY2hlXG5cdFx0dmFyIHZhbHVlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0Ly8gSWYgbm90LCBjcmVhdGUgb25lXG5cdFx0aWYgKCAhdmFsdWUgKSB7XG5cdFx0XHR2YWx1ZSA9IHt9O1xuXG5cdFx0XHQvLyBXZSBjYW4gYWNjZXB0IGRhdGEgZm9yIG5vbi1lbGVtZW50IG5vZGVzIGluIG1vZGVybiBicm93c2Vycyxcblx0XHRcdC8vIGJ1dCB3ZSBzaG91bGQgbm90LCBzZWUgIzgzMzUuXG5cdFx0XHQvLyBBbHdheXMgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC5cblx0XHRcdGlmICggYWNjZXB0RGF0YSggb3duZXIgKSApIHtcblxuXHRcdFx0XHQvLyBJZiBpdCBpcyBhIG5vZGUgdW5saWtlbHkgdG8gYmUgc3RyaW5naWZ5LWVkIG9yIGxvb3BlZCBvdmVyXG5cdFx0XHRcdC8vIHVzZSBwbGFpbiBhc3NpZ25tZW50XG5cdFx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdID0gdmFsdWU7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHNlY3VyZSBpdCBpbiBhIG5vbi1lbnVtZXJhYmxlIHByb3BlcnR5XG5cdFx0XHRcdC8vIGNvbmZpZ3VyYWJsZSBtdXN0IGJlIHRydWUgdG8gYWxsb3cgdGhlIHByb3BlcnR5IHRvIGJlXG5cdFx0XHRcdC8vIGRlbGV0ZWQgd2hlbiBkYXRhIGlzIHJlbW92ZWRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIG93bmVyLCB0aGlzLmV4cGFuZG8sIHtcblx0XHRcdFx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB2YWx1ZTtcblx0fSxcblx0c2V0OiBmdW5jdGlvbiggb3duZXIsIGRhdGEsIHZhbHVlICkge1xuXHRcdHZhciBwcm9wLFxuXHRcdFx0Y2FjaGUgPSB0aGlzLmNhY2hlKCBvd25lciApO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCBrZXksIHZhbHVlIF0gYXJnc1xuXHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggZGF0YSApIF0gPSB2YWx1ZTtcblxuXHRcdC8vIEhhbmRsZTogWyBvd25lciwgeyBwcm9wZXJ0aWVzIH0gXSBhcmdzXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gQ29weSB0aGUgcHJvcGVydGllcyBvbmUtYnktb25lIHRvIHRoZSBjYWNoZSBvYmplY3Rcblx0XHRcdGZvciAoIHByb3AgaW4gZGF0YSApIHtcblx0XHRcdFx0Y2FjaGVbIGNhbWVsQ2FzZSggcHJvcCApIF0gPSBkYXRhWyBwcm9wIF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZTtcblx0fSxcblx0Z2V0OiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgP1xuXHRcdFx0dGhpcy5jYWNoZSggb3duZXIgKSA6XG5cblx0XHRcdC8vIEFsd2F5cyB1c2UgY2FtZWxDYXNlIGtleSAoZ2gtMjI1Nylcblx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSAmJiBvd25lclsgdGhpcy5leHBhbmRvIF1bIGNhbWVsQ2FzZSgga2V5ICkgXTtcblx0fSxcblx0YWNjZXNzOiBmdW5jdGlvbiggb3duZXIsIGtleSwgdmFsdWUgKSB7XG5cblx0XHQvLyBJbiBjYXNlcyB3aGVyZSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIE5vIGtleSB3YXMgc3BlY2lmaWVkXG5cdFx0Ly8gICAyLiBBIHN0cmluZyBrZXkgd2FzIHNwZWNpZmllZCwgYnV0IG5vIHZhbHVlIHByb3ZpZGVkXG5cdFx0Ly9cblx0XHQvLyBUYWtlIHRoZSBcInJlYWRcIiBwYXRoIGFuZCBhbGxvdyB0aGUgZ2V0IG1ldGhvZCB0byBkZXRlcm1pbmVcblx0XHQvLyB3aGljaCB2YWx1ZSB0byByZXR1cm4sIHJlc3BlY3RpdmVseSBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIFRoZSBlbnRpcmUgY2FjaGUgb2JqZWN0XG5cdFx0Ly8gICAyLiBUaGUgZGF0YSBzdG9yZWQgYXQgdGhlIGtleVxuXHRcdC8vXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQoICgga2V5ICYmIHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgKSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgKSB7XG5cblx0XHRcdHJldHVybiB0aGlzLmdldCggb3duZXIsIGtleSApO1xuXHRcdH1cblxuXHRcdC8vIFdoZW4gdGhlIGtleSBpcyBub3QgYSBzdHJpbmcsIG9yIGJvdGggYSBrZXkgYW5kIHZhbHVlXG5cdFx0Ly8gYXJlIHNwZWNpZmllZCwgc2V0IG9yIGV4dGVuZCAoZXhpc3Rpbmcgb2JqZWN0cykgd2l0aCBlaXRoZXI6XG5cdFx0Ly9cblx0XHQvLyAgIDEuIEFuIG9iamVjdCBvZiBwcm9wZXJ0aWVzXG5cdFx0Ly8gICAyLiBBIGtleSBhbmQgdmFsdWVcblx0XHQvL1xuXHRcdHRoaXMuc2V0KCBvd25lciwga2V5LCB2YWx1ZSApO1xuXG5cdFx0Ly8gU2luY2UgdGhlIFwic2V0XCIgcGF0aCBjYW4gaGF2ZSB0d28gcG9zc2libGUgZW50cnkgcG9pbnRzXG5cdFx0Ly8gcmV0dXJuIHRoZSBleHBlY3RlZCBkYXRhIGJhc2VkIG9uIHdoaWNoIHBhdGggd2FzIHRha2VuWypdXG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGtleTtcblx0fSxcblx0cmVtb3ZlOiBmdW5jdGlvbiggb3duZXIsIGtleSApIHtcblx0XHR2YXIgaSxcblx0XHRcdGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXG5cdFx0aWYgKCBjYWNoZSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgga2V5ICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBvZiBrZXlzXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIGtleSApICkge1xuXG5cdFx0XHRcdC8vIElmIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzLi4uXG5cdFx0XHRcdC8vIFdlIGFsd2F5cyBzZXQgY2FtZWxDYXNlIGtleXMsIHNvIHJlbW92ZSB0aGF0LlxuXHRcdFx0XHRrZXkgPSBrZXkubWFwKCBjYW1lbENhc2UgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGtleSA9IGNhbWVsQ2FzZSgga2V5ICk7XG5cblx0XHRcdFx0Ly8gSWYgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0cywgdXNlIGl0LlxuXHRcdFx0XHQvLyBPdGhlcndpc2UsIGNyZWF0ZSBhbiBhcnJheSBieSBtYXRjaGluZyBub24td2hpdGVzcGFjZVxuXHRcdFx0XHRrZXkgPSBrZXkgaW4gY2FjaGUgP1xuXHRcdFx0XHRcdFsga2V5IF0gOlxuXHRcdFx0XHRcdCgga2V5Lm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10gKTtcblx0XHRcdH1cblxuXHRcdFx0aSA9IGtleS5sZW5ndGg7XG5cblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRkZWxldGUgY2FjaGVbIGtleVsgaSBdIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhXG5cdFx0aWYgKCBrZXkgPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKSApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NVxuXHRcdFx0Ly8gV2Via2l0ICYgQmxpbmsgcGVyZm9ybWFuY2Ugc3VmZmVycyB3aGVuIGRlbGV0aW5nIHByb3BlcnRpZXNcblx0XHRcdC8vIGZyb20gRE9NIG5vZGVzLCBzbyBzZXQgdG8gdW5kZWZpbmVkIGluc3RlYWRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3ODYwNyAoYnVnIHJlc3RyaWN0ZWQpXG5cdFx0XHRpZiAoIG93bmVyLm5vZGVUeXBlICkge1xuXHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWxldGUgb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFzRGF0YTogZnVuY3Rpb24oIG93bmVyICkge1xuXHRcdHZhciBjYWNoZSA9IG93bmVyWyB0aGlzLmV4cGFuZG8gXTtcblx0XHRyZXR1cm4gY2FjaGUgIT09IHVuZGVmaW5lZCAmJiAhalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGNhY2hlICk7XG5cdH1cbn07XG52YXIgZGF0YVByaXYgPSBuZXcgRGF0YSgpO1xuXG52YXIgZGF0YVVzZXIgPSBuZXcgRGF0YSgpO1xuXG5cblxuLy9cdEltcGxlbWVudGF0aW9uIFN1bW1hcnlcbi8vXG4vL1x0MS4gRW5mb3JjZSBBUEkgc3VyZmFjZSBhbmQgc2VtYW50aWMgY29tcGF0aWJpbGl0eSB3aXRoIDEuOS54IGJyYW5jaFxuLy9cdDIuIEltcHJvdmUgdGhlIG1vZHVsZSdzIG1haW50YWluYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgc3RvcmFnZVxuLy9cdFx0cGF0aHMgdG8gYSBzaW5nbGUgbWVjaGFuaXNtLlxuLy9cdDMuIFVzZSB0aGUgc2FtZSBzaW5nbGUgbWVjaGFuaXNtIHRvIHN1cHBvcnQgXCJwcml2YXRlXCIgYW5kIFwidXNlclwiIGRhdGEuXG4vL1x0NC4gX05ldmVyXyBleHBvc2UgXCJwcml2YXRlXCIgZGF0YSB0byB1c2VyIGNvZGUgKFRPRE86IERyb3AgX2RhdGEsIF9yZW1vdmVEYXRhKVxuLy9cdDUuIEF2b2lkIGV4cG9zaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb24gdXNlciBvYmplY3RzIChlZy4gZXhwYW5kbyBwcm9wZXJ0aWVzKVxuLy9cdDYuIFByb3ZpZGUgYSBjbGVhciBwYXRoIGZvciBpbXBsZW1lbnRhdGlvbiB1cGdyYWRlIHRvIFdlYWtNYXAgaW4gMjAxNFxuXG52YXIgcmJyYWNlID0gL14oPzpcXHtbXFx3XFxXXSpcXH18XFxbW1xcd1xcV10qXFxdKSQvLFxuXHRybXVsdGlEYXNoID0gL1tBLVpdL2c7XG5cbmZ1bmN0aW9uIGdldERhdGEoIGRhdGEgKSB7XG5cdGlmICggZGF0YSA9PT0gXCJ0cnVlXCIgKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwiZmFsc2VcIiApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRpZiAoIGRhdGEgPT09IFwibnVsbFwiICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Ly8gT25seSBjb252ZXJ0IHRvIGEgbnVtYmVyIGlmIGl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBzdHJpbmdcblx0aWYgKCBkYXRhID09PSArZGF0YSArIFwiXCIgKSB7XG5cdFx0cmV0dXJuICtkYXRhO1xuXHR9XG5cblx0aWYgKCByYnJhY2UudGVzdCggZGF0YSApICkge1xuXHRcdHJldHVybiBKU09OLnBhcnNlKCBkYXRhICk7XG5cdH1cblxuXHRyZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHtcblx0dmFyIG5hbWU7XG5cblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxuXHQvLyBkYXRhIGZyb20gdGhlIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVcblx0aWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRuYW1lID0gXCJkYXRhLVwiICsga2V5LnJlcGxhY2UoIHJtdWx0aURhc2gsIFwiLSQmXCIgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRhdGEgPSBnZXREYXRhKCBkYXRhICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHt9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIGRhdGEgc28gaXQgaXNuJ3QgY2hhbmdlZCBsYXRlclxuXHRcdFx0ZGF0YVVzZXIuc2V0KCBlbGVtLCBrZXksIGRhdGEgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGRhdGE7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmhhc0RhdGEoIGVsZW0gKSB8fCBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICk7XG5cdH0sXG5cblx0ZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFVc2VyLmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFVc2VyLnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9LFxuXG5cdC8vIFRPRE86IE5vdyB0aGF0IGFsbCBjYWxscyB0byBfZGF0YSBhbmQgX3JlbW92ZURhdGEgaGF2ZSBiZWVuIHJlcGxhY2VkXG5cdC8vIHdpdGggZGlyZWN0IGNhbGxzIHRvIGRhdGFQcml2IG1ldGhvZHMsIHRoZXNlIGNhbiBiZSBkZXByZWNhdGVkLlxuXHRfZGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGRhdGEgKSB7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmFjY2VzcyggZWxlbSwgbmFtZSwgZGF0YSApO1xuXHR9LFxuXG5cdF9yZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcblx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIG5hbWUgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xuXHRcdHZhciBpLCBuYW1lLCBkYXRhLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXSxcblx0XHRcdGF0dHJzID0gZWxlbSAmJiBlbGVtLmF0dHJpYnV0ZXM7XG5cblx0XHQvLyBHZXRzIGFsbCB2YWx1ZXNcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0aWYgKCB0aGlzLmxlbmd0aCApIHtcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSApO1xuXG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAhZGF0YVByaXYuZ2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiICkgKSB7XG5cdFx0XHRcdFx0aSA9IGF0dHJzLmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0XHRcdFx0Ly8gVGhlIGF0dHJzIGVsZW1lbnRzIGNhbiBiZSBudWxsICgjMTQ4OTQpXG5cdFx0XHRcdFx0XHRpZiAoIGF0dHJzWyBpIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBhdHRyc1sgaSBdLm5hbWU7XG5cdFx0XHRcdFx0XHRcdGlmICggbmFtZS5pbmRleE9mKCBcImRhdGEtXCIgKSA9PT0gMCApIHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lID0gY2FtZWxDYXNlKCBuYW1lLnNsaWNlKCA1ICkgKTtcblx0XHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCBlbGVtLCBcImhhc0RhdGFBdHRyc1wiLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0cyBtdWx0aXBsZSB2YWx1ZXNcblx0XHRpZiAoIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVVzZXIuc2V0KCB0aGlzLCBrZXkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZGF0YTtcblxuXHRcdFx0Ly8gVGhlIGNhbGxpbmcgalF1ZXJ5IG9iamVjdCAoZWxlbWVudCBtYXRjaGVzKSBpcyBub3QgZW1wdHlcblx0XHRcdC8vIChhbmQgdGhlcmVmb3JlIGhhcyBhbiBlbGVtZW50IGFwcGVhcnMgYXQgdGhpc1sgMCBdKSBhbmQgdGhlXG5cdFx0XHQvLyBgdmFsdWVgIHBhcmFtZXRlciB3YXMgbm90IHVuZGVmaW5lZC4gQW4gZW1wdHkgalF1ZXJ5IG9iamVjdFxuXHRcdFx0Ly8gd2lsbCByZXN1bHQgaW4gYHVuZGVmaW5lZGAgZm9yIGVsZW0gPSB0aGlzWyAwIF0gd2hpY2ggd2lsbFxuXHRcdFx0Ly8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGRhdGEgY2FjaGUgaXMgbWFkZS5cblx0XHRcdGlmICggZWxlbSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xuXG5cdFx0XHRcdC8vIEF0dGVtcHQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgY2FjaGVcblx0XHRcdFx0Ly8gVGhlIGtleSB3aWxsIGFsd2F5cyBiZSBjYW1lbENhc2VkIGluIERhdGFcblx0XHRcdFx0ZGF0YSA9IGRhdGFVc2VyLmdldCggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBcImRpc2NvdmVyXCIgdGhlIGRhdGEgaW5cblx0XHRcdFx0Ly8gSFRNTDUgY3VzdG9tIGRhdGEtKiBhdHRyc1xuXHRcdFx0XHRkYXRhID0gZGF0YUF0dHIoIGVsZW0sIGtleSApO1xuXHRcdFx0XHRpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIHRyaWVkIHJlYWxseSBoYXJkLCBidXQgdGhlIGRhdGEgZG9lc24ndCBleGlzdC5cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgdGhlIGRhdGEuLi5cblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSBjYW1lbENhc2VkIGtleVxuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSwgdmFsdWUgKTtcblx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEsIG51bGwsIHRydWUgKTtcblx0fSxcblxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0ZGF0YVVzZXIucmVtb3ZlKCB0aGlzLCBrZXkgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgcXVldWU7XG5cblx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHR0eXBlID0gKCB0eXBlIHx8IFwiZnhcIiApICsgXCJxdWV1ZVwiO1xuXHRcdFx0cXVldWUgPSBkYXRhUHJpdi5nZXQoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0Ly8gU3BlZWQgdXAgZGVxdWV1ZSBieSBnZXR0aW5nIG91dCBxdWlja2x5IGlmIHRoaXMgaXMganVzdCBhIGxvb2t1cFxuXHRcdFx0aWYgKCBkYXRhICkge1xuXHRcdFx0XHRpZiAoICFxdWV1ZSB8fCBBcnJheS5pc0FycmF5KCBkYXRhICkgKSB7XG5cdFx0XHRcdFx0cXVldWUgPSBkYXRhUHJpdi5hY2Nlc3MoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHF1ZXVlLnB1c2goIGRhdGEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHF1ZXVlIHx8IFtdO1xuXHRcdH1cblx0fSxcblxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cblx0XHR2YXIgcXVldWUgPSBqUXVlcnkucXVldWUoIGVsZW0sIHR5cGUgKSxcblx0XHRcdHN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLFxuXHRcdFx0Zm4gPSBxdWV1ZS5zaGlmdCgpLFxuXHRcdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIHR5cGUgKSxcblx0XHRcdG5leHQgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIGVsZW0sIHR5cGUgKTtcblx0XHRcdH07XG5cblx0XHQvLyBJZiB0aGUgZnggcXVldWUgaXMgZGVxdWV1ZWQsIGFsd2F5cyByZW1vdmUgdGhlIHByb2dyZXNzIHNlbnRpbmVsXG5cdFx0aWYgKCBmbiA9PT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCk7XG5cdFx0XHRzdGFydExlbmd0aC0tO1xuXHRcdH1cblxuXHRcdGlmICggZm4gKSB7XG5cblx0XHRcdC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmdcblx0XHRcdC8vIGF1dG9tYXRpY2FsbHkgZGVxdWV1ZWRcblx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICkge1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KCBcImlucHJvZ3Jlc3NcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uXG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdGZuLmNhbGwoIGVsZW0sIG5leHQsIGhvb2tzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCAhc3RhcnRMZW5ndGggJiYgaG9va3MgKSB7XG5cdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8vIE5vdCBwdWJsaWMgLSBnZW5lcmF0ZSBhIHF1ZXVlSG9va3Mgb2JqZWN0LCBvciByZXR1cm4gdGhlIGN1cnJlbnQgb25lXG5cdF9xdWV1ZUhvb2tzOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHtcblx0XHR2YXIga2V5ID0gdHlwZSArIFwicXVldWVIb29rc1wiO1xuXHRcdHJldHVybiBkYXRhUHJpdi5nZXQoIGVsZW0sIGtleSApIHx8IGRhdGFQcml2LmFjY2VzcyggZWxlbSwga2V5LCB7XG5cdFx0XHRlbXB0eTogalF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICkuYWRkKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBbIHR5cGUgKyBcInF1ZXVlXCIsIGtleSBdICk7XG5cdFx0XHR9IClcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRxdWV1ZTogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIHNldHRlciA9IDI7XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZGF0YSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gXCJmeFwiO1xuXHRcdFx0c2V0dGVyLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoIDwgc2V0dGVyICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1sgMCBdLCB0eXBlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzIDpcblx0XHRcdHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xuXG5cdFx0XHRcdC8vIEVuc3VyZSBhIGhvb2tzIGZvciB0aGlzIHF1ZXVlXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xuXG5cdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmeFwiICYmIHF1ZXVlWyAwIF0gIT09IFwiaW5wcm9ncmVzc1wiICkge1xuXHRcdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0fSxcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xuXHRcdH0gKTtcblx0fSxcblx0Y2xlYXJRdWV1ZTogZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0cmV0dXJuIHRoaXMucXVldWUoIHR5cGUgfHwgXCJmeFwiLCBbXSApO1xuXHR9LFxuXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcblx0Ly8gYXJlIGVtcHRpZWQgKGZ4IGlzIHRoZSB0eXBlIGJ5IGRlZmF1bHQpXG5cdHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7XG5cdFx0dmFyIHRtcCxcblx0XHRcdGNvdW50ID0gMSxcblx0XHRcdGRlZmVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXG5cdFx0XHRpID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRyZXNvbHZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xuXHRcdFx0XHRcdGRlZmVyLnJlc29sdmVXaXRoKCBlbGVtZW50cywgWyBlbGVtZW50cyBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRpZiAoIHR5cGVvZiB0eXBlICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0b2JqID0gdHlwZTtcblx0XHRcdHR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0dG1wID0gZGF0YVByaXYuZ2V0KCBlbGVtZW50c1sgaSBdLCB0eXBlICsgXCJxdWV1ZUhvb2tzXCIgKTtcblx0XHRcdGlmICggdG1wICYmIHRtcC5lbXB0eSApIHtcblx0XHRcdFx0Y291bnQrKztcblx0XHRcdFx0dG1wLmVtcHR5LmFkZCggcmVzb2x2ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXNvbHZlKCk7XG5cdFx0cmV0dXJuIGRlZmVyLnByb21pc2UoIG9iaiApO1xuXHR9XG59ICk7XG52YXIgcG51bSA9ICggL1srLV0/KD86XFxkKlxcLnwpXFxkKyg/OltlRV1bKy1dP1xcZCt8KS8gKS5zb3VyY2U7XG5cbnZhciByY3NzTnVtID0gbmV3IFJlZ0V4cCggXCJeKD86KFsrLV0pPXwpKFwiICsgcG51bSArIFwiKShbYS16JV0qKSRcIiwgXCJpXCIgKTtcblxuXG52YXIgY3NzRXhwYW5kID0gWyBcIlRvcFwiLCBcIlJpZ2h0XCIsIFwiQm90dG9tXCIsIFwiTGVmdFwiIF07XG5cbnZhciBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG5cdHZhciBpc0F0dGFjaGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblx0XHR9LFxuXHRcdGNvbXBvc2VkID0geyBjb21wb3NlZDogdHJ1ZSB9O1xuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSssIEVkZ2UgMTIgLSAxOCssIGlPUyAxMC4wIC0gMTAuMiBvbmx5XG5cdC8vIENoZWNrIGF0dGFjaG1lbnQgYWNyb3NzIHNoYWRvdyBET00gYm91bmRhcmllcyB3aGVuIHBvc3NpYmxlIChnaC0zNTA0KVxuXHQvLyBTdXBwb3J0OiBpT1MgMTAuMC0xMC4yIG9ubHlcblx0Ly8gRWFybHkgaU9TIDEwIHZlcnNpb25zIHN1cHBvcnQgYGF0dGFjaFNoYWRvd2AgYnV0IG5vdCBgZ2V0Um9vdE5vZGVgLFxuXHQvLyBsZWFkaW5nIHRvIGVycm9ycy4gV2UgbmVlZCB0byBjaGVjayBmb3IgYGdldFJvb3ROb2RlYC5cblx0aWYgKCBkb2N1bWVudEVsZW1lbnQuZ2V0Um9vdE5vZGUgKSB7XG5cdFx0aXNBdHRhY2hlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgfHxcblx0XHRcdFx0ZWxlbS5nZXRSb290Tm9kZSggY29tcG9zZWQgKSA9PT0gZWxlbS5vd25lckRvY3VtZW50O1xuXHRcdH07XG5cdH1cbnZhciBpc0hpZGRlbldpdGhpblRyZWUgPSBmdW5jdGlvbiggZWxlbSwgZWwgKSB7XG5cblx0XHQvLyBpc0hpZGRlbldpdGhpblRyZWUgbWlnaHQgYmUgY2FsbGVkIGZyb20galF1ZXJ5I2ZpbHRlciBmdW5jdGlvbjtcblx0XHQvLyBpbiB0aGF0IGNhc2UsIGVsZW1lbnQgd2lsbCBiZSBzZWNvbmQgYXJndW1lbnRcblx0XHRlbGVtID0gZWwgfHwgZWxlbTtcblxuXHRcdC8vIElubGluZSBzdHlsZSB0cnVtcHMgYWxsXG5cdFx0cmV0dXJuIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJub25lXCIgfHxcblx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJlxuXG5cdFx0XHQvLyBPdGhlcndpc2UsIGNoZWNrIGNvbXB1dGVkIHN0eWxlXG5cdFx0XHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NDMgLSA0NVxuXHRcdFx0Ly8gRGlzY29ubmVjdGVkIGVsZW1lbnRzIGNhbiBoYXZlIGNvbXB1dGVkIGRpc3BsYXk6IG5vbmUsIHNvIGZpcnN0IGNvbmZpcm0gdGhhdCBlbGVtIGlzXG5cdFx0XHQvLyBpbiB0aGUgZG9jdW1lbnQuXG5cdFx0XHRpc0F0dGFjaGVkKCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gZWxlbS5ub2RlVHlwZSAmJlxuXHRcdFx0KCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgYXR0YWNoZWQsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGF0dGFjaGVkID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gQXBwZW5kIHRvIGZyYWdtZW50XG5cdFx0dG1wID0gZ2V0QWxsKCBmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApLCBcInNjcmlwdFwiICk7XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0aWYgKCBhdHRhY2hlZCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIHRtcCApO1xuXHRcdH1cblxuXHRcdC8vIENhcHR1cmUgZXhlY3V0YWJsZXNcblx0XHRpZiAoIHNjcmlwdHMgKSB7XG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdG1wWyBqKysgXSApICkge1xuXHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIGVsZW0udHlwZSB8fCBcIlwiICkgKSB7XG5cdFx0XHRcdFx0c2NyaXB0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZnJhZ21lbnQ7XG59XG5cblxuKCBmdW5jdGlvbigpIHtcblx0dmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLFxuXHRcdGRpdiA9IGZyYWdtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICkgKSxcblx0XHRpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHlcblx0Ly8gQ2hlY2sgc3RhdGUgbG9zdCBpZiB0aGUgbmFtZSBpcyBzZXQgKCMxMTIxNylcblx0Ly8gU3VwcG9ydDogV2luZG93cyBXZWIgQXBwcyAoV1dBKVxuXHQvLyBgbmFtZWAgYW5kIGB0eXBlYCBtdXN0IHVzZSAuc2V0QXR0cmlidXRlIGZvciBXV0EgKCMxNDkwMSlcblx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJyYWRpb1wiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XG5cblx0ZGl2LmFwcGVuZENoaWxkKCBpbnB1dCApO1xuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgb25seVxuXHQvLyBPbGRlciBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcblx0c3VwcG9ydC5jaGVja0Nsb25lID0gZGl2LmNsb25lTm9kZSggdHJ1ZSApLmNsb25lTm9kZSggdHJ1ZSApLmxhc3RDaGlsZC5jaGVja2VkO1xuXG5cdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuXHQvLyBNYWtlIHN1cmUgdGV4dGFyZWEgKGFuZCBjaGVja2JveCkgZGVmYXVsdFZhbHVlIGlzIHByb3Blcmx5IGNsb25lZFxuXHRkaXYuaW5uZXJIVE1MID0gXCI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+XCI7XG5cdHN1cHBvcnQubm9DbG9uZUNoZWNrZWQgPSAhIWRpdi5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlO1xufSApKCk7XG5cblxudmFyXG5cdHJrZXlFdmVudCA9IC9ea2V5Lyxcblx0cm1vdXNlRXZlbnQgPSAvXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sXG5cdHJ0eXBlbmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpLztcblxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHJldHVybkZhbHNlKCkge1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8vIFN1cHBvcnQ6IElFIDw9OSAtIDExK1xuLy8gZm9jdXMoKSBhbmQgYmx1cigpIGFyZSBhc3luY2hyb25vdXMsIGV4Y2VwdCB3aGVuIHRoZXkgYXJlIG5vLW9wLlxuLy8gU28gZXhwZWN0IGZvY3VzIHRvIGJlIHN5bmNocm9ub3VzIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBhY3RpdmUsXG4vLyBhbmQgYmx1ciB0byBiZSBzeW5jaHJvbm91cyB3aGVuIHRoZSBlbGVtZW50IGlzIG5vdCBhbHJlYWR5IGFjdGl2ZS5cbi8vIChmb2N1cyBhbmQgYmx1ciBhcmUgYWx3YXlzIHN5bmNocm9ub3VzIGluIG90aGVyIHN1cHBvcnRlZCBicm93c2Vycyxcbi8vIHRoaXMganVzdCBkZWZpbmVzIHdoZW4gd2UgY2FuIGNvdW50IG9uIGl0KS5cbmZ1bmN0aW9uIGV4cGVjdFN5bmMoIGVsZW0sIHR5cGUgKSB7XG5cdHJldHVybiAoIGVsZW0gPT09IHNhZmVBY3RpdmVFbGVtZW50KCkgKSA9PT0gKCB0eXBlID09PSBcImZvY3VzXCIgKTtcbn1cblxuLy8gU3VwcG9ydDogSUUgPD05IG9ubHlcbi8vIEFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGNhbiB0aHJvdyB1bmV4cGVjdGVkbHlcbi8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMzM5M1xuZnVuY3Rpb24gc2FmZUFjdGl2ZUVsZW1lbnQoKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cdH0gY2F0Y2ggKCBlcnIgKSB7IH1cbn1cblxuZnVuY3Rpb24gb24oIGVsZW0sIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIG9uZSApIHtcblx0dmFyIG9yaWdGbiwgdHlwZTtcblxuXHQvLyBUeXBlcyBjYW4gYmUgYSBtYXAgb2YgdHlwZXMvaGFuZGxlcnNcblx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XG5cblx0XHQvLyAoIHR5cGVzLU9iamVjdCwgc2VsZWN0b3IsIGRhdGEgKVxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLU9iamVjdCwgZGF0YSApXG5cdFx0XHRkYXRhID0gZGF0YSB8fCBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRmb3IgKCB0eXBlIGluIHR5cGVzICkge1xuXHRcdFx0b24oIGVsZW0sIHR5cGUsIHNlbGVjdG9yLCBkYXRhLCB0eXBlc1sgdHlwZSBdLCBvbmUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIGRhdGEgPT0gbnVsbCAmJiBmbiA9PSBudWxsICkge1xuXG5cdFx0Ly8gKCB0eXBlcywgZm4gKVxuXHRcdGZuID0gc2VsZWN0b3I7XG5cdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHR9IGVsc2UgaWYgKCBmbiA9PSBudWxsICkge1xuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBzZWxlY3RvciwgZm4gKVxuXHRcdFx0Zm4gPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gc2VsZWN0b3I7XG5cdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XG5cdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0fSBlbHNlIGlmICggIWZuICkge1xuXHRcdHJldHVybiBlbGVtO1xuXHR9XG5cblx0aWYgKCBvbmUgPT09IDEgKSB7XG5cdFx0b3JpZ0ZuID0gZm47XG5cdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdC8vIENhbiB1c2UgYW4gZW1wdHkgc2V0LCBzaW5jZSBldmVudCBjb250YWlucyB0aGUgaW5mb1xuXHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xuXHRcdFx0cmV0dXJuIG9yaWdGbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0fTtcblxuXHRcdC8vIFVzZSBzYW1lIGd1aWQgc28gY2FsbGVyIGNhbiByZW1vdmUgdXNpbmcgb3JpZ0ZuXG5cdFx0Zm4uZ3VpZCA9IG9yaWdGbi5ndWlkIHx8ICggb3JpZ0ZuLmd1aWQgPSBqUXVlcnkuZ3VpZCsrICk7XG5cdH1cblx0cmV0dXJuIGVsZW0uZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZXMsIGZuLCBkYXRhLCBzZWxlY3RvciApO1xuXHR9ICk7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBldmVudHMgLS0gbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxuICovXG5qUXVlcnkuZXZlbnQgPSB7XG5cblx0Z2xvYmFsOiB7fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XG5cblx0XHR2YXIgaGFuZGxlT2JqSW4sIGV2ZW50SGFuZGxlLCB0bXAsXG5cdFx0XHRldmVudHMsIHQsIGhhbmRsZU9iaixcblx0XHRcdHNwZWNpYWwsIGhhbmRsZXJzLCB0eXBlLCBuYW1lc3BhY2VzLCBvcmlnVHlwZSxcblx0XHRcdGVsZW1EYXRhID0gZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHQvLyBEb24ndCBhdHRhY2ggZXZlbnRzIHRvIG5vRGF0YSBvciB0ZXh0L2NvbW1lbnQgbm9kZXMgKGJ1dCBhbGxvdyBwbGFpbiBvYmplY3RzKVxuXHRcdGlmICggIWVsZW1EYXRhICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxuXHRcdGlmICggaGFuZGxlci5oYW5kbGVyICkge1xuXHRcdFx0aGFuZGxlT2JqSW4gPSBoYW5kbGVyO1xuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XG5cdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iakluLnNlbGVjdG9yO1xuXHRcdH1cblxuXHRcdC8vIEVuc3VyZSB0aGF0IGludmFsaWQgc2VsZWN0b3JzIHRocm93IGV4Y2VwdGlvbnMgYXQgYXR0YWNoIHRpbWVcblx0XHQvLyBFdmFsdWF0ZSBhZ2FpbnN0IGRvY3VtZW50RWxlbWVudCBpbiBjYXNlIGVsZW0gaXMgYSBub24tZWxlbWVudCBub2RlIChlLmcuLCBkb2N1bWVudClcblx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0alF1ZXJ5LmZpbmQubWF0Y2hlc1NlbGVjdG9yKCBkb2N1bWVudEVsZW1lbnQsIHNlbGVjdG9yICk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXG5cdFx0aWYgKCAhaGFuZGxlci5ndWlkICkge1xuXHRcdFx0aGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQrKztcblx0XHR9XG5cblx0XHQvLyBJbml0IHRoZSBlbGVtZW50J3MgZXZlbnQgc3RydWN0dXJlIGFuZCBtYWluIGhhbmRsZXIsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG5cdFx0aWYgKCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoICEoIGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlICkgKSB7XG5cdFx0XHRldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZSA9IGZ1bmN0aW9uKCBlICkge1xuXG5cdFx0XHRcdC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVudC50cmlnZ2VyKCkgYW5kXG5cdFx0XHRcdC8vIHdoZW4gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2FkZWRcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlID9cblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guYXBwbHkoIGVsZW0sIGFyZ3VtZW50cyApIDogdW5kZWZpbmVkO1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFRoZXJlICptdXN0KiBiZSBhIHR5cGUsIG5vIGF0dGFjaGluZyBuYW1lc3BhY2Utb25seSBoYW5kbGVyc1xuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcblx0XHRcdGhhbmRsZU9iaiA9IGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0b3JpZ1R5cGU6IG9yaWdUeXBlLFxuXHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRoYW5kbGVyOiBoYW5kbGVyLFxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXG5cdFx0XHRcdHNlbGVjdG9yOiBzZWxlY3Rvcixcblx0XHRcdFx0bmVlZHNDb250ZXh0OiBzZWxlY3RvciAmJiBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSxcblx0XHRcdFx0bmFtZXNwYWNlOiBuYW1lc3BhY2VzLmpvaW4oIFwiLlwiIClcblx0XHRcdH0sIGhhbmRsZU9iakluICk7XG5cblx0XHRcdC8vIEluaXQgdGhlIGV2ZW50IGhhbmRsZXIgcXVldWUgaWYgd2UncmUgdGhlIGZpcnN0XG5cdFx0XHRpZiAoICEoIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gKSApIHtcblx0XHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdO1xuXHRcdFx0XHRoYW5kbGVycy5kZWxlZ2F0ZUNvdW50ID0gMDtcblxuXHRcdFx0XHQvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyIGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2Vcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC5zZXR1cCB8fFxuXHRcdFx0XHRcdHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGVsZW0uYWRkRXZlbnRMaXN0ZW5lciApIHtcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCBzcGVjaWFsLmFkZCApIHtcblx0XHRcdFx0c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cblx0XHRcdFx0aWYgKCAhaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCApIHtcblx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCB0byB0aGUgZWxlbWVudCdzIGhhbmRsZXIgbGlzdCwgZGVsZWdhdGVzIGluIGZyb250XG5cdFx0XHRpZiAoIHNlbGVjdG9yICkge1xuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gS2VlcCB0cmFjayBvZiB3aGljaCBldmVudHMgaGF2ZSBldmVyIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvblxuXHRcdFx0alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTtcblx0XHR9XG5cblx0fSxcblxuXHQvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnRcblx0cmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlwZXMsIGhhbmRsZXIsIHNlbGVjdG9yLCBtYXBwZWRUeXBlcyApIHtcblxuXHRcdHZhciBqLCBvcmlnQ291bnQsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5oYXNEYXRhKCBlbGVtICkgJiYgZGF0YVByaXYuZ2V0KCBlbGVtICk7XG5cblx0XHRpZiAoICFlbGVtRGF0YSB8fCAhKCBldmVudHMgPSBlbGVtRGF0YS5ldmVudHMgKSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBPbmNlIGZvciBlYWNoIHR5cGUubmFtZXNwYWNlIGluIHR5cGVzOyB0eXBlIG1heSBiZSBvbWl0dGVkXG5cdFx0dHlwZXMgPSAoIHR5cGVzIHx8IFwiXCIgKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXHRcdHQgPSB0eXBlcy5sZW5ndGg7XG5cdFx0d2hpbGUgKCB0LS0gKSB7XG5cdFx0XHR0bXAgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1sgdCBdICkgfHwgW107XG5cdFx0XHR0eXBlID0gb3JpZ1R5cGUgPSB0bXBbIDEgXTtcblx0XHRcdG5hbWVzcGFjZXMgPSAoIHRtcFsgMiBdIHx8IFwiXCIgKS5zcGxpdCggXCIuXCIgKS5zb3J0KCk7XG5cblx0XHRcdC8vIFVuYmluZCBhbGwgZXZlbnRzIChvbiB0aGlzIG5hbWVzcGFjZSwgaWYgcHJvdmlkZWQpIGZvciB0aGUgZWxlbWVudFxuXHRcdFx0aWYgKCAhdHlwZSApIHtcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwgdHlwZSArIHR5cGVzWyB0IF0sIGhhbmRsZXIsIHNlbGVjdG9yLCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXHRcdFx0dHlwZSA9ICggc2VsZWN0b3IgPyBzcGVjaWFsLmRlbGVnYXRlVHlwZSA6IHNwZWNpYWwuYmluZFR5cGUgKSB8fCB0eXBlO1xuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSB8fCBbXTtcblx0XHRcdHRtcCA9IHRtcFsgMiBdICYmXG5cdFx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApO1xuXG5cdFx0XHQvLyBSZW1vdmUgbWF0Y2hpbmcgZXZlbnRzXG5cdFx0XHRvcmlnQ291bnQgPSBqID0gaGFuZGxlcnMubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBqIF07XG5cblx0XHRcdFx0aWYgKCAoIG1hcHBlZFR5cGVzIHx8IG9yaWdUeXBlID09PSBoYW5kbGVPYmoub3JpZ1R5cGUgKSAmJlxuXHRcdFx0XHRcdCggIWhhbmRsZXIgfHwgaGFuZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApICYmXG5cdFx0XHRcdFx0KCAhdG1wIHx8IHRtcC50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxuXHRcdFx0XHRcdCggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHxcblx0XHRcdFx0XHRcdHNlbGVjdG9yID09PSBcIioqXCIgJiYgaGFuZGxlT2JqLnNlbGVjdG9yICkgKSB7XG5cdFx0XHRcdFx0aGFuZGxlcnMuc3BsaWNlKCBqLCAxICk7XG5cblx0XHRcdFx0XHRpZiAoIGhhbmRsZU9iai5zZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQtLTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBzcGVjaWFsLnJlbW92ZSApIHtcblx0XHRcdFx0XHRcdHNwZWNpYWwucmVtb3ZlLmNhbGwoIGVsZW0sIGhhbmRsZU9iaiApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0XG5cdFx0XHQvLyAoYXZvaWRzIHBvdGVudGlhbCBmb3IgZW5kbGVzcyByZWN1cnNpb24gZHVyaW5nIHJlbW92YWwgb2Ygc3BlY2lhbCBldmVudCBoYW5kbGVycylcblx0XHRcdGlmICggb3JpZ0NvdW50ICYmICFoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRcdGlmICggIXNwZWNpYWwudGVhcmRvd24gfHxcblx0XHRcdFx0XHRzcGVjaWFsLnRlYXJkb3duLmNhbGwoIGVsZW0sIG5hbWVzcGFjZXMsIGVsZW1EYXRhLmhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxldGUgZXZlbnRzWyB0eXBlIF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGRhdGEgYW5kIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcblx0XHRpZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHtcblx0XHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgXCJoYW5kbGUgZXZlbnRzXCIgKTtcblx0XHR9XG5cdH0sXG5cblx0ZGlzcGF0Y2g6IGZ1bmN0aW9uKCBuYXRpdmVFdmVudCApIHtcblxuXHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxuXHRcdHZhciBldmVudCA9IGpRdWVyeS5ldmVudC5maXgoIG5hdGl2ZUV2ZW50ICk7XG5cblx0XHR2YXIgaSwgaiwgcmV0LCBtYXRjaGVkLCBoYW5kbGVPYmosIGhhbmRsZXJRdWV1ZSxcblx0XHRcdGFyZ3MgPSBuZXcgQXJyYXkoIGFyZ3VtZW50cy5sZW5ndGggKSxcblx0XHRcdGhhbmRsZXJzID0gKCBkYXRhUHJpdi5nZXQoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10sXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fTtcblxuXHRcdC8vIFVzZSB0aGUgZml4LWVkIGpRdWVyeS5FdmVudCByYXRoZXIgdGhhbiB0aGUgKHJlYWQtb25seSkgbmF0aXZlIGV2ZW50XG5cdFx0YXJnc1sgMCBdID0gZXZlbnQ7XG5cblx0XHRmb3IgKCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdH1cblxuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcblxuXHRcdC8vIENhbGwgdGhlIHByZURpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZSwgYW5kIGxldCBpdCBiYWlsIGlmIGRlc2lyZWRcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBEZXRlcm1pbmUgaGFuZGxlcnNcblx0XHRoYW5kbGVyUXVldWUgPSBqUXVlcnkuZXZlbnQuaGFuZGxlcnMuY2FsbCggdGhpcywgZXZlbnQsIGhhbmRsZXJzICk7XG5cblx0XHQvLyBSdW4gZGVsZWdhdGVzIGZpcnN0OyB0aGV5IG1heSB3YW50IHRvIHN0b3AgcHJvcGFnYXRpb24gYmVuZWF0aCB1c1xuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpKysgXSApICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0ZXZlbnQuY3VycmVudFRhcmdldCA9IG1hdGNoZWQuZWxlbTtcblxuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggaGFuZGxlT2JqID0gbWF0Y2hlZC5oYW5kbGVyc1sgaisrIF0gKSAmJlxuXHRcdFx0XHQhZXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGUgZXZlbnQgaXMgbmFtZXNwYWNlZCwgdGhlbiBlYWNoIGhhbmRsZXIgaXMgb25seSBpbnZva2VkIGlmIGl0IGlzXG5cdFx0XHRcdC8vIHNwZWNpYWxseSB1bml2ZXJzYWwgb3IgaXRzIG5hbWVzcGFjZXMgYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGV2ZW50J3MuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgaGFuZGxlT2JqLm5hbWVzcGFjZSA9PT0gZmFsc2UgfHxcblx0XHRcdFx0XHRldmVudC5ybmFtZXNwYWNlLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApIHtcblxuXHRcdFx0XHRcdGV2ZW50LmhhbmRsZU9iaiA9IGhhbmRsZU9iajtcblx0XHRcdFx0XHRldmVudC5kYXRhID0gaGFuZGxlT2JqLmRhdGE7XG5cblx0XHRcdFx0XHRyZXQgPSAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGhhbmRsZU9iai5vcmlnVHlwZSBdIHx8IHt9ICkuaGFuZGxlIHx8XG5cdFx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlciApLmFwcGx5KCBtYXRjaGVkLmVsZW0sIGFyZ3MgKTtcblxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRpZiAoICggZXZlbnQucmVzdWx0ID0gcmV0ICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXG5cdFx0aWYgKCBzcGVjaWFsLnBvc3REaXNwYXRjaCApIHtcblx0XHRcdHNwZWNpYWwucG9zdERpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHRoYW5kbGVyczogZnVuY3Rpb24oIGV2ZW50LCBoYW5kbGVycyApIHtcblx0XHR2YXIgaSwgaGFuZGxlT2JqLCBzZWwsIG1hdGNoZWRIYW5kbGVycywgbWF0Y2hlZFNlbGVjdG9ycyxcblx0XHRcdGhhbmRsZXJRdWV1ZSA9IFtdLFxuXHRcdFx0ZGVsZWdhdGVDb3VudCA9IGhhbmRsZXJzLmRlbGVnYXRlQ291bnQsXG5cdFx0XHRjdXIgPSBldmVudC50YXJnZXQ7XG5cblx0XHQvLyBGaW5kIGRlbGVnYXRlIGhhbmRsZXJzXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OVxuXHRcdFx0Ly8gQmxhY2staG9sZSBTVkcgPHVzZT4gaW5zdGFuY2UgdHJlZXMgKHRyYWMtMTMxODApXG5cdFx0XHRjdXIubm9kZVR5cGUgJiZcblxuXHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTQyXG5cdFx0XHQvLyBTdXBwcmVzcyBzcGVjLXZpb2xhdGluZyBjbGlja3MgaW5kaWNhdGluZyBhIG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uICh0cmFjLTM4NjEpXG5cdFx0XHQvLyBodHRwczovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNldmVudC10eXBlLWNsaWNrXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHQvLyAuLi5idXQgbm90IGFycm93IGtleSBcImNsaWNrc1wiIG9mIHJhZGlvIGlucHV0cywgd2hpY2ggY2FuIGhhdmUgYGJ1dHRvbmAgLTEgKGdoLTIzNDMpXG5cdFx0XHQhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgZXZlbnQuYnV0dG9uID49IDEgKSApIHtcblxuXHRcdFx0Zm9yICggOyBjdXIgIT09IHRoaXM7IGN1ciA9IGN1ci5wYXJlbnROb2RlIHx8IHRoaXMgKSB7XG5cblx0XHRcdFx0Ly8gRG9uJ3QgY2hlY2sgbm9uLWVsZW1lbnRzICgjMTMyMDgpXG5cdFx0XHRcdC8vIERvbid0IHByb2Nlc3MgY2xpY2tzIG9uIGRpc2FibGVkIGVsZW1lbnRzICgjNjkxMSwgIzgxNjUsICMxMTM4MiwgIzExNzY0KVxuXHRcdFx0XHRpZiAoIGN1ci5ub2RlVHlwZSA9PT0gMSAmJiAhKCBldmVudC50eXBlID09PSBcImNsaWNrXCIgJiYgY3VyLmRpc2FibGVkID09PSB0cnVlICkgKSB7XG5cdFx0XHRcdFx0bWF0Y2hlZEhhbmRsZXJzID0gW107XG5cdFx0XHRcdFx0bWF0Y2hlZFNlbGVjdG9ycyA9IHt9O1xuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGkgXTtcblxuXHRcdFx0XHRcdFx0Ly8gRG9uJ3QgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKCMxMzIwMylcblx0XHRcdFx0XHRcdHNlbCA9IGhhbmRsZU9iai5zZWxlY3RvciArIFwiIFwiO1xuXG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdID0gaGFuZGxlT2JqLm5lZWRzQ29udGV4dCA/XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5KCBzZWwsIHRoaXMgKS5pbmRleCggY3VyICkgPiAtMSA6XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LmZpbmQoIHNlbCwgdGhpcywgbnVsbCwgWyBjdXIgXSApLmxlbmd0aDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlZFNlbGVjdG9yc1sgc2VsIF0gKSB7XG5cdFx0XHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycy5wdXNoKCBoYW5kbGVPYmogKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVkSGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogbWF0Y2hlZEhhbmRsZXJzIH0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBZGQgdGhlIHJlbWFpbmluZyAoZGlyZWN0bHktYm91bmQpIGhhbmRsZXJzXG5cdFx0Y3VyID0gdGhpcztcblx0XHRpZiAoIGRlbGVnYXRlQ291bnQgPCBoYW5kbGVycy5sZW5ndGggKSB7XG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCggeyBlbGVtOiBjdXIsIGhhbmRsZXJzOiBoYW5kbGVycy5zbGljZSggZGVsZWdhdGVDb3VudCApIH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaGFuZGxlclF1ZXVlO1xuXHR9LFxuXG5cdGFkZFByb3A6IGZ1bmN0aW9uKCBuYW1lLCBob29rICkge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSwgbmFtZSwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuXHRcdFx0Z2V0OiBpc0Z1bmN0aW9uKCBob29rICkgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGhvb2soIHRoaXMub3JpZ2luYWxFdmVudCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50WyBuYW1lIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCBuYW1lLCB7XG5cdFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0Zml4OiBmdW5jdGlvbiggb3JpZ2luYWxFdmVudCApIHtcblx0XHRyZXR1cm4gb3JpZ2luYWxFdmVudFsgalF1ZXJ5LmV4cGFuZG8gXSA/XG5cdFx0XHRvcmlnaW5hbEV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcblx0fSxcblxuXHRzcGVjaWFsOiB7XG5cdFx0bG9hZDoge1xuXG5cdFx0XHQvLyBQcmV2ZW50IHRyaWdnZXJlZCBpbWFnZS5sb2FkIGV2ZW50cyBmcm9tIGJ1YmJsaW5nIHRvIHdpbmRvdy5sb2FkXG5cdFx0XHRub0J1YmJsZTogdHJ1ZVxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gVXRpbGl6ZSBuYXRpdmUgZXZlbnQgdG8gZW5zdXJlIGNvcnJlY3Qgc3RhdGUgZm9yIGNoZWNrYWJsZSBpbnB1dHNcblx0XHRcdHNldHVwOiBmdW5jdGlvbiggZGF0YSApIHtcblxuXHRcdFx0XHQvLyBGb3IgbXV0dWFsIGNvbXByZXNzaWJpbGl0eSB3aXRoIF9kZWZhdWx0LCByZXBsYWNlIGB0aGlzYCBhY2Nlc3Mgd2l0aCBhIGxvY2FsIHZhci5cblx0XHRcdFx0Ly8gYHx8IGRhdGFgIGlzIGRlYWQgY29kZSBtZWFudCBvbmx5IHRvIHByZXNlcnZlIHRoZSB2YXJpYWJsZSB0aHJvdWdoIG1pbmlmaWNhdGlvbi5cblx0XHRcdFx0dmFyIGVsID0gdGhpcyB8fCBkYXRhO1xuXG5cdFx0XHRcdC8vIENsYWltIHRoZSBmaXJzdCBoYW5kbGVyXG5cdFx0XHRcdGlmICggcmNoZWNrYWJsZVR5cGUudGVzdCggZWwudHlwZSApICYmXG5cdFx0XHRcdFx0ZWwuY2xpY2sgJiYgbm9kZU5hbWUoIGVsLCBcImlucHV0XCIgKSApIHtcblxuXHRcdFx0XHRcdC8vIGRhdGFQcml2LnNldCggZWwsIFwiY2xpY2tcIiwgLi4uIClcblx0XHRcdFx0XHRsZXZlcmFnZU5hdGl2ZSggZWwsIFwiY2xpY2tcIiwgcmV0dXJuVHJ1ZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBwcm9jZXNzaW5nIGluIHRoZSBjYWxsZXJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCBkYXRhICkge1xuXG5cdFx0XHRcdC8vIEZvciBtdXR1YWwgY29tcHJlc3NpYmlsaXR5IHdpdGggX2RlZmF1bHQsIHJlcGxhY2UgYHRoaXNgIGFjY2VzcyB3aXRoIGEgbG9jYWwgdmFyLlxuXHRcdFx0XHQvLyBgfHwgZGF0YWAgaXMgZGVhZCBjb2RlIG1lYW50IG9ubHkgdG8gcHJlc2VydmUgdGhlIHZhcmlhYmxlIHRocm91Z2ggbWluaWZpY2F0aW9uLlxuXHRcdFx0XHR2YXIgZWwgPSB0aGlzIHx8IGRhdGE7XG5cblx0XHRcdFx0Ly8gRm9yY2Ugc2V0dXAgYmVmb3JlIHRyaWdnZXJpbmcgYSBjbGlja1xuXHRcdFx0XHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsLnR5cGUgKSAmJlxuXHRcdFx0XHRcdGVsLmNsaWNrICYmIG5vZGVOYW1lKCBlbCwgXCJpbnB1dFwiICkgKSB7XG5cblx0XHRcdFx0XHRsZXZlcmFnZU5hdGl2ZSggZWwsIFwiY2xpY2tcIiApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmV0dXJuIG5vbi1mYWxzZSB0byBhbGxvdyBub3JtYWwgZXZlbnQtcGF0aCBwcm9wYWdhdGlvblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBzdXBwcmVzcyBuYXRpdmUgLmNsaWNrKCkgb24gbGlua3Ncblx0XHRcdC8vIEFsc28gcHJldmVudCBpdCBpZiB3ZSdyZSBjdXJyZW50bHkgaW5zaWRlIGEgbGV2ZXJhZ2VkIG5hdGl2ZS1ldmVudCBzdGFja1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblx0XHRcdFx0cmV0dXJuIHJjaGVja2FibGVUeXBlLnRlc3QoIHRhcmdldC50eXBlICkgJiZcblx0XHRcdFx0XHR0YXJnZXQuY2xpY2sgJiYgbm9kZU5hbWUoIHRhcmdldCwgXCJpbnB1dFwiICkgJiZcblx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRhcmdldCwgXCJjbGlja1wiICkgfHxcblx0XHRcdFx0XHRub2RlTmFtZSggdGFyZ2V0LCBcImFcIiApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRiZWZvcmV1bmxvYWQ6IHtcblx0XHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggMjArXG5cdFx0XHRcdC8vIEZpcmVmb3ggZG9lc24ndCBhbGVydCBpZiB0aGUgcmV0dXJuVmFsdWUgZmllbGQgaXMgbm90IHNldC5cblx0XHRcdFx0aWYgKCBldmVudC5yZXN1bHQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50ICkge1xuXHRcdFx0XHRcdGV2ZW50Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBldmVudC5yZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbi8vIEVuc3VyZSB0aGUgcHJlc2VuY2Ugb2YgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIG1hbnVhbGx5LXRyaWdnZXJlZFxuLy8gc3ludGhldGljIGV2ZW50cyBieSBpbnRlcnJ1cHRpbmcgcHJvZ3Jlc3MgdW50aWwgcmVpbnZva2VkIGluIHJlc3BvbnNlIHRvXG4vLyAqbmF0aXZlKiBldmVudHMgdGhhdCBpdCBmaXJlcyBkaXJlY3RseSwgZW5zdXJpbmcgdGhhdCBzdGF0ZSBjaGFuZ2VzIGhhdmVcbi8vIGFscmVhZHkgb2NjdXJyZWQgYmVmb3JlIG90aGVyIGxpc3RlbmVycyBhcmUgaW52b2tlZC5cbmZ1bmN0aW9uIGxldmVyYWdlTmF0aXZlKCBlbCwgdHlwZSwgZXhwZWN0U3luYyApIHtcblxuXHQvLyBNaXNzaW5nIGV4cGVjdFN5bmMgaW5kaWNhdGVzIGEgdHJpZ2dlciBjYWxsLCB3aGljaCBtdXN0IGZvcmNlIHNldHVwIHRocm91Z2ggalF1ZXJ5LmV2ZW50LmFkZFxuXHRpZiAoICFleHBlY3RTeW5jICkge1xuXHRcdGlmICggZGF0YVByaXYuZ2V0KCBlbCwgdHlwZSApID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBlbCwgdHlwZSwgcmV0dXJuVHJ1ZSApO1xuXHRcdH1cblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBSZWdpc3RlciB0aGUgY29udHJvbGxlciBhcyBhIHNwZWNpYWwgdW5pdmVyc2FsIGhhbmRsZXIgZm9yIGFsbCBldmVudCBuYW1lc3BhY2VzXG5cdGRhdGFQcml2LnNldCggZWwsIHR5cGUsIGZhbHNlICk7XG5cdGpRdWVyeS5ldmVudC5hZGQoIGVsLCB0eXBlLCB7XG5cdFx0bmFtZXNwYWNlOiBmYWxzZSxcblx0XHRoYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cdFx0XHR2YXIgbm90QXN5bmMsIHJlc3VsdCxcblx0XHRcdFx0c2F2ZWQgPSBkYXRhUHJpdi5nZXQoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0aWYgKCAoIGV2ZW50LmlzVHJpZ2dlciAmIDEgKSAmJiB0aGlzWyB0eXBlIF0gKSB7XG5cblx0XHRcdFx0Ly8gSW50ZXJydXB0IHByb2Nlc3Npbmcgb2YgdGhlIG91dGVyIHN5bnRoZXRpYyAudHJpZ2dlcigpZWQgZXZlbnRcblx0XHRcdFx0Ly8gU2F2ZWQgZGF0YSBzaG91bGQgYmUgZmFsc2UgaW4gc3VjaCBjYXNlcywgYnV0IG1pZ2h0IGJlIGEgbGVmdG92ZXIgY2FwdHVyZSBvYmplY3Rcblx0XHRcdFx0Ly8gZnJvbSBhbiBhc3luYyBuYXRpdmUgaGFuZGxlciAoZ2gtNDM1MClcblx0XHRcdFx0aWYgKCAhc2F2ZWQubGVuZ3RoICkge1xuXG5cdFx0XHRcdFx0Ly8gU3RvcmUgYXJndW1lbnRzIGZvciB1c2Ugd2hlbiBoYW5kbGluZyB0aGUgaW5uZXIgbmF0aXZlIGV2ZW50XG5cdFx0XHRcdFx0Ly8gVGhlcmUgd2lsbCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IChhbiBldmVudCBvYmplY3QpLCBzbyB0aGlzIGFycmF5XG5cdFx0XHRcdFx0Ly8gd2lsbCBub3QgYmUgY29uZnVzZWQgd2l0aCBhIGxlZnRvdmVyIGNhcHR1cmUgb2JqZWN0LlxuXHRcdFx0XHRcdHNhdmVkID0gc2xpY2UuY2FsbCggYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCB0eXBlLCBzYXZlZCApO1xuXG5cdFx0XHRcdFx0Ly8gVHJpZ2dlciB0aGUgbmF0aXZlIGV2ZW50IGFuZCBjYXB0dXJlIGl0cyByZXN1bHRcblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcblx0XHRcdFx0XHQvLyBmb2N1cygpIGFuZCBibHVyKCkgYXJlIGFzeW5jaHJvbm91c1xuXHRcdFx0XHRcdG5vdEFzeW5jID0gZXhwZWN0U3luYyggdGhpcywgdHlwZSApO1xuXHRcdFx0XHRcdHRoaXNbIHR5cGUgXSgpO1xuXHRcdFx0XHRcdHJlc3VsdCA9IGRhdGFQcml2LmdldCggdGhpcywgdHlwZSApO1xuXHRcdFx0XHRcdGlmICggc2F2ZWQgIT09IHJlc3VsdCB8fCBub3RBc3luYyApIHtcblx0XHRcdFx0XHRcdGRhdGFQcml2LnNldCggdGhpcywgdHlwZSwgZmFsc2UgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggc2F2ZWQgIT09IHJlc3VsdCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSBvdXRlciBzeW50aGV0aWMgZXZlbnRcblx0XHRcdFx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHQudmFsdWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIElmIHRoaXMgaXMgYW4gaW5uZXIgc3ludGhldGljIGV2ZW50IGZvciBhbiBldmVudCB3aXRoIGEgYnViYmxpbmcgc3Vycm9nYXRlXG5cdFx0XHRcdC8vIChmb2N1cyBvciBibHVyKSwgYXNzdW1lIHRoYXQgdGhlIHN1cnJvZ2F0ZSBhbHJlYWR5IHByb3BhZ2F0ZWQgZnJvbSB0cmlnZ2VyaW5nIHRoZVxuXHRcdFx0XHQvLyBuYXRpdmUgZXZlbnQgYW5kIHByZXZlbnQgdGhhdCBmcm9tIGhhcHBlbmluZyBhZ2FpbiBoZXJlLlxuXHRcdFx0XHQvLyBUaGlzIHRlY2huaWNhbGx5IGdldHMgdGhlIG9yZGVyaW5nIHdyb25nIHcuci50LiB0byBgLnRyaWdnZXIoKWAgKGluIHdoaWNoIHRoZVxuXHRcdFx0XHQvLyBidWJibGluZyBzdXJyb2dhdGUgcHJvcGFnYXRlcyAqYWZ0ZXIqIHRoZSBub24tYnViYmxpbmcgYmFzZSksIGJ1dCB0aGF0IHNlZW1zXG5cdFx0XHRcdC8vIGxlc3MgYmFkIHRoYW4gZHVwbGljYXRpb24uXG5cdFx0XHRcdH0gZWxzZSBpZiAoICggalF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fSApLmRlbGVnYXRlVHlwZSApIHtcblx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIGlzIGEgbmF0aXZlIGV2ZW50IHRyaWdnZXJlZCBhYm92ZSwgZXZlcnl0aGluZyBpcyBub3cgaW4gb3JkZXJcblx0XHRcdC8vIEZpcmUgYW4gaW5uZXIgc3ludGhldGljIGV2ZW50IHdpdGggdGhlIG9yaWdpbmFsIGFyZ3VtZW50c1xuXHRcdFx0fSBlbHNlIGlmICggc2F2ZWQubGVuZ3RoICkge1xuXG5cdFx0XHRcdC8vIC4uLmFuZCBjYXB0dXJlIHRoZSByZXN1bHRcblx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCB0eXBlLCB7XG5cdFx0XHRcdFx0dmFsdWU6IGpRdWVyeS5ldmVudC50cmlnZ2VyKFxuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMStcblx0XHRcdFx0XHRcdC8vIEV4dGVuZCB3aXRoIHRoZSBwcm90b3R5cGUgdG8gcmVzZXQgdGhlIGFib3ZlIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG5cdFx0XHRcdFx0XHRqUXVlcnkuZXh0ZW5kKCBzYXZlZFsgMCBdLCBqUXVlcnkuRXZlbnQucHJvdG90eXBlICksXG5cdFx0XHRcdFx0XHRzYXZlZC5zbGljZSggMSApLFxuXHRcdFx0XHRcdFx0dGhpc1xuXHRcdFx0XHRcdClcblx0XHRcdFx0fSApO1xuXG5cdFx0XHRcdC8vIEFib3J0IGhhbmRsaW5nIG9mIHRoZSBuYXRpdmUgZXZlbnRcblx0XHRcdFx0ZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59XG5cbmpRdWVyeS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBoYW5kbGUgKSB7XG5cblx0Ly8gVGhpcyBcImlmXCIgaXMgbmVlZGVkIGZvciBwbGFpbiBvYmplY3RzXG5cdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuXHRcdGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgaGFuZGxlICk7XG5cdH1cbn07XG5cbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xuXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxuXHRpZiAoICEoIHRoaXMgaW5zdGFuY2VvZiBqUXVlcnkuRXZlbnQgKSApIHtcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApO1xuXHR9XG5cblx0Ly8gRXZlbnQgb2JqZWN0XG5cdGlmICggc3JjICYmIHNyYy50eXBlICkge1xuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcblx0XHR0aGlzLnR5cGUgPSBzcmMudHlwZTtcblxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXG5cdFx0Ly8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3QgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdFx0dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fFxuXHRcdFx0XHRzcmMuZGVmYXVsdFByZXZlbnRlZCA9PT0gdW5kZWZpbmVkICYmXG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTIuMyBvbmx5XG5cdFx0XHRcdHNyYy5yZXR1cm5WYWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0cmV0dXJuVHJ1ZSA6XG5cdFx0XHRyZXR1cm5GYWxzZTtcblxuXHRcdC8vIENyZWF0ZSB0YXJnZXQgcHJvcGVydGllc1xuXHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA8PTYgLSA3IG9ubHlcblx0XHQvLyBUYXJnZXQgc2hvdWxkIG5vdCBiZSBhIHRleHQgbm9kZSAoIzUwNCwgIzEzMTQzKVxuXHRcdHRoaXMudGFyZ2V0ID0gKCBzcmMudGFyZ2V0ICYmIHNyYy50YXJnZXQubm9kZVR5cGUgPT09IDMgKSA/XG5cdFx0XHRzcmMudGFyZ2V0LnBhcmVudE5vZGUgOlxuXHRcdFx0c3JjLnRhcmdldDtcblxuXHRcdHRoaXMuY3VycmVudFRhcmdldCA9IHNyYy5jdXJyZW50VGFyZ2V0O1xuXHRcdHRoaXMucmVsYXRlZFRhcmdldCA9IHNyYy5yZWxhdGVkVGFyZ2V0O1xuXG5cdC8vIEV2ZW50IHR5cGVcblx0fSBlbHNlIHtcblx0XHR0aGlzLnR5cGUgPSBzcmM7XG5cdH1cblxuXHQvLyBQdXQgZXhwbGljaXRseSBwcm92aWRlZCBwcm9wZXJ0aWVzIG9udG8gdGhlIGV2ZW50IG9iamVjdFxuXHRpZiAoIHByb3BzICkge1xuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxuXHR0aGlzLnRpbWVTdGFtcCA9IHNyYyAmJiBzcmMudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG5cblx0Ly8gTWFyayBpdCBhcyBmaXhlZFxuXHR0aGlzWyBqUXVlcnkuZXhwYW5kbyBdID0gdHJ1ZTtcbn07XG5cbi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBET00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGluZ1xuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxualF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHtcblx0Y29uc3RydWN0b3I6IGpRdWVyeS5FdmVudCxcblx0aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcblx0aXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLFxuXHRpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzU2ltdWxhdGVkOiBmYWxzZSxcblxuXHRwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH1cblx0fSxcblx0c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSByZXR1cm5UcnVlO1xuXG5cdFx0aWYgKCBlICYmICF0aGlzLmlzU2ltdWxhdGVkICkge1xuXHRcdFx0ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9XG59O1xuXG4vLyBJbmNsdWRlcyBhbGwgY29tbW9uIGV2ZW50IHByb3BzIGluY2x1ZGluZyBLZXlFdmVudCBhbmQgTW91c2VFdmVudCBzcGVjaWZpYyBwcm9wc1xualF1ZXJ5LmVhY2goIHtcblx0YWx0S2V5OiB0cnVlLFxuXHRidWJibGVzOiB0cnVlLFxuXHRjYW5jZWxhYmxlOiB0cnVlLFxuXHRjaGFuZ2VkVG91Y2hlczogdHJ1ZSxcblx0Y3RybEtleTogdHJ1ZSxcblx0ZGV0YWlsOiB0cnVlLFxuXHRldmVudFBoYXNlOiB0cnVlLFxuXHRtZXRhS2V5OiB0cnVlLFxuXHRwYWdlWDogdHJ1ZSxcblx0cGFnZVk6IHRydWUsXG5cdHNoaWZ0S2V5OiB0cnVlLFxuXHR2aWV3OiB0cnVlLFxuXHRcImNoYXJcIjogdHJ1ZSxcblx0Y29kZTogdHJ1ZSxcblx0Y2hhckNvZGU6IHRydWUsXG5cdGtleTogdHJ1ZSxcblx0a2V5Q29kZTogdHJ1ZSxcblx0YnV0dG9uOiB0cnVlLFxuXHRidXR0b25zOiB0cnVlLFxuXHRjbGllbnRYOiB0cnVlLFxuXHRjbGllbnRZOiB0cnVlLFxuXHRvZmZzZXRYOiB0cnVlLFxuXHRvZmZzZXRZOiB0cnVlLFxuXHRwb2ludGVySWQ6IHRydWUsXG5cdHBvaW50ZXJUeXBlOiB0cnVlLFxuXHRzY3JlZW5YOiB0cnVlLFxuXHRzY3JlZW5ZOiB0cnVlLFxuXHR0YXJnZXRUb3VjaGVzOiB0cnVlLFxuXHR0b0VsZW1lbnQ6IHRydWUsXG5cdHRvdWNoZXM6IHRydWUsXG5cblx0d2hpY2g6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHR2YXIgYnV0dG9uID0gZXZlbnQuYnV0dG9uO1xuXG5cdFx0Ly8gQWRkIHdoaWNoIGZvciBrZXkgZXZlbnRzXG5cdFx0aWYgKCBldmVudC53aGljaCA9PSBudWxsICYmIHJrZXlFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRyZXR1cm4gZXZlbnQuY2hhckNvZGUgIT0gbnVsbCA/IGV2ZW50LmNoYXJDb2RlIDogZXZlbnQua2V5Q29kZTtcblx0XHR9XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJpZ2h0XG5cdFx0aWYgKCAhZXZlbnQud2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgJiYgcm1vdXNlRXZlbnQudGVzdCggZXZlbnQudHlwZSApICkge1xuXHRcdFx0aWYgKCBidXR0b24gJiAxICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBidXR0b24gJiAyICkge1xuXHRcdFx0XHRyZXR1cm4gMztcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBidXR0b24gJiA0ICkge1xuXHRcdFx0XHRyZXR1cm4gMjtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LndoaWNoO1xuXHR9XG59LCBqUXVlcnkuZXZlbnQuYWRkUHJvcCApO1xuXG5qUXVlcnkuZWFjaCggeyBmb2N1czogXCJmb2N1c2luXCIsIGJsdXI6IFwiZm9jdXNvdXRcIiB9LCBmdW5jdGlvbiggdHlwZSwgZGVsZWdhdGVUeXBlICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdID0ge1xuXG5cdFx0Ly8gVXRpbGl6ZSBuYXRpdmUgZXZlbnQgaWYgcG9zc2libGUgc28gYmx1ci9mb2N1cyBzZXF1ZW5jZSBpcyBjb3JyZWN0XG5cdFx0c2V0dXA6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDbGFpbSB0aGUgZmlyc3QgaGFuZGxlclxuXHRcdFx0Ly8gZGF0YVByaXYuc2V0KCB0aGlzLCBcImZvY3VzXCIsIC4uLiApXG5cdFx0XHQvLyBkYXRhUHJpdi5zZXQoIHRoaXMsIFwiYmx1clwiLCAuLi4gKVxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUsIGV4cGVjdFN5bmMgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIGZhbHNlIHRvIGFsbG93IG5vcm1hbCBwcm9jZXNzaW5nIGluIHRoZSBjYWxsZXJcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBGb3JjZSBzZXR1cCBiZWZvcmUgdHJpZ2dlclxuXHRcdFx0bGV2ZXJhZ2VOYXRpdmUoIHRoaXMsIHR5cGUgKTtcblxuXHRcdFx0Ly8gUmV0dXJuIG5vbi1mYWxzZSB0byBhbGxvdyBub3JtYWwgZXZlbnQtcGF0aCBwcm9wYWdhdGlvblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdGRlbGVnYXRlVHlwZTogZGVsZWdhdGVUeXBlXG5cdH07XG59ICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICYmICFub2RlLm5vTW9kdWxlICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMsIHtcblx0XHRcdFx0XHRcdFx0XHRcdG5vbmNlOiBub2RlLm5vbmNlIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCBcIm5vbmNlXCIgKVxuXHRcdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgbm9kZSwgZG9jICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBpc0F0dGFjaGVkKCBub2RlICkgKSB7XG5cdFx0XHRcdHNldEdsb2JhbEV2YWwoIGdldEFsbCggbm9kZSwgXCJzY3JpcHRcIiApICk7XG5cdFx0XHR9XG5cdFx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIG5vZGUgKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRodG1sUHJlZmlsdGVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRyZXR1cm4gaHRtbC5yZXBsYWNlKCByeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIgKTtcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdHZhciBpLCBsLCBzcmNFbGVtZW50cywgZGVzdEVsZW1lbnRzLFxuXHRcdFx0Y2xvbmUgPSBlbGVtLmNsb25lTm9kZSggdHJ1ZSApLFxuXHRcdFx0aW5QYWdlID0gaXNBdHRhY2hlZCggZWxlbSApO1xuXG5cdFx0Ly8gRml4IElFIGNsb25pbmcgaXNzdWVzXG5cdFx0aWYgKCAhc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCAmJiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEgKSAmJlxuXHRcdFx0XHQhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIFdlIGVzY2hldyBTaXp6bGUgaGVyZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29uczogaHR0cHM6Ly9qc3BlcmYuY29tL2dldGFsbC12cy1zaXp6bGUvMlxuXHRcdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApO1xuXHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcblxuXHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdGZpeElucHV0KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0aGUgY2xvbmVcblx0XHRpZiAoIGRhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRpZiAoIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdFx0XHRzcmNFbGVtZW50cyA9IHNyY0VsZW1lbnRzIHx8IGdldEFsbCggZWxlbSApO1xuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBkZXN0RWxlbWVudHMgfHwgZ2V0QWxsKCBjbG9uZSApO1xuXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc3JjRWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGNsb25lQ29weUV2ZW50KCBzcmNFbGVtZW50c1sgaSBdLCBkZXN0RWxlbWVudHNbIGkgXSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQcmVzZXJ2ZSBzY3JpcHQgZXZhbHVhdGlvbiBoaXN0b3J5XG5cdFx0ZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSwgXCJzY3JpcHRcIiApO1xuXHRcdGlmICggZGVzdEVsZW1lbnRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCBkZXN0RWxlbWVudHMsICFpblBhZ2UgJiYgZ2V0QWxsKCBlbGVtLCBcInNjcmlwdFwiICkgKTtcblx0XHR9XG5cblx0XHQvLyBSZXR1cm4gdGhlIGNsb25lZCBzZXRcblx0XHRyZXR1cm4gY2xvbmU7XG5cdH0sXG5cblx0Y2xlYW5EYXRhOiBmdW5jdGlvbiggZWxlbXMgKSB7XG5cdFx0dmFyIGRhdGEsIGVsZW0sIHR5cGUsXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWwsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgKCBlbGVtID0gZWxlbXNbIGkgXSApICE9PSB1bmRlZmluZWQ7IGkrKyApIHtcblx0XHRcdGlmICggYWNjZXB0RGF0YSggZWxlbSApICkge1xuXHRcdFx0XHRpZiAoICggZGF0YSA9IGVsZW1bIGRhdGFQcml2LmV4cGFuZG8gXSApICkge1xuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRmb3IgKCB0eXBlIGluIGRhdGEuZXZlbnRzICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWxbIHR5cGUgXSApIHtcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVyaGVhZFxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IENocm9tZSA8PTM1IC0gNDUrXG5cdFx0XHRcdFx0Ly8gQXNzaWduIHVuZGVmaW5lZCBpbnN0ZWFkIG9mIHVzaW5nIGRlbGV0ZSwgc2VlIERhdGEjcmVtb3ZlXG5cdFx0XHRcdFx0ZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICggZWxlbVsgZGF0YVVzZXIuZXhwYW5kbyBdICkge1xuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRkZXRhY2g6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRyZXR1cm4gcmVtb3ZlKCB0aGlzLCBzZWxlY3RvciwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yICk7XG5cdH0sXG5cblx0dGV4dDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdFx0alF1ZXJ5LnRleHQoIHRoaXMgKSA6XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0XHRcdHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdGFwcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdHByZXBlbmQ6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR2YXIgdGFyZ2V0ID0gbWFuaXB1bGF0aW9uVGFyZ2V0KCB0aGlzLCBlbGVtICk7XG5cdFx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoIGVsZW0sIHRhcmdldC5maXJzdENoaWxkICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGJlZm9yZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YWZ0ZXI6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdGlmICggdGhpcy5wYXJlbnROb2RlICkge1xuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGVtcHR5OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZWxlbSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSB0aGlzWyBpIF0gKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0Ly8gUHJldmVudCBtZW1vcnkgbGVha3Ncblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCBlbGVtLCBmYWxzZSApICk7XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXNcblx0XHRcdFx0ZWxlbS50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHRkYXRhQW5kRXZlbnRzID0gZGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZmFsc2UgOiBkYXRhQW5kRXZlbnRzO1xuXHRcdGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50cztcblxuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LmNsb25lKCB0aGlzLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApO1xuXHRcdH0gKTtcblx0fSxcblxuXHRodG1sOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF0gfHwge30sXG5cdFx0XHRcdGkgPSAwLFxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XG5cblx0XHRcdGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5pbm5lckhUTUw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNlZSBpZiB3ZSBjYW4gdGFrZSBhIHNob3J0Y3V0IGFuZCBqdXN0IHVzZSBpbm5lckhUTUxcblx0XHRcdGlmICggdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICFybm9Jbm5lcmh0bWwudGVzdCggdmFsdWUgKSAmJlxuXHRcdFx0XHQhd3JhcE1hcFsgKCBydGFnTmFtZS5leGVjKCB2YWx1ZSApIHx8IFsgXCJcIiwgXCJcIiBdIClbIDEgXS50b0xvd2VyQ2FzZSgpIF0gKSB7XG5cblx0XHRcdFx0dmFsdWUgPSBqUXVlcnkuaHRtbFByZWZpbHRlciggdmFsdWUgKTtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF0gfHwge307XG5cblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblx0XHRcdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtID0gMDtcblxuXHRcdFx0XHQvLyBJZiB1c2luZyBpbm5lckhUTUwgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdXNlIHRoZSBmYWxsYmFjayBtZXRob2Rcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGVsZW0gKSB7XG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7XG5cdFx0XHR9XG5cdFx0fSwgbnVsbCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggKTtcblx0fSxcblxuXHRyZXBsYWNlV2l0aDogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGlnbm9yZWQgPSBbXTtcblxuXHRcdC8vIE1ha2UgdGhlIGNoYW5nZXMsIHJlcGxhY2luZyBlYWNoIG5vbi1pZ25vcmVkIGNvbnRleHQgZWxlbWVudCB3aXRoIHRoZSBuZXcgY29udGVudFxuXHRcdHJldHVybiBkb21NYW5pcCggdGhpcywgYXJndW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cblx0XHRcdGlmICggalF1ZXJ5LmluQXJyYXkoIHRoaXMsIGlnbm9yZWQgKSA8IDAgKSB7XG5cdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggdGhpcyApICk7XG5cdFx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRcdHBhcmVudC5yZXBsYWNlQ2hpbGQoIGVsZW0sIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gRm9yY2UgY2FsbGJhY2sgaW52b2NhdGlvblxuXHRcdH0sIGlnbm9yZWQgKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCgge1xuXHRhcHBlbmRUbzogXCJhcHBlbmRcIixcblx0cHJlcGVuZFRvOiBcInByZXBlbmRcIixcblx0aW5zZXJ0QmVmb3JlOiBcImJlZm9yZVwiLFxuXHRpbnNlcnRBZnRlcjogXCJhZnRlclwiLFxuXHRyZXBsYWNlQWxsOiBcInJlcGxhY2VXaXRoXCJcbn0sIGZ1bmN0aW9uKCBuYW1lLCBvcmlnaW5hbCApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0dmFyIGVsZW1zLFxuXHRcdFx0cmV0ID0gW10sXG5cdFx0XHRpbnNlcnQgPSBqUXVlcnkoIHNlbGVjdG9yICksXG5cdFx0XHRsYXN0ID0gaW5zZXJ0Lmxlbmd0aCAtIDEsXG5cdFx0XHRpID0gMDtcblxuXHRcdGZvciAoIDsgaSA8PSBsYXN0OyBpKysgKSB7XG5cdFx0XHRlbGVtcyA9IGkgPT09IGxhc3QgPyB0aGlzIDogdGhpcy5jbG9uZSggdHJ1ZSApO1xuXHRcdFx0alF1ZXJ5KCBpbnNlcnRbIGkgXSApWyBvcmlnaW5hbCBdKCBlbGVtcyApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdC8vIC5nZXQoKSBiZWNhdXNlIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdHB1c2guYXBwbHkoIHJldCwgZWxlbXMuZ2V0KCkgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCApO1xuXHR9O1xufSApO1xudmFyIHJudW1ub25weCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIHBudW0gKyBcIikoPyFweClbYS16JV0rJFwiLCBcImlcIiApO1xuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHksIEZpcmVmb3ggPD0zMCAoIzE1MDk4LCAjMTQxNTApXG5cdFx0Ly8gSUUgdGhyb3dzIG9uIGVsZW1lbnRzIGNyZWF0ZWQgaW4gcG9wdXBzXG5cdFx0Ly8gRkYgbWVhbndoaWxlIHRocm93cyBvbiBmcmFtZSBlbGVtZW50cyB0aHJvdWdoIFwiZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZVwiXG5cdFx0dmFyIHZpZXcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG5cblx0XHRpZiAoICF2aWV3IHx8ICF2aWV3Lm9wZW5lciApIHtcblx0XHRcdHZpZXcgPSB3aW5kb3c7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbSApO1xuXHR9O1xuXG52YXIgcmJveFN0eWxlID0gbmV3IFJlZ0V4cCggY3NzRXhwYW5kLmpvaW4oIFwifFwiICksIFwiaVwiICk7XG5cblxuXG4oIGZ1bmN0aW9uKCkge1xuXG5cdC8vIEV4ZWN1dGluZyBib3RoIHBpeGVsUG9zaXRpb24gJiBib3hTaXppbmdSZWxpYWJsZSB0ZXN0cyByZXF1aXJlIG9ubHkgb25lIGxheW91dFxuXHQvLyBzbyB0aGV5J3JlIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSB0aGUgc2Vjb25kIGNvbXB1dGF0aW9uLlxuXHRmdW5jdGlvbiBjb21wdXRlU3R5bGVUZXN0cygpIHtcblxuXHRcdC8vIFRoaXMgaXMgYSBzaW5nbGV0b24sIHdlIG5lZWQgdG8gZXhlY3V0ZSBpdCBvbmx5IG9uY2Vcblx0XHRpZiAoICFkaXYgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDtcIiArXG5cdFx0XHRcIm1hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MFwiO1xuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID1cblx0XHRcdFwicG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO1wiICtcblx0XHRcdFwibWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDtcIiArXG5cdFx0XHRcIndpZHRoOjYwJTt0b3A6MSVcIjtcblx0XHRkb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoIGNvbnRhaW5lciApLmFwcGVuZENoaWxkKCBkaXYgKTtcblxuXHRcdHZhciBkaXZTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYgKTtcblx0XHRwaXhlbFBvc2l0aW9uVmFsID0gZGl2U3R5bGUudG9wICE9PSBcIjElXCI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBGaXJlZm94IDw9MyAtIDQ0XG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0VmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5tYXJnaW5MZWZ0ICkgPT09IDEyO1xuXG5cdFx0Ly8gU3VwcG9ydDogQW5kcm9pZCA0LjAgLSA0LjMgb25seSwgU2FmYXJpIDw9OS4xIC0gMTAuMSwgaU9TIDw9Ny4wIC0gOS4zXG5cdFx0Ly8gU29tZSBzdHlsZXMgY29tZSBiYWNrIHdpdGggcGVyY2VudGFnZSB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZXkgc2hvdWxkbid0XG5cdFx0ZGl2LnN0eWxlLnJpZ2h0ID0gXCI2MCVcIjtcblx0XHRwaXhlbEJveFN0eWxlc1ZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUucmlnaHQgKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IC0gMTEgb25seVxuXHRcdC8vIERldGVjdCBtaXNyZXBvcnRpbmcgb2YgY29udGVudCBkaW1lbnNpb25zIGZvciBib3gtc2l6aW5nOmJvcmRlci1ib3ggZWxlbWVudHNcblx0XHRib3hTaXppbmdSZWxpYWJsZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2U3R5bGUud2lkdGggKSA9PT0gMzY7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHQvLyBEZXRlY3Qgb3ZlcmZsb3c6c2Nyb2xsIHNjcmV3aW5lc3MgKGdoLTM2OTkpXG5cdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9NjRcblx0XHQvLyBEb24ndCBnZXQgdHJpY2tlZCB3aGVuIHpvb20gYWZmZWN0cyBvZmZzZXRXaWR0aCAoZ2gtNDAyOSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IHJvdW5kUGl4ZWxNZWFzdXJlcyggZGl2Lm9mZnNldFdpZHRoIC8gMyApID09PSAxMjtcblxuXHRcdGRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCggY29udGFpbmVyICk7XG5cblx0XHQvLyBOdWxsaWZ5IHRoZSBkaXYgc28gaXQgd291bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSBtZW1vcnkgYW5kXG5cdFx0Ly8gaXQgd2lsbCBhbHNvIGJlIGEgc2lnbiB0aGF0IGNoZWNrcyBhbHJlYWR5IHBlcmZvcm1lZFxuXHRcdGRpdiA9IG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiByb3VuZFBpeGVsTWVhc3VyZXMoIG1lYXN1cmUgKSB7XG5cdFx0cmV0dXJuIE1hdGgucm91bmQoIHBhcnNlRmxvYXQoIG1lYXN1cmUgKSApO1xuXHR9XG5cblx0dmFyIHBpeGVsUG9zaXRpb25WYWwsIGJveFNpemluZ1JlbGlhYmxlVmFsLCBzY3JvbGxib3hTaXplVmFsLCBwaXhlbEJveFN0eWxlc1ZhbCxcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwsXG5cdFx0Y29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLFxuXHRcdGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKTtcblxuXHQvLyBGaW5pc2ggZWFybHkgaW4gbGltaXRlZCAobm9uLWJyb3dzZXIpIGVudmlyb25tZW50c1xuXHRpZiAoICFkaXYuc3R5bGUgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBTdHlsZSBvZiBjbG9uZWQgZWxlbWVudCBhZmZlY3RzIHNvdXJjZSBlbGVtZW50IGNsb25lZCAoIzg5MDgpXG5cdGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9IFwiY29udGVudC1ib3hcIjtcblx0ZGl2LmNsb25lTm9kZSggdHJ1ZSApLnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJcIjtcblx0c3VwcG9ydC5jbGVhckNsb25lU3R5bGUgPSBkaXYuc3R5bGUuYmFja2dyb3VuZENsaXAgPT09IFwiY29udGVudC1ib3hcIjtcblxuXHRqUXVlcnkuZXh0ZW5kKCBzdXBwb3J0LCB7XG5cdFx0Ym94U2l6aW5nUmVsaWFibGU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBib3hTaXppbmdSZWxpYWJsZVZhbDtcblx0XHR9LFxuXHRcdHBpeGVsQm94U3R5bGVzOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxCb3hTdHlsZXNWYWw7XG5cdFx0fSxcblx0XHRwaXhlbFBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcGl4ZWxQb3NpdGlvblZhbDtcblx0XHR9LFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdDogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHJlbGlhYmxlTWFyZ2luTGVmdFZhbDtcblx0XHR9LFxuXHRcdHNjcm9sbGJveFNpemU6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBzY3JvbGxib3hTaXplVmFsO1xuXHRcdH1cblx0fSApO1xufSApKCk7XG5cblxuZnVuY3Rpb24gY3VyQ1NTKCBlbGVtLCBuYW1lLCBjb21wdXRlZCApIHtcblx0dmFyIHdpZHRoLCBtaW5XaWR0aCwgbWF4V2lkdGgsIHJldCxcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggNTErXG5cdFx0Ly8gUmV0cmlldmluZyBzdHlsZSBiZWZvcmUgY29tcHV0ZWQgc29tZWhvd1xuXHRcdC8vIGZpeGVzIGFuIGlzc3VlIHdpdGggZ2V0dGluZyB3cm9uZyB2YWx1ZXNcblx0XHQvLyBvbiBkZXRhY2hlZCBlbGVtZW50c1xuXHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRjb21wdXRlZCA9IGNvbXB1dGVkIHx8IGdldFN0eWxlcyggZWxlbSApO1xuXG5cdC8vIGdldFByb3BlcnR5VmFsdWUgaXMgbmVlZGVkIGZvcjpcblx0Ly8gICAuY3NzKCdmaWx0ZXInKSAoSUUgOSBvbmx5LCAjMTI1MzcpXG5cdC8vICAgLmNzcygnLS1jdXN0b21Qcm9wZXJ0eSkgKCMzMTQ0KVxuXHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdHJldCA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUoIG5hbWUgKSB8fCBjb21wdXRlZFsgbmFtZSBdO1xuXG5cdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWlzQXR0YWNoZWQoIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyIGNzc1ByZWZpeGVzID0gWyBcIldlYmtpdFwiLCBcIk1velwiLCBcIm1zXCIgXSxcblx0ZW1wdHlTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKS5zdHlsZSxcblx0dmVuZG9yUHJvcHMgPSB7fTtcblxuLy8gUmV0dXJuIGEgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG9yIHVuZGVmaW5lZFxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB7XG5cblx0Ly8gQ2hlY2sgZm9yIHZlbmRvciBwcmVmaXhlZCBuYW1lc1xuXHR2YXIgY2FwTmFtZSA9IG5hbWVbIDAgXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSggMSApLFxuXHRcdGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lO1xuXHRcdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0fVxuXHR9XG59XG5cbi8vIFJldHVybiBhIHBvdGVudGlhbGx5LW1hcHBlZCBqUXVlcnkuY3NzUHJvcHMgb3IgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiBmaW5hbFByb3BOYW1lKCBuYW1lICkge1xuXHR2YXIgZmluYWwgPSBqUXVlcnkuY3NzUHJvcHNbIG5hbWUgXSB8fCB2ZW5kb3JQcm9wc1sgbmFtZSBdO1xuXG5cdGlmICggZmluYWwgKSB7XG5cdFx0cmV0dXJuIGZpbmFsO1xuXHR9XG5cdGlmICggbmFtZSBpbiBlbXB0eVN0eWxlICkge1xuXHRcdHJldHVybiBuYW1lO1xuXHR9XG5cdHJldHVybiB2ZW5kb3JQcm9wc1sgbmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIG5hbWUgKSB8fCBuYW1lO1xufVxuXG5cbnZhclxuXG5cdC8vIFN3YXBwYWJsZSBpZiBkaXNwbGF5IGlzIG5vbmUgb3Igc3RhcnRzIHdpdGggdGFibGVcblx0Ly8gZXhjZXB0IFwidGFibGVcIiwgXCJ0YWJsZS1jZWxsXCIsIG9yIFwidGFibGUtY2FwdGlvblwiXG5cdC8vIFNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheVxuXHRyZGlzcGxheXN3YXAgPSAvXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sXG5cdHJjdXN0b21Qcm9wID0gL14tLS8sXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxuXHRjc3NOb3JtYWxUcmFuc2Zvcm0gPSB7XG5cdFx0bGV0dGVyU3BhY2luZzogXCIwXCIsXG5cdFx0Zm9udFdlaWdodDogXCI0MDBcIlxuXHR9O1xuXG5mdW5jdGlvbiBzZXRQb3NpdGl2ZU51bWJlciggZWxlbSwgdmFsdWUsIHN1YnRyYWN0ICkge1xuXG5cdC8vIEFueSByZWxhdGl2ZSAoKy8tKSB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW5cblx0Ly8gbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50XG5cdHZhciBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApO1xuXHRyZXR1cm4gbWF0Y2hlcyA/XG5cblx0XHQvLyBHdWFyZCBhZ2FpbnN0IHVuZGVmaW5lZCBcInN1YnRyYWN0XCIsIGUuZy4sIHdoZW4gdXNlZCBhcyBpbiBjc3NIb29rc1xuXHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAyIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgOlxuXHRcdHZhbHVlO1xufVxuXG5mdW5jdGlvbiBib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgYm94LCBpc0JvcmRlckJveCwgc3R5bGVzLCBjb21wdXRlZFZhbCApIHtcblx0dmFyIGkgPSBkaW1lbnNpb24gPT09IFwid2lkdGhcIiA/IDEgOiAwLFxuXHRcdGV4dHJhID0gMCxcblx0XHRkZWx0YSA9IDA7XG5cblx0Ly8gQWRqdXN0bWVudCBtYXkgbm90IGJlIG5lY2Vzc2FyeVxuXHRpZiAoIGJveCA9PT0gKCBpc0JvcmRlckJveCA/IFwiYm9yZGVyXCIgOiBcImNvbnRlbnRcIiApICkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Zm9yICggOyBpIDwgNDsgaSArPSAyICkge1xuXG5cdFx0Ly8gQm90aCBib3ggbW9kZWxzIGV4Y2x1ZGUgbWFyZ2luXG5cdFx0aWYgKCBib3ggPT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRkZWx0YSArPSBqUXVlcnkuY3NzKCBlbGVtLCBib3ggKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGNvbnRlbnQtYm94LCB3ZSdyZSBzZWVraW5nIFwicGFkZGluZ1wiIG9yIFwiYm9yZGVyXCIgb3IgXCJtYXJnaW5cIlxuXHRcdGlmICggIWlzQm9yZGVyQm94ICkge1xuXG5cdFx0XHQvLyBBZGQgcGFkZGluZ1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEZvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCIsIGFkZCBib3JkZXJcblx0XHRcdGlmICggYm94ICE9PSBcInBhZGRpbmdcIiApIHtcblx0XHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblxuXHRcdFx0Ly8gQnV0IHN0aWxsIGtlZXAgdHJhY2sgb2YgaXQgb3RoZXJ3aXNlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHRyYSArPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJvcmRlclwiICsgY3NzRXhwYW5kWyBpIF0gKyBcIldpZHRoXCIsIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0Ly8gSWYgd2UgZ2V0IGhlcmUgd2l0aCBhIGJvcmRlci1ib3ggKGNvbnRlbnQgKyBwYWRkaW5nICsgYm9yZGVyKSwgd2UncmUgc2Vla2luZyBcImNvbnRlbnRcIiBvclxuXHRcdC8vIFwicGFkZGluZ1wiIG9yIFwibWFyZ2luXCJcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIsIHN1YnRyYWN0IHBhZGRpbmdcblx0XHRcdGlmICggYm94ID09PSBcImNvbnRlbnRcIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEZvciBcImNvbnRlbnRcIiBvciBcInBhZGRpbmdcIiwgc3VidHJhY3QgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJtYXJnaW5cIiApIHtcblx0XHRcdFx0ZGVsdGEgLT0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBBY2NvdW50IGZvciBwb3NpdGl2ZSBjb250ZW50LWJveCBzY3JvbGwgZ3V0dGVyIHdoZW4gcmVxdWVzdGVkIGJ5IHByb3ZpZGluZyBjb21wdXRlZFZhbFxuXHRpZiAoICFpc0JvcmRlckJveCAmJiBjb21wdXRlZFZhbCA+PSAwICkge1xuXG5cdFx0Ly8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIGEgcm91bmRlZCBzdW0gb2YgY29udGVudCwgcGFkZGluZywgc2Nyb2xsIGd1dHRlciwgYW5kIGJvcmRlclxuXHRcdC8vIEFzc3VtaW5nIGludGVnZXIgc2Nyb2xsIGd1dHRlciwgc3VidHJhY3QgdGhlIHJlc3QgYW5kIHJvdW5kIGRvd25cblx0XHRkZWx0YSArPSBNYXRoLm1heCggMCwgTWF0aC5jZWlsKFxuXHRcdFx0ZWxlbVsgXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKSBdIC1cblx0XHRcdGNvbXB1dGVkVmFsIC1cblx0XHRcdGRlbHRhIC1cblx0XHRcdGV4dHJhIC1cblx0XHRcdDAuNVxuXG5cdFx0Ly8gSWYgb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGlzIHVua25vd24sIHRoZW4gd2UgY2FuJ3QgZGV0ZXJtaW5lIGNvbnRlbnQtYm94IHNjcm9sbCBndXR0ZXJcblx0XHQvLyBVc2UgYW4gZXhwbGljaXQgemVybyB0byBhdm9pZCBOYU4gKGdoLTM5NjQpXG5cdFx0KSApIHx8IDA7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cblx0XHQvLyBUbyBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LCBvbmx5IGZldGNoIGJveFNpemluZyBpZiB3ZSBuZWVkIGl0IChnaC00MzIyKS5cblx0XHQvLyBGYWtlIGNvbnRlbnQtYm94IHVudGlsIHdlIGtub3cgaXQncyBuZWVkZWQgdG8ga25vdyB0aGUgdHJ1ZSB2YWx1ZS5cblx0XHRib3hTaXppbmdOZWVkZWQgPSAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IGV4dHJhLFxuXHRcdGlzQm9yZGVyQm94ID0gYm94U2l6aW5nTmVlZGVkICYmXG5cdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiLFxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCxcblxuXHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgZGltZW5zaW9uLCBzdHlsZXMgKSxcblx0XHRvZmZzZXRQcm9wID0gXCJvZmZzZXRcIiArIGRpbWVuc2lvblsgMCBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoIDEgKTtcblxuXHQvLyBTdXBwb3J0OiBGaXJlZm94IDw9NTRcblx0Ly8gUmV0dXJuIGEgY29uZm91bmRpbmcgbm9uLXBpeGVsIHZhbHVlIG9yIGZlaWduIGlnbm9yYW5jZSwgYXMgYXBwcm9wcmlhdGUuXG5cdGlmICggcm51bW5vbnB4LnRlc3QoIHZhbCApICkge1xuXHRcdGlmICggIWV4dHJhICkge1xuXHRcdFx0cmV0dXJuIHZhbDtcblx0XHR9XG5cdFx0dmFsID0gXCJhdXRvXCI7XG5cdH1cblxuXG5cdC8vIEZhbGwgYmFjayB0byBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgd2hlbiB2YWx1ZSBpcyBcImF1dG9cIlxuXHQvLyBUaGlzIGhhcHBlbnMgZm9yIGlubGluZSBlbGVtZW50cyB3aXRoIG5vIGV4cGxpY2l0IHNldHRpbmcgKGdoLTM1NzEpXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjEgLSA0LjMgb25seVxuXHQvLyBBbHNvIHVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgZm9yIG1pc3JlcG9ydGVkIGlubGluZSBkaW1lbnNpb25zIChnaC0zNjAyKVxuXHQvLyBTdXBwb3J0OiBJRSA5LTExIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciB3aGVuIGJveCBzaXppbmcgaXMgdW5yZWxpYWJsZVxuXHQvLyBXZSB1c2UgZ2V0Q2xpZW50UmVjdHMoKSB0byBjaGVjayBmb3IgaGlkZGVuL2Rpc2Nvbm5lY3RlZC5cblx0Ly8gSW4gdGhvc2UgY2FzZXMsIHRoZSBjb21wdXRlZCB2YWx1ZSBjYW4gYmUgdHJ1c3RlZCB0byBiZSBib3JkZXItYm94XG5cdGlmICggKCAhc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpICYmIGlzQm9yZGVyQm94IHx8XG5cdFx0dmFsID09PSBcImF1dG9cIiB8fFxuXHRcdCFwYXJzZUZsb2F0KCB2YWwgKSAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImlubGluZVwiICkgJiZcblx0XHRlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoICkge1xuXG5cdFx0aXNCb3JkZXJCb3ggPSBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiYm9yZGVyLWJveFwiO1xuXG5cdFx0Ly8gV2hlcmUgYXZhaWxhYmxlLCBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgYXBwcm94aW1hdGUgYm9yZGVyIGJveCBkaW1lbnNpb25zLlxuXHRcdC8vIFdoZXJlIG5vdCBhdmFpbGFibGUgKGUuZy4sIFNWRyksIGFzc3VtZSB1bnJlbGlhYmxlIGJveC1zaXppbmcgYW5kIGludGVycHJldCB0aGVcblx0XHQvLyByZXRyaWV2ZWQgdmFsdWUgYXMgYSBjb250ZW50IGJveCBkaW1lbnNpb24uXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IG9mZnNldFByb3AgaW4gZWxlbTtcblx0XHRpZiAoIHZhbHVlSXNCb3JkZXJCb3ggKSB7XG5cdFx0XHR2YWwgPSBlbGVtWyBvZmZzZXRQcm9wIF07XG5cdFx0fVxuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImdyaWRBcmVhXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uRW5kXCI6IHRydWUsXG5cdFx0XCJncmlkQ29sdW1uU3RhcnRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dFbmRcIjogdHJ1ZSxcblx0XHRcImdyaWRSb3dTdGFydFwiOiB0cnVlLFxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxuXHRcdFwib3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwib3JkZXJcIjogdHJ1ZSxcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcblx0XHRcIndpZG93c1wiOiB0cnVlLFxuXHRcdFwiekluZGV4XCI6IHRydWUsXG5cdFx0XCJ6b29tXCI6IHRydWVcblx0fSxcblxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXG5cdC8vIHNldHRpbmcgb3IgZ2V0dGluZyB0aGUgdmFsdWVcblx0Y3NzUHJvcHM6IHt9LFxuXG5cdC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xuXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCAhZWxlbSB8fCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggfHwgIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApLFxuXHRcdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gcXVlcnkgdGhlIHZhbHVlIGlmIGl0IGlzIGEgQ1NTIGN1c3RvbSBwcm9wZXJ0eVxuXHRcdC8vIHNpbmNlIHRoZXkgYXJlIHVzZXItZGVmaW5lZC5cblx0XHRpZiAoICFpc0N1c3RvbVByb3AgKSB7XG5cdFx0XHRuYW1lID0gZmluYWxQcm9wTmFtZSggb3JpZ05hbWUgKTtcblx0XHR9XG5cblx0XHQvLyBHZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLCB0aGVuIHVucHJlZml4ZWQgdmVyc2lvblxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gQ2hlY2sgaWYgd2UncmUgc2V0dGluZyBhIHZhbHVlXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dHlwZSA9IHR5cGVvZiB2YWx1ZTtcblxuXHRcdFx0Ly8gQ29udmVydCBcIis9XCIgb3IgXCItPVwiIHRvIHJlbGF0aXZlIG51bWJlcnMgKCM3MzQ1KVxuXHRcdFx0aWYgKCB0eXBlID09PSBcInN0cmluZ1wiICYmICggcmV0ID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiYgcmV0WyAxIF0gKSB7XG5cdFx0XHRcdHZhbHVlID0gYWRqdXN0Q1NTKCBlbGVtLCBuYW1lLCByZXQgKTtcblxuXHRcdFx0XHQvLyBGaXhlcyBidWcgIzkyMzdcblx0XHRcdFx0dHlwZSA9IFwibnVtYmVyXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IG51bGwgYW5kIE5hTiB2YWx1ZXMgYXJlbid0IHNldCAoIzcxMTYpXG5cdFx0XHRpZiAoIHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCB0aGUgdW5pdCAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxuXHRcdFx0Ly8gVGhlIGlzQ3VzdG9tUHJvcCBjaGVjayBjYW4gYmUgcmVtb3ZlZCBpbiBqUXVlcnkgNC4wIHdoZW4gd2Ugb25seSBhdXRvLWFwcGVuZFxuXHRcdFx0Ly8gXCJweFwiIHRvIGEgZmV3IGhhcmRjb2RlZCB2YWx1ZXMuXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cblx0XHRcdFx0Ly8gT25seSByZWFkIHN0eWxlcy5wb3NpdGlvbiBpZiB0aGUgdGVzdCBoYXMgYSBjaGFuY2UgdG8gZmFpbFxuXHRcdFx0XHQvLyB0byBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LlxuXHRcdFx0XHRzY3JvbGxib3hTaXplQnVnZ3kgPSAhc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgJiZcblx0XHRcdFx0XHRzdHlsZXMucG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIixcblxuXHRcdFx0XHQvLyBUbyBhdm9pZCBmb3JjaW5nIGEgcmVmbG93LCBvbmx5IGZldGNoIGJveFNpemluZyBpZiB3ZSBuZWVkIGl0IChnaC0zOTkxKVxuXHRcdFx0XHRib3hTaXppbmdOZWVkZWQgPSBzY3JvbGxib3hTaXplQnVnZ3kgfHwgZXh0cmEsXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0gYm94U2l6aW5nTmVlZGVkICYmXG5cdFx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSA/XG5cdFx0XHRcdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRcdGRpbWVuc2lvbixcblx0XHRcdFx0XHRcdGV4dHJhLFxuXHRcdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0XHRzdHlsZXNcblx0XHRcdFx0XHQpIDpcblx0XHRcdFx0XHQwO1xuXG5cdFx0XHQvLyBBY2NvdW50IGZvciB1bnJlbGlhYmxlIGJvcmRlci1ib3ggZGltZW5zaW9ucyBieSBjb21wYXJpbmcgb2Zmc2V0KiB0byBjb21wdXRlZCBhbmRcblx0XHRcdC8vIGZha2luZyBhIGNvbnRlbnQtYm94IHRvIGdldCBib3JkZXIgYW5kIHBhZGRpbmcgKGdoLTM2OTkpXG5cdFx0XHRpZiAoIGlzQm9yZGVyQm94ICYmIHNjcm9sbGJveFNpemVCdWdneSApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmIChcblx0XHRcdFx0XHRqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSB8fFxuXHRcdFx0XHRcdHR3ZWVuLmVsZW0uc3R5bGVbIGZpbmFsUHJvcE5hbWUoIHR3ZWVuLnByb3AgKSBdICE9IG51bGwgKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciB0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRpID0gMDtcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXHRcdFx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IERhdGUubm93KCk7XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdGlmICggYSA9PSBudWxsICkge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cblx0Ly8gSWYgYW4gYXJyYXkgd2FzIHBhc3NlZCBpbiwgYXNzdW1lIHRoYXQgaXQgaXMgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cy5cblx0aWYgKCBBcnJheS5pc0FycmF5KCBhICkgfHwgKCBhLmpxdWVyeSAmJiAhalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGEgKSApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIHRoZSBmb3JtIGVsZW1lbnRzXG5cdFx0alF1ZXJ5LmVhY2goIGEsIGZ1bmN0aW9uKCkge1xuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcblx0XHR9ICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIElmIHRyYWRpdGlvbmFsLCBlbmNvZGUgdGhlIFwib2xkXCIgd2F5ICh0aGUgd2F5IDEuMy4yIG9yIG9sZGVyXG5cdFx0Ly8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZlbHkuXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XG5cdFx0XHRidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVmaXggXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb25cblx0cmV0dXJuIHMuam9pbiggXCImXCIgKTtcbn07XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0c2VyaWFsaXplOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4galF1ZXJ5LnBhcmFtKCB0aGlzLnNlcmlhbGl6ZUFycmF5KCkgKTtcblx0fSxcblx0c2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcCggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIENhbiBhZGQgcHJvcEhvb2sgZm9yIFwiZWxlbWVudHNcIiB0byBmaWx0ZXIgb3IgYWRkIGZvcm0gZWxlbWVudHNcblx0XHRcdHZhciBlbGVtZW50cyA9IGpRdWVyeS5wcm9wKCB0aGlzLCBcImVsZW1lbnRzXCIgKTtcblx0XHRcdHJldHVybiBlbGVtZW50cyA/IGpRdWVyeS5tYWtlQXJyYXkoIGVsZW1lbnRzICkgOiB0aGlzO1xuXHRcdH0gKVxuXHRcdC5maWx0ZXIoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIHR5cGUgPSB0aGlzLnR5cGU7XG5cblx0XHRcdC8vIFVzZSAuaXMoIFwiOmRpc2FibGVkXCIgKSBzbyB0aGF0IGZpZWxkc2V0W2Rpc2FibGVkXSB3b3Jrc1xuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhalF1ZXJ5KCB0aGlzICkuaXMoIFwiOmRpc2FibGVkXCIgKSAmJlxuXHRcdFx0XHRyc3VibWl0dGFibGUudGVzdCggdGhpcy5ub2RlTmFtZSApICYmICFyc3VibWl0dGVyVHlwZXMudGVzdCggdHlwZSApICYmXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8ICFyY2hlY2thYmxlVHlwZS50ZXN0KCB0eXBlICkgKTtcblx0XHR9IClcblx0XHQubWFwKCBmdW5jdGlvbiggaSwgZWxlbSApIHtcblx0XHRcdHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTtcblxuXHRcdFx0aWYgKCB2YWwgPT0gbnVsbCApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHJldHVybiBqUXVlcnkubWFwKCB2YWwsIGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUsIHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsIFwiXFxyXFxuXCIgKSB9O1xuXHRcdH0gKS5nZXQoKTtcblx0fVxufSApO1xuXG5cbnZhclxuXHRyMjAgPSAvJTIwL2csXG5cdHJoYXNoID0gLyMuKiQvLFxuXHRyYW50aUNhY2hlID0gLyhbPyZdKV89W14mXSovLFxuXHRyaGVhZGVycyA9IC9eKC4qPyk6WyBcXHRdKihbXlxcclxcbl0qKSQvbWcsXG5cblx0Ly8gIzc2NTMsICM4MTI1LCAjODE1MjogbG9jYWwgcHJvdG9jb2wgZGV0ZWN0aW9uXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxuXHRycHJvdG9jb2wgPSAvXlxcL1xcLy8sXG5cblx0LyogUHJlZmlsdGVyc1xuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxuXHQgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOlxuXHQgKiAgICAtIEJFRk9SRSBhc2tpbmcgZm9yIGEgdHJhbnNwb3J0XG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcblx0ICogMykga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiA0KSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHRwcmVmaWx0ZXJzID0ge30sXG5cblx0LyogVHJhbnNwb3J0cyBiaW5kaW5nc1xuXHQgKiAxKSBrZXkgaXMgdGhlIGRhdGFUeXBlXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcblx0ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gZ28gdG8gXCIqXCIgaWYgbmVlZGVkXG5cdCAqL1xuXHR0cmFuc3BvcnRzID0ge30sXG5cblx0Ly8gQXZvaWQgY29tbWVudC1wcm9sb2cgY2hhciBzZXF1ZW5jZSAoIzEwMDk4KTsgbXVzdCBhcHBlYXNlIGxpbnQgYW5kIGV2YWRlIGNvbXByZXNzaW9uXG5cdGFsbFR5cGVzID0gXCIqL1wiLmNvbmNhdCggXCIqXCIgKSxcblxuXHQvLyBBbmNob3IgdGFnIGZvciBwYXJzaW5nIHRoZSBkb2N1bWVudCBvcmlnaW5cblx0b3JpZ2luQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblx0b3JpZ2luQW5jaG9yLmhyZWYgPSBsb2NhdGlvbi5ocmVmO1xuXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XG5mdW5jdGlvbiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHN0cnVjdHVyZSApIHtcblxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXG5cdHJldHVybiBmdW5jdGlvbiggZGF0YVR5cGVFeHByZXNzaW9uLCBmdW5jICkge1xuXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0ZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjtcblx0XHRcdGRhdGFUeXBlRXhwcmVzc2lvbiA9IFwiKlwiO1xuXHRcdH1cblxuXHRcdHZhciBkYXRhVHlwZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0ZGF0YVR5cGVzID0gZGF0YVR5cGVFeHByZXNzaW9uLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggZnVuYyApICkge1xuXG5cdFx0XHQvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uXG5cdFx0XHR3aGlsZSAoICggZGF0YVR5cGUgPSBkYXRhVHlwZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0Ly8gUHJlcGVuZCBpZiByZXF1ZXN0ZWRcblx0XHRcdFx0aWYgKCBkYXRhVHlwZVsgMCBdID09PSBcIitcIiApIHtcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnNsaWNlKCAxICkgfHwgXCIqXCI7XG5cdFx0XHRcdFx0KCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gPSBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10gKS51bnNoaWZ0KCBmdW5jICk7XG5cblx0XHRcdFx0Ly8gT3RoZXJ3aXNlIGFwcGVuZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkucHVzaCggZnVuYyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHByZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHNcbmZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKSB7XG5cblx0dmFyIGluc3BlY3RlZCA9IHt9LFxuXHRcdHNlZWtpbmdUcmFuc3BvcnQgPSAoIHN0cnVjdHVyZSA9PT0gdHJhbnNwb3J0cyApO1xuXG5cdGZ1bmN0aW9uIGluc3BlY3QoIGRhdGFUeXBlICkge1xuXHRcdHZhciBzZWxlY3RlZDtcblx0XHRpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlO1xuXHRcdGpRdWVyeS5lYWNoKCBzdHJ1Y3R1cmVbIGRhdGFUeXBlIF0gfHwgW10sIGZ1bmN0aW9uKCBfLCBwcmVmaWx0ZXJPckZhY3RvcnkgKSB7XG5cdFx0XHR2YXIgZGF0YVR5cGVPclRyYW5zcG9ydCA9IHByZWZpbHRlck9yRmFjdG9yeSggb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiApO1xuXHRcdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVPclRyYW5zcG9ydCA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQhc2Vla2luZ1RyYW5zcG9ydCAmJiAhaW5zcGVjdGVkWyBkYXRhVHlwZU9yVHJhbnNwb3J0IF0gKSB7XG5cblx0XHRcdFx0b3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRpbnNwZWN0KCBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoIHNlZWtpbmdUcmFuc3BvcnQgKSB7XG5cdFx0XHRcdHJldHVybiAhKCBzZWxlY3RlZCA9IGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0cmV0dXJuIGluc3BlY3QoIG9wdGlvbnMuZGF0YVR5cGVzWyAwIF0gKSB8fCAhaW5zcGVjdGVkWyBcIipcIiBdICYmIGluc3BlY3QoIFwiKlwiICk7XG59XG5cbi8vIEEgc3BlY2lhbCBleHRlbmQgZm9yIGFqYXggb3B0aW9uc1xuLy8gdGhhdCB0YWtlcyBcImZsYXRcIiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZClcbi8vIEZpeGVzICM5ODg3XG5mdW5jdGlvbiBhamF4RXh0ZW5kKCB0YXJnZXQsIHNyYyApIHtcblx0dmFyIGtleSwgZGVlcCxcblx0XHRmbGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307XG5cblx0Zm9yICgga2V5IGluIHNyYyApIHtcblx0XHRpZiAoIHNyY1sga2V5IF0gIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdCggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XG5cdFx0fVxuXHR9XG5cdGlmICggZGVlcCApIHtcblx0XHRqUXVlcnkuZXh0ZW5kKCB0cnVlLCB0YXJnZXQsIGRlZXAgKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcbiAqIC0gZmluZHMgdGhlIHJpZ2h0IGRhdGFUeXBlIChtZWRpYXRlcyBiZXR3ZWVuIGNvbnRlbnQtdHlwZSBhbmQgZXhwZWN0ZWQgZGF0YVR5cGUpXG4gKiAtIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2VcbiAqL1xuZnVuY3Rpb24gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApIHtcblxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXG5cdFx0Y29udGVudHMgPSBzLmNvbnRlbnRzLFxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzO1xuXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXG5cdHdoaWxlICggZGF0YVR5cGVzWyAwIF0gPT09IFwiKlwiICkge1xuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xuXHRcdGlmICggY3QgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGN0ID0gcy5taW1lVHlwZSB8fCBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJDb250ZW50LVR5cGVcIiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxuXHRpZiAoIGN0ICkge1xuXHRcdGZvciAoIHR5cGUgaW4gY29udGVudHMgKSB7XG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xuXHRcdFx0XHRkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGVcblx0aWYgKCBkYXRhVHlwZXNbIDAgXSBpbiByZXNwb25zZXMgKSB7XG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gVHJ5IGNvbnZlcnRpYmxlIGRhdGFUeXBlc1xuXHRcdGZvciAoIHR5cGUgaW4gcmVzcG9uc2VzICkge1xuXHRcdFx0aWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgXCIgXCIgKyBkYXRhVHlwZXNbIDAgXSBdICkge1xuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xuXHRcdFx0XHRmaXJzdERhdGFUeXBlID0gdHlwZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcblx0XHRmaW5hbERhdGFUeXBlID0gZmluYWxEYXRhVHlwZSB8fCBmaXJzdERhdGFUeXBlO1xuXHR9XG5cblx0Ly8gSWYgd2UgZm91bmQgYSBkYXRhVHlwZVxuXHQvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRlZFxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG5cdGlmICggZmluYWxEYXRhVHlwZSApIHtcblx0XHRpZiAoIGZpbmFsRGF0YVR5cGUgIT09IGRhdGFUeXBlc1sgMCBdICkge1xuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdO1xuXHR9XG59XG5cbi8qIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcbiAqIEFsc28gc2V0cyB0aGUgcmVzcG9uc2VYWFggZmllbGRzIG9uIHRoZSBqcVhIUiBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UsIGpxWEhSLCBpc1N1Y2Nlc3MgKSB7XG5cdHZhciBjb252MiwgY3VycmVudCwgY29udiwgdG1wLCBwcmV2LFxuXHRcdGNvbnZlcnRlcnMgPSB7fSxcblxuXHRcdC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb25cblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcy5zbGljZSgpO1xuXG5cdC8vIENyZWF0ZSBjb252ZXJ0ZXJzIG1hcCB3aXRoIGxvd2VyY2FzZWQga2V5c1xuXHRpZiAoIGRhdGFUeXBlc1sgMSBdICkge1xuXHRcdGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkge1xuXHRcdFx0Y29udmVydGVyc1sgY29udi50b0xvd2VyQ2FzZSgpIF0gPSBzLmNvbnZlcnRlcnNbIGNvbnYgXTtcblx0XHR9XG5cdH1cblxuXHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGVcblx0d2hpbGUgKCBjdXJyZW50ICkge1xuXG5cdFx0aWYgKCBzLnJlc3BvbnNlRmllbGRzWyBjdXJyZW50IF0gKSB7XG5cdFx0XHRqcVhIUlsgcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdIF0gPSByZXNwb25zZTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgZGF0YUZpbHRlciBpZiBwcm92aWRlZFxuXHRcdGlmICggIXByZXYgJiYgaXNTdWNjZXNzICYmIHMuZGF0YUZpbHRlciApIHtcblx0XHRcdHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApO1xuXHRcdH1cblxuXHRcdHByZXYgPSBjdXJyZW50O1xuXHRcdGN1cnJlbnQgPSBkYXRhVHlwZXMuc2hpZnQoKTtcblxuXHRcdGlmICggY3VycmVudCApIHtcblxuXHRcdFx0Ly8gVGhlcmUncyBvbmx5IHdvcmsgdG8gZG8gaWYgY3VycmVudCBkYXRhVHlwZSBpcyBub24tYXV0b1xuXHRcdFx0aWYgKCBjdXJyZW50ID09PSBcIipcIiApIHtcblxuXHRcdFx0XHRjdXJyZW50ID0gcHJldjtcblxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxuXHRcdFx0fSBlbHNlIGlmICggcHJldiAhPT0gXCIqXCIgJiYgcHJldiAhPT0gY3VycmVudCApIHtcblxuXHRcdFx0XHQvLyBTZWVrIGEgZGlyZWN0IGNvbnZlcnRlclxuXHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgY3VycmVudCBdIHx8IGNvbnZlcnRlcnNbIFwiKiBcIiArIGN1cnJlbnQgXTtcblxuXHRcdFx0XHQvLyBJZiBub25lIGZvdW5kLCBzZWVrIGEgcGFpclxuXHRcdFx0XHRpZiAoICFjb252ICkge1xuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGNvbnYyIG91dHB1dHMgY3VycmVudFxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoIFwiIFwiICk7XG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIElmIHByZXYgY2FuIGJlIGNvbnZlcnRlZCB0byBhY2NlcHRlZCBpbnB1dFxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxuXHRcdFx0XHRcdFx0XHRcdGNvbnZlcnRlcnNbIFwiKiBcIiArIHRtcFsgMCBdIF07XG5cdFx0XHRcdFx0XHRcdGlmICggY29udiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIENvbmRlbnNlIGVxdWl2YWxlbmNlIGNvbnZlcnRlcnNcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgY29udjIgXTtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBjb252ZXJ0ZXJzWyBjb252MiBdICE9PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudCA9IHRtcFsgMCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHRtcFsgMSBdICk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQXBwbHkgY29udmVydGVyIChpZiBub3QgYW4gZXF1aXZhbGVuY2UpXG5cdFx0XHRcdGlmICggY29udiAhPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRcdC8vIFVubGVzcyBlcnJvcnMgYXJlIGFsbG93ZWQgdG8gYnViYmxlLCBjYXRjaCBhbmQgcmV0dXJuIHRoZW1cblx0XHRcdFx0XHRpZiAoIGNvbnYgJiYgcy50aHJvd3MgKSB7XG5cdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXRlOiBcInBhcnNlcmVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGNvbnYgPyBlIDogXCJObyBjb252ZXJzaW9uIGZyb20gXCIgKyBwcmV2ICsgXCIgdG8gXCIgKyBjdXJyZW50XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xufVxuXG5qUXVlcnkuZXh0ZW5kKCB7XG5cblx0Ly8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzXG5cdGFjdGl2ZTogMCxcblxuXHQvLyBMYXN0LU1vZGlmaWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0XG5cdGxhc3RNb2RpZmllZDoge30sXG5cdGV0YWc6IHt9LFxuXG5cdGFqYXhTZXR0aW5nczoge1xuXHRcdHVybDogbG9jYXRpb24uaHJlZixcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGlzTG9jYWw6IHJsb2NhbFByb3RvY29sLnRlc3QoIGxvY2F0aW9uLnByb3RvY29sICksXG5cdFx0Z2xvYmFsOiB0cnVlLFxuXHRcdHByb2Nlc3NEYXRhOiB0cnVlLFxuXHRcdGFzeW5jOiB0cnVlLFxuXHRcdGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLFxuXG5cdFx0Lypcblx0XHR0aW1lb3V0OiAwLFxuXHRcdGRhdGE6IG51bGwsXG5cdFx0ZGF0YVR5cGU6IG51bGwsXG5cdFx0dXNlcm5hbWU6IG51bGwsXG5cdFx0cGFzc3dvcmQ6IG51bGwsXG5cdFx0Y2FjaGU6IG51bGwsXG5cdFx0dGhyb3dzOiBmYWxzZSxcblx0XHR0cmFkaXRpb25hbDogZmFsc2UsXG5cdFx0aGVhZGVyczoge30sXG5cdFx0Ki9cblxuXHRcdGFjY2VwdHM6IHtcblx0XHRcdFwiKlwiOiBhbGxUeXBlcyxcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxuXHRcdFx0aHRtbDogXCJ0ZXh0L2h0bWxcIixcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiXG5cdFx0fSxcblxuXHRcdGNvbnRlbnRzOiB7XG5cdFx0XHR4bWw6IC9cXGJ4bWxcXGIvLFxuXHRcdFx0aHRtbDogL1xcYmh0bWwvLFxuXHRcdFx0anNvbjogL1xcYmpzb25cXGIvXG5cdFx0fSxcblxuXHRcdHJlc3BvbnNlRmllbGRzOiB7XG5cdFx0XHR4bWw6IFwicmVzcG9uc2VYTUxcIixcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCIsXG5cdFx0XHRqc29uOiBcInJlc3BvbnNlSlNPTlwiXG5cdFx0fSxcblxuXHRcdC8vIERhdGEgY29udmVydGVyc1xuXHRcdC8vIEtleXMgc2VwYXJhdGUgc291cmNlIChvciBjYXRjaGFsbCBcIipcIikgYW5kIGRlc3RpbmF0aW9uIHR5cGVzIHdpdGggYSBzaW5nbGUgc3BhY2Vcblx0XHRjb252ZXJ0ZXJzOiB7XG5cblx0XHRcdC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dFxuXHRcdFx0XCIqIHRleHRcIjogU3RyaW5nLFxuXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcblx0XHRcdFwidGV4dCBodG1sXCI6IHRydWUsXG5cblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cblx0XHRcdFwidGV4dCBqc29uXCI6IEpTT04ucGFyc2UsXG5cblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXG5cdFx0XHRcInRleHQgeG1sXCI6IGpRdWVyeS5wYXJzZVhNTFxuXHRcdH0sXG5cblx0XHQvLyBGb3Igb3B0aW9ucyB0aGF0IHNob3VsZG4ndCBiZSBkZWVwIGV4dGVuZGVkOlxuXHRcdC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWZcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxuXHRcdC8vIGRlZXAgZXh0ZW5kZWQgKHNlZSBhamF4RXh0ZW5kKVxuXHRcdGZsYXRPcHRpb25zOiB7XG5cdFx0XHR1cmw6IHRydWUsXG5cdFx0XHRjb250ZXh0OiB0cnVlXG5cdFx0fVxuXHR9LFxuXG5cdC8vIENyZWF0ZXMgYSBmdWxsIGZsZWRnZWQgc2V0dGluZ3Mgb2JqZWN0IGludG8gdGFyZ2V0XG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cblx0Ly8gSWYgdGFyZ2V0IGlzIG9taXR0ZWQsIHdyaXRlcyBpbnRvIGFqYXhTZXR0aW5ncy5cblx0YWpheFNldHVwOiBmdW5jdGlvbiggdGFyZ2V0LCBzZXR0aW5ncyApIHtcblx0XHRyZXR1cm4gc2V0dGluZ3MgP1xuXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxuXHRcdFx0YWpheEV4dGVuZCggYWpheEV4dGVuZCggdGFyZ2V0LCBqUXVlcnkuYWpheFNldHRpbmdzICksIHNldHRpbmdzICkgOlxuXG5cdFx0XHQvLyBFeHRlbmRpbmcgYWpheFNldHRpbmdzXG5cdFx0XHRhamF4RXh0ZW5kKCBqUXVlcnkuYWpheFNldHRpbmdzLCB0YXJnZXQgKTtcblx0fSxcblxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcblx0YWpheFRyYW5zcG9ydDogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzICksXG5cblx0Ly8gTWFpbiBtZXRob2Rcblx0YWpheDogZnVuY3Rpb24oIHVybCwgb3B0aW9ucyApIHtcblxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXG5cdFx0aWYgKCB0eXBlb2YgdXJsID09PSBcIm9iamVjdFwiICkge1xuXHRcdFx0b3B0aW9ucyA9IHVybDtcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxuXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdFx0dmFyIHRyYW5zcG9ydCxcblxuXHRcdFx0Ly8gVVJMIHdpdGhvdXQgYW50aS1jYWNoZSBwYXJhbVxuXHRcdFx0Y2FjaGVVUkwsXG5cblx0XHRcdC8vIFJlc3BvbnNlIGhlYWRlcnNcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyxcblx0XHRcdHJlc3BvbnNlSGVhZGVycyxcblxuXHRcdFx0Ly8gdGltZW91dCBoYW5kbGVcblx0XHRcdHRpbWVvdXRUaW1lcixcblxuXHRcdFx0Ly8gVXJsIGNsZWFudXAgdmFyXG5cdFx0XHR1cmxBbmNob3IsXG5cblx0XHRcdC8vIFJlcXVlc3Qgc3RhdGUgKGJlY29tZXMgZmFsc2UgdXBvbiBzZW5kIGFuZCB0cnVlIHVwb24gY29tcGxldGlvbilcblx0XHRcdGNvbXBsZXRlZCxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiBnbG9iYWwgZXZlbnRzIGFyZSB0byBiZSBkaXNwYXRjaGVkXG5cdFx0XHRmaXJlR2xvYmFscyxcblxuXHRcdFx0Ly8gTG9vcCB2YXJpYWJsZVxuXHRcdFx0aSxcblxuXHRcdFx0Ly8gdW5jYWNoZWQgcGFydCBvZiB0aGUgdXJsXG5cdFx0XHR1bmNhY2hlZCxcblxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxuXHRcdFx0cyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBvcHRpb25zICksXG5cblx0XHRcdC8vIENhbGxiYWNrcyBjb250ZXh0XG5cdFx0XHRjYWxsYmFja0NvbnRleHQgPSBzLmNvbnRleHQgfHwgcyxcblxuXHRcdFx0Ly8gQ29udGV4dCBmb3IgZ2xvYmFsIGV2ZW50cyBpcyBjYWxsYmFja0NvbnRleHQgaWYgaXQgaXMgYSBET00gbm9kZSBvciBqUXVlcnkgY29sbGVjdGlvblxuXHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0ID0gcy5jb250ZXh0ICYmXG5cdFx0XHRcdCggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dC5qcXVlcnkgKSA/XG5cdFx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LFxuXG5cdFx0XHQvLyBEZWZlcnJlZHNcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5LkNhbGxiYWNrcyggXCJvbmNlIG1lbW9yeVwiICksXG5cblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LFxuXG5cdFx0XHQvLyBIZWFkZXJzICh0aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKVxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcblx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXMgPSB7fSxcblxuXHRcdFx0Ly8gRGVmYXVsdCBhYm9ydCBtZXNzYWdlXG5cdFx0XHRzdHJBYm9ydCA9IFwiY2FuY2VsZWRcIixcblxuXHRcdFx0Ly8gRmFrZSB4aHJcblx0XHRcdGpxWEhSID0ge1xuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxuXG5cdFx0XHRcdC8vIEJ1aWxkcyBoZWFkZXJzIGhhc2h0YWJsZSBpZiBuZWVkZWRcblx0XHRcdFx0Z2V0UmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnMgPSB7fTtcblx0XHRcdFx0XHRcdFx0d2hpbGUgKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSArIFwiIFwiIF0gPVxuXHRcdFx0XHRcdFx0XHRcdFx0KCByZXNwb25zZUhlYWRlcnNbIG1hdGNoWyAxIF0udG9Mb3dlckNhc2UoKSArIFwiIFwiIF0gfHwgW10gKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuY29uY2F0KCBtYXRjaFsgMiBdICk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSArIFwiIFwiIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBtYXRjaCA9PSBudWxsID8gbnVsbCA6IG1hdGNoLmpvaW4oIFwiLCBcIiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFJhdyBzdHJpbmdcblx0XHRcdFx0Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGxldGVkID8gcmVzcG9uc2VIZWFkZXJzU3RyaW5nIDogbnVsbDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxuXHRcdFx0XHRzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgPT0gbnVsbCApIHtcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSA9XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3RIZWFkZXJzTmFtZXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IG5hbWU7XG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRzLm1pbWVUeXBlID0gdHlwZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdFx0c3RhdHVzQ29kZTogZnVuY3Rpb24oIG1hcCApIHtcblx0XHRcdFx0XHR2YXIgY29kZTtcblx0XHRcdFx0XHRpZiAoIG1hcCApIHtcblx0XHRcdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrc1xuXHRcdFx0XHRcdFx0XHRqcVhIUi5hbHdheXMoIG1hcFsganFYSFIuc3RhdHVzIF0gKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTGF6eS1hZGQgdGhlIG5ldyBjYWxsYmFja3MgaW4gYSB3YXkgdGhhdCBwcmVzZXJ2ZXMgb2xkIG9uZXNcblx0XHRcdFx0XHRcdFx0Zm9yICggY29kZSBpbiBtYXAgKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RhdHVzQ29kZVsgY29kZSBdID0gWyBzdGF0dXNDb2RlWyBjb2RlIF0sIG1hcFsgY29kZSBdIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSByZXF1ZXN0XG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbiggc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHR2YXIgZmluYWxUZXh0ID0gc3RhdHVzVGV4dCB8fCBzdHJBYm9ydDtcblx0XHRcdFx0XHRpZiAoIHRyYW5zcG9ydCApIHtcblx0XHRcdFx0XHRcdHRyYW5zcG9ydC5hYm9ydCggZmluYWxUZXh0ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRvbmUoIDAsIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0Ly8gQXR0YWNoIGRlZmVycmVkc1xuXHRcdGRlZmVycmVkLnByb21pc2UoIGpxWEhSICk7XG5cblx0XHQvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkIChwcmVmaWx0ZXJzIG1pZ2h0IGV4cGVjdCBpdClcblx0XHQvLyBIYW5kbGUgZmFsc3kgdXJsIGluIHRoZSBzZXR0aW5ncyBvYmplY3QgKCMxMDA5MzogY29uc2lzdGVuY3kgd2l0aCBvbGQgc2lnbmF0dXJlKVxuXHRcdC8vIFdlIGFsc28gdXNlIHRoZSB1cmwgcGFyYW1ldGVyIGlmIGF2YWlsYWJsZVxuXHRcdHMudXJsID0gKCAoIHVybCB8fCBzLnVybCB8fCBsb2NhdGlvbi5ocmVmICkgKyBcIlwiIClcblx0XHRcdC5yZXBsYWNlKCBycHJvdG9jb2wsIGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICk7XG5cblx0XHQvLyBBbGlhcyBtZXRob2Qgb3B0aW9uIHRvIHR5cGUgYXMgcGVyIHRpY2tldCAjMTIwMDRcblx0XHRzLnR5cGUgPSBvcHRpb25zLm1ldGhvZCB8fCBvcHRpb25zLnR5cGUgfHwgcy5tZXRob2QgfHwgcy50eXBlO1xuXG5cdFx0Ly8gRXh0cmFjdCBkYXRhVHlwZXMgbGlzdFxuXHRcdHMuZGF0YVR5cGVzID0gKCBzLmRhdGFUeXBlIHx8IFwiKlwiICkudG9Mb3dlckNhc2UoKS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFsgXCJcIiBdO1xuXG5cdFx0Ly8gQSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlciB3aGVuIHRoZSBvcmlnaW4gZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBvcmlnaW4uXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XG5cdFx0XHR1cmxBbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSwgRWRnZSAxMiAtIDE1XG5cdFx0XHQvLyBJRSB0aHJvd3MgZXhjZXB0aW9uIG9uIGFjY2Vzc2luZyB0aGUgaHJlZiBwcm9wZXJ0eSBpZiB1cmwgaXMgbWFsZm9ybWVkLFxuXHRcdFx0Ly8gZS5nLiBodHRwOi8vZXhhbXBsZS5jb206ODB4L1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dXJsQW5jaG9yLmhyZWYgPSBzLnVybDtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTggLSAxMSBvbmx5XG5cdFx0XHRcdC8vIEFuY2hvcidzIGhvc3QgcHJvcGVydHkgaXNuJ3QgY29ycmVjdGx5IHNldCB3aGVuIHMudXJsIGlzIHJlbGF0aXZlXG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gdXJsQW5jaG9yLmhyZWY7XG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSBvcmlnaW5BbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyBvcmlnaW5BbmNob3IuaG9zdCAhPT1cblx0XHRcdFx0XHR1cmxBbmNob3IucHJvdG9jb2wgKyBcIi8vXCIgKyB1cmxBbmNob3IuaG9zdDtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNpbmcgdGhlIFVSTCwgYXNzdW1lIGl0IGlzIGNyb3NzRG9tYWluLFxuXHRcdFx0XHQvLyBpdCBjYW4gYmUgcmVqZWN0ZWQgYnkgdGhlIHRyYW5zcG9ydCBpZiBpdCBpcyBpbnZhbGlkXG5cdFx0XHRcdHMuY3Jvc3NEb21haW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZ1xuXHRcdGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdHMuZGF0YSA9IGpRdWVyeS5wYXJhbSggcy5kYXRhLCBzLnRyYWRpdGlvbmFsICk7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgcHJlZmlsdGVyc1xuXHRcdGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYSBwcmVmaWx0ZXIsIHN0b3AgdGhlcmVcblx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdHJldHVybiBqcVhIUjtcblx0XHR9XG5cblx0XHQvLyBXZSBjYW4gZmlyZSBnbG9iYWwgZXZlbnRzIGFzIG9mIG5vdyBpZiBhc2tlZCB0b1xuXHRcdC8vIERvbid0IGZpcmUgZXZlbnRzIGlmIGpRdWVyeS5ldmVudCBpcyB1bmRlZmluZWQgaW4gYW4gQU1ELXVzYWdlIHNjZW5hcmlvICgjMTUxMTgpXG5cdFx0ZmlyZUdsb2JhbHMgPSBqUXVlcnkuZXZlbnQgJiYgcy5nbG9iYWw7XG5cblx0XHQvLyBXYXRjaCBmb3IgYSBuZXcgc2V0IG9mIHJlcXVlc3RzXG5cdFx0aWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RhcnRcIiApO1xuXHRcdH1cblxuXHRcdC8vIFVwcGVyY2FzZSB0aGUgdHlwZVxuXHRcdHMudHlwZSA9IHMudHlwZS50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnRcblx0XHRzLmhhc0NvbnRlbnQgPSAhcm5vQ29udGVudC50ZXN0KCBzLnR5cGUgKTtcblxuXHRcdC8vIFNhdmUgdGhlIFVSTCBpbiBjYXNlIHdlJ3JlIHRveWluZyB3aXRoIHRoZSBJZi1Nb2RpZmllZC1TaW5jZVxuXHRcdC8vIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciBsYXRlciBvblxuXHRcdC8vIFJlbW92ZSBoYXNoIHRvIHNpbXBsaWZ5IHVybCBtYW5pcHVsYXRpb25cblx0XHRjYWNoZVVSTCA9IHMudXJsLnJlcGxhY2UoIHJoYXNoLCBcIlwiICk7XG5cblx0XHQvLyBNb3JlIG9wdGlvbnMgaGFuZGxpbmcgZm9yIHJlcXVlc3RzIHdpdGggbm8gY29udGVudFxuXHRcdGlmICggIXMuaGFzQ29udGVudCApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIGhhc2ggc28gd2UgY2FuIHB1dCBpdCBiYWNrXG5cdFx0XHR1bmNhY2hlZCA9IHMudXJsLnNsaWNlKCBjYWNoZVVSTC5sZW5ndGggKTtcblxuXHRcdFx0Ly8gSWYgZGF0YSBpcyBhdmFpbGFibGUgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQsIGFwcGVuZCBkYXRhIHRvIHVybFxuXHRcdFx0aWYgKCBzLmRhdGEgJiYgKCBzLnByb2Nlc3NEYXRhIHx8IHR5cGVvZiBzLmRhdGEgPT09IFwic3RyaW5nXCIgKSApIHtcblx0XHRcdFx0Y2FjaGVVUkwgKz0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuZGF0YTtcblxuXHRcdFx0XHQvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGluIGFuIGV2ZW50dWFsIHJldHJ5XG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFkZCBvciB1cGRhdGUgYW50aS1jYWNoZSBwYXJhbSBpZiBuZWVkZWRcblx0XHRcdGlmICggcy5jYWNoZSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdGNhY2hlVVJMID0gY2FjaGVVUkwucmVwbGFjZSggcmFudGlDYWNoZSwgXCIkMVwiICk7XG5cdFx0XHRcdHVuY2FjaGVkID0gKCBycXVlcnkudGVzdCggY2FjaGVVUkwgKSA/IFwiJlwiIDogXCI/XCIgKSArIFwiXz1cIiArICggbm9uY2UrKyApICsgdW5jYWNoZWQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFB1dCBoYXNoIGFuZCBhbnRpLWNhY2hlIG9uIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCAoZ2gtMTczMilcblx0XHRcdHMudXJsID0gY2FjaGVVUkwgKyB1bmNhY2hlZDtcblxuXHRcdC8vIENoYW5nZSAnJTIwJyB0byAnKycgaWYgdGhpcyBpcyBlbmNvZGVkIGZvcm0gYm9keSBjb250ZW50IChnaC0yNjU4KVxuXHRcdH0gZWxzZSBpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmXG5cdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApLmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCApIHtcblx0XHRcdHMuZGF0YSA9IHMuZGF0YS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdGlmICggalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICkge1xuXHRcdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIklmLU5vbmUtTWF0Y2hcIiwgalF1ZXJ5LmV0YWdbIGNhY2hlVVJMIF0gKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcblx0XHRpZiAoIHMuZGF0YSAmJiBzLmhhc0NvbnRlbnQgJiYgcy5jb250ZW50VHlwZSAhPT0gZmFsc2UgfHwgb3B0aW9ucy5jb250ZW50VHlwZSApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIsIHMuY29udGVudFR5cGUgKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIEFjY2VwdHMgaGVhZGVyIGZvciB0aGUgc2VydmVyLCBkZXBlbmRpbmcgb24gdGhlIGRhdGFUeXBlXG5cdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlcihcblx0XHRcdFwiQWNjZXB0XCIsXG5cdFx0XHRzLmRhdGFUeXBlc1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdID9cblx0XHRcdFx0cy5hY2NlcHRzWyBzLmRhdGFUeXBlc1sgMCBdIF0gK1xuXHRcdFx0XHRcdCggcy5kYXRhVHlwZXNbIDAgXSAhPT0gXCIqXCIgPyBcIiwgXCIgKyBhbGxUeXBlcyArIFwiOyBxPTAuMDFcIiA6IFwiXCIgKSA6XG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxuXHRcdCk7XG5cblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cblx0XHRmb3IgKCBpIGluIHMuaGVhZGVycyApIHtcblx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIGksIHMuaGVhZGVyc1sgaSBdICk7XG5cdFx0fVxuXG5cdFx0Ly8gQWxsb3cgY3VzdG9tIGhlYWRlcnMvbWltZXR5cGVzIGFuZCBlYXJseSBhYm9ydFxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmXG5cdFx0XHQoIHMuYmVmb3JlU2VuZC5jYWxsKCBjYWxsYmFja0NvbnRleHQsIGpxWEhSLCBzICkgPT09IGZhbHNlIHx8IGNvbXBsZXRlZCApICkge1xuXG5cdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cblx0XHRcdHJldHVybiBqcVhIUi5hYm9ydCgpO1xuXHRcdH1cblxuXHRcdC8vIEFib3J0aW5nIGlzIG5vIGxvbmdlciBhIGNhbmNlbGxhdGlvblxuXHRcdHN0ckFib3J0ID0gXCJhYm9ydFwiO1xuXG5cdFx0Ly8gSW5zdGFsbCBjYWxsYmFja3Mgb24gZGVmZXJyZWRzXG5cdFx0Y29tcGxldGVEZWZlcnJlZC5hZGQoIHMuY29tcGxldGUgKTtcblx0XHRqcVhIUi5kb25lKCBzLnN1Y2Nlc3MgKTtcblx0XHRqcVhIUi5mYWlsKCBzLmVycm9yICk7XG5cblx0XHQvLyBHZXQgdHJhbnNwb3J0XG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XG5cblx0XHQvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnRcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XG5cdFx0XHRkb25lKCAtMSwgXCJObyBUcmFuc3BvcnRcIiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcblxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhTZW5kXCIsIFsganFYSFIsIHMgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhamF4U2VuZCwgc3RvcCB0aGVyZVxuXHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdHJldHVybiBqcVhIUjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVGltZW91dFxuXHRcdFx0aWYgKCBzLmFzeW5jICYmIHMudGltZW91dCA+IDAgKSB7XG5cdFx0XHRcdHRpbWVvdXRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRqcVhIUi5hYm9ydCggXCJ0aW1lb3V0XCIgKTtcblx0XHRcdFx0fSwgcy50aW1lb3V0ICk7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbXBsZXRlZCA9IGZhbHNlO1xuXHRcdFx0XHR0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdC8vIFJldGhyb3cgcG9zdC1jb21wbGV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFByb3BhZ2F0ZSBvdGhlcnMgYXMgcmVzdWx0c1xuXHRcdFx0XHRkb25lKCAtMSwgZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xuXHRcdFx0dmFyIGlzU3VjY2Vzcywgc3VjY2VzcywgZXJyb3IsIHJlc3BvbnNlLCBtb2RpZmllZCxcblx0XHRcdFx0c3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQ7XG5cblx0XHRcdC8vIElnbm9yZSByZXBlYXQgaW52b2NhdGlvbnNcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbXBsZXRlZCA9IHRydWU7XG5cblx0XHRcdC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcblx0XHRcdFx0d2luZG93LmNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFybHkgZ2FyYmFnZSBjb2xsZWN0aW9uXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxuXHRcdFx0dHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcgPSBoZWFkZXJzIHx8IFwiXCI7XG5cblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gc3RhdHVzID4gMCA/IDQgOiAwO1xuXG5cdFx0XHQvLyBEZXRlcm1pbmUgaWYgc3VjY2Vzc2Z1bFxuXHRcdFx0aXNTdWNjZXNzID0gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG5cblx0XHRcdC8vIEdldCByZXNwb25zZSBkYXRhXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcblx0XHRcdFx0cmVzcG9uc2UgPSBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnZlcnQgbm8gbWF0dGVyIHdoYXQgKHRoYXQgd2F5IHJlc3BvbnNlWFhYIGZpZWxkcyBhcmUgYWx3YXlzIHNldClcblx0XHRcdHJlc3BvbnNlID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICk7XG5cblx0XHRcdC8vIElmIHN1Y2Nlc3NmdWwsIGhhbmRsZSB0eXBlIGNoYWluaW5nXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblxuXHRcdFx0XHQvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1hdGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLlxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcIkxhc3QtTW9kaWZpZWRcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkubGFzdE1vZGlmaWVkWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG1vZGlmaWVkID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiZXRhZ1wiICk7XG5cdFx0XHRcdFx0aWYgKCBtb2RpZmllZCApIHtcblx0XHRcdFx0XHRcdGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdID0gbW9kaWZpZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgbm8gY29udGVudFxuXHRcdFx0XHRpZiAoIHN0YXR1cyA9PT0gMjA0IHx8IHMudHlwZSA9PT0gXCJIRUFEXCIgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwibm9jb250ZW50XCI7XG5cblx0XHRcdFx0Ly8gaWYgbm90IG1vZGlmaWVkXG5cdFx0XHRcdH0gZWxzZSBpZiAoIHN0YXR1cyA9PT0gMzA0ICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vdG1vZGlmaWVkXCI7XG5cblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBkYXRhLCBsZXQncyBjb252ZXJ0IGl0XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXRlO1xuXHRcdFx0XHRcdHN1Y2Nlc3MgPSByZXNwb25zZS5kYXRhO1xuXHRcdFx0XHRcdGVycm9yID0gcmVzcG9uc2UuZXJyb3I7XG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gIWVycm9yO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIEV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0IGFuZCBub3JtYWxpemUgZm9yIG5vbi1hYm9ydHNcblx0XHRcdFx0ZXJyb3IgPSBzdGF0dXNUZXh0O1xuXHRcdFx0XHRpZiAoIHN0YXR1cyB8fCAhc3RhdHVzVGV4dCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJlcnJvclwiO1xuXHRcdFx0XHRcdGlmICggc3RhdHVzIDwgMCApIHtcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCBkYXRhIGZvciB0aGUgZmFrZSB4aHIgb2JqZWN0XG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XG5cdFx0XHRqcVhIUi5zdGF0dXNUZXh0ID0gKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKSArIFwiXCI7XG5cblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3Jcblx0XHRcdGlmICggaXNTdWNjZXNzICkge1xuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIHN1Y2Nlc3MsIHN0YXR1c1RleHQsIGpxWEhSIF0gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlZmVycmVkLnJlamVjdFdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCwgZXJyb3IgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0anFYSFIuc3RhdHVzQ29kZSggc3RhdHVzQ29kZSApO1xuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIGlzU3VjY2VzcyA/IFwiYWpheFN1Y2Nlc3NcIiA6IFwiYWpheEVycm9yXCIsXG5cdFx0XHRcdFx0WyBqcVhIUiwgcywgaXNTdWNjZXNzID8gc3VjY2VzcyA6IGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29tcGxldGVcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQuZmlyZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBqcVhIUiwgc3RhdHVzVGV4dCBdICk7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBcImFqYXhDb21wbGV0ZVwiLCBbIGpxWEhSLCBzIF0gKTtcblxuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGdsb2JhbCBBSkFYIGNvdW50ZXJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RvcFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4ganFYSFI7XG5cdH0sXG5cblx0Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgZGF0YSwgY2FsbGJhY2ssIFwianNvblwiICk7XG5cdH0sXG5cblx0Z2V0U2NyaXB0OiBmdW5jdGlvbiggdXJsLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCBcInNjcmlwdFwiICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmVhY2goIFsgXCJnZXRcIiwgXCJwb3N0XCIgXSwgZnVuY3Rpb24oIGksIG1ldGhvZCApIHtcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xuXG5cdFx0Ly8gU2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGRhdGEgKSApIHtcblx0XHRcdHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrO1xuXHRcdFx0Y2FsbGJhY2sgPSBkYXRhO1xuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBUaGUgdXJsIGNhbiBiZSBhbiBvcHRpb25zIG9iamVjdCAod2hpY2ggdGhlbiBtdXN0IGhhdmUgLnVybClcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoIGpRdWVyeS5leHRlbmQoIHtcblx0XHRcdHVybDogdXJsLFxuXHRcdFx0dHlwZTogbWV0aG9kLFxuXHRcdFx0ZGF0YVR5cGU6IHR5cGUsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogY2FsbGJhY2tcblx0XHR9LCBqUXVlcnkuaXNQbGFpbk9iamVjdCggdXJsICkgJiYgdXJsICkgKTtcblx0fTtcbn0gKTtcblxuXG5qUXVlcnkuX2V2YWxVcmwgPSBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xuXHRyZXR1cm4galF1ZXJ5LmFqYXgoIHtcblx0XHR1cmw6IHVybCxcblxuXHRcdC8vIE1ha2UgdGhpcyBleHBsaWNpdCwgc2luY2UgdXNlciBjYW4gb3ZlcnJpZGUgdGhpcyB0aHJvdWdoIGFqYXhTZXR1cCAoIzExMjY0KVxuXHRcdHR5cGU6IFwiR0VUXCIsXG5cdFx0ZGF0YVR5cGU6IFwic2NyaXB0XCIsXG5cdFx0Y2FjaGU6IHRydWUsXG5cdFx0YXN5bmM6IGZhbHNlLFxuXHRcdGdsb2JhbDogZmFsc2UsXG5cblx0XHQvLyBPbmx5IGV2YWx1YXRlIHRoZSByZXNwb25zZSBpZiBpdCBpcyBzdWNjZXNzZnVsIChnaC00MTI2KVxuXHRcdC8vIGRhdGFGaWx0ZXIgaXMgbm90IGludm9rZWQgZm9yIGZhaWx1cmUgcmVzcG9uc2VzLCBzbyB1c2luZyBpdCBpbnN0ZWFkXG5cdFx0Ly8gb2YgdGhlIGRlZmF1bHQgY29udmVydGVyIGlzIGtsdWRneSBidXQgaXQgd29ya3MuXG5cdFx0Y29udmVydGVyczoge1xuXHRcdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbigpIHt9XG5cdFx0fSxcblx0XHRkYXRhRmlsdGVyOiBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggcmVzcG9uc2UsIG9wdGlvbnMgKTtcblx0XHR9XG5cdH0gKTtcbn07XG5cblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHR3cmFwQWxsOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgd3JhcDtcblxuXHRcdGlmICggdGhpc1sgMCBdICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBodG1sICkgKSB7XG5cdFx0XHRcdGh0bWwgPSBodG1sLmNhbGwoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFyb3VuZFxuXHRcdFx0d3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1sgMCBdLm93bmVyRG9jdW1lbnQgKS5lcSggMCApLmNsb25lKCB0cnVlICk7XG5cblx0XHRcdGlmICggdGhpc1sgMCBdLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHdyYXAuaW5zZXJ0QmVmb3JlKCB0aGlzWyAwIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0d3JhcC5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR2YXIgZWxlbSA9IHRoaXM7XG5cblx0XHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0RWxlbWVudENoaWxkICkge1xuXHRcdFx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0RWxlbWVudENoaWxkO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVsZW07XG5cdFx0XHR9ICkuYXBwZW5kKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH0sXG5cblx0d3JhcElubmVyOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwSW5uZXIoIGh0bWwuY2FsbCggdGhpcywgaSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxuXHRcdFx0XHRjb250ZW50cyA9IHNlbGYuY29udGVudHMoKTtcblxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XG5cdFx0XHRcdGNvbnRlbnRzLndyYXBBbGwoIGh0bWwgKTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VsZi5hcHBlbmQoIGh0bWwgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0dmFyIGh0bWxJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggaHRtbCApO1xuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBodG1sSXNGdW5jdGlvbiA/IGh0bWwuY2FsbCggdGhpcywgaSApIDogaHRtbCApO1xuXHRcdH0gKTtcblx0fSxcblxuXHR1bndyYXA6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR0aGlzLnBhcmVudCggc2VsZWN0b3IgKS5ub3QoIFwiYm9keVwiICkuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkoIHRoaXMgKS5yZXBsYWNlV2l0aCggdGhpcy5jaGlsZE5vZGVzICk7XG5cdFx0fSApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59ICk7XG5cblxualF1ZXJ5LmV4cHIucHNldWRvcy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICFqUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUoIGVsZW0gKTtcbn07XG5qUXVlcnkuZXhwci5wc2V1ZG9zLnZpc2libGUgPSBmdW5jdGlvbiggZWxlbSApIHtcblx0cmV0dXJuICEhKCBlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKTtcbn07XG5cblxuXG5cbmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gZnVuY3Rpb24oKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTtcblx0fSBjYXRjaCAoIGUgKSB7fVxufTtcblxudmFyIHhoclN1Y2Nlc3NTdGF0dXMgPSB7XG5cblx0XHQvLyBGaWxlIHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIGNvZGUgMCwgYXNzdW1lIDIwMFxuXHRcdDA6IDIwMCxcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0Ly8gIzE0NTA6IHNvbWV0aW1lcyBJRSByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91bGQgYmUgMjA0XG5cdFx0MTIyMzogMjA0XG5cdH0sXG5cdHhoclN1cHBvcnRlZCA9IGpRdWVyeS5hamF4U2V0dGluZ3MueGhyKCk7XG5cbnN1cHBvcnQuY29ycyA9ICEheGhyU3VwcG9ydGVkICYmICggXCJ3aXRoQ3JlZGVudGlhbHNcIiBpbiB4aHJTdXBwb3J0ZWQgKTtcbnN1cHBvcnQuYWpheCA9IHhoclN1cHBvcnRlZCA9ICEheGhyU3VwcG9ydGVkO1xuXG5qUXVlcnkuYWpheFRyYW5zcG9ydCggZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cdHZhciBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaztcblxuXHQvLyBDcm9zcyBkb21haW4gb25seSBhbGxvd2VkIGlmIHN1cHBvcnRlZCB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0XG5cdGlmICggc3VwcG9ydC5jb3JzIHx8IHhoclN1cHBvcnRlZCAmJiAhb3B0aW9ucy5jcm9zc0RvbWFpbiApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2VuZDogZnVuY3Rpb24oIGhlYWRlcnMsIGNvbXBsZXRlICkge1xuXHRcdFx0XHR2YXIgaSxcblx0XHRcdFx0XHR4aHIgPSBvcHRpb25zLnhocigpO1xuXG5cdFx0XHRcdHhoci5vcGVuKFxuXHRcdFx0XHRcdG9wdGlvbnMudHlwZSxcblx0XHRcdFx0XHRvcHRpb25zLnVybCxcblx0XHRcdFx0XHRvcHRpb25zLmFzeW5jLFxuXHRcdFx0XHRcdG9wdGlvbnMudXNlcm5hbWUsXG5cdFx0XHRcdFx0b3B0aW9ucy5wYXNzd29yZFxuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdC8vIEFwcGx5IGN1c3RvbSBmaWVsZHMgaWYgcHJvdmlkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLnhockZpZWxkcyApIHtcblx0XHRcdFx0XHRmb3IgKCBpIGluIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdFx0eGhyWyBpIF0gPSBvcHRpb25zLnhockZpZWxkc1sgaSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWRcblx0XHRcdFx0aWYgKCBvcHRpb25zLm1pbWVUeXBlICYmIHhoci5vdmVycmlkZU1pbWVUeXBlICkge1xuXHRcdFx0XHRcdHhoci5vdmVycmlkZU1pbWVUeXBlKCBvcHRpb25zLm1pbWVUeXBlICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlclxuXHRcdFx0XHQvLyBGb3IgY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzZWVpbmcgYXMgY29uZGl0aW9ucyBmb3IgYSBwcmVmbGlnaHQgYXJlXG5cdFx0XHRcdC8vIGFraW4gdG8gYSBqaWdzYXcgcHV6emxlLCB3ZSBzaW1wbHkgbmV2ZXIgc2V0IGl0IHRvIGJlIHN1cmUuXG5cdFx0XHRcdC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKVxuXHRcdFx0XHQvLyBGb3Igc2FtZS1kb21haW4gcmVxdWVzdHMsIHdvbid0IGNoYW5nZSBoZWFkZXIgaWYgYWxyZWFkeSBwcm92aWRlZC5cblx0XHRcdFx0aWYgKCAhb3B0aW9ucy5jcm9zc0RvbWFpbiAmJiAhaGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSApIHtcblx0XHRcdFx0XHRoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdID0gXCJYTUxIdHRwUmVxdWVzdFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gU2V0IGhlYWRlcnNcblx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xuXHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIENhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIHR5cGUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSBlcnJvckNhbGxiYWNrID0geGhyLm9ubG9hZCA9XG5cdFx0XHRcdFx0XHRcdFx0eGhyLm9uZXJyb3IgPSB4aHIub25hYm9ydCA9IHhoci5vbnRpbWVvdXQgPVxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG5cblx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlID09PSBcImFib3J0XCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09IFwiZXJyb3JcIiApIHtcblxuXHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0Ly8gT24gYSBtYW51YWwgbmF0aXZlIGFib3J0LCBJRTkgdGhyb3dzXG5cdFx0XHRcdFx0XHRcdFx0Ly8gZXJyb3JzIG9uIGFueSBwcm9wZXJ0eSBhY2Nlc3MgdGhhdCBpcyBub3QgcmVhZHlTdGF0ZVxuXHRcdFx0XHRcdFx0XHRcdGlmICggdHlwZW9mIHhoci5zdGF0dXMgIT09IFwibnVtYmVyXCIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggMCwgXCJlcnJvclwiICk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEZpbGU6IHByb3RvY29sIGFsd2F5cyB5aWVsZHMgc3RhdHVzIDA7IHNlZSAjODYwNSwgIzE0MjA3XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHhoci5zdGF0dXNUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZShcblx0XHRcdFx0XHRcdFx0XHRcdHhoclN1Y2Nlc3NTdGF0dXNbIHhoci5zdGF0dXMgXSB8fCB4aHIuc3RhdHVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHQsXG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJRTkgaGFzIG5vIFhIUjIgYnV0IHRocm93cyBvbiBiaW5hcnkgKHRyYWMtMTE0MjYpXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBGb3IgWEhSMiBub24tdGV4dCwgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIGl0IChnaC0yNDk4KVxuXHRcdFx0XHRcdFx0XHRcdFx0KCB4aHIucmVzcG9uc2VUeXBlIHx8IFwidGV4dFwiICkgIT09IFwidGV4dFwiICB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHhoci5yZXNwb25zZVRleHQgIT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGJpbmFyeTogeGhyLnJlc3BvbnNlIH0gOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IHRleHQ6IHhoci5yZXNwb25zZVRleHQgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIExpc3RlbiB0byBldmVudHNcblx0XHRcdFx0eGhyLm9ubG9hZCA9IGNhbGxiYWNrKCk7XG5cdFx0XHRcdGVycm9yQ2FsbGJhY2sgPSB4aHIub25lcnJvciA9IHhoci5vbnRpbWVvdXQgPSBjYWxsYmFjayggXCJlcnJvclwiICk7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgOSBvbmx5XG5cdFx0XHRcdC8vIFVzZSBvbnJlYWR5c3RhdGVjaGFuZ2UgdG8gcmVwbGFjZSBvbmFib3J0XG5cdFx0XHRcdC8vIHRvIGhhbmRsZSB1bmNhdWdodCBhYm9ydHNcblx0XHRcdFx0aWYgKCB4aHIub25hYm9ydCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHhoci5vbmFib3J0ID0gZXJyb3JDYWxsYmFjaztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIHJlYWR5U3RhdGUgYmVmb3JlIHRpbWVvdXQgYXMgaXQgY2hhbmdlc1xuXHRcdFx0XHRcdFx0aWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBBbGxvdyBvbmVycm9yIHRvIGJlIGNhbGxlZCBmaXJzdCxcblx0XHRcdFx0XHRcdFx0Ly8gYnV0IHRoYXQgd2lsbCBub3QgaGFuZGxlIGEgbmF0aXZlIGFib3J0XG5cdFx0XHRcdFx0XHRcdC8vIEFsc28sIHNhdmUgZXJyb3JDYWxsYmFjayB0byBhIHZhcmlhYmxlXG5cdFx0XHRcdFx0XHRcdC8vIGFzIHhoci5vbmVycm9yIGNhbm5vdCBiZSBhY2Nlc3NlZFxuXHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yQ2FsbGJhY2soKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIHRoZSBhYm9ydCBjYWxsYmFja1xuXHRcdFx0XHRjYWxsYmFjayA9IGNhbGxiYWNrKCBcImFib3J0XCIgKTtcblxuXHRcdFx0XHR0cnkge1xuXG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdCAodGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uKVxuXHRcdFx0XHRcdHhoci5zZW5kKCBvcHRpb25zLmhhc0NvbnRlbnQgJiYgb3B0aW9ucy5kYXRhIHx8IG51bGwgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGUgKSB7XG5cblx0XHRcdFx0XHQvLyAjMTQ2ODM6IE9ubHkgcmV0aHJvdyBpZiB0aGlzIGhhc24ndCBiZWVuIG5vdGlmaWVkIGFzIGFuIGVycm9yIHlldFxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFByZXZlbnQgYXV0by1leGVjdXRpb24gb2Ygc2NyaXB0cyB3aGVuIG5vIGV4cGxpY2l0IGRhdGFUeXBlIHdhcyBwcm92aWRlZCAoU2VlIGdoLTI0MzIpXG5qUXVlcnkuYWpheFByZWZpbHRlciggZnVuY3Rpb24oIHMgKSB7XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLmNvbnRlbnRzLnNjcmlwdCA9IGZhbHNlO1xuXHR9XG59ICk7XG5cbi8vIEluc3RhbGwgc2NyaXB0IGRhdGFUeXBlXG5qUXVlcnkuYWpheFNldHVwKCB7XG5cdGFjY2VwdHM6IHtcblx0XHRzY3JpcHQ6IFwidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBcIiArXG5cdFx0XHRcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwiXG5cdH0sXG5cdGNvbnRlbnRzOiB7XG5cdFx0c2NyaXB0OiAvXFxiKD86amF2YXxlY21hKXNjcmlwdFxcYi9cblx0fSxcblx0Y29udmVydGVyczoge1xuXHRcdFwidGV4dCBzY3JpcHRcIjogZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xuXHRcdFx0cmV0dXJuIHRleHQ7XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIEhhbmRsZSBjYWNoZSdzIHNwZWNpYWwgY2FzZSBhbmQgY3Jvc3NEb21haW5cbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcInNjcmlwdFwiLCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xuXHR9XG5cdGlmICggcy5jcm9zc0RvbWFpbiApIHtcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgc2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydFxualF1ZXJ5LmFqYXhUcmFuc3BvcnQoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gb3IgZm9yY2VkLWJ5LWF0dHJzIHJlcXVlc3RzXG5cdGlmICggcy5jcm9zc0RvbWFpbiB8fCBzLnNjcmlwdEF0dHJzICkge1xuXHRcdHZhciBzY3JpcHQsIGNhbGxiYWNrO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHNjcmlwdCA9IGpRdWVyeSggXCI8c2NyaXB0PlwiIClcblx0XHRcdFx0XHQuYXR0ciggcy5zY3JpcHRBdHRycyB8fCB7fSApXG5cdFx0XHRcdFx0LnByb3AoIHsgY2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LCBzcmM6IHMudXJsIH0gKVxuXHRcdFx0XHRcdC5vbiggXCJsb2FkIGVycm9yXCIsIGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9ICk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sXG5cdFx0ZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggKCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKSxcbiAgICBiYXNlVW5zZXQgPSByZXF1aXJlKCcuL19iYXNlVW5zZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBjdXN0b21PbWl0Q2xvbmUgPSByZXF1aXJlKCcuL19jdXN0b21PbWl0Q2xvbmUnKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0JyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYic6ICcyJyB9XG4gKi9cbnZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgIHJldHVybiBwYXRoO1xuICB9KTtcbiAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICB9XG4gIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBvbWl0O1xuIiwidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGdldFZhbHVlID0gcmVxdWlyZSgnLi9fZ2V0VmFsdWUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgYmFzZUZpbHRlciA9IHJlcXVpcmUoJy4vX2Jhc2VGaWx0ZXInKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqICoqTm90ZToqKiBVbmxpa2UgYF8ucmVtb3ZlYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKiBAc2VlIF8ucmVqZWN0XG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICogXTtcbiAqXG4gKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsIi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSB3aXRoIGFsbCBmYWxzZXkgdmFsdWVzIHJlbW92ZWQuIFRoZSB2YWx1ZXMgYGZhbHNlYCwgYG51bGxgLFxuICogYDBgLCBgXCJcImAsIGB1bmRlZmluZWRgLCBhbmQgYE5hTmAgYXJlIGZhbHNleS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICogLy8gPT4gWzEsIDIsIDNdXG4gKi9cbmZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFjdDtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICogICByZXR1cm4gbiAqIG47XG4gKiB9XG4gKlxuICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF1cbiAqXG4gKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICogXTtcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gKi9cbmZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiIsInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGJhc2VNYXRjaGVzID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXMnKSxcbiAgICBiYXNlTWF0Y2hlc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZU1hdGNoZXNQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBwcm9wZXJ0eSA9IHJlcXVpcmUoJy4vcHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBpZGVudGl0eTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgOiBiYXNlTWF0Y2hlcyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXRlcmF0ZWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuY2FuVXNlRE9NID0gZXhwb3J0cy5zbGlkZXNPbkxlZnQgPSBleHBvcnRzLnNsaWRlc09uUmlnaHQgPSBleHBvcnRzLnNpYmxpbmdEaXJlY3Rpb24gPSBleHBvcnRzLmdldFRvdGFsU2xpZGVzID0gZXhwb3J0cy5nZXRQb3N0Q2xvbmVzID0gZXhwb3J0cy5nZXRQcmVDbG9uZXMgPSBleHBvcnRzLmdldFRyYWNrTGVmdCA9IGV4cG9ydHMuZ2V0VHJhY2tBbmltYXRlQ1NTID0gZXhwb3J0cy5nZXRUcmFja0NTUyA9IGV4cG9ydHMuY2hlY2tTcGVjS2V5cyA9IGV4cG9ydHMuZ2V0U2xpZGVDb3VudCA9IGV4cG9ydHMuY2hlY2tOYXZpZ2FibGUgPSBleHBvcnRzLmdldE5hdmlnYWJsZUluZGV4ZXMgPSBleHBvcnRzLnN3aXBlRW5kID0gZXhwb3J0cy5zd2lwZU1vdmUgPSBleHBvcnRzLnN3aXBlU3RhcnQgPSBleHBvcnRzLmtleUhhbmRsZXIgPSBleHBvcnRzLmNoYW5nZVNsaWRlID0gZXhwb3J0cy5zbGlkZUhhbmRsZXIgPSBleHBvcnRzLmluaXRpYWxpemVkU3RhdGUgPSBleHBvcnRzLmV4dHJhY3RPYmplY3QgPSBleHBvcnRzLmNhbkdvTmV4dCA9IGV4cG9ydHMuZ2V0U3dpcGVEaXJlY3Rpb24gPSBleHBvcnRzLmdldEhlaWdodCA9IGV4cG9ydHMuZ2V0V2lkdGggPSBleHBvcnRzLmxhenlTbGlkZXNPblJpZ2h0ID0gZXhwb3J0cy5sYXp5U2xpZGVzT25MZWZ0ID0gZXhwb3J0cy5sYXp5RW5kSW5kZXggPSBleHBvcnRzLmxhenlTdGFydEluZGV4ID0gZXhwb3J0cy5nZXRSZXF1aXJlZExhenlTbGlkZXMgPSBleHBvcnRzLmdldE9uRGVtYW5kTGF6eVNsaWRlcyA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yZWFjdERvbSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gJ2Z1bmN0aW9uJykgeyBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlOyB9KSk7IH0gb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIGdldE9uRGVtYW5kTGF6eVNsaWRlcyA9IGZ1bmN0aW9uIGdldE9uRGVtYW5kTGF6eVNsaWRlcyhzcGVjKSB7XG4gIHZhciBvbkRlbWFuZFNsaWRlcyA9IFtdO1xuICB2YXIgc3RhcnRJbmRleCA9IGxhenlTdGFydEluZGV4KHNwZWMpO1xuICB2YXIgZW5kSW5kZXggPSBsYXp5RW5kSW5kZXgoc3BlYyk7XG5cbiAgZm9yICh2YXIgc2xpZGVJbmRleCA9IHN0YXJ0SW5kZXg7IHNsaWRlSW5kZXggPCBlbmRJbmRleDsgc2xpZGVJbmRleCsrKSB7XG4gICAgaWYgKHNwZWMubGF6eUxvYWRlZExpc3QuaW5kZXhPZihzbGlkZUluZGV4KSA8IDApIHtcbiAgICAgIG9uRGVtYW5kU2xpZGVzLnB1c2goc2xpZGVJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9uRGVtYW5kU2xpZGVzO1xufTsgLy8gcmV0dXJuIGxpc3Qgb2Ygc2xpZGVzIHRoYXQgbmVlZCB0byBiZSBwcmVzZW50XG5cblxuZXhwb3J0cy5nZXRPbkRlbWFuZExhenlTbGlkZXMgPSBnZXRPbkRlbWFuZExhenlTbGlkZXM7XG5cbnZhciBnZXRSZXF1aXJlZExhenlTbGlkZXMgPSBmdW5jdGlvbiBnZXRSZXF1aXJlZExhenlTbGlkZXMoc3BlYykge1xuICB2YXIgcmVxdWlyZWRTbGlkZXMgPSBbXTtcbiAgdmFyIHN0YXJ0SW5kZXggPSBsYXp5U3RhcnRJbmRleChzcGVjKTtcbiAgdmFyIGVuZEluZGV4ID0gbGF6eUVuZEluZGV4KHNwZWMpO1xuXG4gIGZvciAodmFyIHNsaWRlSW5kZXggPSBzdGFydEluZGV4OyBzbGlkZUluZGV4IDwgZW5kSW5kZXg7IHNsaWRlSW5kZXgrKykge1xuICAgIHJlcXVpcmVkU2xpZGVzLnB1c2goc2xpZGVJbmRleCk7XG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWRTbGlkZXM7XG59OyAvLyBzdGFydEluZGV4IHRoYXQgbmVlZHMgdG8gYmUgcHJlc2VudFxuXG5cbmV4cG9ydHMuZ2V0UmVxdWlyZWRMYXp5U2xpZGVzID0gZ2V0UmVxdWlyZWRMYXp5U2xpZGVzO1xuXG52YXIgbGF6eVN0YXJ0SW5kZXggPSBmdW5jdGlvbiBsYXp5U3RhcnRJbmRleChzcGVjKSB7XG4gIHJldHVybiBzcGVjLmN1cnJlbnRTbGlkZSAtIGxhenlTbGlkZXNPbkxlZnQoc3BlYyk7XG59O1xuXG5leHBvcnRzLmxhenlTdGFydEluZGV4ID0gbGF6eVN0YXJ0SW5kZXg7XG5cbnZhciBsYXp5RW5kSW5kZXggPSBmdW5jdGlvbiBsYXp5RW5kSW5kZXgoc3BlYykge1xuICByZXR1cm4gc3BlYy5jdXJyZW50U2xpZGUgKyBsYXp5U2xpZGVzT25SaWdodChzcGVjKTtcbn07XG5cbmV4cG9ydHMubGF6eUVuZEluZGV4ID0gbGF6eUVuZEluZGV4O1xuXG52YXIgbGF6eVNsaWRlc09uTGVmdCA9IGZ1bmN0aW9uIGxhenlTbGlkZXNPbkxlZnQoc3BlYykge1xuICByZXR1cm4gc3BlYy5jZW50ZXJNb2RlID8gTWF0aC5mbG9vcihzcGVjLnNsaWRlc1RvU2hvdyAvIDIpICsgKHBhcnNlSW50KHNwZWMuY2VudGVyUGFkZGluZykgPiAwID8gMSA6IDApIDogMDtcbn07XG5cbmV4cG9ydHMubGF6eVNsaWRlc09uTGVmdCA9IGxhenlTbGlkZXNPbkxlZnQ7XG5cbnZhciBsYXp5U2xpZGVzT25SaWdodCA9IGZ1bmN0aW9uIGxhenlTbGlkZXNPblJpZ2h0KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuY2VudGVyTW9kZSA/IE1hdGguZmxvb3IoKHNwZWMuc2xpZGVzVG9TaG93IC0gMSkgLyAyKSArIDEgKyAocGFyc2VJbnQoc3BlYy5jZW50ZXJQYWRkaW5nKSA+IDAgPyAxIDogMCkgOiBzcGVjLnNsaWRlc1RvU2hvdztcbn07IC8vIGdldCB3aWR0aCBvZiBhbiBlbGVtZW50XG5cblxuZXhwb3J0cy5sYXp5U2xpZGVzT25SaWdodCA9IGxhenlTbGlkZXNPblJpZ2h0O1xuXG52YXIgZ2V0V2lkdGggPSBmdW5jdGlvbiBnZXRXaWR0aChlbGVtKSB7XG4gIHJldHVybiBlbGVtICYmIGVsZW0ub2Zmc2V0V2lkdGggfHwgMDtcbn07XG5cbmV4cG9ydHMuZ2V0V2lkdGggPSBnZXRXaWR0aDtcblxudmFyIGdldEhlaWdodCA9IGZ1bmN0aW9uIGdldEhlaWdodChlbGVtKSB7XG4gIHJldHVybiBlbGVtICYmIGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IDA7XG59O1xuXG5leHBvcnRzLmdldEhlaWdodCA9IGdldEhlaWdodDtcblxudmFyIGdldFN3aXBlRGlyZWN0aW9uID0gZnVuY3Rpb24gZ2V0U3dpcGVEaXJlY3Rpb24odG91Y2hPYmplY3QpIHtcbiAgdmFyIHZlcnRpY2FsU3dpcGluZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG4gIHZhciB4RGlzdCwgeURpc3QsIHIsIHN3aXBlQW5nbGU7XG4gIHhEaXN0ID0gdG91Y2hPYmplY3Quc3RhcnRYIC0gdG91Y2hPYmplY3QuY3VyWDtcbiAgeURpc3QgPSB0b3VjaE9iamVjdC5zdGFydFkgLSB0b3VjaE9iamVjdC5jdXJZO1xuICByID0gTWF0aC5hdGFuMih5RGlzdCwgeERpc3QpO1xuICBzd2lwZUFuZ2xlID0gTWF0aC5yb3VuZChyICogMTgwIC8gTWF0aC5QSSk7XG5cbiAgaWYgKHN3aXBlQW5nbGUgPCAwKSB7XG4gICAgc3dpcGVBbmdsZSA9IDM2MCAtIE1hdGguYWJzKHN3aXBlQW5nbGUpO1xuICB9XG5cbiAgaWYgKHN3aXBlQW5nbGUgPD0gNDUgJiYgc3dpcGVBbmdsZSA+PSAwIHx8IHN3aXBlQW5nbGUgPD0gMzYwICYmIHN3aXBlQW5nbGUgPj0gMzE1KSB7XG4gICAgcmV0dXJuIFwibGVmdFwiO1xuICB9XG5cbiAgaWYgKHN3aXBlQW5nbGUgPj0gMTM1ICYmIHN3aXBlQW5nbGUgPD0gMjI1KSB7XG4gICAgcmV0dXJuIFwicmlnaHRcIjtcbiAgfVxuXG4gIGlmICh2ZXJ0aWNhbFN3aXBpbmcgPT09IHRydWUpIHtcbiAgICBpZiAoc3dpcGVBbmdsZSA+PSAzNSAmJiBzd2lwZUFuZ2xlIDw9IDEzNSkge1xuICAgICAgcmV0dXJuIFwidXBcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiZG93blwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBcInZlcnRpY2FsXCI7XG59OyAvLyB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gZ28gbmV4dFxuXG5cbmV4cG9ydHMuZ2V0U3dpcGVEaXJlY3Rpb24gPSBnZXRTd2lwZURpcmVjdGlvbjtcblxudmFyIGNhbkdvTmV4dCA9IGZ1bmN0aW9uIGNhbkdvTmV4dChzcGVjKSB7XG4gIHZhciBjYW5HbyA9IHRydWU7XG5cbiAgaWYgKCFzcGVjLmluZmluaXRlKSB7XG4gICAgaWYgKHNwZWMuY2VudGVyTW9kZSAmJiBzcGVjLmN1cnJlbnRTbGlkZSA+PSBzcGVjLnNsaWRlQ291bnQgLSAxKSB7XG4gICAgICBjYW5HbyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc3BlYy5zbGlkZUNvdW50IDw9IHNwZWMuc2xpZGVzVG9TaG93IHx8IHNwZWMuY3VycmVudFNsaWRlID49IHNwZWMuc2xpZGVDb3VudCAtIHNwZWMuc2xpZGVzVG9TaG93KSB7XG4gICAgICBjYW5HbyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYW5Hbztcbn07IC8vIGdpdmVuIGFuIG9iamVjdCBhbmQgYSBsaXN0IG9mIGtleXMsIHJldHVybiBuZXcgb2JqZWN0IHdpdGggZ2l2ZW4ga2V5c1xuXG5cbmV4cG9ydHMuY2FuR29OZXh0ID0gY2FuR29OZXh0O1xuXG52YXIgZXh0cmFjdE9iamVjdCA9IGZ1bmN0aW9uIGV4dHJhY3RPYmplY3Qoc3BlYywga2V5cykge1xuICB2YXIgbmV3T2JqZWN0ID0ge307XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIG5ld09iamVjdFtrZXldID0gc3BlY1trZXldO1xuICB9KTtcbiAgcmV0dXJuIG5ld09iamVjdDtcbn07IC8vIGdldCBpbml0aWFsaXplZCBzdGF0ZVxuXG5cbmV4cG9ydHMuZXh0cmFjdE9iamVjdCA9IGV4dHJhY3RPYmplY3Q7XG5cbnZhciBpbml0aWFsaXplZFN0YXRlID0gZnVuY3Rpb24gaW5pdGlhbGl6ZWRTdGF0ZShzcGVjKSB7XG4gIC8vIHNwZWMgYWxzbyBjb250YWlucyBsaXN0UmVmLCB0cmFja1JlZlxuICB2YXIgc2xpZGVDb3VudCA9IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmNvdW50KHNwZWMuY2hpbGRyZW4pO1xuXG4gIHZhciBsaXN0V2lkdGggPSBNYXRoLmNlaWwoZ2V0V2lkdGgoX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUoc3BlYy5saXN0UmVmKSkpO1xuICB2YXIgdHJhY2tXaWR0aCA9IE1hdGguY2VpbChnZXRXaWR0aChfcmVhY3REb20uZGVmYXVsdC5maW5kRE9NTm9kZShzcGVjLnRyYWNrUmVmKSkpO1xuICB2YXIgc2xpZGVXaWR0aDtcblxuICBpZiAoIXNwZWMudmVydGljYWwpIHtcbiAgICB2YXIgY2VudGVyUGFkZGluZ0FkaiA9IHNwZWMuY2VudGVyTW9kZSAmJiBwYXJzZUludChzcGVjLmNlbnRlclBhZGRpbmcpICogMjtcblxuICAgIGlmICh0eXBlb2Ygc3BlYy5jZW50ZXJQYWRkaW5nID09PSBcInN0cmluZ1wiICYmIHNwZWMuY2VudGVyUGFkZGluZy5zbGljZSgtMSkgPT09IFwiJVwiKSB7XG4gICAgICBjZW50ZXJQYWRkaW5nQWRqICo9IGxpc3RXaWR0aCAvIDEwMDtcbiAgICB9XG5cbiAgICBzbGlkZVdpZHRoID0gTWF0aC5jZWlsKChsaXN0V2lkdGggLSBjZW50ZXJQYWRkaW5nQWRqKSAvIHNwZWMuc2xpZGVzVG9TaG93KTtcbiAgfSBlbHNlIHtcbiAgICBzbGlkZVdpZHRoID0gbGlzdFdpZHRoO1xuICB9XG5cbiAgdmFyIHNsaWRlSGVpZ2h0ID0gX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUoc3BlYy5saXN0UmVmKSAmJiBnZXRIZWlnaHQoX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUoc3BlYy5saXN0UmVmKS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1pbmRleD1cIjBcIl0nKSk7XG4gIHZhciBsaXN0SGVpZ2h0ID0gc2xpZGVIZWlnaHQgKiBzcGVjLnNsaWRlc1RvU2hvdztcbiAgdmFyIGN1cnJlbnRTbGlkZSA9IHNwZWMuY3VycmVudFNsaWRlID09PSB1bmRlZmluZWQgPyBzcGVjLmluaXRpYWxTbGlkZSA6IHNwZWMuY3VycmVudFNsaWRlO1xuXG4gIGlmIChzcGVjLnJ0bCAmJiBzcGVjLmN1cnJlbnRTbGlkZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY3VycmVudFNsaWRlID0gc2xpZGVDb3VudCAtIDEgLSBzcGVjLmluaXRpYWxTbGlkZTtcbiAgfVxuXG4gIHZhciBsYXp5TG9hZGVkTGlzdCA9IHNwZWMubGF6eUxvYWRlZExpc3QgfHwgW107XG4gIHZhciBzbGlkZXNUb0xvYWQgPSBnZXRPbkRlbWFuZExhenlTbGlkZXMoe1xuICAgIGN1cnJlbnRTbGlkZTogY3VycmVudFNsaWRlLFxuICAgIGxhenlMb2FkZWRMaXN0OiBsYXp5TG9hZGVkTGlzdFxuICB9LCBzcGVjKTtcbiAgbGF6eUxvYWRlZExpc3QuY29uY2F0KHNsaWRlc1RvTG9hZCk7XG4gIHZhciBzdGF0ZSA9IHtcbiAgICBzbGlkZUNvdW50OiBzbGlkZUNvdW50LFxuICAgIHNsaWRlV2lkdGg6IHNsaWRlV2lkdGgsXG4gICAgbGlzdFdpZHRoOiBsaXN0V2lkdGgsXG4gICAgdHJhY2tXaWR0aDogdHJhY2tXaWR0aCxcbiAgICBjdXJyZW50U2xpZGU6IGN1cnJlbnRTbGlkZSxcbiAgICBzbGlkZUhlaWdodDogc2xpZGVIZWlnaHQsXG4gICAgbGlzdEhlaWdodDogbGlzdEhlaWdodCxcbiAgICBsYXp5TG9hZGVkTGlzdDogbGF6eUxvYWRlZExpc3RcbiAgfTtcblxuICBpZiAoc3BlYy5hdXRvcGxheWluZyA9PT0gbnVsbCAmJiBzcGVjLmF1dG9wbGF5KSB7XG4gICAgc3RhdGVbXCJhdXRvcGxheWluZ1wiXSA9IFwicGxheWluZ1wiO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuZXhwb3J0cy5pbml0aWFsaXplZFN0YXRlID0gaW5pdGlhbGl6ZWRTdGF0ZTtcblxudmFyIHNsaWRlSGFuZGxlciA9IGZ1bmN0aW9uIHNsaWRlSGFuZGxlcihzcGVjKSB7XG4gIHZhciB3YWl0Rm9yQW5pbWF0ZSA9IHNwZWMud2FpdEZvckFuaW1hdGUsXG4gICAgICBhbmltYXRpbmcgPSBzcGVjLmFuaW1hdGluZyxcbiAgICAgIGZhZGUgPSBzcGVjLmZhZGUsXG4gICAgICBpbmZpbml0ZSA9IHNwZWMuaW5maW5pdGUsXG4gICAgICBpbmRleCA9IHNwZWMuaW5kZXgsXG4gICAgICBzbGlkZUNvdW50ID0gc3BlYy5zbGlkZUNvdW50LFxuICAgICAgbGF6eUxvYWRlZExpc3QgPSBzcGVjLmxhenlMb2FkZWRMaXN0LFxuICAgICAgbGF6eUxvYWQgPSBzcGVjLmxhenlMb2FkLFxuICAgICAgY3VycmVudFNsaWRlID0gc3BlYy5jdXJyZW50U2xpZGUsXG4gICAgICBjZW50ZXJNb2RlID0gc3BlYy5jZW50ZXJNb2RlLFxuICAgICAgc2xpZGVzVG9TY3JvbGwgPSBzcGVjLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgc2xpZGVzVG9TaG93ID0gc3BlYy5zbGlkZXNUb1Nob3csXG4gICAgICB1c2VDU1MgPSBzcGVjLnVzZUNTUztcbiAgaWYgKHdhaXRGb3JBbmltYXRlICYmIGFuaW1hdGluZykgcmV0dXJuIHt9O1xuICB2YXIgYW5pbWF0aW9uU2xpZGUgPSBpbmRleCxcbiAgICAgIGZpbmFsU2xpZGUsXG4gICAgICBhbmltYXRpb25MZWZ0LFxuICAgICAgZmluYWxMZWZ0O1xuICB2YXIgc3RhdGUgPSB7fSxcbiAgICAgIG5leHRTdGF0ZSA9IHt9O1xuXG4gIGlmIChmYWRlKSB7XG4gICAgaWYgKCFpbmZpbml0ZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNsaWRlQ291bnQpKSByZXR1cm4ge307XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICBhbmltYXRpb25TbGlkZSA9IGluZGV4ICsgc2xpZGVDb3VudDtcbiAgICB9IGVsc2UgaWYgKGluZGV4ID49IHNsaWRlQ291bnQpIHtcbiAgICAgIGFuaW1hdGlvblNsaWRlID0gaW5kZXggLSBzbGlkZUNvdW50O1xuICAgIH1cblxuICAgIGlmIChsYXp5TG9hZCAmJiBsYXp5TG9hZGVkTGlzdC5pbmRleE9mKGFuaW1hdGlvblNsaWRlKSA8IDApIHtcbiAgICAgIGxhenlMb2FkZWRMaXN0LnB1c2goYW5pbWF0aW9uU2xpZGUpO1xuICAgIH1cblxuICAgIHN0YXRlID0ge1xuICAgICAgYW5pbWF0aW5nOiB0cnVlLFxuICAgICAgY3VycmVudFNsaWRlOiBhbmltYXRpb25TbGlkZSxcbiAgICAgIGxhenlMb2FkZWRMaXN0OiBsYXp5TG9hZGVkTGlzdFxuICAgIH07XG4gICAgbmV4dFN0YXRlID0ge1xuICAgICAgYW5pbWF0aW5nOiBmYWxzZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZmluYWxTbGlkZSA9IGFuaW1hdGlvblNsaWRlO1xuXG4gICAgaWYgKGFuaW1hdGlvblNsaWRlIDwgMCkge1xuICAgICAgZmluYWxTbGlkZSA9IGFuaW1hdGlvblNsaWRlICsgc2xpZGVDb3VudDtcbiAgICAgIGlmICghaW5maW5pdGUpIGZpbmFsU2xpZGUgPSAwO2Vsc2UgaWYgKHNsaWRlQ291bnQgJSBzbGlkZXNUb1Njcm9sbCAhPT0gMCkgZmluYWxTbGlkZSA9IHNsaWRlQ291bnQgLSBzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGw7XG4gICAgfSBlbHNlIGlmICghY2FuR29OZXh0KHNwZWMpICYmIGFuaW1hdGlvblNsaWRlID4gY3VycmVudFNsaWRlKSB7XG4gICAgICBhbmltYXRpb25TbGlkZSA9IGZpbmFsU2xpZGUgPSBjdXJyZW50U2xpZGU7XG4gICAgfSBlbHNlIGlmIChjZW50ZXJNb2RlICYmIGFuaW1hdGlvblNsaWRlID49IHNsaWRlQ291bnQpIHtcbiAgICAgIGFuaW1hdGlvblNsaWRlID0gaW5maW5pdGUgPyBzbGlkZUNvdW50IDogc2xpZGVDb3VudCAtIDE7XG4gICAgICBmaW5hbFNsaWRlID0gaW5maW5pdGUgPyAwIDogc2xpZGVDb3VudCAtIDE7XG4gICAgfSBlbHNlIGlmIChhbmltYXRpb25TbGlkZSA+PSBzbGlkZUNvdW50KSB7XG4gICAgICBmaW5hbFNsaWRlID0gYW5pbWF0aW9uU2xpZGUgLSBzbGlkZUNvdW50O1xuICAgICAgaWYgKCFpbmZpbml0ZSkgZmluYWxTbGlkZSA9IHNsaWRlQ291bnQgLSBzbGlkZXNUb1Nob3c7ZWxzZSBpZiAoc2xpZGVDb3VudCAlIHNsaWRlc1RvU2Nyb2xsICE9PSAwKSBmaW5hbFNsaWRlID0gMDtcbiAgICB9XG5cbiAgICBhbmltYXRpb25MZWZ0ID0gZ2V0VHJhY2tMZWZ0KF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgIHNsaWRlSW5kZXg6IGFuaW1hdGlvblNsaWRlXG4gICAgfSkpO1xuICAgIGZpbmFsTGVmdCA9IGdldFRyYWNrTGVmdChfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICBzbGlkZUluZGV4OiBmaW5hbFNsaWRlXG4gICAgfSkpO1xuXG4gICAgaWYgKCFpbmZpbml0ZSkge1xuICAgICAgaWYgKGFuaW1hdGlvbkxlZnQgPT09IGZpbmFsTGVmdCkgYW5pbWF0aW9uU2xpZGUgPSBmaW5hbFNsaWRlO1xuICAgICAgYW5pbWF0aW9uTGVmdCA9IGZpbmFsTGVmdDtcbiAgICB9XG5cbiAgICBsYXp5TG9hZCAmJiBsYXp5TG9hZGVkTGlzdC5jb25jYXQoZ2V0T25EZW1hbmRMYXp5U2xpZGVzKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgIGN1cnJlbnRTbGlkZTogYW5pbWF0aW9uU2xpZGVcbiAgICB9KSkpO1xuXG4gICAgaWYgKCF1c2VDU1MpIHtcbiAgICAgIHN0YXRlID0ge1xuICAgICAgICBjdXJyZW50U2xpZGU6IGZpbmFsU2xpZGUsXG4gICAgICAgIHRyYWNrU3R5bGU6IGdldFRyYWNrQ1NTKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgICAgICBsZWZ0OiBmaW5hbExlZnRcbiAgICAgICAgfSkpLFxuICAgICAgICBsYXp5TG9hZGVkTGlzdDogbGF6eUxvYWRlZExpc3RcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0ge1xuICAgICAgICBhbmltYXRpbmc6IHRydWUsXG4gICAgICAgIGN1cnJlbnRTbGlkZTogZmluYWxTbGlkZSxcbiAgICAgICAgdHJhY2tTdHlsZTogZ2V0VHJhY2tBbmltYXRlQ1NTKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgICAgICBsZWZ0OiBhbmltYXRpb25MZWZ0XG4gICAgICAgIH0pKSxcbiAgICAgICAgbGF6eUxvYWRlZExpc3Q6IGxhenlMb2FkZWRMaXN0XG4gICAgICB9O1xuICAgICAgbmV4dFN0YXRlID0ge1xuICAgICAgICBhbmltYXRpbmc6IGZhbHNlLFxuICAgICAgICBjdXJyZW50U2xpZGU6IGZpbmFsU2xpZGUsXG4gICAgICAgIHRyYWNrU3R5bGU6IGdldFRyYWNrQ1NTKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgICAgICBsZWZ0OiBmaW5hbExlZnRcbiAgICAgICAgfSkpLFxuICAgICAgICBzd2lwZUxlZnQ6IG51bGxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0ZTogc3RhdGUsXG4gICAgbmV4dFN0YXRlOiBuZXh0U3RhdGVcbiAgfTtcbn07XG5cbmV4cG9ydHMuc2xpZGVIYW5kbGVyID0gc2xpZGVIYW5kbGVyO1xuXG52YXIgY2hhbmdlU2xpZGUgPSBmdW5jdGlvbiBjaGFuZ2VTbGlkZShzcGVjLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleE9mZnNldCwgcHJldmlvdXNJbnQsIHNsaWRlT2Zmc2V0LCB1bmV2ZW5PZmZzZXQsIHRhcmdldFNsaWRlO1xuICB2YXIgc2xpZGVzVG9TY3JvbGwgPSBzcGVjLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgc2xpZGVzVG9TaG93ID0gc3BlYy5zbGlkZXNUb1Nob3csXG4gICAgICBzbGlkZUNvdW50ID0gc3BlYy5zbGlkZUNvdW50LFxuICAgICAgY3VycmVudFNsaWRlID0gc3BlYy5jdXJyZW50U2xpZGUsXG4gICAgICBsYXp5TG9hZCA9IHNwZWMubGF6eUxvYWQsXG4gICAgICBpbmZpbml0ZSA9IHNwZWMuaW5maW5pdGU7XG4gIHVuZXZlbk9mZnNldCA9IHNsaWRlQ291bnQgJSBzbGlkZXNUb1Njcm9sbCAhPT0gMDtcbiAgaW5kZXhPZmZzZXQgPSB1bmV2ZW5PZmZzZXQgPyAwIDogKHNsaWRlQ291bnQgLSBjdXJyZW50U2xpZGUpICUgc2xpZGVzVG9TY3JvbGw7XG5cbiAgaWYgKG9wdGlvbnMubWVzc2FnZSA9PT0gXCJwcmV2aW91c1wiKSB7XG4gICAgc2xpZGVPZmZzZXQgPSBpbmRleE9mZnNldCA9PT0gMCA/IHNsaWRlc1RvU2Nyb2xsIDogc2xpZGVzVG9TaG93IC0gaW5kZXhPZmZzZXQ7XG4gICAgdGFyZ2V0U2xpZGUgPSBjdXJyZW50U2xpZGUgLSBzbGlkZU9mZnNldDtcblxuICAgIGlmIChsYXp5TG9hZCAmJiAhaW5maW5pdGUpIHtcbiAgICAgIHByZXZpb3VzSW50ID0gY3VycmVudFNsaWRlIC0gc2xpZGVPZmZzZXQ7XG4gICAgICB0YXJnZXRTbGlkZSA9IHByZXZpb3VzSW50ID09PSAtMSA/IHNsaWRlQ291bnQgLSAxIDogcHJldmlvdXNJbnQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubWVzc2FnZSA9PT0gXCJuZXh0XCIpIHtcbiAgICBzbGlkZU9mZnNldCA9IGluZGV4T2Zmc2V0ID09PSAwID8gc2xpZGVzVG9TY3JvbGwgOiBpbmRleE9mZnNldDtcbiAgICB0YXJnZXRTbGlkZSA9IGN1cnJlbnRTbGlkZSArIHNsaWRlT2Zmc2V0O1xuXG4gICAgaWYgKGxhenlMb2FkICYmICFpbmZpbml0ZSkge1xuICAgICAgdGFyZ2V0U2xpZGUgPSAoY3VycmVudFNsaWRlICsgc2xpZGVzVG9TY3JvbGwpICUgc2xpZGVDb3VudCArIGluZGV4T2Zmc2V0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgPT09IFwiZG90c1wiKSB7XG4gICAgLy8gQ2xpY2sgb24gZG90c1xuICAgIHRhcmdldFNsaWRlID0gb3B0aW9ucy5pbmRleCAqIG9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICBpZiAodGFyZ2V0U2xpZGUgPT09IG9wdGlvbnMuY3VycmVudFNsaWRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlID09PSBcImNoaWxkcmVuXCIpIHtcbiAgICAvLyBDbGljayBvbiB0aGUgc2xpZGVzXG4gICAgdGFyZ2V0U2xpZGUgPSBvcHRpb25zLmluZGV4O1xuXG4gICAgaWYgKHRhcmdldFNsaWRlID09PSBvcHRpb25zLmN1cnJlbnRTbGlkZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGluZmluaXRlKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gc2libGluZ0RpcmVjdGlvbihfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgIHRhcmdldFNsaWRlOiB0YXJnZXRTbGlkZVxuICAgICAgfSkpO1xuXG4gICAgICBpZiAodGFyZ2V0U2xpZGUgPiBvcHRpb25zLmN1cnJlbnRTbGlkZSAmJiBkaXJlY3Rpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICAgIHRhcmdldFNsaWRlID0gdGFyZ2V0U2xpZGUgLSBzbGlkZUNvdW50O1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXRTbGlkZSA8IG9wdGlvbnMuY3VycmVudFNsaWRlICYmIGRpcmVjdGlvbiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICAgIHRhcmdldFNsaWRlID0gdGFyZ2V0U2xpZGUgKyBzbGlkZUNvdW50O1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLm1lc3NhZ2UgPT09IFwiaW5kZXhcIikge1xuICAgIHRhcmdldFNsaWRlID0gTnVtYmVyKG9wdGlvbnMuaW5kZXgpO1xuXG4gICAgaWYgKHRhcmdldFNsaWRlID09PSBvcHRpb25zLmN1cnJlbnRTbGlkZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldFNsaWRlO1xufTtcblxuZXhwb3J0cy5jaGFuZ2VTbGlkZSA9IGNoYW5nZVNsaWRlO1xuXG52YXIga2V5SGFuZGxlciA9IGZ1bmN0aW9uIGtleUhhbmRsZXIoZSwgYWNjZXNzaWJpbGl0eSwgcnRsKSB7XG4gIGlmIChlLnRhcmdldC50YWdOYW1lLm1hdGNoKFwiVEVYVEFSRUF8SU5QVVR8U0VMRUNUXCIpIHx8ICFhY2Nlc3NpYmlsaXR5KSByZXR1cm4gXCJcIjtcbiAgaWYgKGUua2V5Q29kZSA9PT0gMzcpIHJldHVybiBydGwgPyBcIm5leHRcIiA6IFwicHJldmlvdXNcIjtcbiAgaWYgKGUua2V5Q29kZSA9PT0gMzkpIHJldHVybiBydGwgPyBcInByZXZpb3VzXCIgOiBcIm5leHRcIjtcbiAgcmV0dXJuIFwiXCI7XG59O1xuXG5leHBvcnRzLmtleUhhbmRsZXIgPSBrZXlIYW5kbGVyO1xuXG52YXIgc3dpcGVTdGFydCA9IGZ1bmN0aW9uIHN3aXBlU3RhcnQoZSwgc3dpcGUsIGRyYWdnYWJsZSkge1xuICBlLnRhcmdldC50YWdOYW1lID09PSBcIklNR1wiICYmIGUucHJldmVudERlZmF1bHQoKTtcbiAgaWYgKCFzd2lwZSB8fCAhZHJhZ2dhYmxlICYmIGUudHlwZS5pbmRleE9mKFwibW91c2VcIikgIT09IC0xKSByZXR1cm4gXCJcIjtcbiAgcmV0dXJuIHtcbiAgICBkcmFnZ2luZzogdHJ1ZSxcbiAgICB0b3VjaE9iamVjdDoge1xuICAgICAgc3RhcnRYOiBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0ucGFnZVggOiBlLmNsaWVudFgsXG4gICAgICBzdGFydFk6IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5wYWdlWSA6IGUuY2xpZW50WSxcbiAgICAgIGN1clg6IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5wYWdlWCA6IGUuY2xpZW50WCxcbiAgICAgIGN1clk6IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXS5wYWdlWSA6IGUuY2xpZW50WVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydHMuc3dpcGVTdGFydCA9IHN3aXBlU3RhcnQ7XG5cbnZhciBzd2lwZU1vdmUgPSBmdW5jdGlvbiBzd2lwZU1vdmUoZSwgc3BlYykge1xuICAvLyBzcGVjIGFsc28gY29udGFpbnMsIHRyYWNrUmVmIGFuZCBzbGlkZUluZGV4XG4gIHZhciBzY3JvbGxpbmcgPSBzcGVjLnNjcm9sbGluZyxcbiAgICAgIGFuaW1hdGluZyA9IHNwZWMuYW5pbWF0aW5nLFxuICAgICAgdmVydGljYWwgPSBzcGVjLnZlcnRpY2FsLFxuICAgICAgc3dpcGVUb1NsaWRlID0gc3BlYy5zd2lwZVRvU2xpZGUsXG4gICAgICB2ZXJ0aWNhbFN3aXBpbmcgPSBzcGVjLnZlcnRpY2FsU3dpcGluZyxcbiAgICAgIHJ0bCA9IHNwZWMucnRsLFxuICAgICAgY3VycmVudFNsaWRlID0gc3BlYy5jdXJyZW50U2xpZGUsXG4gICAgICBlZGdlRnJpY3Rpb24gPSBzcGVjLmVkZ2VGcmljdGlvbixcbiAgICAgIGVkZ2VEcmFnZ2VkID0gc3BlYy5lZGdlRHJhZ2dlZCxcbiAgICAgIG9uRWRnZSA9IHNwZWMub25FZGdlLFxuICAgICAgc3dpcGVkID0gc3BlYy5zd2lwZWQsXG4gICAgICBzd2lwaW5nID0gc3BlYy5zd2lwaW5nLFxuICAgICAgc2xpZGVDb3VudCA9IHNwZWMuc2xpZGVDb3VudCxcbiAgICAgIHNsaWRlc1RvU2Nyb2xsID0gc3BlYy5zbGlkZXNUb1Njcm9sbCxcbiAgICAgIGluZmluaXRlID0gc3BlYy5pbmZpbml0ZSxcbiAgICAgIHRvdWNoT2JqZWN0ID0gc3BlYy50b3VjaE9iamVjdCxcbiAgICAgIHN3aXBlRXZlbnQgPSBzcGVjLnN3aXBlRXZlbnQsXG4gICAgICBsaXN0SGVpZ2h0ID0gc3BlYy5saXN0SGVpZ2h0LFxuICAgICAgbGlzdFdpZHRoID0gc3BlYy5saXN0V2lkdGg7XG4gIGlmIChzY3JvbGxpbmcpIHJldHVybjtcbiAgaWYgKGFuaW1hdGluZykgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTtcbiAgaWYgKHZlcnRpY2FsICYmIHN3aXBlVG9TbGlkZSAmJiB2ZXJ0aWNhbFN3aXBpbmcpIGUucHJldmVudERlZmF1bHQoKTtcbiAgdmFyIHN3aXBlTGVmdCxcbiAgICAgIHN0YXRlID0ge307XG4gIHZhciBjdXJMZWZ0ID0gZ2V0VHJhY2tMZWZ0KHNwZWMpO1xuICB0b3VjaE9iamVjdC5jdXJYID0gZS50b3VjaGVzID8gZS50b3VjaGVzWzBdLnBhZ2VYIDogZS5jbGllbnRYO1xuICB0b3VjaE9iamVjdC5jdXJZID0gZS50b3VjaGVzID8gZS50b3VjaGVzWzBdLnBhZ2VZIDogZS5jbGllbnRZO1xuICB0b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA9IE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KHRvdWNoT2JqZWN0LmN1clggLSB0b3VjaE9iamVjdC5zdGFydFgsIDIpKSk7XG4gIHZhciB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID0gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3codG91Y2hPYmplY3QuY3VyWSAtIHRvdWNoT2JqZWN0LnN0YXJ0WSwgMikpKTtcblxuICBpZiAoIXZlcnRpY2FsU3dpcGluZyAmJiAhc3dpcGluZyAmJiB2ZXJ0aWNhbFN3aXBlTGVuZ3RoID4gMTApIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsaW5nOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGlmICh2ZXJ0aWNhbFN3aXBpbmcpIHRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID0gdmVydGljYWxTd2lwZUxlbmd0aDtcbiAgdmFyIHBvc2l0aW9uT2Zmc2V0ID0gKCFydGwgPyAxIDogLTEpICogKHRvdWNoT2JqZWN0LmN1clggPiB0b3VjaE9iamVjdC5zdGFydFggPyAxIDogLTEpO1xuICBpZiAodmVydGljYWxTd2lwaW5nKSBwb3NpdGlvbk9mZnNldCA9IHRvdWNoT2JqZWN0LmN1clkgPiB0b3VjaE9iamVjdC5zdGFydFkgPyAxIDogLTE7XG4gIHZhciBkb3RDb3VudCA9IE1hdGguY2VpbChzbGlkZUNvdW50IC8gc2xpZGVzVG9TY3JvbGwpO1xuICB2YXIgc3dpcGVEaXJlY3Rpb24gPSBnZXRTd2lwZURpcmVjdGlvbihzcGVjLnRvdWNoT2JqZWN0LCB2ZXJ0aWNhbFN3aXBpbmcpO1xuICB2YXIgdG91Y2hTd2lwZUxlbmd0aCA9IHRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoO1xuXG4gIGlmICghaW5maW5pdGUpIHtcbiAgICBpZiAoY3VycmVudFNsaWRlID09PSAwICYmIHN3aXBlRGlyZWN0aW9uID09PSBcInJpZ2h0XCIgfHwgY3VycmVudFNsaWRlICsgMSA+PSBkb3RDb3VudCAmJiBzd2lwZURpcmVjdGlvbiA9PT0gXCJsZWZ0XCIgfHwgIWNhbkdvTmV4dChzcGVjKSAmJiBzd2lwZURpcmVjdGlvbiA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIHRvdWNoU3dpcGVMZW5ndGggPSB0b3VjaE9iamVjdC5zd2lwZUxlbmd0aCAqIGVkZ2VGcmljdGlvbjtcblxuICAgICAgaWYgKGVkZ2VEcmFnZ2VkID09PSBmYWxzZSAmJiBvbkVkZ2UpIHtcbiAgICAgICAgb25FZGdlKHN3aXBlRGlyZWN0aW9uKTtcbiAgICAgICAgc3RhdGVbXCJlZGdlRHJhZ2dlZFwiXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzd2lwZWQgJiYgc3dpcGVFdmVudCkge1xuICAgIHN3aXBlRXZlbnQoc3dpcGVEaXJlY3Rpb24pO1xuICAgIHN0YXRlW1wic3dpcGVkXCJdID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghdmVydGljYWwpIHtcbiAgICBpZiAoIXJ0bCkge1xuICAgICAgc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHRvdWNoU3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVMZWZ0ID0gY3VyTGVmdCAtIHRvdWNoU3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVMZWZ0ID0gY3VyTGVmdCArIHRvdWNoU3dpcGVMZW5ndGggKiAobGlzdEhlaWdodCAvIGxpc3RXaWR0aCkgKiBwb3NpdGlvbk9mZnNldDtcbiAgfVxuXG4gIGlmICh2ZXJ0aWNhbFN3aXBpbmcpIHtcbiAgICBzd2lwZUxlZnQgPSBjdXJMZWZ0ICsgdG91Y2hTd2lwZUxlbmd0aCAqIHBvc2l0aW9uT2Zmc2V0O1xuICB9XG5cbiAgc3RhdGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBzdGF0ZSwge1xuICAgIHRvdWNoT2JqZWN0OiB0b3VjaE9iamVjdCxcbiAgICBzd2lwZUxlZnQ6IHN3aXBlTGVmdCxcbiAgICB0cmFja1N0eWxlOiBnZXRUcmFja0NTUyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICBsZWZ0OiBzd2lwZUxlZnRcbiAgICB9KSlcbiAgfSk7XG5cbiAgaWYgKE1hdGguYWJzKHRvdWNoT2JqZWN0LmN1clggLSB0b3VjaE9iamVjdC5zdGFydFgpIDwgTWF0aC5hYnModG91Y2hPYmplY3QuY3VyWSAtIHRvdWNoT2JqZWN0LnN0YXJ0WSkgKiAwLjgpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBpZiAodG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiAxMCkge1xuICAgIHN0YXRlW1wic3dpcGluZ1wiXSA9IHRydWU7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuZXhwb3J0cy5zd2lwZU1vdmUgPSBzd2lwZU1vdmU7XG5cbnZhciBzd2lwZUVuZCA9IGZ1bmN0aW9uIHN3aXBlRW5kKGUsIHNwZWMpIHtcbiAgdmFyIGRyYWdnaW5nID0gc3BlYy5kcmFnZ2luZyxcbiAgICAgIHN3aXBlID0gc3BlYy5zd2lwZSxcbiAgICAgIHRvdWNoT2JqZWN0ID0gc3BlYy50b3VjaE9iamVjdCxcbiAgICAgIGxpc3RXaWR0aCA9IHNwZWMubGlzdFdpZHRoLFxuICAgICAgdG91Y2hUaHJlc2hvbGQgPSBzcGVjLnRvdWNoVGhyZXNob2xkLFxuICAgICAgdmVydGljYWxTd2lwaW5nID0gc3BlYy52ZXJ0aWNhbFN3aXBpbmcsXG4gICAgICBsaXN0SGVpZ2h0ID0gc3BlYy5saXN0SGVpZ2h0LFxuICAgICAgY3VycmVudFNsaWRlID0gc3BlYy5jdXJyZW50U2xpZGUsXG4gICAgICBzd2lwZVRvU2xpZGUgPSBzcGVjLnN3aXBlVG9TbGlkZSxcbiAgICAgIHNjcm9sbGluZyA9IHNwZWMuc2Nyb2xsaW5nLFxuICAgICAgb25Td2lwZSA9IHNwZWMub25Td2lwZTtcblxuICBpZiAoIWRyYWdnaW5nKSB7XG4gICAgaWYgKHN3aXBlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdmFyIG1pblN3aXBlID0gdmVydGljYWxTd2lwaW5nID8gbGlzdEhlaWdodCAvIHRvdWNoVGhyZXNob2xkIDogbGlzdFdpZHRoIC8gdG91Y2hUaHJlc2hvbGQ7XG4gIHZhciBzd2lwZURpcmVjdGlvbiA9IGdldFN3aXBlRGlyZWN0aW9uKHRvdWNoT2JqZWN0LCB2ZXJ0aWNhbFN3aXBpbmcpOyAvLyByZXNldCB0aGUgc3RhdGUgb2YgdG91Y2ggcmVsYXRlZCBzdGF0ZSB2YXJpYWJsZXMuXG5cbiAgdmFyIHN0YXRlID0ge1xuICAgIGRyYWdnaW5nOiBmYWxzZSxcbiAgICBlZGdlRHJhZ2dlZDogZmFsc2UsXG4gICAgc2Nyb2xsaW5nOiBmYWxzZSxcbiAgICBzd2lwaW5nOiBmYWxzZSxcbiAgICBzd2lwZWQ6IGZhbHNlLFxuICAgIHN3aXBlTGVmdDogbnVsbCxcbiAgICB0b3VjaE9iamVjdDoge31cbiAgfTtcblxuICBpZiAoc2Nyb2xsaW5nKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKCF0b3VjaE9iamVjdC5zd2lwZUxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmICh0b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+IG1pblN3aXBlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgaWYgKG9uU3dpcGUpIHtcbiAgICAgIG9uU3dpcGUoc3dpcGVEaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHZhciBzbGlkZUNvdW50LCBuZXdTbGlkZTtcblxuICAgIHN3aXRjaCAoc3dpcGVEaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XG4gICAgICBjYXNlIFwidXBcIjpcbiAgICAgICAgbmV3U2xpZGUgPSBjdXJyZW50U2xpZGUgKyBnZXRTbGlkZUNvdW50KHNwZWMpO1xuICAgICAgICBzbGlkZUNvdW50ID0gc3dpcGVUb1NsaWRlID8gY2hlY2tOYXZpZ2FibGUoc3BlYywgbmV3U2xpZGUpIDogbmV3U2xpZGU7XG4gICAgICAgIHN0YXRlW1wiY3VycmVudERpcmVjdGlvblwiXSA9IDA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwicmlnaHRcIjpcbiAgICAgIGNhc2UgXCJkb3duXCI6XG4gICAgICAgIG5ld1NsaWRlID0gY3VycmVudFNsaWRlIC0gZ2V0U2xpZGVDb3VudChzcGVjKTtcbiAgICAgICAgc2xpZGVDb3VudCA9IHN3aXBlVG9TbGlkZSA/IGNoZWNrTmF2aWdhYmxlKHNwZWMsIG5ld1NsaWRlKSA6IG5ld1NsaWRlO1xuICAgICAgICBzdGF0ZVtcImN1cnJlbnREaXJlY3Rpb25cIl0gPSAxO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc2xpZGVDb3VudCA9IGN1cnJlbnRTbGlkZTtcbiAgICB9XG5cbiAgICBzdGF0ZVtcInRyaWdnZXJTbGlkZUhhbmRsZXJcIl0gPSBzbGlkZUNvdW50O1xuICB9IGVsc2Uge1xuICAgIC8vIEFkanVzdCB0aGUgdHJhY2sgYmFjayB0byBpdCdzIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBjdXJyZW50TGVmdCA9IGdldFRyYWNrTGVmdChzcGVjKTtcbiAgICBzdGF0ZVtcInRyYWNrU3R5bGVcIl0gPSBnZXRUcmFja0FuaW1hdGVDU1MoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgbGVmdDogY3VycmVudExlZnRcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59O1xuXG5leHBvcnRzLnN3aXBlRW5kID0gc3dpcGVFbmQ7XG5cbnZhciBnZXROYXZpZ2FibGVJbmRleGVzID0gZnVuY3Rpb24gZ2V0TmF2aWdhYmxlSW5kZXhlcyhzcGVjKSB7XG4gIHZhciBtYXggPSBzcGVjLmluZmluaXRlID8gc3BlYy5zbGlkZUNvdW50ICogMiA6IHNwZWMuc2xpZGVDb3VudDtcbiAgdmFyIGJyZWFrcG9pbnQgPSBzcGVjLmluZmluaXRlID8gc3BlYy5zbGlkZXNUb1Nob3cgKiAtMSA6IDA7XG4gIHZhciBjb3VudGVyID0gc3BlYy5pbmZpbml0ZSA/IHNwZWMuc2xpZGVzVG9TaG93ICogLTEgOiAwO1xuICB2YXIgaW5kZXhlcyA9IFtdO1xuXG4gIHdoaWxlIChicmVha3BvaW50IDwgbWF4KSB7XG4gICAgaW5kZXhlcy5wdXNoKGJyZWFrcG9pbnQpO1xuICAgIGJyZWFrcG9pbnQgPSBjb3VudGVyICsgc3BlYy5zbGlkZXNUb1Njcm9sbDtcbiAgICBjb3VudGVyICs9IE1hdGgubWluKHNwZWMuc2xpZGVzVG9TY3JvbGwsIHNwZWMuc2xpZGVzVG9TaG93KTtcbiAgfVxuXG4gIHJldHVybiBpbmRleGVzO1xufTtcblxuZXhwb3J0cy5nZXROYXZpZ2FibGVJbmRleGVzID0gZ2V0TmF2aWdhYmxlSW5kZXhlcztcblxudmFyIGNoZWNrTmF2aWdhYmxlID0gZnVuY3Rpb24gY2hlY2tOYXZpZ2FibGUoc3BlYywgaW5kZXgpIHtcbiAgdmFyIG5hdmlnYWJsZXMgPSBnZXROYXZpZ2FibGVJbmRleGVzKHNwZWMpO1xuICB2YXIgcHJldk5hdmlnYWJsZSA9IDA7XG5cbiAgaWYgKGluZGV4ID4gbmF2aWdhYmxlc1tuYXZpZ2FibGVzLmxlbmd0aCAtIDFdKSB7XG4gICAgaW5kZXggPSBuYXZpZ2FibGVzW25hdmlnYWJsZXMubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgbiBpbiBuYXZpZ2FibGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBuYXZpZ2FibGVzW25dKSB7XG4gICAgICAgIGluZGV4ID0gcHJldk5hdmlnYWJsZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHByZXZOYXZpZ2FibGUgPSBuYXZpZ2FibGVzW25dO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbmV4cG9ydHMuY2hlY2tOYXZpZ2FibGUgPSBjaGVja05hdmlnYWJsZTtcblxudmFyIGdldFNsaWRlQ291bnQgPSBmdW5jdGlvbiBnZXRTbGlkZUNvdW50KHNwZWMpIHtcbiAgdmFyIGNlbnRlck9mZnNldCA9IHNwZWMuY2VudGVyTW9kZSA/IHNwZWMuc2xpZGVXaWR0aCAqIE1hdGguZmxvb3Ioc3BlYy5zbGlkZXNUb1Nob3cgLyAyKSA6IDA7XG5cbiAgaWYgKHNwZWMuc3dpcGVUb1NsaWRlKSB7XG4gICAgdmFyIHN3aXBlZFNsaWRlO1xuXG4gICAgdmFyIHNsaWNrTGlzdCA9IF9yZWFjdERvbS5kZWZhdWx0LmZpbmRET01Ob2RlKHNwZWMubGlzdFJlZik7XG5cbiAgICB2YXIgc2xpZGVzID0gc2xpY2tMaXN0LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuc2xpY2stc2xpZGVcIik7XG4gICAgQXJyYXkuZnJvbShzbGlkZXMpLmV2ZXJ5KGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgaWYgKCFzcGVjLnZlcnRpY2FsKSB7XG4gICAgICAgIGlmIChzbGlkZS5vZmZzZXRMZWZ0IC0gY2VudGVyT2Zmc2V0ICsgZ2V0V2lkdGgoc2xpZGUpIC8gMiA+IHNwZWMuc3dpcGVMZWZ0ICogLTEpIHtcbiAgICAgICAgICBzd2lwZWRTbGlkZSA9IHNsaWRlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNsaWRlLm9mZnNldFRvcCArIGdldEhlaWdodChzbGlkZSkgLyAyID4gc3BlYy5zd2lwZUxlZnQgKiAtMSkge1xuICAgICAgICAgIHN3aXBlZFNsaWRlID0gc2xpZGU7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKCFzd2lwZWRTbGlkZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRJbmRleCA9IHNwZWMucnRsID09PSB0cnVlID8gc3BlYy5zbGlkZUNvdW50IC0gc3BlYy5jdXJyZW50U2xpZGUgOiBzcGVjLmN1cnJlbnRTbGlkZTtcbiAgICB2YXIgc2xpZGVzVHJhdmVyc2VkID0gTWF0aC5hYnMoc3dpcGVkU2xpZGUuZGF0YXNldC5pbmRleCAtIGN1cnJlbnRJbmRleCkgfHwgMTtcbiAgICByZXR1cm4gc2xpZGVzVHJhdmVyc2VkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGVjLnNsaWRlc1RvU2Nyb2xsO1xuICB9XG59O1xuXG5leHBvcnRzLmdldFNsaWRlQ291bnQgPSBnZXRTbGlkZUNvdW50O1xuXG52YXIgY2hlY2tTcGVjS2V5cyA9IGZ1bmN0aW9uIGNoZWNrU3BlY0tleXMoc3BlYywga2V5c0FycmF5KSB7XG4gIHJldHVybiBrZXlzQXJyYXkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHNwZWMuaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgfSwgdHJ1ZSkgPyBudWxsIDogY29uc29sZS5lcnJvcihcIktleXMgTWlzc2luZzpcIiwgc3BlYyk7XG59O1xuXG5leHBvcnRzLmNoZWNrU3BlY0tleXMgPSBjaGVja1NwZWNLZXlzO1xuXG52YXIgZ2V0VHJhY2tDU1MgPSBmdW5jdGlvbiBnZXRUcmFja0NTUyhzcGVjKSB7XG4gIGNoZWNrU3BlY0tleXMoc3BlYywgW1wibGVmdFwiLCBcInZhcmlhYmxlV2lkdGhcIiwgXCJzbGlkZUNvdW50XCIsIFwic2xpZGVzVG9TaG93XCIsIFwic2xpZGVXaWR0aFwiXSk7XG4gIHZhciB0cmFja1dpZHRoLCB0cmFja0hlaWdodDtcbiAgdmFyIHRyYWNrQ2hpbGRyZW4gPSBzcGVjLnNsaWRlQ291bnQgKyAyICogc3BlYy5zbGlkZXNUb1Nob3c7XG5cbiAgaWYgKCFzcGVjLnZlcnRpY2FsKSB7XG4gICAgdHJhY2tXaWR0aCA9IGdldFRvdGFsU2xpZGVzKHNwZWMpICogc3BlYy5zbGlkZVdpZHRoO1xuICB9IGVsc2Uge1xuICAgIHRyYWNrSGVpZ2h0ID0gdHJhY2tDaGlsZHJlbiAqIHNwZWMuc2xpZGVIZWlnaHQ7XG4gIH1cblxuICB2YXIgc3R5bGUgPSB7XG4gICAgb3BhY2l0eTogMSxcbiAgICB0cmFuc2l0aW9uOiBcIlwiLFxuICAgIFdlYmtpdFRyYW5zaXRpb246IFwiXCJcbiAgfTtcblxuICBpZiAoc3BlYy51c2VUcmFuc2Zvcm0pIHtcbiAgICB2YXIgV2Via2l0VHJhbnNmb3JtID0gIXNwZWMudmVydGljYWwgPyBcInRyYW5zbGF0ZTNkKFwiICsgc3BlYy5sZWZ0ICsgXCJweCwgMHB4LCAwcHgpXCIgOiBcInRyYW5zbGF0ZTNkKDBweCwgXCIgKyBzcGVjLmxlZnQgKyBcInB4LCAwcHgpXCI7XG4gICAgdmFyIHRyYW5zZm9ybSA9ICFzcGVjLnZlcnRpY2FsID8gXCJ0cmFuc2xhdGUzZChcIiArIHNwZWMubGVmdCArIFwicHgsIDBweCwgMHB4KVwiIDogXCJ0cmFuc2xhdGUzZCgwcHgsIFwiICsgc3BlYy5sZWZ0ICsgXCJweCwgMHB4KVwiO1xuICAgIHZhciBtc1RyYW5zZm9ybSA9ICFzcGVjLnZlcnRpY2FsID8gXCJ0cmFuc2xhdGVYKFwiICsgc3BlYy5sZWZ0ICsgXCJweClcIiA6IFwidHJhbnNsYXRlWShcIiArIHNwZWMubGVmdCArIFwicHgpXCI7XG4gICAgc3R5bGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSwge1xuICAgICAgV2Via2l0VHJhbnNmb3JtOiBXZWJraXRUcmFuc2Zvcm0sXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICAgIG1zVHJhbnNmb3JtOiBtc1RyYW5zZm9ybVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChzcGVjLnZlcnRpY2FsKSB7XG4gICAgICBzdHlsZVtcInRvcFwiXSA9IHNwZWMubGVmdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbXCJsZWZ0XCJdID0gc3BlYy5sZWZ0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChzcGVjLmZhZGUpIHN0eWxlID0ge1xuICAgIG9wYWNpdHk6IDFcbiAgfTtcbiAgaWYgKHRyYWNrV2lkdGgpIHN0eWxlLndpZHRoID0gdHJhY2tXaWR0aDtcbiAgaWYgKHRyYWNrSGVpZ2h0KSBzdHlsZS5oZWlnaHQgPSB0cmFja0hlaWdodDsgLy8gRmFsbGJhY2sgZm9yIElFOFxuXG4gIGlmICh3aW5kb3cgJiYgIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyICYmIHdpbmRvdy5hdHRhY2hFdmVudCkge1xuICAgIGlmICghc3BlYy52ZXJ0aWNhbCkge1xuICAgICAgc3R5bGUubWFyZ2luTGVmdCA9IHNwZWMubGVmdCArIFwicHhcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUubWFyZ2luVG9wID0gc3BlYy5sZWZ0ICsgXCJweFwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn07XG5cbmV4cG9ydHMuZ2V0VHJhY2tDU1MgPSBnZXRUcmFja0NTUztcblxudmFyIGdldFRyYWNrQW5pbWF0ZUNTUyA9IGZ1bmN0aW9uIGdldFRyYWNrQW5pbWF0ZUNTUyhzcGVjKSB7XG4gIGNoZWNrU3BlY0tleXMoc3BlYywgW1wibGVmdFwiLCBcInZhcmlhYmxlV2lkdGhcIiwgXCJzbGlkZUNvdW50XCIsIFwic2xpZGVzVG9TaG93XCIsIFwic2xpZGVXaWR0aFwiLCBcInNwZWVkXCIsIFwiY3NzRWFzZVwiXSk7XG4gIHZhciBzdHlsZSA9IGdldFRyYWNrQ1NTKHNwZWMpOyAvLyB1c2VDU1MgaXMgdHJ1ZSBieSBkZWZhdWx0IHNvIGl0IGNhbiBiZSB1bmRlZmluZWRcblxuICBpZiAoc3BlYy51c2VUcmFuc2Zvcm0pIHtcbiAgICBzdHlsZS5XZWJraXRUcmFuc2l0aW9uID0gXCItd2Via2l0LXRyYW5zZm9ybSBcIiArIHNwZWMuc3BlZWQgKyBcIm1zIFwiICsgc3BlYy5jc3NFYXNlO1xuICAgIHN0eWxlLnRyYW5zaXRpb24gPSBcInRyYW5zZm9ybSBcIiArIHNwZWMuc3BlZWQgKyBcIm1zIFwiICsgc3BlYy5jc3NFYXNlO1xuICB9IGVsc2Uge1xuICAgIGlmIChzcGVjLnZlcnRpY2FsKSB7XG4gICAgICBzdHlsZS50cmFuc2l0aW9uID0gXCJ0b3AgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUudHJhbnNpdGlvbiA9IFwibGVmdCBcIiArIHNwZWMuc3BlZWQgKyBcIm1zIFwiICsgc3BlYy5jc3NFYXNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn07XG5cbmV4cG9ydHMuZ2V0VHJhY2tBbmltYXRlQ1NTID0gZ2V0VHJhY2tBbmltYXRlQ1NTO1xuXG52YXIgZ2V0VHJhY2tMZWZ0ID0gZnVuY3Rpb24gZ2V0VHJhY2tMZWZ0KHNwZWMpIHtcbiAgaWYgKHNwZWMudW5zbGljaykge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY2hlY2tTcGVjS2V5cyhzcGVjLCBbXCJzbGlkZUluZGV4XCIsIFwidHJhY2tSZWZcIiwgXCJpbmZpbml0ZVwiLCBcImNlbnRlck1vZGVcIiwgXCJzbGlkZUNvdW50XCIsIFwic2xpZGVzVG9TaG93XCIsIFwic2xpZGVzVG9TY3JvbGxcIiwgXCJzbGlkZVdpZHRoXCIsIFwibGlzdFdpZHRoXCIsIFwidmFyaWFibGVXaWR0aFwiLCBcInNsaWRlSGVpZ2h0XCJdKTtcbiAgdmFyIHNsaWRlSW5kZXggPSBzcGVjLnNsaWRlSW5kZXgsXG4gICAgICB0cmFja1JlZiA9IHNwZWMudHJhY2tSZWYsXG4gICAgICBpbmZpbml0ZSA9IHNwZWMuaW5maW5pdGUsXG4gICAgICBjZW50ZXJNb2RlID0gc3BlYy5jZW50ZXJNb2RlLFxuICAgICAgc2xpZGVDb3VudCA9IHNwZWMuc2xpZGVDb3VudCxcbiAgICAgIHNsaWRlc1RvU2hvdyA9IHNwZWMuc2xpZGVzVG9TaG93LFxuICAgICAgc2xpZGVzVG9TY3JvbGwgPSBzcGVjLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgc2xpZGVXaWR0aCA9IHNwZWMuc2xpZGVXaWR0aCxcbiAgICAgIGxpc3RXaWR0aCA9IHNwZWMubGlzdFdpZHRoLFxuICAgICAgdmFyaWFibGVXaWR0aCA9IHNwZWMudmFyaWFibGVXaWR0aCxcbiAgICAgIHNsaWRlSGVpZ2h0ID0gc3BlYy5zbGlkZUhlaWdodCxcbiAgICAgIGZhZGUgPSBzcGVjLmZhZGUsXG4gICAgICB2ZXJ0aWNhbCA9IHNwZWMudmVydGljYWw7XG4gIHZhciBzbGlkZU9mZnNldCA9IDA7XG4gIHZhciB0YXJnZXRMZWZ0O1xuICB2YXIgdGFyZ2V0U2xpZGU7XG4gIHZhciB2ZXJ0aWNhbE9mZnNldCA9IDA7XG5cbiAgaWYgKGZhZGUgfHwgc3BlYy5zbGlkZUNvdW50ID09PSAxKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgc2xpZGVzVG9PZmZzZXQgPSAwO1xuXG4gIGlmIChpbmZpbml0ZSkge1xuICAgIHNsaWRlc1RvT2Zmc2V0ID0gLWdldFByZUNsb25lcyhzcGVjKTsgLy8gYnJpbmcgYWN0aXZlIHNsaWRlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdmlzdWFsIGFyZWFcbiAgICAvLyBpZiBuZXh0IHNjcm9sbCBkb2Vzbid0IGhhdmUgZW5vdWdoIGNoaWxkcmVuLCBqdXN0IHJlYWNoIHRpbGwgdGhlIGVuZCBvZiBvcmlnaW5hbCBzbGlkZXMgaW5zdGVhZCBvZiBzaGlmdGluZyBzbGlkZXNUb1Njcm9sbCBjaGlsZHJlblxuXG4gICAgaWYgKHNsaWRlQ291bnQgJSBzbGlkZXNUb1Njcm9sbCAhPT0gMCAmJiBzbGlkZUluZGV4ICsgc2xpZGVzVG9TY3JvbGwgPiBzbGlkZUNvdW50KSB7XG4gICAgICBzbGlkZXNUb09mZnNldCA9IC0oc2xpZGVJbmRleCA+IHNsaWRlQ291bnQgPyBzbGlkZXNUb1Nob3cgLSAoc2xpZGVJbmRleCAtIHNsaWRlQ291bnQpIDogc2xpZGVDb3VudCAlIHNsaWRlc1RvU2Nyb2xsKTtcbiAgICB9IC8vIHNoaWZ0IGN1cnJlbnQgc2xpZGUgdG8gY2VudGVyIG9mIHRoZSBmcmFtZVxuXG5cbiAgICBpZiAoY2VudGVyTW9kZSkge1xuICAgICAgc2xpZGVzVG9PZmZzZXQgKz0gcGFyc2VJbnQoc2xpZGVzVG9TaG93IC8gMik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGwgIT09IDAgJiYgc2xpZGVJbmRleCArIHNsaWRlc1RvU2Nyb2xsID4gc2xpZGVDb3VudCkge1xuICAgICAgc2xpZGVzVG9PZmZzZXQgPSBzbGlkZXNUb1Nob3cgLSBzbGlkZUNvdW50ICUgc2xpZGVzVG9TY3JvbGw7XG4gICAgfVxuXG4gICAgaWYgKGNlbnRlck1vZGUpIHtcbiAgICAgIHNsaWRlc1RvT2Zmc2V0ID0gcGFyc2VJbnQoc2xpZGVzVG9TaG93IC8gMik7XG4gICAgfVxuICB9XG5cbiAgc2xpZGVPZmZzZXQgPSBzbGlkZXNUb09mZnNldCAqIHNsaWRlV2lkdGg7XG4gIHZlcnRpY2FsT2Zmc2V0ID0gc2xpZGVzVG9PZmZzZXQgKiBzbGlkZUhlaWdodDtcblxuICBpZiAoIXZlcnRpY2FsKSB7XG4gICAgdGFyZ2V0TGVmdCA9IHNsaWRlSW5kZXggKiBzbGlkZVdpZHRoICogLTEgKyBzbGlkZU9mZnNldDtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRMZWZ0ID0gc2xpZGVJbmRleCAqIHNsaWRlSGVpZ2h0ICogLTEgKyB2ZXJ0aWNhbE9mZnNldDtcbiAgfVxuXG4gIGlmICh2YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG4gICAgdmFyIHRhcmdldFNsaWRlSW5kZXg7XG5cbiAgICB2YXIgdHJhY2tFbGVtID0gX3JlYWN0RG9tLmRlZmF1bHQuZmluZERPTU5vZGUodHJhY2tSZWYpO1xuXG4gICAgdGFyZ2V0U2xpZGVJbmRleCA9IHNsaWRlSW5kZXggKyBnZXRQcmVDbG9uZXMoc3BlYyk7XG4gICAgdGFyZ2V0U2xpZGUgPSB0cmFja0VsZW0gJiYgdHJhY2tFbGVtLmNoaWxkTm9kZXNbdGFyZ2V0U2xpZGVJbmRleF07XG4gICAgdGFyZ2V0TGVmdCA9IHRhcmdldFNsaWRlID8gdGFyZ2V0U2xpZGUub2Zmc2V0TGVmdCAqIC0xIDogMDtcblxuICAgIGlmIChjZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICB0YXJnZXRTbGlkZUluZGV4ID0gaW5maW5pdGUgPyBzbGlkZUluZGV4ICsgZ2V0UHJlQ2xvbmVzKHNwZWMpIDogc2xpZGVJbmRleDtcbiAgICAgIHRhcmdldFNsaWRlID0gdHJhY2tFbGVtICYmIHRyYWNrRWxlbS5jaGlsZHJlblt0YXJnZXRTbGlkZUluZGV4XTtcbiAgICAgIHRhcmdldExlZnQgPSAwO1xuXG4gICAgICBmb3IgKHZhciBzbGlkZSA9IDA7IHNsaWRlIDwgdGFyZ2V0U2xpZGVJbmRleDsgc2xpZGUrKykge1xuICAgICAgICB0YXJnZXRMZWZ0IC09IHRyYWNrRWxlbSAmJiB0cmFja0VsZW0uY2hpbGRyZW5bc2xpZGVdICYmIHRyYWNrRWxlbS5jaGlsZHJlbltzbGlkZV0ub2Zmc2V0V2lkdGg7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldExlZnQgLT0gcGFyc2VJbnQoc3BlYy5jZW50ZXJQYWRkaW5nKTtcbiAgICAgIHRhcmdldExlZnQgKz0gdGFyZ2V0U2xpZGUgJiYgKGxpc3RXaWR0aCAtIHRhcmdldFNsaWRlLm9mZnNldFdpZHRoKSAvIDI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldExlZnQ7XG59O1xuXG5leHBvcnRzLmdldFRyYWNrTGVmdCA9IGdldFRyYWNrTGVmdDtcblxudmFyIGdldFByZUNsb25lcyA9IGZ1bmN0aW9uIGdldFByZUNsb25lcyhzcGVjKSB7XG4gIGlmIChzcGVjLnVuc2xpY2sgfHwgIXNwZWMuaW5maW5pdGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChzcGVjLnZhcmlhYmxlV2lkdGgpIHtcbiAgICByZXR1cm4gc3BlYy5zbGlkZUNvdW50O1xuICB9XG5cbiAgcmV0dXJuIHNwZWMuc2xpZGVzVG9TaG93ICsgKHNwZWMuY2VudGVyTW9kZSA/IDEgOiAwKTtcbn07XG5cbmV4cG9ydHMuZ2V0UHJlQ2xvbmVzID0gZ2V0UHJlQ2xvbmVzO1xuXG52YXIgZ2V0UG9zdENsb25lcyA9IGZ1bmN0aW9uIGdldFBvc3RDbG9uZXMoc3BlYykge1xuICBpZiAoc3BlYy51bnNsaWNrIHx8ICFzcGVjLmluZmluaXRlKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gc3BlYy5zbGlkZUNvdW50O1xufTtcblxuZXhwb3J0cy5nZXRQb3N0Q2xvbmVzID0gZ2V0UG9zdENsb25lcztcblxudmFyIGdldFRvdGFsU2xpZGVzID0gZnVuY3Rpb24gZ2V0VG90YWxTbGlkZXMoc3BlYykge1xuICByZXR1cm4gc3BlYy5zbGlkZUNvdW50ID09PSAxID8gMSA6IGdldFByZUNsb25lcyhzcGVjKSArIHNwZWMuc2xpZGVDb3VudCArIGdldFBvc3RDbG9uZXMoc3BlYyk7XG59O1xuXG5leHBvcnRzLmdldFRvdGFsU2xpZGVzID0gZ2V0VG90YWxTbGlkZXM7XG5cbnZhciBzaWJsaW5nRGlyZWN0aW9uID0gZnVuY3Rpb24gc2libGluZ0RpcmVjdGlvbihzcGVjKSB7XG4gIGlmIChzcGVjLnRhcmdldFNsaWRlID4gc3BlYy5jdXJyZW50U2xpZGUpIHtcbiAgICBpZiAoc3BlYy50YXJnZXRTbGlkZSA+IHNwZWMuY3VycmVudFNsaWRlICsgc2xpZGVzT25SaWdodChzcGVjKSkge1xuICAgICAgcmV0dXJuIFwibGVmdFwiO1xuICAgIH1cblxuICAgIHJldHVybiBcInJpZ2h0XCI7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHNwZWMudGFyZ2V0U2xpZGUgPCBzcGVjLmN1cnJlbnRTbGlkZSAtIHNsaWRlc09uTGVmdChzcGVjKSkge1xuICAgICAgcmV0dXJuIFwicmlnaHRcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJsZWZ0XCI7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2libGluZ0RpcmVjdGlvbiA9IHNpYmxpbmdEaXJlY3Rpb247XG5cbnZhciBzbGlkZXNPblJpZ2h0ID0gZnVuY3Rpb24gc2xpZGVzT25SaWdodChfcmVmKSB7XG4gIHZhciBzbGlkZXNUb1Nob3cgPSBfcmVmLnNsaWRlc1RvU2hvdyxcbiAgICAgIGNlbnRlck1vZGUgPSBfcmVmLmNlbnRlck1vZGUsXG4gICAgICBydGwgPSBfcmVmLnJ0bCxcbiAgICAgIGNlbnRlclBhZGRpbmcgPSBfcmVmLmNlbnRlclBhZGRpbmc7XG5cbiAgLy8gcmV0dXJucyBubyBvZiBzbGlkZXMgb24gdGhlIHJpZ2h0IG9mIGFjdGl2ZSBzbGlkZVxuICBpZiAoY2VudGVyTW9kZSkge1xuICAgIHZhciByaWdodCA9IChzbGlkZXNUb1Nob3cgLSAxKSAvIDIgKyAxO1xuICAgIGlmIChwYXJzZUludChjZW50ZXJQYWRkaW5nKSA+IDApIHJpZ2h0ICs9IDE7XG4gICAgaWYgKHJ0bCAmJiBzbGlkZXNUb1Nob3cgJSAyID09PSAwKSByaWdodCArPSAxO1xuICAgIHJldHVybiByaWdodDtcbiAgfVxuXG4gIGlmIChydGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiBzbGlkZXNUb1Nob3cgLSAxO1xufTtcblxuZXhwb3J0cy5zbGlkZXNPblJpZ2h0ID0gc2xpZGVzT25SaWdodDtcblxudmFyIHNsaWRlc09uTGVmdCA9IGZ1bmN0aW9uIHNsaWRlc09uTGVmdChfcmVmMikge1xuICB2YXIgc2xpZGVzVG9TaG93ID0gX3JlZjIuc2xpZGVzVG9TaG93LFxuICAgICAgY2VudGVyTW9kZSA9IF9yZWYyLmNlbnRlck1vZGUsXG4gICAgICBydGwgPSBfcmVmMi5ydGwsXG4gICAgICBjZW50ZXJQYWRkaW5nID0gX3JlZjIuY2VudGVyUGFkZGluZztcblxuICAvLyByZXR1cm5zIG5vIG9mIHNsaWRlcyBvbiB0aGUgbGVmdCBvZiBhY3RpdmUgc2xpZGVcbiAgaWYgKGNlbnRlck1vZGUpIHtcbiAgICB2YXIgbGVmdCA9IChzbGlkZXNUb1Nob3cgLSAxKSAvIDIgKyAxO1xuICAgIGlmIChwYXJzZUludChjZW50ZXJQYWRkaW5nKSA+IDApIGxlZnQgKz0gMTtcbiAgICBpZiAoIXJ0bCAmJiBzbGlkZXNUb1Nob3cgJSAyID09PSAwKSBsZWZ0ICs9IDE7XG4gICAgcmV0dXJuIGxlZnQ7XG4gIH1cblxuICBpZiAocnRsKSB7XG4gICAgcmV0dXJuIHNsaWRlc1RvU2hvdyAtIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydHMuc2xpZGVzT25MZWZ0ID0gc2xpZGVzT25MZWZ0O1xuXG52YXIgY2FuVXNlRE9NID0gZnVuY3Rpb24gY2FuVXNlRE9NKCkge1xuICByZXR1cm4gISEodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xufTtcblxuZXhwb3J0cy5jYW5Vc2VET00gPSBjYW5Vc2VET007IiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VQaWNrQnkgPSByZXF1aXJlKCcuL19iYXNlUGlja0J5JyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGBvYmplY3RgIHByb3BlcnRpZXMgYHByZWRpY2F0ZWAgcmV0dXJuc1xuICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICB2YXIgcHJvcHMgPSBhcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSwgZnVuY3Rpb24ocHJvcCkge1xuICAgIHJldHVybiBbcHJvcF07XG4gIH0pO1xuICBwcmVkaWNhdGUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwcm9wcywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGlja0J5O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwO1xuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwidmFyIG1hcENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDYWNoZUNsZWFyJyksXG4gICAgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLFxuICAgIG1hcENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVHZXQnKSxcbiAgICBtYXBDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX21hcENhY2hlSGFzJyksXG4gICAgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXBDYWNoZTtcbiIsInZhciBiYXNlSXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL19iYXNlSXNBcmd1bWVudHMnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FyZ3VtZW50cztcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0xlbmd0aDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5hcnk7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iLCJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXk7XG4iLCIvKlxub2JqZWN0LWFzc2lnblxuKGMpIFNpbmRyZSBTb3JodXNcbkBsaWNlbnNlIE1JVFxuKi9cblxuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuZnVuY3Rpb24gdG9PYmplY3QodmFsKSB7XG5cdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHR9XG5cblx0cmV0dXJuIE9iamVjdCh2YWwpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcblx0dmFyIGZyb207XG5cdHZhciB0byA9IHRvT2JqZWN0KHRhcmdldCk7XG5cdHZhciBzeW1ib2xzO1xuXG5cdGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG5cdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG5cdFx0Zm9yICh2YXIga2V5IGluIGZyb20pIHtcblx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcblx0XHRcdFx0dG9ba2V5XSA9IGZyb21ba2V5XTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdG87XG59O1xuIiwiLyoqXG4gKiBFdkVtaXR0ZXIgdjEuMS4wXG4gKiBMaWwnIGV2ZW50IGVtaXR0ZXJcbiAqIE1JVCBMaWNlbnNlXG4gKi9cblxuLyoganNoaW50IHVudXNlZDogdHJ1ZSwgdW5kZWY6IHRydWUsIHN0cmljdDogdHJ1ZSAqL1xuXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG4gIC8vIHVuaXZlcnNhbCBtb2R1bGUgZGVmaW5pdGlvblxuICAvKiBqc2hpbnQgc3RyaWN0OiBmYWxzZSAqLyAvKiBnbG9iYWxzIGRlZmluZSwgbW9kdWxlLCB3aW5kb3cgKi9cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTUQgLSBSZXF1aXJlSlNcbiAgICBkZWZpbmUoIGZhY3RvcnkgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KUyAtIEJyb3dzZXJpZnksIFdlYnBhY2tcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCcm93c2VyIGdsb2JhbHNcbiAgICBnbG9iYWwuRXZFbWl0dGVyID0gZmFjdG9yeSgpO1xuICB9XG5cbn0oIHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0aGlzLCBmdW5jdGlvbigpIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIEV2RW1pdHRlcigpIHt9XG5cbnZhciBwcm90byA9IEV2RW1pdHRlci5wcm90b3R5cGU7XG5cbnByb3RvLm9uID0gZnVuY3Rpb24oIGV2ZW50TmFtZSwgbGlzdGVuZXIgKSB7XG4gIGlmICggIWV2ZW50TmFtZSB8fCAhbGlzdGVuZXIgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHNldCBldmVudHMgaGFzaFxuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICAvLyBzZXQgbGlzdGVuZXJzIGFycmF5XG4gIHZhciBsaXN0ZW5lcnMgPSBldmVudHNbIGV2ZW50TmFtZSBdID0gZXZlbnRzWyBldmVudE5hbWUgXSB8fCBbXTtcbiAgLy8gb25seSBhZGQgb25jZVxuICBpZiAoIGxpc3RlbmVycy5pbmRleE9mKCBsaXN0ZW5lciApID09IC0xICkge1xuICAgIGxpc3RlbmVycy5wdXNoKCBsaXN0ZW5lciApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5wcm90by5vbmNlID0gZnVuY3Rpb24oIGV2ZW50TmFtZSwgbGlzdGVuZXIgKSB7XG4gIGlmICggIWV2ZW50TmFtZSB8fCAhbGlzdGVuZXIgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGFkZCBldmVudFxuICB0aGlzLm9uKCBldmVudE5hbWUsIGxpc3RlbmVyICk7XG4gIC8vIHNldCBvbmNlIGZsYWdcbiAgLy8gc2V0IG9uY2VFdmVudHMgaGFzaFxuICB2YXIgb25jZUV2ZW50cyA9IHRoaXMuX29uY2VFdmVudHMgPSB0aGlzLl9vbmNlRXZlbnRzIHx8IHt9O1xuICAvLyBzZXQgb25jZUxpc3RlbmVycyBvYmplY3RcbiAgdmFyIG9uY2VMaXN0ZW5lcnMgPSBvbmNlRXZlbnRzWyBldmVudE5hbWUgXSA9IG9uY2VFdmVudHNbIGV2ZW50TmFtZSBdIHx8IHt9O1xuICAvLyBzZXQgZmxhZ1xuICBvbmNlTGlzdGVuZXJzWyBsaXN0ZW5lciBdID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbnByb3RvLm9mZiA9IGZ1bmN0aW9uKCBldmVudE5hbWUsIGxpc3RlbmVyICkge1xuICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fZXZlbnRzICYmIHRoaXMuX2V2ZW50c1sgZXZlbnROYW1lIF07XG4gIGlmICggIWxpc3RlbmVycyB8fCAhbGlzdGVuZXJzLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGluZGV4ID0gbGlzdGVuZXJzLmluZGV4T2YoIGxpc3RlbmVyICk7XG4gIGlmICggaW5kZXggIT0gLTEgKSB7XG4gICAgbGlzdGVuZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxucHJvdG8uZW1pdEV2ZW50ID0gZnVuY3Rpb24oIGV2ZW50TmFtZSwgYXJncyApIHtcbiAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50cyAmJiB0aGlzLl9ldmVudHNbIGV2ZW50TmFtZSBdO1xuICBpZiAoICFsaXN0ZW5lcnMgfHwgIWxpc3RlbmVycy5sZW5ndGggKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGNvcHkgb3ZlciB0byBhdm9pZCBpbnRlcmZlcmVuY2UgaWYgLm9mZigpIGluIGxpc3RlbmVyXG4gIGxpc3RlbmVycyA9IGxpc3RlbmVycy5zbGljZSgwKTtcbiAgYXJncyA9IGFyZ3MgfHwgW107XG4gIC8vIG9uY2Ugc3R1ZmZcbiAgdmFyIG9uY2VMaXN0ZW5lcnMgPSB0aGlzLl9vbmNlRXZlbnRzICYmIHRoaXMuX29uY2VFdmVudHNbIGV2ZW50TmFtZSBdO1xuXG4gIGZvciAoIHZhciBpPTA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldXG4gICAgdmFyIGlzT25jZSA9IG9uY2VMaXN0ZW5lcnMgJiYgb25jZUxpc3RlbmVyc1sgbGlzdGVuZXIgXTtcbiAgICBpZiAoIGlzT25jZSApIHtcbiAgICAgIC8vIHJlbW92ZSBsaXN0ZW5lclxuICAgICAgLy8gcmVtb3ZlIGJlZm9yZSB0cmlnZ2VyIHRvIHByZXZlbnQgcmVjdXJzaW9uXG4gICAgICB0aGlzLm9mZiggZXZlbnROYW1lLCBsaXN0ZW5lciApO1xuICAgICAgLy8gdW5zZXQgb25jZSBmbGFnXG4gICAgICBkZWxldGUgb25jZUxpc3RlbmVyc1sgbGlzdGVuZXIgXTtcbiAgICB9XG4gICAgLy8gdHJpZ2dlciBsaXN0ZW5lclxuICAgIGxpc3RlbmVyLmFwcGx5KCB0aGlzLCBhcmdzICk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbnByb3RvLmFsbE9mZiA9IGZ1bmN0aW9uKCkge1xuICBkZWxldGUgdGhpcy5fZXZlbnRzO1xuICBkZWxldGUgdGhpcy5fb25jZUV2ZW50cztcbn07XG5cbnJldHVybiBFdkVtaXR0ZXI7XG5cbn0pKTtcbiIsIi8qIVxuICogZ2V0U2l6ZSB2Mi4wLjNcbiAqIG1lYXN1cmUgc2l6ZSBvZiBlbGVtZW50c1xuICogTUlUIGxpY2Vuc2VcbiAqL1xuXG4vKiBqc2hpbnQgYnJvd3NlcjogdHJ1ZSwgc3RyaWN0OiB0cnVlLCB1bmRlZjogdHJ1ZSwgdW51c2VkOiB0cnVlICovXG4vKiBnbG9iYWxzIGNvbnNvbGU6IGZhbHNlICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgLyoganNoaW50IHN0cmljdDogZmFsc2UgKi8gLyogZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSAqL1xuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRFxuICAgIGRlZmluZSggZmFjdG9yeSApO1xuICB9IGVsc2UgaWYgKCB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzICkge1xuICAgIC8vIENvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYnJvd3NlciBnbG9iYWxcbiAgICB3aW5kb3cuZ2V0U2l6ZSA9IGZhY3RvcnkoKTtcbiAgfVxuXG59KSggd2luZG93LCBmdW5jdGlvbiBmYWN0b3J5KCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8vIGdldCBhIG51bWJlciBmcm9tIGEgc3RyaW5nLCBub3QgYSBwZXJjZW50YWdlXG5mdW5jdGlvbiBnZXRTdHlsZVNpemUoIHZhbHVlICkge1xuICB2YXIgbnVtID0gcGFyc2VGbG9hdCggdmFsdWUgKTtcbiAgLy8gbm90IGEgcGVyY2VudCBsaWtlICcxMDAlJywgYW5kIGEgbnVtYmVyXG4gIHZhciBpc1ZhbGlkID0gdmFsdWUuaW5kZXhPZignJScpID09IC0xICYmICFpc05hTiggbnVtICk7XG4gIHJldHVybiBpc1ZhbGlkICYmIG51bTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnZhciBsb2dFcnJvciA9IHR5cGVvZiBjb25zb2xlID09ICd1bmRlZmluZWQnID8gbm9vcCA6XG4gIGZ1bmN0aW9uKCBtZXNzYWdlICkge1xuICAgIGNvbnNvbGUuZXJyb3IoIG1lc3NhZ2UgKTtcbiAgfTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWVhc3VyZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbnZhciBtZWFzdXJlbWVudHMgPSBbXG4gICdwYWRkaW5nTGVmdCcsXG4gICdwYWRkaW5nUmlnaHQnLFxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nQm90dG9tJyxcbiAgJ21hcmdpbkxlZnQnLFxuICAnbWFyZ2luUmlnaHQnLFxuICAnbWFyZ2luVG9wJyxcbiAgJ21hcmdpbkJvdHRvbScsXG4gICdib3JkZXJMZWZ0V2lkdGgnLFxuICAnYm9yZGVyUmlnaHRXaWR0aCcsXG4gICdib3JkZXJUb3BXaWR0aCcsXG4gICdib3JkZXJCb3R0b21XaWR0aCdcbl07XG5cbnZhciBtZWFzdXJlbWVudHNMZW5ndGggPSBtZWFzdXJlbWVudHMubGVuZ3RoO1xuXG5mdW5jdGlvbiBnZXRaZXJvU2l6ZSgpIHtcbiAgdmFyIHNpemUgPSB7XG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGlubmVyV2lkdGg6IDAsXG4gICAgaW5uZXJIZWlnaHQ6IDAsXG4gICAgb3V0ZXJXaWR0aDogMCxcbiAgICBvdXRlckhlaWdodDogMFxuICB9O1xuICBmb3IgKCB2YXIgaT0wOyBpIDwgbWVhc3VyZW1lbnRzTGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gbWVhc3VyZW1lbnRzW2ldO1xuICAgIHNpemVbIG1lYXN1cmVtZW50IF0gPSAwO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZXRTdHlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4vKipcbiAqIGdldFN0eWxlLCBnZXQgc3R5bGUgb2YgZWxlbWVudCwgY2hlY2sgZm9yIEZpcmVmb3ggYnVnXG4gKiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01NDgzOTdcbiAqL1xuZnVuY3Rpb24gZ2V0U3R5bGUoIGVsZW0gKSB7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoIGVsZW0gKTtcbiAgaWYgKCAhc3R5bGUgKSB7XG4gICAgbG9nRXJyb3IoICdTdHlsZSByZXR1cm5lZCAnICsgc3R5bGUgK1xuICAgICAgJy4gQXJlIHlvdSBydW5uaW5nIHRoaXMgY29kZSBpbiBhIGhpZGRlbiBpZnJhbWUgb24gRmlyZWZveD8gJyArXG4gICAgICAnU2VlIGh0dHBzOi8vYml0Lmx5L2dldHNpemVidWcxJyApO1xuICB9XG4gIHJldHVybiBzdHlsZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2V0dXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxudmFyIGlzU2V0dXAgPSBmYWxzZTtcblxudmFyIGlzQm94U2l6ZU91dGVyO1xuXG4vKipcbiAqIHNldHVwXG4gKiBjaGVjayBpc0JveFNpemVyT3V0ZXJcbiAqIGRvIG9uIGZpcnN0IGdldFNpemUoKSByYXRoZXIgdGhhbiBvbiBwYWdlIGxvYWQgZm9yIEZpcmVmb3ggYnVnXG4gKi9cbmZ1bmN0aW9uIHNldHVwKCkge1xuICAvLyBzZXR1cCBvbmNlXG4gIGlmICggaXNTZXR1cCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaXNTZXR1cCA9IHRydWU7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYm94IHNpemluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4gIC8qKlxuICAgKiBDaHJvbWUgJiBTYWZhcmkgbWVhc3VyZSB0aGUgb3V0ZXItd2lkdGggb24gc3R5bGUud2lkdGggb24gYm9yZGVyLWJveCBlbGVtc1xuICAgKiBJRTExICYgRmlyZWZveDwyOSBtZWFzdXJlcyB0aGUgaW5uZXItd2lkdGhcbiAgICovXG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LnN0eWxlLndpZHRoID0gJzIwMHB4JztcbiAgZGl2LnN0eWxlLnBhZGRpbmcgPSAnMXB4IDJweCAzcHggNHB4JztcbiAgZGl2LnN0eWxlLmJvcmRlclN0eWxlID0gJ3NvbGlkJztcbiAgZGl2LnN0eWxlLmJvcmRlcldpZHRoID0gJzFweCAycHggM3B4IDRweCc7XG4gIGRpdi5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG5cbiAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgYm9keS5hcHBlbmRDaGlsZCggZGl2ICk7XG4gIHZhciBzdHlsZSA9IGdldFN0eWxlKCBkaXYgKTtcbiAgLy8gcm91bmQgdmFsdWUgZm9yIGJyb3dzZXIgem9vbS4gZGVzYW5kcm8vbWFzb25yeSM5MjhcbiAgaXNCb3hTaXplT3V0ZXIgPSBNYXRoLnJvdW5kKCBnZXRTdHlsZVNpemUoIHN0eWxlLndpZHRoICkgKSA9PSAyMDA7XG4gIGdldFNpemUuaXNCb3hTaXplT3V0ZXIgPSBpc0JveFNpemVPdXRlcjtcblxuICBib2R5LnJlbW92ZUNoaWxkKCBkaXYgKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ2V0U2l6ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG5mdW5jdGlvbiBnZXRTaXplKCBlbGVtICkge1xuICBzZXR1cCgpO1xuXG4gIC8vIHVzZSBxdWVyeVNlbGV0b3IgaWYgZWxlbSBpcyBzdHJpbmdcbiAgaWYgKCB0eXBlb2YgZWxlbSA9PSAnc3RyaW5nJyApIHtcbiAgICBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggZWxlbSApO1xuICB9XG5cbiAgLy8gZG8gbm90IHByb2NlZWQgb24gbm9uLW9iamVjdHNcbiAgaWYgKCAhZWxlbSB8fCB0eXBlb2YgZWxlbSAhPSAnb2JqZWN0JyB8fCAhZWxlbS5ub2RlVHlwZSApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgc3R5bGUgPSBnZXRTdHlsZSggZWxlbSApO1xuXG4gIC8vIGlmIGhpZGRlbiwgZXZlcnl0aGluZyBpcyAwXG4gIGlmICggc3R5bGUuZGlzcGxheSA9PSAnbm9uZScgKSB7XG4gICAgcmV0dXJuIGdldFplcm9TaXplKCk7XG4gIH1cblxuICB2YXIgc2l6ZSA9IHt9O1xuICBzaXplLndpZHRoID0gZWxlbS5vZmZzZXRXaWR0aDtcbiAgc2l6ZS5oZWlnaHQgPSBlbGVtLm9mZnNldEhlaWdodDtcblxuICB2YXIgaXNCb3JkZXJCb3ggPSBzaXplLmlzQm9yZGVyQm94ID0gc3R5bGUuYm94U2l6aW5nID09ICdib3JkZXItYm94JztcblxuICAvLyBnZXQgYWxsIG1lYXN1cmVtZW50c1xuICBmb3IgKCB2YXIgaT0wOyBpIDwgbWVhc3VyZW1lbnRzTGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIG1lYXN1cmVtZW50ID0gbWVhc3VyZW1lbnRzW2ldO1xuICAgIHZhciB2YWx1ZSA9IHN0eWxlWyBtZWFzdXJlbWVudCBdO1xuICAgIHZhciBudW0gPSBwYXJzZUZsb2F0KCB2YWx1ZSApO1xuICAgIC8vIGFueSAnYXV0bycsICdtZWRpdW0nIHZhbHVlIHdpbGwgYmUgMFxuICAgIHNpemVbIG1lYXN1cmVtZW50IF0gPSAhaXNOYU4oIG51bSApID8gbnVtIDogMDtcbiAgfVxuXG4gIHZhciBwYWRkaW5nV2lkdGggPSBzaXplLnBhZGRpbmdMZWZ0ICsgc2l6ZS5wYWRkaW5nUmlnaHQ7XG4gIHZhciBwYWRkaW5nSGVpZ2h0ID0gc2l6ZS5wYWRkaW5nVG9wICsgc2l6ZS5wYWRkaW5nQm90dG9tO1xuICB2YXIgbWFyZ2luV2lkdGggPSBzaXplLm1hcmdpbkxlZnQgKyBzaXplLm1hcmdpblJpZ2h0O1xuICB2YXIgbWFyZ2luSGVpZ2h0ID0gc2l6ZS5tYXJnaW5Ub3AgKyBzaXplLm1hcmdpbkJvdHRvbTtcbiAgdmFyIGJvcmRlcldpZHRoID0gc2l6ZS5ib3JkZXJMZWZ0V2lkdGggKyBzaXplLmJvcmRlclJpZ2h0V2lkdGg7XG4gIHZhciBib3JkZXJIZWlnaHQgPSBzaXplLmJvcmRlclRvcFdpZHRoICsgc2l6ZS5ib3JkZXJCb3R0b21XaWR0aDtcblxuICB2YXIgaXNCb3JkZXJCb3hTaXplT3V0ZXIgPSBpc0JvcmRlckJveCAmJiBpc0JveFNpemVPdXRlcjtcblxuICAvLyBvdmVyd3JpdGUgd2lkdGggYW5kIGhlaWdodCBpZiB3ZSBjYW4gZ2V0IGl0IGZyb20gc3R5bGVcbiAgdmFyIHN0eWxlV2lkdGggPSBnZXRTdHlsZVNpemUoIHN0eWxlLndpZHRoICk7XG4gIGlmICggc3R5bGVXaWR0aCAhPT0gZmFsc2UgKSB7XG4gICAgc2l6ZS53aWR0aCA9IHN0eWxlV2lkdGggK1xuICAgICAgLy8gYWRkIHBhZGRpbmcgYW5kIGJvcmRlciB1bmxlc3MgaXQncyBhbHJlYWR5IGluY2x1ZGluZyBpdFxuICAgICAgKCBpc0JvcmRlckJveFNpemVPdXRlciA/IDAgOiBwYWRkaW5nV2lkdGggKyBib3JkZXJXaWR0aCApO1xuICB9XG5cbiAgdmFyIHN0eWxlSGVpZ2h0ID0gZ2V0U3R5bGVTaXplKCBzdHlsZS5oZWlnaHQgKTtcbiAgaWYgKCBzdHlsZUhlaWdodCAhPT0gZmFsc2UgKSB7XG4gICAgc2l6ZS5oZWlnaHQgPSBzdHlsZUhlaWdodCArXG4gICAgICAvLyBhZGQgcGFkZGluZyBhbmQgYm9yZGVyIHVubGVzcyBpdCdzIGFscmVhZHkgaW5jbHVkaW5nIGl0XG4gICAgICAoIGlzQm9yZGVyQm94U2l6ZU91dGVyID8gMCA6IHBhZGRpbmdIZWlnaHQgKyBib3JkZXJIZWlnaHQgKTtcbiAgfVxuXG4gIHNpemUuaW5uZXJXaWR0aCA9IHNpemUud2lkdGggLSAoIHBhZGRpbmdXaWR0aCArIGJvcmRlcldpZHRoICk7XG4gIHNpemUuaW5uZXJIZWlnaHQgPSBzaXplLmhlaWdodCAtICggcGFkZGluZ0hlaWdodCArIGJvcmRlckhlaWdodCApO1xuXG4gIHNpemUub3V0ZXJXaWR0aCA9IHNpemUud2lkdGggKyBtYXJnaW5XaWR0aDtcbiAgc2l6ZS5vdXRlckhlaWdodCA9IHNpemUuaGVpZ2h0ICsgbWFyZ2luSGVpZ2h0O1xuXG4gIHJldHVybiBzaXplO1xufVxuXG5yZXR1cm4gZ2V0U2l6ZTtcblxufSk7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzVHlwZWRBcnJheSA9IG5vZGVJc1R5cGVkQXJyYXkgPyBiYXNlVW5hcnkobm9kZUlzVHlwZWRBcnJheSkgOiBiYXNlSXNUeXBlZEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIHN0dWJBcnJheSA9IHJlcXVpcmUoJy4vc3R1YkFycmF5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKG9iamVjdCkge1xuICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9sc0luO1xuIiwidmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzO1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRBbGxLZXlzO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBmbGF0dGVuID0gcmVxdWlyZSgnLi9mbGF0dGVuJyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCB1bmRlZmluZWQsIGZsYXR0ZW4pLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXRSZXN0O1xuIiwidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyUmVzdDtcbiIsInZhciBiYXNlU2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlU2V0VG9TdHJpbmcnKSxcbiAgICBzaG9ydE91dCA9IHJlcXVpcmUoJy4vX3Nob3J0T3V0Jyk7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9TdHJpbmc7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCJ2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBjcmVhdGVCYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VFYWNoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKi9cbnZhciBiYXNlRWFjaCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd24pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VFYWNoO1xuIiwidmFyIGJhc2VJc0VxdWFsRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsRGVlcCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gKiAgMiAtIFBhcnRpYWwgY29tcGFyaXNvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IG90aGVyID09IG51bGwgfHwgKCFpc09iamVjdExpa2UodmFsdWUpICYmICFpc09iamVjdExpa2Uob3RoZXIpKSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICB9XG4gIHJldHVybiBiYXNlSXNFcXVhbERlZXAodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBiYXNlSXNFcXVhbCwgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsO1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gIGlmIChzdGFja2VkICYmIHN0YWNrLmdldChvdGhlcikpIHtcbiAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgJiYgIWlzT2JqZWN0KHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgYmFzZUhhc0luID0gcmVxdWlyZSgnLi9fYmFzZUhhc0luJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGEgY29sbGVjdGlvblxuICpcbiAqIEBwYXJhbSBjb2xsZWN0aW9uXG4gKiBAcGFyYW0gZm5cbiAqL1xuZnVuY3Rpb24gZWFjaChjb2xsZWN0aW9uLCBmbikge1xuICAgIHZhciBpICAgICAgPSAwLFxuICAgICAgICBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgY29udDtcblxuICAgIGZvcihpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29udCA9IGZuKGNvbGxlY3Rpb25baV0sIGkpO1xuICAgICAgICBpZihjb250ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7IC8vYWxsb3cgZWFybHkgZXhpdFxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0YXJnZXQgb2JqZWN0IGlzIGFuIGFycmF5XG4gKlxuICogQHBhcmFtIHRhcmdldCB0aGUgb2JqZWN0IHVuZGVyIHRlc3RcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgYXJyYXksIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHRhcmdldCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRhcmdldCBvYmplY3QgaXMgYSBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB1bmRlciB0ZXN0XG4gKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlmIGZ1bmN0aW9uLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgaXNGdW5jdGlvbiA6IGlzRnVuY3Rpb24sXG4gICAgaXNBcnJheSA6IGlzQXJyYXksXG4gICAgZWFjaCA6IGVhY2hcbn07XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiIsInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVHJpbSwgJycpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGFmID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYWYnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1Nvbl9NYWFfRGluX1dvZV9Eb25fVnJ5X1NhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTWFfRGlfV29fRG9fVnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC92bXxubS9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL15ubSQvaS50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAndm0nIDogJ1ZNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnbm0nIDogJ05NJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1ZhbmRhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbTcO0cmUgb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW29tXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tHaXN0ZXIgb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYWFzXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29vciAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGdlbGVkZScsXG4gICAgICAgICAgICBzIDogJ1xcJ24gcGFhciBzZWtvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRlcycsXG4gICAgICAgICAgICBtIDogJ1xcJ24gbWludXV0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZScsXG4gICAgICAgICAgICBoIDogJ1xcJ24gdXVyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHVyZScsXG4gICAgICAgICAgICBkIDogJ1xcJ24gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZScsXG4gICAgICAgICAgICBNIDogJ1xcJ24gbWFhbmQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWFhbmRlJyxcbiAgICAgICAgICAgIHkgOiAnXFwnbiBqYWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGphYXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwKSA/ICdzdGUnIDogJ2RlJyk7IC8vIFRoYW5rcyB0byBKb3JpcyBSw7ZsaW5nIDogaHR0cHM6Ly9naXRodWIuY29tL2pqdXBpdGVyXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNYWFuZGFnIGlzIGRpZSBlZXJzdGUgZGFnIHZhbiBkaWUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIERpZSB3ZWVrIHdhdCBkaWUgNGRlIEphbnVhcmllIGJldmF0IGlzIGRpZSBlZXJzdGUgd2VlayB2YW4gZGllIGphYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhZjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn2aEnLFxuICAgICAgICAnMic6ICfZoicsXG4gICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgJzQnOiAn2aQnLFxuICAgICAgICAnNSc6ICfZpScsXG4gICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgJzcnOiAn2acnLFxuICAgICAgICAnOCc6ICfZqCcsXG4gICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgJzAnOiAn2aAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAn2aAnOiAnMCdcbiAgICB9LCBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPT09IDAgPyAwIDogbiA9PT0gMSA/IDEgOiBuID09PSAyID8gMiA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwID8gMyA6IG4gJSAxMDAgPj0gMTEgPyA0IDogNTtcbiAgICB9LCBwbHVyYWxzID0ge1xuICAgICAgICBzIDogWyfYo9mC2YQg2YXZhiDYq9in2YbZitipJywgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSwgJyVkINir2YjYp9mGJywgJyVkINir2KfZhtmK2KknLCAnJWQg2KvYp9mG2YrYqSddLFxuICAgICAgICBtIDogWyfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJywgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSwgJyVkINiv2YLYp9im2YInLCAnJWQg2K/ZgtmK2YLYqScsICclZCDYr9mC2YrZgtipJ10sXG4gICAgICAgIGggOiBbJ9ij2YLZhCDZhdmGINiz2KfYudipJywgJ9iz2KfYudipINmI2KfYrdiv2KknLCBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSwgJyVkINiz2KfYudin2KonLCAnJWQg2LPYp9i52KknLCAnJWQg2LPYp9i52KknXSxcbiAgICAgICAgZCA6IFsn2KPZgtmEINmF2YYg2YrZiNmFJywgJ9mK2YjZhSDZiNin2K3YrycsIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sICclZCDYo9mK2KfZhScsICclZCDZitmI2YXZi9inJywgJyVkINmK2YjZhSddLFxuICAgICAgICBNIDogWyfYo9mC2YQg2YXZhiDYtNmH2LEnLCAn2LTZh9ixINmI2KfYrdivJywgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSwgJyVkINij2LTZh9ixJywgJyVkINi02YfYsdinJywgJyVkINi02YfYsSddLFxuICAgICAgICB5IDogWyfYo9mC2YQg2YXZhiDYudin2YUnLCAn2LnYp9mFINmI2KfYrdivJywgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSwgJyVkINij2LnZiNin2YUnLCAnJWQg2LnYp9mF2YvYpycsICclZCDYudin2YUnXVxuICAgIH0sIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICB9O1xuICAgIH0sIG1vbnRocyA9IFtcbiAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgJ9mF2KfYsdizJyxcbiAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAn2YrZiNmG2YrZiCcsXG4gICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAn2LPYqNiq2YXYqNixJyxcbiAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAn2K/Zitiz2YXYqNixJ1xuICAgIF07XG5cbiAgICB2YXIgYXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhcicsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiAn2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9ij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdEL1xcdTIwMEZNL1xcdTIwMEZZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/YtXzZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2YUnID09PSBpbnB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYtSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfYqNi52K8gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICfZhdmG2LAgJXMnLFxuICAgICAgICAgICAgcyA6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgc3MgOiBwbHVyYWxpemUoJ3MnKSxcbiAgICAgICAgICAgIG0gOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIG1tIDogcGx1cmFsaXplKCdtJyksXG4gICAgICAgICAgICBoIDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBoaCA6IHBsdXJhbGl6ZSgnaCcpLFxuICAgICAgICAgICAgZCA6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgZGQgOiBwbHVyYWxpemUoJ2QnKSxcbiAgICAgICAgICAgIE0gOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIE1NIDogcGx1cmFsaXplKCdNJyksXG4gICAgICAgICAgICB5IDogcGx1cmFsaXplKCd5JyksXG4gICAgICAgICAgICB5eSA6IHBsdXJhbGl6ZSgneScpXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGFyRHogPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1keicsIHtcbiAgICAgICAgbW9udGhzIDogJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KfYrdivX9in2KvZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9ij2K1f2KXYq1/Yq9mE2Kdf2KPYsV/YrtmFX9is2YVf2LPYqCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJEejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGFyS3cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1rdycsIHtcbiAgICAgICAgbW9udGhzIDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzIDogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbSA6ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaCA6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQgOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkIDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE0gOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NIDogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHkgOiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJLdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAnMScsXG4gICAgICAgICcyJzogJzInLFxuICAgICAgICAnMyc6ICczJyxcbiAgICAgICAgJzQnOiAnNCcsXG4gICAgICAgICc1JzogJzUnLFxuICAgICAgICAnNic6ICc2JyxcbiAgICAgICAgJzcnOiAnNycsXG4gICAgICAgICc4JzogJzgnLFxuICAgICAgICAnOSc6ICc5JyxcbiAgICAgICAgJzAnOiAnMCdcbiAgICB9LCBwbHVyYWxGb3JtID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIG4gPT09IDAgPyAwIDogbiA9PT0gMSA/IDEgOiBuID09PSAyID8gMiA6IG4gJSAxMDAgPj0gMyAmJiBuICUgMTAwIDw9IDEwID8gMyA6IG4gJSAxMDAgPj0gMTEgPyA0IDogNTtcbiAgICB9LCBwbHVyYWxzID0ge1xuICAgICAgICBzIDogWyfYo9mC2YQg2YXZhiDYq9in2YbZitipJywgJ9ir2KfZhtmK2Kkg2YjYp9it2K/YqScsIFsn2KvYp9mG2YrYqtin2YYnLCAn2KvYp9mG2YrYqtmK2YYnXSwgJyVkINir2YjYp9mGJywgJyVkINir2KfZhtmK2KknLCAnJWQg2KvYp9mG2YrYqSddLFxuICAgICAgICBtIDogWyfYo9mC2YQg2YXZhiDYr9mC2YrZgtipJywgJ9iv2YLZitmC2Kkg2YjYp9it2K/YqScsIFsn2K/ZgtmK2YLYqtin2YYnLCAn2K/ZgtmK2YLYqtmK2YYnXSwgJyVkINiv2YLYp9im2YInLCAnJWQg2K/ZgtmK2YLYqScsICclZCDYr9mC2YrZgtipJ10sXG4gICAgICAgIGggOiBbJ9ij2YLZhCDZhdmGINiz2KfYudipJywgJ9iz2KfYudipINmI2KfYrdiv2KknLCBbJ9iz2KfYudiq2KfZhicsICfYs9in2LnYqtmK2YYnXSwgJyVkINiz2KfYudin2KonLCAnJWQg2LPYp9i52KknLCAnJWQg2LPYp9i52KknXSxcbiAgICAgICAgZCA6IFsn2KPZgtmEINmF2YYg2YrZiNmFJywgJ9mK2YjZhSDZiNin2K3YrycsIFsn2YrZiNmF2KfZhicsICfZitmI2YXZitmGJ10sICclZCDYo9mK2KfZhScsICclZCDZitmI2YXZi9inJywgJyVkINmK2YjZhSddLFxuICAgICAgICBNIDogWyfYo9mC2YQg2YXZhiDYtNmH2LEnLCAn2LTZh9ixINmI2KfYrdivJywgWyfYtNmH2LHYp9mGJywgJ9i02YfYsdmK2YYnXSwgJyVkINij2LTZh9ixJywgJyVkINi02YfYsdinJywgJyVkINi02YfYsSddLFxuICAgICAgICB5IDogWyfYo9mC2YQg2YXZhiDYudin2YUnLCAn2LnYp9mFINmI2KfYrdivJywgWyfYudin2YXYp9mGJywgJ9i52KfZhdmK2YYnXSwgJyVkINij2LnZiNin2YUnLCAnJWQg2LnYp9mF2YvYpycsICclZCDYudin2YUnXVxuICAgIH0sIHBsdXJhbGl6ZSA9IGZ1bmN0aW9uICh1KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSB7XG4gICAgICAgICAgICB2YXIgZiA9IHBsdXJhbEZvcm0obnVtYmVyKSxcbiAgICAgICAgICAgICAgICBzdHIgPSBwbHVyYWxzW3VdW3BsdXJhbEZvcm0obnVtYmVyKV07XG4gICAgICAgICAgICBpZiAoZiA9PT0gMikge1xuICAgICAgICAgICAgICAgIHN0ciA9IHN0clt3aXRob3V0U3VmZml4ID8gMCA6IDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8lZC9pLCBudW1iZXIpO1xuICAgICAgICB9O1xuICAgIH0sIG1vbnRocyA9IFtcbiAgICAgICAgJ9mK2YbYp9mK2LEnLFxuICAgICAgICAn2YHYqNix2KfZitixJyxcbiAgICAgICAgJ9mF2KfYsdizJyxcbiAgICAgICAgJ9ij2KjYsdmK2YQnLFxuICAgICAgICAn2YXYp9mK2YgnLFxuICAgICAgICAn2YrZiNmG2YrZiCcsXG4gICAgICAgICfZitmI2YTZitmIJyxcbiAgICAgICAgJ9ij2LrYs9i32LMnLFxuICAgICAgICAn2LPYqNiq2YXYqNixJyxcbiAgICAgICAgJ9ij2YPYqtmI2KjYsScsXG4gICAgICAgICfZhtmI2YHZhdio2LEnLFxuICAgICAgICAn2K/Zitiz2YXYqNixJ1xuICAgIF07XG5cbiAgICB2YXIgYXJMeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLWx5Jywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0QvXFx1MjAwRk0vXFx1MjAwRllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9io2LnYryAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogcGx1cmFsaXplKCdzJyksXG4gICAgICAgICAgICBzcyA6IHBsdXJhbGl6ZSgncycpLFxuICAgICAgICAgICAgbSA6IHBsdXJhbGl6ZSgnbScpLFxuICAgICAgICAgICAgbW0gOiBwbHVyYWxpemUoJ20nKSxcbiAgICAgICAgICAgIGggOiBwbHVyYWxpemUoJ2gnKSxcbiAgICAgICAgICAgIGhoIDogcGx1cmFsaXplKCdoJyksXG4gICAgICAgICAgICBkIDogcGx1cmFsaXplKCdkJyksXG4gICAgICAgICAgICBkZCA6IHBsdXJhbGl6ZSgnZCcpLFxuICAgICAgICAgICAgTSA6IHBsdXJhbGl6ZSgnTScpLFxuICAgICAgICAgICAgTU0gOiBwbHVyYWxpemUoJ00nKSxcbiAgICAgICAgICAgIHkgOiBwbHVyYWxpemUoJ3knKSxcbiAgICAgICAgICAgIHl5IDogcGx1cmFsaXplKCd5JylcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJMeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGFyTWEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci1tYScsIHtcbiAgICAgICAgbW9udGhzIDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9in2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn2K1f2YZf2Ktf2LFf2K5f2Kxf2LMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn2YHZiiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzIDogJ9ir2YjYp9mGJyxcbiAgICAgICAgICAgIHNzIDogJyVkINir2KfZhtmK2KknLFxuICAgICAgICAgICAgbSA6ICfYr9mC2YrZgtipJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaCA6ICfYs9in2LnYqScsXG4gICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYp9iqJyxcbiAgICAgICAgICAgIGQgOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkIDogJyVkINij2YrYp9mFJyxcbiAgICAgICAgICAgIE0gOiAn2LTZh9ixJyxcbiAgICAgICAgICAgIE1NIDogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHkgOiAn2LPZhtipJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2YbZiNin2KonXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhck1hO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfZoScsXG4gICAgICAgICcyJzogJ9miJyxcbiAgICAgICAgJzMnOiAn2aMnLFxuICAgICAgICAnNCc6ICfZpCcsXG4gICAgICAgICc1JzogJ9mlJyxcbiAgICAgICAgJzYnOiAn2aYnLFxuICAgICAgICAnNyc6ICfZpycsXG4gICAgICAgICc4JzogJ9moJyxcbiAgICAgICAgJzknOiAn2aknLFxuICAgICAgICAnMCc6ICfZoCdcbiAgICB9LCBudW1iZXJNYXAgPSB7XG4gICAgICAgICfZoSc6ICcxJyxcbiAgICAgICAgJ9miJzogJzInLFxuICAgICAgICAn2aMnOiAnMycsXG4gICAgICAgICfZpCc6ICc0JyxcbiAgICAgICAgJ9mlJzogJzUnLFxuICAgICAgICAn2aYnOiAnNicsXG4gICAgICAgICfZpyc6ICc3JyxcbiAgICAgICAgJ9moJzogJzgnLFxuICAgICAgICAn2aknOiAnOScsXG4gICAgICAgICfZoCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgYXJTYSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2FyLXNhJywge1xuICAgICAgICBtb250aHMgOiAn2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9mK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9itX9mGX9irX9ixX9iuX9isX9izJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i1fNmFLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i1JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZhSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZgdmKICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn2YXZhtiwICVzJyxcbiAgICAgICAgICAgIHMgOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtIDogJ9iv2YLZitmC2KknLFxuICAgICAgICAgICAgbW0gOiAnJWQg2K/Zgtin2KbZgicsXG4gICAgICAgICAgICBoIDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoIDogJyVkINiz2KfYudin2KonLFxuICAgICAgICAgICAgZCA6ICfZitmI2YUnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTSA6ICfYtNmH2LEnLFxuICAgICAgICAgICAgTU0gOiAnJWQg2KPYtNmH2LEnLFxuICAgICAgICAgICAgeSA6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPZhtmI2KfYqidcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXJTYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGFyVG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdhci10bicsIHtcbiAgICAgICAgbW9udGhzOiAn2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ9is2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICfYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICfYrV/Zhl/Yq1/YsV/Yrl/YrF/Ysycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJ9mB2YogJXMnLFxuICAgICAgICAgICAgcGFzdDogJ9mF2YbYsCAlcycsXG4gICAgICAgICAgICBzOiAn2KvZiNin2YYnLFxuICAgICAgICAgICAgc3MgOiAnJWQg2KvYp9mG2YrYqScsXG4gICAgICAgICAgICBtOiAn2K/ZgtmK2YLYqScsXG4gICAgICAgICAgICBtbTogJyVkINiv2YLYp9im2YInLFxuICAgICAgICAgICAgaDogJ9iz2KfYudipJyxcbiAgICAgICAgICAgIGhoOiAnJWQg2LPYp9i52KfYqicsXG4gICAgICAgICAgICBkOiAn2YrZiNmFJyxcbiAgICAgICAgICAgIGRkOiAnJWQg2KPZitin2YUnLFxuICAgICAgICAgICAgTTogJ9i02YfYsScsXG4gICAgICAgICAgICBNTTogJyVkINij2LTZh9ixJyxcbiAgICAgICAgICAgIHk6ICfYs9mG2KknLFxuICAgICAgICAgICAgeXk6ICclZCDYs9mG2YjYp9iqJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFyVG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzdWZmaXhlcyA9IHtcbiAgICAgICAgMTogJy1pbmNpJyxcbiAgICAgICAgNTogJy1pbmNpJyxcbiAgICAgICAgODogJy1pbmNpJyxcbiAgICAgICAgNzA6ICctaW5jaScsXG4gICAgICAgIDgwOiAnLWluY2knLFxuICAgICAgICAyOiAnLW5jaScsXG4gICAgICAgIDc6ICctbmNpJyxcbiAgICAgICAgMjA6ICctbmNpJyxcbiAgICAgICAgNTA6ICctbmNpJyxcbiAgICAgICAgMzogJy3DvG5jw7wnLFxuICAgICAgICA0OiAnLcO8bmPDvCcsXG4gICAgICAgIDEwMDogJy3DvG5jw7wnLFxuICAgICAgICA2OiAnLW5jxLEnLFxuICAgICAgICA5OiAnLXVuY3UnLFxuICAgICAgICAxMDogJy11bmN1JyxcbiAgICAgICAgMzA6ICctdW5jdScsXG4gICAgICAgIDYwOiAnLcSxbmPEsScsXG4gICAgICAgIDkwOiAnLcSxbmPEsSdcbiAgICB9O1xuXG4gICAgdmFyIGF6ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYXonLCB7XG4gICAgICAgIG1vbnRocyA6ICd5YW52YXJfZmV2cmFsX21hcnRfYXByZWxfbWF5X2l5dW5faXl1bF9hdnF1c3Rfc2VudHlhYnJfb2t0eWFicl9ub3lhYnJfZGVrYWJyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICd5YW5fZmV2X21hcl9hcHJfbWF5X2l5bl9peWxfYXZxX3Nlbl9va3Rfbm95X2Rlaycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnQmF6YXJfQmF6YXIgZXJ0yZlzaV/Dh8mZcsWfyZluYsmZIGF4xZ9hbcSxX8OHyZlyxZ/JmW5iyZlfQ8O8bcmZIGF4xZ9hbcSxX0PDvG3JmV/FnsmZbmLJmScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdCYXpfQnpFX8OHQXhfw4fJmXJfQ0F4X0PDvG1fxZ7JmW4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0J6X0JFX8OHQV/Dh8mZX0NBX0PDvF/FnsmZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW3NhYmFoIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1tnyZlsyZluIGjJmWZ0yZldIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW2TDvG7JmW5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1trZcOnyZluIGjJmWZ0yZldIGRkZGQgW3NhYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBzb25yYScsXG4gICAgICAgICAgICBwYXN0IDogJyVzIMmZdnbJmWwnLFxuICAgICAgICAgICAgcyA6ICdiaXJuZcOnyZkgc2FuaXnJmScsXG4gICAgICAgICAgICBzcyA6ICclZCBzYW5pecmZJyxcbiAgICAgICAgICAgIG0gOiAnYmlyIGTJmXFpccmZJyxcbiAgICAgICAgICAgIG1tIDogJyVkIGTJmXFpccmZJyxcbiAgICAgICAgICAgIGggOiAnYmlyIHNhYXQnLFxuICAgICAgICAgICAgaGggOiAnJWQgc2FhdCcsXG4gICAgICAgICAgICBkIDogJ2JpciBnw7xuJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGfDvG4nLFxuICAgICAgICAgICAgTSA6ICdiaXIgYXknLFxuICAgICAgICAgICAgTU0gOiAnJWQgYXknLFxuICAgICAgICAgICAgeSA6ICdiaXIgaWwnLFxuICAgICAgICAgICAgeXkgOiAnJWQgaWwnXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9nZWPJmXxzyZloyZlyfGfDvG5kw7x6fGF4xZ9hbS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXihnw7xuZMO8enxheMWfYW0pJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdnZWPJmSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc8mZaMmZcic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZ8O8bmTDvHonO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2F4xZ9hbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0oxLFuY8SxfGluY2l8bmNpfMO8bmPDvHxuY8SxfHVuY3UpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHsgIC8vIHNwZWNpYWwgY2FzZSBmb3IgemVyb1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLcSxbmPEsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgJSAxMDAgLSBhLFxuICAgICAgICAgICAgICAgIGMgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbYV0gfHwgc3VmZml4ZXNbYl0gfHwgc3VmZml4ZXNbY10pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcGx1cmFsKHdvcmQsIG51bSkge1xuICAgICAgICB2YXIgZm9ybXMgPSB3b3JkLnNwbGl0KCdfJyk7XG4gICAgICAgIHJldHVybiBudW0gJSAxMCA9PT0gMSAmJiBudW0gJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiAobnVtICUgMTAgPj0gMiAmJiBudW0gJSAxMCA8PSA0ICYmIChudW0gJSAxMDAgPCAxMCB8fCBudW0gJSAxMDAgPj0gMjApID8gZm9ybXNbMV0gOiBmb3Jtc1syXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbGF0aXZlVGltZVdpdGhQbHVyYWwobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdzcyc6IHdpdGhvdXRTdWZmaXggPyAn0YHQtdC60YPQvdC00LBf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyA6ICfRgdC10LrRg9C90LTRg1/RgdC10LrRg9C90LTRi1/RgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgJ21tJzogd2l0aG91dFN1ZmZpeCA/ICfRhdCy0ZbQu9GW0L3QsF/RhdCy0ZbQu9GW0L3Ri1/RhdCy0ZbQu9GW0L0nIDogJ9GF0LLRltC70ZbQvdGDX9GF0LLRltC70ZbQvdGLX9GF0LLRltC70ZbQvScsXG4gICAgICAgICAgICAnaGgnOiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwX9Cz0LDQtNC30ZbQvdGLX9Cz0LDQtNC30ZbQvScgOiAn0LPQsNC00LfRltC90YNf0LPQsNC00LfRltC90Ytf0LPQsNC00LfRltC9JyxcbiAgICAgICAgICAgICdkZCc6ICfQtNC30LXQvdGMX9C00L3Rll/QtNC30ZHQvScsXG4gICAgICAgICAgICAnTU0nOiAn0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0Ytf0LzQtdGB0Y/RhtCw0Z4nLFxuICAgICAgICAgICAgJ3l5JzogJ9Cz0L7QtF/Qs9Cw0LTRi1/Qs9Cw0LTQvtGeJ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0LLRltC70ZbQvdCwJyA6ICfRhdCy0ZbQu9GW0L3Rgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5ID09PSAnaCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9Cz0LDQtNC30ZbQvdCwJyA6ICfQs9Cw0LTQt9GW0L3Rgyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgcGx1cmFsKGZvcm1hdFtrZXldLCArbnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBiZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JlJywge1xuICAgICAgICBtb250aHMgOiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICfRgdGC0YPQtNC30LXQvdGPX9C70Y7RgtCw0LPQsF/RgdCw0LrQsNCy0ZbQutCwX9C60YDQsNGB0LDQstGW0LrQsF/RgtGA0LDRntC90Y9f0YfRjdGA0LLQtdC90Y9f0LvRltC/0LXQvdGPX9C20L3RltGe0L3Rj1/QstC10YDQsNGB0L3Rj1/QutCw0YHRgtGA0YvRh9C90ZbQutCwX9C70ZbRgdGC0LDQv9Cw0LTQsF/RgdC90LXQttC90Y8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0YHRgtGD0LTQt9C10L3RjF/Qu9GO0YLRi1/RgdCw0LrQsNCy0ZbQul/QutGA0LDRgdCw0LLRltC6X9GC0YDQsNCy0LXQvdGMX9GH0Y3RgNCy0LXQvdGMX9C70ZbQv9C10L3RjF/QttC90ZbQstC10L3RjF/QstC10YDQsNGB0LXQvdGMX9C60LDRgdGC0YDRi9GH0L3RltC6X9C70ZbRgdGC0LDQv9Cw0LRf0YHQvdC10LbQsNC90YwnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0YHRgtGD0LRf0LvRjtGCX9GB0LDQul/QutGA0LDRgV/RgtGA0LDQsl/Rh9GN0YDQsl/Qu9GW0L9f0LbQvdGW0LJf0LLQtdGAX9C60LDRgdGCX9C70ZbRgdGCX9GB0L3QtdC2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ9C90Y/QtNC30LXQu9GOX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTRg1/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0YNf0YHRg9Cx0L7RgtGDJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9C90Y/QtNC30LXQu9GPX9C/0LDQvdGP0LTQt9C10LvQsNC6X9Cw0Z7RgtC+0YDQsNC6X9GB0LXRgNCw0LTQsF/Rh9Cw0YbQstC10YBf0L/Rj9GC0L3RltGG0LBf0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9cXFsgP1vQo9GD0Z5dID8oPzrQvNGW0L3Rg9C70YPRjnzQvdCw0YHRgtGD0L/QvdGD0Y4pPyA/XFxdID9kZGRkL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C90LRf0L/QvV/QsNGCX9GB0YBf0YfRhl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWSDQsy4nLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZINCzLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb0KHRkdC90L3RjyDRnl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vQl9Cw0Z7RgtGA0LAg0Z5dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb0KPRh9C+0YDQsCDRnl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1vQo10gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQoyDQvNGW0L3Rg9C70YPRjl0gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CjINC80ZbQvdGD0LvRi10gZGRkZCBb0Z5dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0L/RgNCw0LcgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDRgtCw0LzRgycsXG4gICAgICAgICAgICBzIDogJ9C90LXQutCw0LvRjNC60ZYg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBoaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkIDogJ9C00LfQtdC90YwnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHRj9GGJyxcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiAn0LPQvtC0JyxcbiAgICAgICAgICAgIHl5IDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbFxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0L3QvtGH0Yt80YDQsNC90ZbRhtGLfNC00L3Rj3zQstC10YfQsNGA0LAvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o0LTQvdGPfNCy0LXRh9Cw0YDQsCkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C90L7Rh9GLJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNCw0L3RltGG0YsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0LDRgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjRlnzRi3zQs9CwKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG51bWJlciAlIDEwID09PSAyIHx8IG51bWJlciAlIDEwID09PSAzKSAmJiAobnVtYmVyICUgMTAwICE9PSAxMiAmJiBudW1iZXIgJSAxMDAgIT09IDEzKSA/IG51bWJlciArICct0ZYnIDogbnVtYmVyICsgJy3Riyc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0LAnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgYmcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdiZycsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GP0L3RgF/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CU0L3QtdGBINCyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQo9GC0YDQtSDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9CS0YfQtdGA0LAg0LJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0LjQt9C80LjQvdCw0LvQsNGC0LBdIGRkZGQgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC40LfQvNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ9GB0LvQtdC0ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn0L/RgNC10LTQuCAlcycsXG4gICAgICAgICAgICBzIDogJ9C90Y/QutC+0LvQutC+INGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtNC4JyxcbiAgICAgICAgICAgIG0gOiAn0LzQuNC90YPRgtCwJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YLQuCcsXG4gICAgICAgICAgICBoIDogJ9GH0LDRgScsXG4gICAgICAgICAgICBoaCA6ICclZCDRh9Cw0YHQsCcsXG4gICAgICAgICAgICBkIDogJ9C00LXQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQtNC90LgnLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NIDogJyVkINC80LXRgdC10YbQsCcsXG4gICAgICAgICAgICB5IDogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eSA6ICclZCDQs9C+0LTQuNC90LgnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBsYXN0MkRpZ2l0cyA9IG51bWJlciAlIDEwMDtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdCyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdC9JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPiAxMCAmJiBsYXN0MkRpZ2l0cyA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCy0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgNC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSA3IHx8IGxhc3REaWdpdCA9PT0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC80LgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBibSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JtJywge1xuICAgICAgICBtb250aHMgOiAnWmFud3V5ZWthbG9fRmV3dXJ1eWVrYWxvX01hcmlzaWthbG9fQXdpcmlsaWthbG9fTcmba2Fsb19adXfJm25rYWxvX1p1bHV5ZWthbG9fVXRpa2Fsb19TyZt0YW5idXJ1a2Fsb1/JlGt1dMmUYnVydWthbG9fTm93YW5idXJ1a2Fsb19EZXNhbmJ1cnVrYWxvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdaYW5fRmV3X01hcl9Bd2lfTcmbX1p1d19adWxfVXRpX1PJm3RfyZRrdV9Ob3dfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdLYXJpX050yZtuyZtuX1RhcmF0YV9BcmFiYV9BbGFtaXNhX0p1bWFfU2liaXJpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0thcl9OdMmbX1Rhcl9BcmFfQWxhX0p1bV9TaWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0thX050X1RhX0FyX0FsX0p1X1NpJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnTU1NTSBbdGlsZV0gRCBbc2FuXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdNTU1NIFt0aWxlXSBEIFtzYW5dIFlZWVkgW2zJm3LJm10gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIE1NTU0gW3RpbGVdIEQgW3Nhbl0gWVlZWSBbbMmbcsmbXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tCaSBsyZtyyZtdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1NpbmkgbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtkb24gbMmbcsmbXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLdW51IGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbdMmbbcmbbmVuIGzJm3LJm10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIGvJlG7JlCcsXG4gICAgICAgICAgICBwYXN0IDogJ2EgYsmbICVzIGLJlCcsXG4gICAgICAgICAgICBzIDogJ3NhbmdhIGRhbWEgZGFtYScsXG4gICAgICAgICAgICBzcyA6ICdzZWtvbmRpICVkJyxcbiAgICAgICAgICAgIG0gOiAnbWluaXRpIGtlbGVuJyxcbiAgICAgICAgICAgIG1tIDogJ21pbml0aSAlZCcsXG4gICAgICAgICAgICBoIDogJ2zJm3LJmyBrZWxlbicsXG4gICAgICAgICAgICBoaCA6ICdsyZtyyZsgJWQnLFxuICAgICAgICAgICAgZCA6ICd0aWxlIGtlbGVuJyxcbiAgICAgICAgICAgIGRkIDogJ3RpbGUgJWQnLFxuICAgICAgICAgICAgTSA6ICdrYWxvIGtlbGVuJyxcbiAgICAgICAgICAgIE1NIDogJ2thbG8gJWQnLFxuICAgICAgICAgICAgeSA6ICdzYW4ga2VsZW4nLFxuICAgICAgICAgICAgeXkgOiAnc2FuICVkJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBibTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4KenJyxcbiAgICAgICAgJzInOiAn4KeoJyxcbiAgICAgICAgJzMnOiAn4KepJyxcbiAgICAgICAgJzQnOiAn4KeqJyxcbiAgICAgICAgJzUnOiAn4KerJyxcbiAgICAgICAgJzYnOiAn4KesJyxcbiAgICAgICAgJzcnOiAn4KetJyxcbiAgICAgICAgJzgnOiAn4KeuJyxcbiAgICAgICAgJzknOiAn4KevJyxcbiAgICAgICAgJzAnOiAn4KemJ1xuICAgIH0sXG4gICAgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4KenJzogJzEnLFxuICAgICAgICAn4KeoJzogJzInLFxuICAgICAgICAn4KepJzogJzMnLFxuICAgICAgICAn4KeqJzogJzQnLFxuICAgICAgICAn4KerJzogJzUnLFxuICAgICAgICAn4KesJzogJzYnLFxuICAgICAgICAn4KetJzogJzcnLFxuICAgICAgICAn4KeuJzogJzgnLFxuICAgICAgICAn4KevJzogJzknLFxuICAgICAgICAn4KemJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBibiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JuJywge1xuICAgICAgICBtb250aHMgOiAn4Kac4Ka+4Kao4KeB4Kef4Ka+4Kaw4KeAX+Cmq+Cnh+CmrOCnjeCmsOCngeCnn+CmvuCmsOCmv1/gpq7gpr7gprDgp43gpppf4KaP4Kaq4KeN4Kaw4Ka/4KayX+CmruCnh1/gppzgp4Hgpqhf4Kac4KeB4Kay4Ka+4KaHX+CmhuCml+CmuOCnjeCmn1/gprjgp4fgpqrgp43gpp/gp4fgpq7gp43gpqzgprBf4KaF4KaV4KeN4Kaf4KeL4Kas4KawX+CmqOCmreCnh+CmruCnjeCmrOCmsF/gpqHgpr/gprjgp4fgpq7gp43gpqzgprAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+CmnOCmvuCmqOCngV/gpqvgp4fgpqxf4Kau4Ka+4Kaw4KeN4KaaX+Cmj+CmquCnjeCmsF/gpq7gp4df4Kac4KeB4KaoX+CmnOCngeCmsl/gpobgppdf4Ka44KeH4Kaq4KeN4KafX+CmheCmleCnjeCmn+Cni1/gpqjgpq3gp4df4Kah4Ka/4Ka44KeHJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgprDgpqzgpr/gpqzgpr7gprBf4Ka44KeL4Kau4Kas4Ka+4KawX+CmruCmmeCnjeCml+CmsuCmrOCmvuCmsF/gpqzgp4Hgpqfgpqzgpr7gprBf4Kas4KeD4Ka54Ka44KeN4Kaq4Kak4Ka/4Kas4Ka+4KawX+CmtuCngeCmleCnjeCmsOCmrOCmvuCmsF/gprbgpqjgpr/gpqzgpr7gprAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4Kaw4Kas4Ka/X+CmuOCni+Cmrl/gpq7gppngp43gppfgprJf4Kas4KeB4KanX+CmrOCng+CmueCmuOCnjeCmquCmpOCmv1/gprbgp4HgppXgp43gprBf4Ka24Kao4Ka/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfgprDgpqzgpr9f4Ka44KeL4KauX+CmruCmmeCnjeCml1/gpqzgp4Hgpqdf4Kas4KeD4Ka54KaDX+CmtuCngeCmleCnjeCmsF/gprbgpqjgpr8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIOCmuOCmruCnnycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0g4Ka44Kau4KefJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgprjgpq7gp58nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4KaG4KacXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgpobgppfgpr7gpq7gp4DgppXgpr7gprJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+Cml+CmpOCmleCmvuCmsl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+Cml+CmpF0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCmquCmsOCnhycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCmhuCml+CnhycsXG4gICAgICAgICAgICBzIDogJ+CmleCnn+Cnh+CmlSDgprjgp4fgppXgp4fgpqjgp43gpqEnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4Ka44KeH4KaV4KeH4Kao4KeN4KahJyxcbiAgICAgICAgICAgIG0gOiAn4KaP4KaVIOCmruCmv+CmqOCmv+CmnycsXG4gICAgICAgICAgICBtbSA6ICclZCDgpq7gpr/gpqjgpr/gpp8nLFxuICAgICAgICAgICAgaCA6ICfgpo/gppUg4KaY4Kao4KeN4Kaf4Ka+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCmmOCmqOCnjeCmn+CmvicsXG4gICAgICAgICAgICBkIDogJ+Cmj+CmlSDgpqbgpr/gpqgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Kam4Ka/4KaoJyxcbiAgICAgICAgICAgIE0gOiAn4KaP4KaVIOCmruCmvuCmuCcsXG4gICAgICAgICAgICBNTSA6ICclZCDgpq7gpr7gprgnLFxuICAgICAgICAgICAgeSA6ICfgpo/gppUg4Kas4Kab4KawJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCmrOCmm+CmsCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cnp+CnqOCnqeCnquCnq+CnrOCnreCnruCnr+Cnpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CmsOCmvuCmpHzgprjgppXgpr7gprJ84Kam4KeB4Kaq4KeB4KawfOCmrOCmv+CmleCmvuCmsnzgprDgpr7gpqQvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChtZXJpZGllbSA9PT0gJ+CmsOCmvuCmpCcgJiYgaG91ciA+PSA0KSB8fFxuICAgICAgICAgICAgICAgICAgICAobWVyaWRpZW0gPT09ICfgpqbgp4Hgpqrgp4HgprAnICYmIGhvdXIgPCA1KSB8fFxuICAgICAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ+CmrOCmv+CmleCmvuCmsicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmsOCmvuCmpCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Ka44KaV4Ka+4KayJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpqbgp4Hgpqrgp4HgprAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CmrOCmv+CmleCmvuCmsic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kaw4Ka+4KakJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+C8oScsXG4gICAgICAgICcyJzogJ+C8oicsXG4gICAgICAgICczJzogJ+C8oycsXG4gICAgICAgICc0JzogJ+C8pCcsXG4gICAgICAgICc1JzogJ+C8pScsXG4gICAgICAgICc2JzogJ+C8picsXG4gICAgICAgICc3JzogJ+C8pycsXG4gICAgICAgICc4JzogJ+C8qCcsXG4gICAgICAgICc5JzogJ+C8qScsXG4gICAgICAgICcwJzogJ+C8oCdcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+C8oSc6ICcxJyxcbiAgICAgICAgJ+C8oic6ICcyJyxcbiAgICAgICAgJ+C8oyc6ICczJyxcbiAgICAgICAgJ+C8pCc6ICc0JyxcbiAgICAgICAgJ+C8pSc6ICc1JyxcbiAgICAgICAgJ+C8pic6ICc2JyxcbiAgICAgICAgJ+C8pyc6ICc3JyxcbiAgICAgICAgJ+C8qCc6ICc4JyxcbiAgICAgICAgJ+C8qSc6ICc5JyxcbiAgICAgICAgJ+C8oCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgYm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdibycsIHtcbiAgICAgICAgbW9udGhzIDogJ+C9n+C+s+C8i+C9luC8i+C9keC9hOC8i+C9lOC9vF/gvZ/gvrPgvIvgvZbgvIvgvYLgvYngvbLgvabgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2C4L2m4L204L2Y4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9nuC9suC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvaPgvpTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L6y4L204L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9keC9tOC9k+C8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvaLgvpLgvrHgvZHgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2R4L2C4L204LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvYLgvYXgvbLgvYLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2J4L2y4L2m4LyL4L2UJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgvZ/gvrPgvIvgvZbgvIvgvZHgvYTgvIvgvZTgvbxf4L2f4L6z4LyL4L2W4LyL4L2C4L2J4L2y4L2m4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9guC9puC9tOC9mOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZ7gvbLgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2j4L6U4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC+suC9tOC9guC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvZHgvbTgvZPgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2i4L6S4L6x4L2R4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9keC9guC9tOC8i+C9lF/gvZ/gvrPgvIvgvZbgvIvgvZbgvYXgvbTgvIvgvZRf4L2f4L6z4LyL4L2W4LyL4L2W4L2F4L204LyL4L2C4L2F4L2y4L2C4LyL4L2UX+C9n+C+s+C8i+C9luC8i+C9luC9heC9tOC8i+C9guC9ieC9suC9puC8i+C9lCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4L2C4L2f4L2g4LyL4L2J4L2y4LyL4L2Y4LyLX+C9guC9n+C9oOC8i+C9n+C+s+C8i+C9luC8i1/gvYLgvZ/gvaDgvIvgvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2C4L2f4L2g4LyL4L2j4L634L2C4LyL4L2U4LyLX+C9guC9n+C9oOC8i+C9leC9tOC9ouC8i+C9luC9tF/gvYLgvZ/gvaDgvIvgvZTgvIvgvabgvYTgvabgvItf4L2C4L2f4L2g4LyL4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C9ieC9suC8i+C9mOC8i1/gvZ/gvrPgvIvgvZbgvItf4L2Y4L2y4L2C4LyL4L2R4L2Y4L2i4LyLX+C9o+C+t+C9guC8i+C9lOC8i1/gvZXgvbTgvaLgvIvgvZbgvbRf4L2U4LyL4L2m4L2E4L2m4LyLX+C9puC+pOC9uuC9k+C8i+C9lOC8iycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4L2J4L2y4LyL4L2Y4LyLX+C9n+C+s+C8i+C9luC8i1/gvZjgvbLgvYLgvIvgvZHgvZjgvaLgvItf4L2j4L634L2C4LyL4L2U4LyLX+C9leC9tOC9ouC8i+C9luC9tF/gvZTgvIvgvabgvYTgvabgvItf4L2m4L6k4L264L2T4LyL4L2U4LyLJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBBIGg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4L2R4L2y4LyL4L2i4L2y4L2EXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgvabgvYTgvIvgvYngvbLgvZNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vgvZbgvZHgvbTgvZPgvIvgvZXgvrLgvYLgvIvgvaLgvpfgvbrgvabgvIvgvZhdLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgvYHgvIvgvabgvYRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgvZbgvZHgvbTgvZPgvIvgvZXgvrLgvYLgvIvgvZjgvZDgvaDgvIvgvZhdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgvaPgvIsnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgvabgvpTgvZPgvIvgvaMnLFxuICAgICAgICAgICAgcyA6ICfgvaPgvZjgvIvgvabgvYQnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4L2m4L6Q4L2i4LyL4L2G4LyNJyxcbiAgICAgICAgICAgIG0gOiAn4L2m4L6Q4L2i4LyL4L2Y4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOC9puC+kOC9ouC8i+C9mCcsXG4gICAgICAgICAgICBoIDogJ+C9huC9tOC8i+C9muC9vOC9keC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICBoaCA6ICclZCDgvYbgvbTgvIvgvZrgvbzgvZEnLFxuICAgICAgICAgICAgZCA6ICfgvYngvbLgvZPgvIvgvYLgvYXgvbLgvYInLFxuICAgICAgICAgICAgZGQgOiAnJWQg4L2J4L2y4L2T4LyLJyxcbiAgICAgICAgICAgIE0gOiAn4L2f4L6z4LyL4L2W4LyL4L2C4L2F4L2y4L2CJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOC9n+C+s+C8i+C9licsXG4gICAgICAgICAgICB5IDogJ+C9o+C9vOC8i+C9guC9heC9suC9gicsXG4gICAgICAgICAgICB5eSA6ICclZCDgvaPgvbwnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgvKHgvKLgvKPgvKTgvKXgvKbgvKfgvKjgvKngvKBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gvZjgvZrgvZPgvIvgvZjgvbx84L2e4L284L2C4L2m4LyL4L2A4L2mfOC9ieC9suC9k+C8i+C9guC9tOC9hHzgvZHgvYLgvbzgvYTgvIvgvZHgvYJ84L2Y4L2a4L2T4LyL4L2Y4L28LyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyIDogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobWVyaWRpZW0gPT09ICfgvZjgvZrgvZPgvIvgvZjgvbwnICYmIGhvdXIgPj0gNCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKG1lcmlkaWVtID09PSAn4L2J4L2y4L2T4LyL4L2C4L204L2EJyAmJiBob3VyIDwgNSkgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgvZHgvYLgvbzgvYTgvIvgvZHgvYInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZjgvZrgvZPgvIvgvZjgvbwnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9nuC9vOC9guC9puC8i+C9gOC9pic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4L2J4L2y4L2T4LyL4L2C4L204L2EJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgvZHgvYLgvbzgvYTgvIvgvZHgvYInO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C9mOC9muC9k+C8i+C9mOC9vCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24obnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtbSc6ICdtdW51dGVubicsXG4gICAgICAgICAgICAnTU0nOiAnbWl6JyxcbiAgICAgICAgICAgICdkZCc6ICdkZXZlemgnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBtdXRhdGlvbihmb3JtYXRba2V5XSwgbnVtYmVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3BlY2lhbE11dGF0aW9uRm9yWWVhcnMobnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAobGFzdE51bWJlcihudW1iZXIpKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgYmxvYXonO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyB2bG9heic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbGFzdE51bWJlcihudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0TnVtYmVyKG51bWJlciAlIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtdXRhdGlvbih0ZXh0LCBudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIHNvZnRNdXRhdGlvbih0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc29mdE11dGF0aW9uKHRleHQpIHtcbiAgICAgICAgdmFyIG11dGF0aW9uVGFibGUgPSB7XG4gICAgICAgICAgICAnbSc6ICd2JyxcbiAgICAgICAgICAgICdiJzogJ3YnLFxuICAgICAgICAgICAgJ2QnOiAneidcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG11dGF0aW9uVGFibGVbdGV4dC5jaGFyQXQoMCldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtdXRhdGlvblRhYmxlW3RleHQuY2hhckF0KDApXSArIHRleHQuc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIHZhciBiciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2JyJywge1xuICAgICAgICBtb250aHMgOiAnR2VudmVyX0NcXCdod2V2cmVyX01ldXJ6aF9FYnJlbF9NYWVfTWV6aGV2ZW5fR291ZXJlX0Vvc3RfR3dlbmdvbG9fSGVyZV9EdV9LZXJ6dScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnR2VuX0NcXCdod2VfTWV1X0Vicl9NYWVfRXZlX0dvdV9Fb3NfR3dlX0hlcl9EdV9LZXInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1N1bF9MdW5fTWV1cnpoX01lcmNcXCdoZXJfWWFvdV9Hd2VuZXJfU2Fkb3JuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1N1bF9MdW5fTWV1X01lcl9ZYW9fR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU3VfTHVfTWVfTWVyX1lhX0d3X1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2hbZV1tbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoW2VdbW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbYSB2aXpdIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbYSB2aXpdIE1NTU0gWVlZWSBoW2VdbW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2Egdml6XSBNTU1NIFlZWVkgaFtlXW1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSGl6aXYgZGFdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1dhcmNcXCdob2F6aCBkYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0RlY1xcJ2ggZGFdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW3Bhc2V0IGRhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnYS1iZW5uICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgXFwnem8nLFxuICAgICAgICAgICAgcyA6ICd1biBuZWJldWQgc2Vnb25kZW5ub8O5JyxcbiAgICAgICAgICAgIHNzIDogJyVkIGVpbGVubicsXG4gICAgICAgICAgICBtIDogJ3VyIHZ1bnV0ZW5uJyxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgaCA6ICd1biBldXInLFxuICAgICAgICAgICAgaGggOiAnJWQgZXVyJyxcbiAgICAgICAgICAgIGQgOiAndW4gZGV2ZXpoJyxcbiAgICAgICAgICAgIGRkIDogcmVsYXRpdmVUaW1lV2l0aE11dGF0aW9uLFxuICAgICAgICAgICAgTSA6ICd1ciBtaXonLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoTXV0YXRpb24sXG4gICAgICAgICAgICB5IDogJ3VyIGJsb2F6JyxcbiAgICAgICAgICAgIHl5IDogc3BlY2lhbE11dGF0aW9uRm9yWWVhcnNcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGHDsXx2ZXQpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAobnVtYmVyID09PSAxKSA/ICdhw7EnIDogJ3ZldCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBicjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmRlJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkbmEgbWludXRhJyA6ICdqZWRuZSBtaW51dGUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWludXRhJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2plZGFuIHNhdCcgOiAnamVkbm9nIHNhdGEnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyIHx8IG51bWJlciA9PT0gMyB8fCBudW1iZXIgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzYXRhJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZGFuYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlYyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21qZXNlY2EnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdnb2RpbmEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnYnMnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJhcl9va3RvYmFyX25vdmVtYmFyX2RlY2VtYmFyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSAgOiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJpamUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ3BhciBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ21qZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjYScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ2dlbmVyX2ZlYnJlcl9tYXLDp19hYnJpbF9tYWlnX2p1bnlfanVsaW9sX2Fnb3N0X3NldGVtYnJlX29jdHVicmVfbm92ZW1icmVfZGVzZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBmb3JtYXQ6ICdkZSBnZW5lcl9kZSBmZWJyZXJfZGUgbWFyw6dfZFxcJ2FicmlsX2RlIG1haWdfZGUganVueV9kZSBqdWxpb2xfZFxcJ2Fnb3N0X2RlIHNldGVtYnJlX2RcXCdvY3R1YnJlX2RlIG5vdmVtYnJlX2RlIGRlc2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxzKStNTU1NL1xuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW4uX2ZlYnIuX21hcsOnX2Fici5fbWFpZ19qdW55X2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RnX2RsX2R0X2RjX2RqX2R2X2RzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgbGwgOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFtkZV0gWVlZWSBbYSBsZXNdIEg6bW0nLFxuICAgICAgICAgICAgbGxsIDogJ0QgTU1NIFlZWVksIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBbZGVdIFlZWVkgW2EgbGVzXSBIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkIEQgTU1NIFlZWVksIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1thdnVpIGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tkZW3DoCBhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnbGVzJyA6ICdsYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2FoaXIgYSAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ2xlcycgOiAnbGEnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tlbF0gZGRkZCBbcGFzc2F0IGEgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdsZXMnIDogJ2xhJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RcXCdhcXXDrSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2ZhICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5zIHNlZ29ucycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWdvbnMnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHMnLFxuICAgICAgICAgICAgaCA6ICd1bmEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JlcycsXG4gICAgICAgICAgICBkIDogJ3VuIGRpYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkaWVzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc29zJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW55JyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFueXMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShyfG58dHzDqHxhKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAobnVtYmVyID09PSAxKSA/ICdyJyA6XG4gICAgICAgICAgICAgICAgKG51bWJlciA9PT0gMikgPyAnbicgOlxuICAgICAgICAgICAgICAgIChudW1iZXIgPT09IDMpID8gJ3InIDpcbiAgICAgICAgICAgICAgICAobnVtYmVyID09PSA0KSA/ICd0JyA6ICfDqCc7XG4gICAgICAgICAgICBpZiAocGVyaW9kID09PSAndycgfHwgcGVyaW9kID09PSAnVycpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnYSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9ICdsZWRlbl/Dum5vcl9ixZllemVuX2R1YmVuX2t2xJt0ZW5fxI1lcnZlbl/EjWVydmVuZWNfc3JwZW5fesOhxZnDrV/FmcOtamVuX2xpc3RvcGFkX3Byb3NpbmVjJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3Bybycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmxlZC9pLCAvXsO6bm8vaSwgL15ixZllL2ksIC9eZHViL2ksIC9ea3bEmy9pLCAvXijEjXZufMSNZXJ2ZW4kfMSNZXJ2bmEpL2ksIC9eKMSNdmN8xI1lcnZlbmVjfMSNZXJ2ZW5jZSkvaSwgL15zcnAvaSwgL156w6HFmS9pLCAvXsWZw61qL2ksIC9ebGlzL2ksIC9ecHJvL2ldO1xuICAgIC8vIE5PVEU6ICfEjWVydmVuJyBpcyBzdWJzdHJpbmcgb2YgJ8SNZXJ2ZW5lYyc7IHRoZXJlZm9yZSAnxI1lcnZlbmVjJyBtdXN0IHByZWNlZGUgJ8SNZXJ2ZW4nIGluIHRoZSByZWdleCB0byBiZSBmdWxseSBtYXRjaGVkLlxuICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGxlZGVufMO6bm9yfGLFmWV6ZW58ZHViZW58a3bEm3RlbnzEjWVydmVuZWN8xI1lcnZlbmNlfMSNZXJ2ZW58xI1lcnZuYXxzcnBlbnx6w6HFmcOtfMWZw61qZW58bGlzdG9wYWR8cHJvc2luZWN8bGVkfMO6bm98YsWZZXxkdWJ8a3bEm3zEjXZufMSNdmN8c3JwfHrDocWZfMWZw61qfGxpc3xwcm8pL2k7XG5cbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICByZXR1cm4gKG4gPiAxKSAmJiAobiA8IDUpICYmICh+fihuIC8gMTApICE9PSAxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6ICAvLyBhIGZldyBzZWNvbmRzIC8gaW4gYSBmZXcgc2Vjb25kcyAvIGEgZmV3IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdww6FyIHNla3VuZCcgOiAncMOhciBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOiAvLyA5IHNlY29uZHMgLyBpbiA5IHNlY29uZHMgLyA5IHNlY29uZHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdzZWt1bmR5JyA6ICdzZWt1bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla3VuZGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6ICAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWludXRhJyA6IChpc0Z1dHVyZSA/ICdtaW51dHUnIDogJ21pbnV0b3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzogLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWludXR5JyA6ICdtaW51dCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2gnOiAgLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiAoaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91Jyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6IC8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8gOSBob3VycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kaW4nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2hvZGluYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkJzogIC8vIGEgZGF5IC8gaW4gYSBkYXkgLyBhIGRheSBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ2RlbicgOiAnZG5lbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2RueScgOiAnZG7DrScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZG55JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzogIC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ23Em3PDrWMnIDogJ23Em3PDrWNlbSc7XG4gICAgICAgICAgICBjYXNlICdNTSc6IC8vIDkgbW9udGhzIC8gaW4gOSBtb250aHMgLyA5IG1vbnRocyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ23Em3PDrWNlJyA6ICdtxJtzw61jxa8nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23Em3PDrWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd5JzogIC8vIGEgeWVhciAvIGluIGEgeWVhciAvIGEgeWVhciBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ3JvaycgOiAncm9rZW0nO1xuICAgICAgICAgICAgY2FzZSAneXknOiAvLyA5IHllYXJzIC8gaW4gOSB5ZWFycyAvIDkgeWVhcnMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdyb2t5JyA6ICdsZXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2xldHknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2NzJywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzU2hvcnQsXG4gICAgICAgIG1vbnRoc1JlZ2V4IDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXggOiBtb250aHNSZWdleCxcbiAgICAgICAgLy8gTk9URTogJ8SNZXJ2ZW4nIGlzIHN1YnN0cmluZyBvZiAnxI1lcnZlbmVjJzsgdGhlcmVmb3JlICfEjWVydmVuZWMnIG11c3QgcHJlY2VkZSAnxI1lcnZlbicgaW4gdGhlIHJlZ2V4IHRvIGJlIGZ1bGx5IG1hdGNoZWQuXG4gICAgICAgIC8vIE90aGVyd2lzZSBwYXJzZXIgbWF0Y2hlcyAnMS4gxI1lcnZlbmVjJyBhcyAnMS4gxI1lcnZlbicgKyAnZWMnLlxuICAgICAgICBtb250aHNTdHJpY3RSZWdleCA6IC9eKGxlZGVufGxlZG5hfMO6bm9yYXzDum5vcnxixZllemVufGLFmWV6bmF8ZHViZW58ZHVibmF8a3bEm3RlbnxrdsSbdG5hfMSNZXJ2ZW5lY3zEjWVydmVuY2V8xI1lcnZlbnzEjWVydm5hfHNycGVufHNycG5hfHrDocWZw618xZnDrWplbnzFmcOtam5hfGxpc3RvcGFkdXxsaXN0b3BhZHxwcm9zaW5lY3xwcm9zaW5jZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleCA6IC9eKGxlZHzDum5vfGLFmWV8ZHVifGt2xJt8xI12bnzEjXZjfHNycHx6w6HFmXzFmcOtanxsaXN8cHJvKS9pLFxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICduZWTEm2xlX3BvbmTEm2zDrV/DunRlcsO9X3N0xZllZGFfxI10dnJ0ZWtfcMOhdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZV9wb1/DunRfc3RfxI10X3DDoV9zbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBsIDogJ0QuIE0uIFlZWVknXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkbmVzIHZdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbesOtdHJhIHZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3YgbmVkxJtsaSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2ZSBzdMWZZWR1IHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdmUgxI10dnJ0ZWsgdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHDDoXRlayB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc29ib3R1IHZdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmEgdl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWxvdSBuZWTEm2xpIHZdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMOpXSBkZGRkIFt2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsb3Ugc3TFmWVkdSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDvV0gZGRkZCBbdl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bG91IHNvYm90dSB2XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3phICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAncMWZZWQgJXMnLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGRkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgY3YgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdjdicsIHtcbiAgICAgICAgbW9udGhzIDogJ9C605HRgNC70LDRh1/QvdCw0YDTkdGBX9C/0YPRiF/QsNC60LBf0LzQsNC5X9Kr05fRgNGC0LzQtV/Rg9GC05Ff0qvRg9GA0LvQsF/QsNCy05HQvV/RjtC/0LBf0YfTs9C6X9GA0LDRiNGC0LDQsicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0LrTkdGAX9C90LDRgF/Qv9GD0Yhf0LDQutCwX9C80LDQuV/Sq9OX0YBf0YPRgtORX9Kr0YPRgF/QsNCy0L1f0Y7Qv9CwX9GH07PQul/RgNCw0YgnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9Cy0YvRgNGB0LDRgNC90LjQutGD0L1f0YLRg9C90YLQuNC60YPQvV/Ri9GC0LvQsNGA0LjQutGD0L1f0Y7QvdC60YPQvV/QutOX0qvQvdC10YDQvdC40LrRg9C9X9GN0YDQvdC10LrRg9C9X9GI05HQvNCw0YLQutGD0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn0LLRi9GAX9GC0YPQvV/Ri9GC0Ltf0Y7QvV/QutOX0qtf0Y3RgNC9X9GI05HQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0LLRgF/RgtC9X9GL0YJf0Y7QvV/QutKrX9GN0YBf0YjQvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC1NTS1ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkgW9Kr0YPQu9GF0LhdIE1NTU0gW9GD0LnTkdGF05fQvV0gRFst0LzTl9GI05ddJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBZWVlZIFvSq9GD0LvRhdC4XSBNTU1NIFvRg9C505HRhdOX0L1dIERbLdC805fRiNOXXSwgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQn9Cw0Y/QvV0gTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW9Cr0YDQsNC9XSBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb05bQvdC10YBdIExUIFvRgdC10YXQtdGC0YDQtV0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb0qrQuNGC0LXRgV0gZGRkZCBMVCBb0YHQtdGF0LXRgtGA0LVdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9CY0YDRgtC905ddIGRkZGQgTFQgW9GB0LXRhdC10YLRgNC1XScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9uIChvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYWZmaXggPSAv0YHQtdGF0LXRgiQvaS5leGVjKG91dHB1dCkgPyAn0YDQtdC9JyA6IC/Sq9GD0LskL2kuZXhlYyhvdXRwdXQpID8gJ9GC0LDQvScgOiAn0YDQsNC9JztcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgYWZmaXg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQutCw0Y/Qu9C70LAnLFxuICAgICAgICAgICAgcyA6ICfQv9OX0YAt0LjQuiDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBzcyA6ICclZCDSq9C10LrQutGD0L3RgicsXG4gICAgICAgICAgICBtIDogJ9C/05fRgCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaCA6ICfQv9OX0YAg0YHQtdGF0LXRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdC10YXQtdGCJyxcbiAgICAgICAgICAgIGQgOiAn0L/Tl9GAINC60YPQvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutGD0L0nLFxuICAgICAgICAgICAgTSA6ICfQv9OX0YAg0YPQudOR0YUnLFxuICAgICAgICAgICAgTU0gOiAnJWQg0YPQudOR0YUnLFxuICAgICAgICAgICAgeSA6ICfQv9OX0YAg0qvRg9C7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINKr0YPQuydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LdC805fRiC8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQt0LzTl9GIJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Y7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBjeSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2N5Jywge1xuICAgICAgICBtb250aHM6ICdJb25hd3JfQ2h3ZWZyb3JfTWF3cnRoX0VicmlsbF9NYWlfTWVoZWZpbl9Hb3JmZmVubmFmX0F3c3RfTWVkaV9IeWRyZWZfVGFjaHdlZGRfUmhhZ2Z5cicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdJb25fQ2h3ZV9NYXdfRWJyX01haV9NZWhfR29yX0F3c19NZWRfSHlkX1RhY2hfUmhhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXM6ICdEeWRkIFN1bF9EeWRkIExsdW5fRHlkZCBNYXdydGhfRHlkZCBNZXJjaGVyX0R5ZGQgSWF1X0R5ZGQgR3dlbmVyX0R5ZGQgU2Fkd3JuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU3VsX0xsdW5fTWF3X01lcl9JYXVfR3dlX1NhZCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICdTdV9MbF9NYV9NZV9JYV9Hd19TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgLy8gdGltZSBmb3JtYXRzIGFyZSB0aGUgc2FtZSBhcyBlbi1nYlxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hlZGRpdyBhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tZZm9yeSBhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tEZG9lIGFtXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW2Rpd2V0aGFmIGFtXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnbWV3biAlcycsXG4gICAgICAgICAgICBwYXN0OiAnJXMgeW4gw7RsJyxcbiAgICAgICAgICAgIHM6ICd5Y2h5ZGlnIGVpbGlhZGF1JyxcbiAgICAgICAgICAgIHNzOiAnJWQgZWlsaWFkJyxcbiAgICAgICAgICAgIG06ICdtdW51ZCcsXG4gICAgICAgICAgICBtbTogJyVkIG11bnVkJyxcbiAgICAgICAgICAgIGg6ICdhd3InLFxuICAgICAgICAgICAgaGg6ICclZCBhd3InLFxuICAgICAgICAgICAgZDogJ2Rpd3Jub2QnLFxuICAgICAgICAgICAgZGQ6ICclZCBkaXdybm9kJyxcbiAgICAgICAgICAgIE06ICdtaXMnLFxuICAgICAgICAgICAgTU06ICclZCBtaXMnLFxuICAgICAgICAgICAgeTogJ2Jsd3lkZHluJyxcbiAgICAgICAgICAgIHl5OiAnJWQgZmx5bmVkZCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGZlZHxhaW58YWZ8aWx8eWRkfGVkfGVnKS8sXG4gICAgICAgIC8vIHRyYWRpdGlvbmFsIG9yZGluYWwgbnVtYmVycyBhYm92ZSAzMSBhcmUgbm90IGNvbW1vbmx5IHVzZWQgaW4gY29sbG9xdWlhbCBXZWxzaFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlcixcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAnJyxcbiAgICAgICAgICAgICAgICBsb29rdXAgPSBbXG4gICAgICAgICAgICAgICAgICAgICcnLCAnYWYnLCAnaWwnLCAneWRkJywgJ3lkZCcsICdlZCcsICdlZCcsICdlZCcsICdmZWQnLCAnZmVkJywgJ2ZlZCcsIC8vIDFhZiB0byAxMGZlZFxuICAgICAgICAgICAgICAgICAgICAnZWcnLCAnZmVkJywgJ2VnJywgJ2VnJywgJ2ZlZCcsICdlZycsICdlZycsICdmZWQnLCAnZWcnLCAnZmVkJyAvLyAxMWVnIHRvIDIwZmVkXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChiID4gMjApIHtcbiAgICAgICAgICAgICAgICBpZiAoYiA9PT0gNDAgfHwgYiA9PT0gNTAgfHwgYiA9PT0gNjAgfHwgYiA9PT0gODAgfHwgYiA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICdmZWQnOyAvLyBub3QgMzBhaW4sIDcwYWluIG9yIDkwYWluXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gJ2Fpbic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChiID4gMCkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IGxvb2t1cFtiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN5O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZGEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkYScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcl9mZWJydWFyX21hcnRzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzw7huX21hbl90aXJfb25zX3Rvcl9mcmVfbMO4cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc8O4X21hX3RpX29uX3RvX2ZyX2zDuCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBbZC5dIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tpIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2kgbW9yZ2VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAncMOlIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbaSBnw6VyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2ldIGRkZGRbcyBrbC5dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpZGVuJyxcbiAgICAgICAgICAgIHMgOiAnZsOlIHNla3VuZGVyJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNla3VuZGVyJyxcbiAgICAgICAgICAgIG0gOiAnZXQgbWludXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0ZXInLFxuICAgICAgICAgICAgaCA6ICdlbiB0aW1lJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHRpbWVyJyxcbiAgICAgICAgICAgIGQgOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2UnLFxuICAgICAgICAgICAgTSA6ICdlbiBtw6VuZWQnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOlbmVkZXInLFxuICAgICAgICAgICAgeSA6ICdldCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ20nOiBbJ2VpbmUgTWludXRlJywgJ2VpbmVyIE1pbnV0ZSddLFxuICAgICAgICAgICAgJ2gnOiBbJ2VpbmUgU3R1bmRlJywgJ2VpbmVyIFN0dW5kZSddLFxuICAgICAgICAgICAgJ2QnOiBbJ2VpbiBUYWcnLCAnZWluZW0gVGFnJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBUYWdlJywgbnVtYmVyICsgJyBUYWdlbiddLFxuICAgICAgICAgICAgJ00nOiBbJ2VpbiBNb25hdCcsICdlaW5lbSBNb25hdCddLFxuICAgICAgICAgICAgJ01NJzogW251bWJlciArICcgTW9uYXRlJywgbnVtYmVyICsgJyBNb25hdGVuJ10sXG4gICAgICAgICAgICAneSc6IFsnZWluIEphaHInLCAnZWluZW0gSmFociddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgSmFocmUnLCBudW1iZXIgKyAnIEphaHJlbiddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZGUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW4uX0ZlYi5fTcOkcnpfQXByLl9NYWlfSnVuaV9KdWxpX0F1Zy5fU2VwLl9Pa3QuX05vdi5fRGV6Licuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ1Nvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ1NvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAndm9yICVzJyxcbiAgICAgICAgICAgIHMgOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1JlbGF0aXZlVGltZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHtcbiAgICAgICAgICAgICdtJzogWydlaW5lIE1pbnV0ZScsICdlaW5lciBNaW51dGUnXSxcbiAgICAgICAgICAgICdoJzogWydlaW5lIFN0dW5kZScsICdlaW5lciBTdHVuZGUnXSxcbiAgICAgICAgICAgICdkJzogWydlaW4gVGFnJywgJ2VpbmVtIFRhZyddLFxuICAgICAgICAgICAgJ2RkJzogW251bWJlciArICcgVGFnZScsIG51bWJlciArICcgVGFnZW4nXSxcbiAgICAgICAgICAgICdNJzogWydlaW4gTW9uYXQnLCAnZWluZW0gTW9uYXQnXSxcbiAgICAgICAgICAgICdNTSc6IFtudW1iZXIgKyAnIE1vbmF0ZScsIG51bWJlciArICcgTW9uYXRlbiddLFxuICAgICAgICAgICAgJ3knOiBbJ2VpbiBKYWhyJywgJ2VpbmVtIEphaHInXSxcbiAgICAgICAgICAgICd5eSc6IFtudW1iZXIgKyAnIEphaHJlJywgbnVtYmVyICsgJyBKYWhyZW4nXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1hdFtrZXldWzBdIDogZm9ybWF0W2tleV1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRlQXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdkZS1hdCcsIHtcbiAgICAgICAgbW9udGhzIDogJ0rDpG5uZXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSsOkbi5fRmViLl9Nw6Ryel9BcHIuX01haV9KdW5pX0p1bGlfQXVnLl9TZXAuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2hldXRlIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2VzdGVybiB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICd2b3IgJXMnLFxuICAgICAgICAgICAgcyA6ICdlaW4gcGFhciBTZWt1bmRlbicsXG4gICAgICAgICAgICBzcyA6ICclZCBTZWt1bmRlbicsXG4gICAgICAgICAgICBtIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tIDogJyVkIE1pbnV0ZW4nLFxuICAgICAgICAgICAgaCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCA6ICclZCBTdHVuZGVuJyxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlQXQ7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnbSc6IFsnZWluZSBNaW51dGUnLCAnZWluZXIgTWludXRlJ10sXG4gICAgICAgICAgICAnaCc6IFsnZWluZSBTdHVuZGUnLCAnZWluZXIgU3R1bmRlJ10sXG4gICAgICAgICAgICAnZCc6IFsnZWluIFRhZycsICdlaW5lbSBUYWcnXSxcbiAgICAgICAgICAgICdkZCc6IFtudW1iZXIgKyAnIFRhZ2UnLCBudW1iZXIgKyAnIFRhZ2VuJ10sXG4gICAgICAgICAgICAnTSc6IFsnZWluIE1vbmF0JywgJ2VpbmVtIE1vbmF0J10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBNb25hdGUnLCBudW1iZXIgKyAnIE1vbmF0ZW4nXSxcbiAgICAgICAgICAgICd5JzogWydlaW4gSmFocicsICdlaW5lbSBKYWhyJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyBKYWhyZScsIG51bWJlciArICcgSmFocmVuJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBkZUNoID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZGUtY2gnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuLl9GZWIuX03DpHJ6X0Fwci5fTWFpX0p1bmlfSnVsaV9BdWcuX1NlcC5fT2t0Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU29fTW9fRGlfTWlfRG9fRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1toZXV0ZSB1bV0gTFQgW1Vocl0nLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9yZ2VuIHVtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW3VtXSBMVCBbVWhyXScsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2dlc3Rlcm4gdW1dIExUIFtVaHJdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAndm9yICVzJyxcbiAgICAgICAgICAgIHMgOiAnZWluIHBhYXIgU2VrdW5kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2VrdW5kZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dGVuJyxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiAnJWQgU3R1bmRlbicsXG4gICAgICAgICAgICBkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5eSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZUNoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn3pberN6C3qreh96m3oPeqScsXG4gICAgICAgICfeit6s3oTesN6D3qreh96m3oPeqScsXG4gICAgICAgICfeid6n3oPeqN6X3qonLFxuICAgICAgICAn3oferd6V3rDeg96p3o3eqicsXG4gICAgICAgICfeid6tJyxcbiAgICAgICAgJ96W3qvegt6wJyxcbiAgICAgICAgJ96W3qrejd6m3ofeqCcsXG4gICAgICAgICfeh96v3o7ept6Q3rDek96qJyxcbiAgICAgICAgJ96Q3qzeld6w3pPerN6J3rDehN6m3oPeqicsXG4gICAgICAgICfeh96u3obesN6T3q/ehN6m3oPeqicsXG4gICAgICAgICfegt6u3ojerN6J3rDehN6m3oPeqicsXG4gICAgICAgICfekd6o3pDerN6J3rDehN6m3oPeqidcbiAgICBdLCB3ZWVrZGF5cyA9IFtcbiAgICAgICAgJ96H3qfei96o3ofesN6M3qYnLFxuICAgICAgICAn3oDer96J3qYnLFxuICAgICAgICAn3ofept6C3rDejt6n3oPepicsXG4gICAgICAgICfehN6q3ovepicsXG4gICAgICAgICfehN6q3oPep96Q3rDeit6m3ozeqCcsXG4gICAgICAgICfegN6q3obeqt6D3qonLFxuICAgICAgICAn3oDert6C3qjegN6o3oPeqidcbiAgICBdO1xuXG4gICAgdmFyIGR2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZHYnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiB3ZWVrZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn3ofep96L3qhf3oDer96J3qZf3ofept6C3rBf3oTeqt6L3qZf3oTeqt6D3qdf3oDeqt6G3qpf3oDert6C3qgnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuXG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdEL00vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv3onehnzeid6KLyxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICfeid6KJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3onehic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn3oneiic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb3oneqN6H3qbei96qXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1veid6n3ovept6J3qddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb3ofeqN6H3rDelN6sXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb3orep96H3qjejN6q3ojeqF0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn3ozerN6D3q3ejt6m3ofeqCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ96G3qreg96o3oLesCAlcycsXG4gICAgICAgICAgICBzIDogJ96Q3qjeht6q3oLesN6M3qreht6u3oXerN6H3rAnLFxuICAgICAgICAgICAgc3MgOiAnZCUg3pDeqN6G3qregt6w3ozeqicsXG4gICAgICAgICAgICBtIDogJ96J3qjegt6o3pPerN6H3rAnLFxuICAgICAgICAgICAgbW0gOiAn3oneqN6C3qjek96qICVkJyxcbiAgICAgICAgICAgIGggOiAn3o7ept6R3qjeh96o3oPerN6H3rAnLFxuICAgICAgICAgICAgaGggOiAn3o7ept6R3qjeh96o3oPeqiAlZCcsXG4gICAgICAgICAgICBkIDogJ96L3qreiN6m3oDerN6H3rAnLFxuICAgICAgICAgICAgZGQgOiAn3oveqt6I3qbekN6wICVkJyxcbiAgICAgICAgICAgIE0gOiAn3onept6A3qzeh96wJyxcbiAgICAgICAgICAgIE1NIDogJ96J3qbekN6wICVkJyxcbiAgICAgICAgICAgIHkgOiAn3ofept6A3qbeg96s3ofesCcsXG4gICAgICAgICAgICB5eSA6ICfeh96m3oDept6D3qogJWQnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDcsICAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZHY7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cbiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gICAgfVxuXG5cbiAgICB2YXIgZWwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbCcsIHtcbiAgICAgICAgbW9udGhzTm9taW5hdGl2ZUVsIDogJ86ZzrHOvc6/z4XOrM+BzrnOv8+CX86mzrXOss+Bzr/Phc6sz4HOuc6/z4JfzpzOrM+Bz4TOuc6/z4JfzpHPgM+Bzq/Ou865zr/Pgl/OnM6szrnOv8+CX86Zzr/Pjc69zrnOv8+CX86Zzr/Pjc67zrnOv8+CX86Rz43Os86/z4XPg8+Ezr/Pgl/Oo861z4DPhM6tzrzOss+BzrnOv8+CX86fzrrPhM+OzrLPgc65zr/Pgl/Onc6/zq3OvM6yz4HOuc6/z4JfzpTOtc66zq3OvM6yz4HOuc6/z4InLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc0dlbml0aXZlRWwgOiAnzpnOsc69zr/Phc6xz4HOr86/z4VfzqbOtc6yz4HOv8+FzrHPgc6vzr/PhV/OnM6xz4HPhM6vzr/PhV/Okc+Az4HOuc67zq/Ov8+FX86czrHOkM6/z4VfzpnOv8+Fzr3Or86/z4VfzpnOv8+FzrvOr86/z4VfzpHPhc6zzr/Pjc+Dz4TOv8+FX86jzrXPgM+EzrXOvM6yz4HOr86/z4Vfzp/Ous+Ez4nOss+Bzq/Ov8+FX86dzr/Otc68zrLPgc6vzr/PhV/OlM61zrrOtc68zrLPgc6vzr/PhScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzIDogZnVuY3Rpb24gKG1vbWVudFRvRm9ybWF0LCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50VG9Gb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnc3RyaW5nJyAmJiAvRC8udGVzdChmb3JtYXQuc3Vic3RyaW5nKDAsIGZvcm1hdC5pbmRleE9mKCdNTU1NJykpKSkgeyAvLyBpZiB0aGVyZSBpcyBhIGRheSBudW1iZXIgYmVmb3JlICdNTU1NJ1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNHZW5pdGl2ZUVsW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICfOmc6xzr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/Phc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zronLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ86az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68X86gzrHPgV/Oo86xzrInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ86az4VfzpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ868zrwnIDogJ86czpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfPgM68JyA6ICfOoM6cJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKVswXSA9PT0gJ868Jyk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2UgOiAvW86gzpxdXFwuP86cP1xcLj8vaSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXJFbCA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW86jzq7OvM61z4HOsSB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbzpHPjc+BzrnOvyB7fV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbe31dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW86nzrjOtc+CIHt9XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbz4TOvyDPgM+Bzr/Ot86zzr/Pjc68zrXOvc6/XSBkZGRkIFt7fV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbz4TOt869IM+Az4HOv863zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDogZnVuY3Rpb24gKGtleSwgbW9tKSB7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJFbFtrZXldLFxuICAgICAgICAgICAgICAgIGhvdXJzID0gbW9tICYmIG1vbS5ob3VycygpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ob3V0cHV0KSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5hcHBseShtb20pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dHB1dC5yZXBsYWNlKCd7fScsIChob3VycyAlIDEyID09PSAxID8gJ8+Dz4TOtycgOiAnz4PPhM65z4InKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfPg861ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgz4DPgc65zr0nLFxuICAgICAgICAgICAgcyA6ICfOu86vzrPOsSDOtM61z4XPhM61z4HPjM67zrXPgM+EzrEnLFxuICAgICAgICAgICAgc3MgOiAnJWQgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xJyxcbiAgICAgICAgICAgIG0gOiAnzq3Ovc6xIM67zrXPgM+Ez4wnLFxuICAgICAgICAgICAgbW0gOiAnJWQgzrvOtc+Az4TOrCcsXG4gICAgICAgICAgICBoIDogJ868zq/OsSDPjs+BzrEnLFxuICAgICAgICAgICAgaGggOiAnJWQgz47Pgc61z4InLFxuICAgICAgICAgICAgZCA6ICfOvM6vzrEgzrzOrc+BzrEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgzrzOrc+BzrXPgicsXG4gICAgICAgICAgICBNIDogJ86tzr3Osc+CIM68zq7Ovc6xz4InLFxuICAgICAgICAgICAgTU0gOiAnJWQgzrzOrs69zrXPgicsXG4gICAgICAgICAgICB5IDogJ86tzr3Osc+CIM+Hz4HPjM69zr/PgicsXG4gICAgICAgICAgICB5eSA6ICclZCDPh8+Bz4zOvc65zrEnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfc63LyxcbiAgICAgICAgb3JkaW5hbDogJyVkzrcnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0c3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuU0cgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1TRycsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuU0c7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbkF1ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tYXUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5BdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuQ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1jYScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBMTCA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBNTU1NIEQsIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZHMnLFxuICAgICAgICAgICAgbSA6ICdhIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAnYW4gaG91cicsXG4gICAgICAgICAgICBoaCA6ICclZCBob3VycycsXG4gICAgICAgICAgICBkIDogJ2EgZGF5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRheXMnLFxuICAgICAgICAgICAgTSA6ICdhIG1vbnRoJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgICAgICB5IDogJ2EgeWVhcicsXG4gICAgICAgICAgICB5eSA6ICclZCB5ZWFycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHN0fG5kfHJkfHRoKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5DYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVuR2IgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlbi1nYicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuR2I7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbkllID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taWUnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1RvbW9ycm93IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbTGFzdF0gZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdpbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGFnbycsXG4gICAgICAgICAgICBzIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kcycsXG4gICAgICAgICAgICBtIDogJ2EgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICdhbiBob3VyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgICAgIGQgOiAnYSBkYXknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGF5cycsXG4gICAgICAgICAgICBNIDogJ2EgbW9udGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9udGhzJyxcbiAgICAgICAgICAgIHkgOiAnYSB5ZWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbklsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4taWwnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW1RvZGF5IGF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tUb21vcnJvdyBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1llc3RlcmRheSBhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0xhc3RdIGRkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZ28nLFxuICAgICAgICAgICAgcyA6ICdhIGZldyBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVuSWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBlbk56ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW4tbnonLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUb2RheSBhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2F0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tZZXN0ZXJkYXkgYXRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYWdvJyxcbiAgICAgICAgICAgIHMgOiAnYSBmZXcgc2Vjb25kcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgICAgIG0gOiAnYSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ2FuIGhvdXInLFxuICAgICAgICAgICAgaGggOiAnJWQgaG91cnMnLFxuICAgICAgICAgICAgZCA6ICdhIGRheScsXG4gICAgICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgICAgIE0gOiAnYSBtb250aCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtb250aHMnLFxuICAgICAgICAgICAgeSA6ICdhIHllYXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWVhcnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdHxuZHxyZHx0aCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAofn4obnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5OejtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGVvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZW8nLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJvX2ZlYnJ1YXJvX21hcnRvX2Fwcmlsb19tYWpvX2p1bmlvX2p1bGlvX2HFrWd1c3RvX3NlcHRlbWJyb19va3RvYnJvX25vdmVtYnJvX2RlY2VtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYcWtZ19zZXBfb2t0X25vdl9kZWMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuxIlvX2x1bmRvX21hcmRvX21lcmtyZWRvX8S1YcWtZG9fdmVuZHJlZG9fc2FiYXRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RpbV9sdW5fbWFyZF9tZXJrX8S1YcWtX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RpX2x1X21hX21lX8S1YV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ0RbLWEgZGVdIE1NTU0sIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0RbLWEgZGVdIE1NTU0sIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBbbGFdIERbLWEgZGVdIE1NTU0sIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9bYXBdXFwudFxcLm0vaSxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgPT09ICdwJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAncC50Lm0uJyA6ICdQLlQuTS4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdhLnQubS4nIDogJ0EuVC5NLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSG9kaWHFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbTW9yZ2HFrSBqZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbamVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0hpZXJhxa0gamVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1twYXNpbnRhXSBkZGRkIFtqZV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3Bvc3QgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdhbnRhxa0gJXMnLFxuICAgICAgICAgICAgcyA6ICdzZWt1bmRvaicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWt1bmRvaicsXG4gICAgICAgICAgICBtIDogJ21pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9qJyxcbiAgICAgICAgICAgIGggOiAnaG9ybycsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JvaicsXG4gICAgICAgICAgICBkIDogJ3RhZ28nLC8vbmUgJ2RpdXJubycsIMSJYXIgZXN0YXMgdXppdGEgcG9yIHByb2tzaW11bW9cbiAgICAgICAgICAgIGRkIDogJyVkIHRhZ29qJyxcbiAgICAgICAgICAgIE0gOiAnbW9uYXRvJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vbmF0b2onLFxuICAgICAgICAgICAgeSA6ICdqYXJvJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGphcm9qJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1hLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZGEnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmVuZS9pLCAvXmZlYi9pLCAvXm1hci9pLCAvXmFici9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmFnby9pLCAvXnNlcC9pLCAvXm9jdC9pLCAvXm5vdi9pLCAvXmRpYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZXMnLCB7XG4gICAgICAgIG1vbnRocyA6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6IGZ1bmN0aW9uIChtLCBmb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90W20ubW9udGgoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1JlZ2V4IDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXggOiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXggOiAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4IDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzIDogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYcOxb3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzU2hvcnREb3QgPSAnZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpO1xuXG4gICAgdmFyIG1vbnRoc1BhcnNlID0gWy9eZW5lL2ksIC9eZmViL2ksIC9ebWFyL2ksIC9eYWJyL2ksIC9ebWF5L2ksIC9eanVuL2ksIC9eanVsL2ksIC9eYWdvL2ksIC9ec2VwL2ksIC9eb2N0L2ksIC9ebm92L2ksIC9eZGljL2ldO1xuICAgIHZhciBtb250aHNSZWdleCA9IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmV8ZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2k7XG5cbiAgICB2YXIgZXNEbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2VzLWRvJywge1xuICAgICAgICBtb250aHMgOiAnZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0W20ubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydERvdFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oZW5lcm98ZmVicmVyb3xtYXJ6b3xhYnJpbHxtYXlvfGp1bmlvfGp1bGlvfGFnb3N0b3xzZXB0aWVtYnJlfG9jdHVicmV8bm92aWVtYnJlfGRpY2llbWJyZSkvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oZW5lXFwuP3xmZWJcXC4/fG1hclxcLj98YWJyXFwuP3xtYXlcXC4/fGp1blxcLj98anVsXFwuP3xhZ29cXC4/fHNlcFxcLj98b2N0XFwuP3xub3ZcXC4/fGRpY1xcLj8pL2ksXG4gICAgICAgIG1vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21pX2p1X3ZpX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2hveSBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXh0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW21hw7FhbmEgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIFthIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2F5ZXIgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICdzJyA6ICcnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdoYWNlICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5vcyBzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW5hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYcOxbycsXG4gICAgICAgICAgICB5eSA6ICclZCBhw7FvcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbCA6ICclZMK6JyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXNEbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0RG90ID0gJ2VuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA9ICdlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmVuZS9pLCAvXmZlYi9pLCAvXm1hci9pLCAvXmFici9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmFnby9pLCAvXnNlcC9pLCAvXm9jdC9pLCAvXm5vdi9pLCAvXmRpYy9pXTtcbiAgICB2YXIgbW9udGhzUmVnZXggPSAvXihlbmVyb3xmZWJyZXJvfG1hcnpvfGFicmlsfG1heW98anVuaW98anVsaW98YWdvc3RvfHNlcHRpZW1icmV8b2N0dWJyZXxub3ZpZW1icmV8ZGljaWVtYnJlfGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pO1xuXG4gICAgdmFyIGVzVXMgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdlcy11cycsIHtcbiAgICAgICAgbW9udGhzIDogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0RG90O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvLU1NTS0vLnRlc3QoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNTaG9ydFttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnREb3RbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKGVuZXJvfGZlYnJlcm98bWFyem98YWJyaWx8bWF5b3xqdW5pb3xqdWxpb3xhZ29zdG98c2VwdGllbWJyZXxvY3R1YnJlfG5vdmllbWJyZXxkaWNpZW1icmUpL2ksXG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKGVuZVxcLj98ZmViXFwuP3xtYXJcXC4/fGFiclxcLj98bWF5XFwuP3xqdW5cXC4/fGp1bFxcLj98YWdvXFwuP3xzZXBcXC4/fG9jdFxcLj98bm92XFwuP3xkaWNcXC4/KS9pLFxuICAgICAgICBtb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZTogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2U6IG1vbnRoc1BhcnNlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkb19sdV9tYV9taV9qdV92aV9zw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3kgYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV4dERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1ttYcOxYW5hIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1theWVyIGEgbGEnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ3MnIDogJycpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW2VsXSBkZGRkIFtwYXNhZG8gYSBsYScgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAncycgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VuICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaGFjZSAlcycsXG4gICAgICAgICAgICBzIDogJ3Vub3Mgc2VndW5kb3MnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kb3MnLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRvcycsXG4gICAgICAgICAgICBoIDogJ3VuYSBob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhvcmFzJyxcbiAgICAgICAgICAgIGQgOiAndW4gZMOtYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkw61hcycsXG4gICAgICAgICAgICBNIDogJ3VuIG1lcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VuIGHDsW8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYcOxb3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVzVXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAncycgOiBbJ23DtW5lIHNla3VuZGknLCAnbcO1bmkgc2VrdW5kJywgJ3BhYXIgc2VrdW5kaXQnXSxcbiAgICAgICAgICAgICdzcyc6IFtudW1iZXIgKyAnc2VrdW5kaScsIG51bWJlciArICdzZWt1bmRpdCddLFxuICAgICAgICAgICAgJ20nIDogWyfDvGhlIG1pbnV0aScsICfDvGtzIG1pbnV0J10sXG4gICAgICAgICAgICAnbW0nOiBbbnVtYmVyICsgJyBtaW51dGknLCBudW1iZXIgKyAnIG1pbnV0aXQnXSxcbiAgICAgICAgICAgICdoJyA6IFsnw7xoZSB0dW5uaScsICd0dW5kIGFlZ2EnLCAnw7xrcyB0dW5kJ10sXG4gICAgICAgICAgICAnaGgnOiBbbnVtYmVyICsgJyB0dW5uaScsIG51bWJlciArICcgdHVuZGknXSxcbiAgICAgICAgICAgICdkJyA6IFsnw7xoZSBww6RldmEnLCAnw7xrcyBww6RldiddLFxuICAgICAgICAgICAgJ00nIDogWydrdXUgYWphJywgJ2t1dSBhZWdhJywgJ8O8a3Mga3V1J10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBrdXUnLCBudW1iZXIgKyAnIGt1dWQnXSxcbiAgICAgICAgICAgICd5JyA6IFsnw7xoZSBhYXN0YScsICdhYXN0YScsICfDvGtzIGFhc3RhJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyBhYXN0YScsIG51bWJlciArICcgYWFzdGF0J11cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRba2V5XVsyXSA/IGZvcm1hdFtrZXldWzJdIDogZm9ybWF0W2tleV1bMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gZm9ybWF0W2tleV1bMF0gOiBmb3JtYXRba2V5XVsxXTtcbiAgICB9XG5cbiAgICB2YXIgZXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldCcsIHtcbiAgICAgICAgbW9udGhzICAgICAgICA6ICdqYWFudWFyX3ZlZWJydWFyX23DpHJ0c19hcHJpbGxfbWFpX2p1dW5pX2p1dWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b29iZXJfbm92ZW1iZXJfZGV0c2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCAgIDogJ2phYW5fdmVlYnJfbcOkcnRzX2Fwcl9tYWlfanV1bmlfanV1bGlfYXVnX3NlcHRfb2t0X25vdl9kZXRzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyAgICAgIDogJ3DDvGhhcMOkZXZfZXNtYXNww6Rldl90ZWlzaXDDpGV2X2tvbG1hcMOkZXZfbmVsamFww6Rldl9yZWVkZV9sYXVww6Rldicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdQX0VfVF9LX05fUl9MJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiAgIDogJ1BfRV9UX0tfTl9SX0wnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgICA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgICAgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCAgIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSAgOiAnW1TDpG5hLF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSAgOiAnW0hvbW1lLF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW0rDpHJnbWluZV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdbRWlsZSxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1tFZWxtaW5lXSBkZGRkIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBww6RyYXN0JyxcbiAgICAgICAgICAgIHBhc3QgICA6ICclcyB0YWdhc2knLFxuICAgICAgICAgICAgcyAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHNzICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbW0gICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGggICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoaCAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZCAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGRkICAgICA6ICclZCBww6RldmEnLFxuICAgICAgICAgICAgTSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5ICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGV0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgZXUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdldScsIHtcbiAgICAgICAgbW9udGhzIDogJ3VydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICd1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2lnYW5kZWFfYXN0ZWxlaGVuYV9hc3RlYXJ0ZWFfYXN0ZWF6a2VuYV9vc3RlZ3VuYV9vc3RpcmFsYV9sYXJ1bmJhdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnaWcuX2FsLl9hci5fYXouX29nLl9vbC5fbHIuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdpZ19hbF9hcl9hel9vZ19vbF9scicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVlba29dIE1NTU1bcmVuXSBEW2FdJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFlZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS1NLUQnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWVtrb10gTU1NIERbYV0nLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVlba29dIE1NTSBEW2FdIEhIOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnZGRkLCBZWVlZW2tvXSBNTU0gRFthXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tnYXVyXSBMVFtldGFuXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tiaWhhcl0gTFRbZXRhbl0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1thdHpvXSBMVFtldGFuXScsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbYXVycmVrb10gZGRkZCBMVFtldGFuXScsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgYmFycnUnLFxuICAgICAgICAgICAgcGFzdCA6ICdkdWVsYSAlcycsXG4gICAgICAgICAgICBzIDogJ3NlZ3VuZG8gYmF0enVrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG8nLFxuICAgICAgICAgICAgbSA6ICdtaW51dHUgYmF0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dScsXG4gICAgICAgICAgICBoIDogJ29yZHUgYmF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yZHUnLFxuICAgICAgICAgICAgZCA6ICdlZ3VuIGJhdCcsXG4gICAgICAgICAgICBkZCA6ICclZCBlZ3VuJyxcbiAgICAgICAgICAgIE0gOiAnaGlsYWJldGUgYmF0JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGhpbGFiZXRlJyxcbiAgICAgICAgICAgIHkgOiAndXJ0ZSBiYXQnLFxuICAgICAgICAgICAgeXkgOiAnJWQgdXJ0ZSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBldTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn27EnLFxuICAgICAgICAnMic6ICfbsicsXG4gICAgICAgICczJzogJ9uzJyxcbiAgICAgICAgJzQnOiAn27QnLFxuICAgICAgICAnNSc6ICfbtScsXG4gICAgICAgICc2JzogJ9u2JyxcbiAgICAgICAgJzcnOiAn27cnLFxuICAgICAgICAnOCc6ICfbuCcsXG4gICAgICAgICc5JzogJ9u5JyxcbiAgICAgICAgJzAnOiAn27AnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn27EnOiAnMScsXG4gICAgICAgICfbsic6ICcyJyxcbiAgICAgICAgJ9uzJzogJzMnLFxuICAgICAgICAn27QnOiAnNCcsXG4gICAgICAgICfbtSc6ICc1JyxcbiAgICAgICAgJ9u2JzogJzYnLFxuICAgICAgICAn27cnOiAnNycsXG4gICAgICAgICfbuCc6ICc4JyxcbiAgICAgICAgJ9u5JzogJzknLFxuICAgICAgICAn27AnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGZhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZmEnLCB7XG4gICAgICAgIG1vbnRocyA6ICfamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfbjNqpXFx1MjAwY9i02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHXFx1MjAwY9i02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisXFx1MjAwY9i02YbYqNmHX9is2YXYudmHX9i02YbYqNmHJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9uM2qlcXHUyMDBj2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YdcXHUyMDBj2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KxcXHUyMDBj2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9uMX9ivX9izX9qGX9m+X9isX9i0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/Zgtio2YQg2KfYsiDYuNmH2LF82KjYudivINin2LIg2LjZh9ixLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL9io2LnYryDYp9iyINi42YfYsS8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2YLYqNmEINin2LIg2LjZh9ixJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYqNi52K8g2KfYsiDYuNmH2LEnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9in2YXYsdmI2LIg2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9mB2LHYr9inINiz2KfYudiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2K/bjNix2YjYsiDYs9in2LnYql0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBb2b7bjNi0XSBb2LPYp9i52KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfYr9ixICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg2b7bjNi0JyxcbiAgICAgICAgICAgIHMgOiAn2obZhtivINir2KfZhtuM2YcnLFxuICAgICAgICAgICAgc3MgOiAn2KvYp9mG24zZhyBkJScsXG4gICAgICAgICAgICBtIDogJ9uM2qkg2K/ZgtuM2YLZhycsXG4gICAgICAgICAgICBtbSA6ICclZCDYr9mC24zZgtmHJyxcbiAgICAgICAgICAgIGggOiAn24zaqSDYs9in2LnYqicsXG4gICAgICAgICAgICBoaCA6ICclZCDYs9in2LnYqicsXG4gICAgICAgICAgICBkIDogJ9uM2qkg2LHZiNiyJyxcbiAgICAgICAgICAgIGRkIDogJyVkINix2YjYsicsXG4gICAgICAgICAgICBNIDogJ9uM2qkg2YXYp9mHJyxcbiAgICAgICAgICAgIE1NIDogJyVkINmF2KfZhycsXG4gICAgICAgICAgICB5IDogJ9uM2qkg2LPYp9mEJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2KfZhCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW9uwLdu5XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ92YUvLFxuICAgICAgICBvcmRpbmFsIDogJyVk2YUnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG51bWJlcnNQYXN0ID0gJ25vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsasOkIHZpaXNpIGt1dXNpIHNlaXRzZW3DpG4ga2FoZGVrc2FuIHloZGVrc8Okbicuc3BsaXQoJyAnKSxcbiAgICAgICAgbnVtYmVyc0Z1dHVyZSA9IFtcbiAgICAgICAgICAgICdub2xsYScsICd5aGRlbicsICdrYWhkZW4nLCAna29sbWVuJywgJ25lbGrDpG4nLCAndmlpZGVuJywgJ2t1dWRlbicsXG4gICAgICAgICAgICBudW1iZXJzUGFzdFs3XSwgbnVtYmVyc1Bhc3RbOF0sIG51bWJlcnNQYXN0WzldXG4gICAgICAgIF07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbXV1dGFtYW4gc2VrdW5uaW4nIDogJ211dXRhbWEgc2VrdW50aSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ3Nla3VubmluJyA6ICdzZWt1bnRpYSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbWludXV0aW4nIDogJ21pbnV1dHRpJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICdtaW51dXRpbicgOiAnbWludXV0dGlhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICd0dW5uaW4nIDogJ3R1bnRpJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICd0dW5uaW4nIDogJ3R1bnRpYSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAncMOkaXbDpG4nIDogJ3DDpGl2w6QnO1xuICAgICAgICAgICAgY2FzZSAnZGQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ3DDpGl2w6RuJyA6ICdww6RpdsOkw6QnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzRnV0dXJlID8gJ2t1dWthdWRlbicgOiAna3V1a2F1c2knO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGlzRnV0dXJlID8gJ2t1dWthdWRlbicgOiAna3V1a2F1dHRhJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0Z1dHVyZSA/ICd2dW9kZW4nIDogJ3Z1b3NpJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpc0Z1dHVyZSA/ICd2dW9kZW4nIDogJ3Z1b3R0YSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdmVyYmFsTnVtYmVyKG51bWJlciwgaXNGdXR1cmUpICsgJyAnICsgcmVzdWx0O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmdW5jdGlvbiB2ZXJiYWxOdW1iZXIobnVtYmVyLCBpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gbnVtYmVyIDwgMTAgPyAoaXNGdXR1cmUgPyBudW1iZXJzRnV0dXJlW251bWJlcl0gOiBudW1iZXJzUGFzdFtudW1iZXJdKSA6IG51bWJlcjtcbiAgICB9XG5cbiAgICB2YXIgZmkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmaScsIHtcbiAgICAgICAgbW9udGhzIDogJ3RhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3RhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3N1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzdV9tYV90aV9rZV90b19wZV9sYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnc3VfbWFfdGlfa2VfdG9fcGVfbGEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEbyBNTU1NW3RhXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tJyxcbiAgICAgICAgICAgIGwgOiAnRC5NLllZWVknLFxuICAgICAgICAgICAgbGwgOiAnRG8gTU1NIFlZWVknLFxuICAgICAgICAgICAgbGxsIDogJ0RvIE1NTSBZWVlZLCBba2xvXSBISC5tbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCwgRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW3TDpG7DpMOkbl0gW2tsb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbaHVvbWVubmFdIFtrbG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2tsb10gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbZWlsZW5dIFtrbG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1t2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHDDpMOkc3TDpCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHNpdHRlbicsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGZvID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZm8nLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJzX2FwcsOtbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3N1bm51ZGFndXJfbcOhbmFkYWd1cl90w71zZGFndXJfbWlrdWRhZ3VyX2jDs3NkYWd1cl9mcsOtZ2dqYWRhZ3VyX2xleWdhcmRhZ3VyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3N1bl9tw6FuX3TDvXNfbWlrX2jDs3NfZnLDrV9sZXknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3N1X23DoV90w71fbWlfaMOzX2ZyX2xlJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NLCBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW8ONIGRhZyBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW8ONIG1vcmdpbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbw40gZ2rDoXIga2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbc8Otw7BzdHVdIGRkZGQgW2tsXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAndW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBzw63DsGFuaScsXG4gICAgICAgICAgICBzIDogJ2bDoSBzZWt1bmQnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kaXInLFxuICAgICAgICAgICAgbSA6ICdlaW4gbWludXR0dXInLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXR0aXInLFxuICAgICAgICAgICAgaCA6ICdlaW4gdMOtbWknLFxuICAgICAgICAgICAgaGggOiAnJWQgdMOtbWFyJyxcbiAgICAgICAgICAgIGQgOiAnZWluIGRhZ3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE0gOiAnZWluIG3DoW5hw7B1cicsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6FuYcOwaXInLFxuICAgICAgICAgICAgeSA6ICdlaXR0IMOhcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDoXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBmciA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ZyJywge1xuICAgICAgICBtb250aHMgOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdkaV9sdV9tYV9tZV9qZV92ZV9zYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQXVqb3VyZOKAmWh1aSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbRGVtYWluIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbSGllciDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbZGVybmllciDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2RhbnMgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdpbCB5IGEgJXMnLFxuICAgICAgICAgICAgcyA6ICdxdWVscXVlcyBzZWNvbmRlcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlcycsXG4gICAgICAgICAgICBtIDogJ3VuZSBtaW51dGUnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlcycsXG4gICAgICAgICAgICBoIDogJ3VuZSBoZXVyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBoZXVyZXMnLFxuICAgICAgICAgICAgZCA6ICd1biBqb3VyJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGpvdXJzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbW9pcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtb2lzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oZXJ8KS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogUmV0dXJuICdlJyB3aGVuIGRheSBvZiBtb250aCA+IDEuIE1vdmUgdGhpcyBjYXNlIGluc2lkZVxuICAgICAgICAgICAgICAgIC8vIGJsb2NrIGZvciBtYXNjdWxpbmUgd29yZHMgYmVsb3cuXG4gICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8zMzc1XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggbWFzY3VsaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogbW9pcywgdHJpbWVzdHJlLCBqb3VyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdlcicgOiAnZScpO1xuXG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBmZW1pbmluZSBncmFtbWF0aWNhbCBnZW5kZXI6IHNlbWFpbmVcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAncmUnIDogJ2UnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBmckNhID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZnItY2EnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2phbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RpX2x1X21hX21lX2plX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tBdWpvdXJk4oCZaHVpIMOgXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tEZW1haW4gw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tIaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdkZGRkIFtkZXJuaWVyIMOgXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFucyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2lsIHkgYSAlcycsXG4gICAgICAgICAgICBzIDogJ3F1ZWxxdWVzIHNlY29uZGVzJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGVzJyxcbiAgICAgICAgICAgIG0gOiAndW5lIG1pbnV0ZScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgICAgIGggOiAndW5lIGhldXJlJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGhldXJlcycsXG4gICAgICAgICAgICBkIDogJ3VuIGpvdXInLFxuICAgICAgICAgICAgZGQgOiAnJWQgam91cnMnLFxuICAgICAgICAgICAgTSA6ICd1biBtb2lzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vaXMnLFxuICAgICAgICAgICAgeSA6ICd1biBhbicsXG4gICAgICAgICAgICB5eSA6ICclZCBhbnMnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlcnxlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gV29yZHMgd2l0aCBtYXNjdWxpbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBtb2lzLCB0cmltZXN0cmUsIGpvdXJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ2VyJyA6ICdlJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIGZlbWluaW5lIGdyYW1tYXRpY2FsIGdlbmRlcjogc2VtYWluZVxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKG51bWJlciA9PT0gMSA/ICdyZScgOiAnZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJDYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGZyQ2ggPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmci1jaCcsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkaW1hbmNoZV9sdW5kaV9tYXJkaV9tZXJjcmVkaV9qZXVkaV92ZW5kcmVkaV9zYW1lZGknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnZGltLl9sdW4uX21hci5fbWVyLl9qZXUuX3Zlbi5fc2FtLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZGlfbHVfbWFfbWVfamVfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0F1am91cmTigJlodWkgw6BdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0RlbWFpbiDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0hpZXIgw6BdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Rlcm5pZXIgw6BdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYW5zICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaWwgeSBhICVzJyxcbiAgICAgICAgICAgIHMgOiAncXVlbHF1ZXMgc2Vjb25kZXMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZXMnLFxuICAgICAgICAgICAgbSA6ICd1bmUgbWludXRlJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZXMnLFxuICAgICAgICAgICAgaCA6ICd1bmUgaGV1cmUnLFxuICAgICAgICAgICAgaGggOiAnJWQgaGV1cmVzJyxcbiAgICAgICAgICAgIGQgOiAndW4gam91cicsXG4gICAgICAgICAgICBkZCA6ICclZCBqb3VycycsXG4gICAgICAgICAgICBNIDogJ3VuIG1vaXMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbW9pcycsXG4gICAgICAgICAgICB5IDogJ3VuIGFuJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFucydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGVyfGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JkcyB3aXRoIG1hc2N1bGluZSBncmFtbWF0aWNhbCBnZW5kZXI6IG1vaXMsIHRyaW1lc3RyZSwgam91clxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChudW1iZXIgPT09IDEgPyAnZXInIDogJ2UnKTtcblxuICAgICAgICAgICAgICAgIC8vIFdvcmRzIHdpdGggZmVtaW5pbmUgZ3JhbW1hdGljYWwgZ2VuZGVyOiBzZW1haW5lXG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAobnVtYmVyID09PSAxID8gJ3JlJyA6ICdlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZyQ2g7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNTaG9ydFdpdGhEb3RzID0gJ2phbi5fZmViLl9tcnQuX2Fwci5fbWFpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0V2l0aG91dERvdHMgPSAnamFuX2ZlYl9tcnRfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyk7XG5cbiAgICB2YXIgZnkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdmeScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbm5ld2FyaXNfZmVicmV3YXJpc19tYWFydF9hcHJpbF9tYWFpZV9qdW55X2p1bHlfYXVndXN0dXNfc2VwdGltYmVyX29rdG9iZXJfbm92aW1iZXJfZGVzaW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ3NuZWluX21vYW5kZWlfdGlpc2RlaV93b2Fuc2RlaV90b25nZXJzZGVpX2ZyZWVkX3NuZW9uJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3NpLl9tby5fdGkuX3dvLl90by5fZnIuX3NvLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU2lfTW9fVGlfV29fVG9fRnJfU28nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaGpvZWQgb21dIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbbW9hcm4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbanVzdGVyIG9tXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vDtGZyw7tuZV0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29lciAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGx5bicsXG4gICAgICAgICAgICBzIDogJ2luIHBlYXIgc2Vrb25kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vrb25kZW4nLFxuICAgICAgICAgICAgbSA6ICdpZW4gbWluw7p0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0ZW4nLFxuICAgICAgICAgICAgaCA6ICdpZW4gb2VyZScsXG4gICAgICAgICAgICBoaCA6ICclZCBvZXJlbicsXG4gICAgICAgICAgICBkIDogJ2llbiBkZWknLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTSA6ICdpZW4gbW9hbm5lJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1vYW5uZW4nLFxuICAgICAgICAgICAgeSA6ICdpZW4gamllcicsXG4gICAgICAgICAgICB5eSA6ICclZCBqaWVycmVuJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAnRWFuw6FpcicsICdGZWFiaHJhJywgJ03DoXJ0YScsICdBaWJyZcOhbicsICdCZWFsdGFpbmUnLCAnTcOpaXRoZWFtaCcsICdJw7ppbCcsICdMw7puYXNhJywgJ01lw6FuIEbDs21oYWlyJywgJ0RlYWlyZWFkaCBGw7NtaGFpcicsICdTYW1oYWluJywgJ05vbGxhaWcnXG4gICAgXTtcblxuICAgIHZhciBtb250aHNTaG9ydCA9IFsnRWFuw6EnLCAnRmVhYicsICdNw6FydCcsICdBaWJyJywgJ0JlYWwnLCAnTcOpaXQnLCAnScO6aWwnLCAnTMO6bmEnLCAnTWXDoW4nLCAnRGVhaScsICdTYW1oJywgJ05vbGwnXTtcblxuICAgIHZhciB3ZWVrZGF5cyA9IFsnRMOpIERvbWhuYWlnaCcsICdEw6kgTHVhaW4nLCAnRMOpIE3DoWlydCcsICdEw6kgQ8OpYWRhb2luJywgJ0TDqWFyZGFvaW4nLCAnRMOpIGhBb2luZScsICdEw6kgU2F0aGFybiddO1xuXG4gICAgdmFyIHdlZWtkYXlzU2hvcnQgPSBbJ0RvbScsICdMdWEnLCAnTcOhaScsICdDw6lhJywgJ0TDqWEnLCAnaEFvJywgJ1NhdCddO1xuXG4gICAgdmFyIHdlZWtkYXlzTWluID0gWydEbycsICdMdScsICdNw6EnLCAnQ2UnLCAnRMOpJywgJ2hBJywgJ1NhJ107XG5cbiAgICB2YXIgZ2EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdnYScsIHtcbiAgICAgICAgbW9udGhzOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0OiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6IHdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiB3ZWVrZGF5c1Nob3J0LFxuICAgICAgICB3ZWVrZGF5c01pbjogd2Vla2RheXNNaW4sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tJbm5pdSBhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBbcOhcmFjaCBhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tJbm7DqSBhaWddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbc2VvIGNhaXRlXSBbYWddIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICdpICVzJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDDsyBzaGluJyxcbiAgICAgICAgICAgIHM6ICdjw7pwbGEgc29pY2luZCcsXG4gICAgICAgICAgICBzczogJyVkIHNvaWNpbmQnLFxuICAgICAgICAgICAgbTogJ27Ds2ltw6lhZCcsXG4gICAgICAgICAgICBtbTogJyVkIG7Ds2ltw6lhZCcsXG4gICAgICAgICAgICBoOiAndWFpciBhbiBjaGxvaWcnLFxuICAgICAgICAgICAgaGg6ICclZCB1YWlyIGFuIGNobG9pZycsXG4gICAgICAgICAgICBkOiAnbMOhJyxcbiAgICAgICAgICAgIGRkOiAnJWQgbMOhJyxcbiAgICAgICAgICAgIE06ICdtw60nLFxuICAgICAgICAgICAgTU06ICclZCBtw60nLFxuICAgICAgICAgICAgeTogJ2JsaWFpbicsXG4gICAgICAgICAgICB5eTogJyVkIGJsaWFpbidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIG91dHB1dCA9IG51bWJlciA9PT0gMSA/ICdkJyA6IG51bWJlciAlIDEwID09PSAyID8gJ25hJyA6ICdtaCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBnYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRocyA9IFtcbiAgICAgICAgJ0FtIEZhb2lsbGVhY2gnLCAnQW4gR2VhcnJhbicsICdBbSBNw6BydCcsICdBbiBHaWJsZWFuJywgJ0FuIEPDqGl0ZWFuJywgJ0FuIHQtw5JnbWhpb3MnLCAnQW4gdC1JdWNoYXInLCAnQW4gTMO5bmFzdGFsJywgJ0FuIHQtU3VsdGFpbicsICdBbiBEw6BtaGFpcicsICdBbiB0LVNhbWhhaW4nLCAnQW4gRMO5YmhsYWNoZCdcbiAgICBdO1xuXG4gICAgdmFyIG1vbnRoc1Nob3J0ID0gWydGYW9pJywgJ0dlYXInLCAnTcOgcnQnLCAnR2libCcsICdDw6hpdCcsICfDkmdtaCcsICdJdWNoJywgJ0zDuW4nLCAnU3VsdCcsICdEw6BtaCcsICdTYW1oJywgJ0TDuWJoJ107XG5cbiAgICB2YXIgd2Vla2RheXMgPSBbJ0RpZMOybWhuYWljaCcsICdEaWx1YWluJywgJ0RpbcOgaXJ0JywgJ0RpY2lhZGFpbicsICdEaWFyZGFvaW4nLCAnRGloYW9pbmUnLCAnRGlzYXRoYWlybmUnXTtcblxuICAgIHZhciB3ZWVrZGF5c1Nob3J0ID0gWydEaWQnLCAnRGlsJywgJ0RpbScsICdEaWMnLCAnRGlhJywgJ0RpaCcsICdEaXMnXTtcblxuICAgIHZhciB3ZWVrZGF5c01pbiA9IFsnRMOyJywgJ0x1JywgJ03DoCcsICdDaScsICdBcicsICdIYScsICdTYSddO1xuXG4gICAgdmFyIGdkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ2QnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHNTaG9ydCxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogd2Vla2RheXMsXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiB3ZWVrZGF5c1Nob3J0LFxuICAgICAgICB3ZWVrZGF5c01pbiA6IHdlZWtkYXlzTWluLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQW4tZGl1Z2ggYWlnXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tBLW3DoGlyZWFjaCBhaWddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW2FpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbQW4tZMOoIGFpZ10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbc2VvIGNoYWlkaF0gW2FpZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2FubiBhbiAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2JobyBjaGlvbm4gJXMnLFxuICAgICAgICAgICAgcyA6ICdiZWFnYW4gZGlvZ2FuJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGRpb2dhbicsXG4gICAgICAgICAgICBtIDogJ21pb25haWQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWlvbmFpZGVhbicsXG4gICAgICAgICAgICBoIDogJ3VhaXInLFxuICAgICAgICAgICAgaGggOiAnJWQgdWFpcmVhbicsXG4gICAgICAgICAgICBkIDogJ2xhdGhhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGxhdGhhJyxcbiAgICAgICAgICAgIE0gOiAnbcOsb3MnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbcOsb3NhbicsXG4gICAgICAgICAgICB5IDogJ2JsaWFkaG5hJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGJsaWFkaG5hJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9KGR8bmF8bWgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSBudW1iZXIgPT09IDEgPyAnZCcgOiBudW1iZXIgJSAxMCA9PT0gMiA/ICduYScgOiAnbWgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2Q7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBnbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2dsJywge1xuICAgICAgICBtb250aHMgOiAneGFuZWlyb19mZWJyZWlyb19tYXJ6b19hYnJpbF9tYWlvX3h1w7FvX3h1bGxvX2Fnb3N0b19zZXRlbWJyb19vdXR1YnJvX25vdmVtYnJvX2RlY2VtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICd4YW4uX2ZlYi5fbWFyLl9hYnIuX21haS5feHXDsS5feHVsLl9hZ28uX3NldC5fb3V0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2RvbWluZ29fbHVuc19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RvbS5fbHVuLl9tYXIuX23DqXIuX3hvdi5fdmVuLl9zw6FiLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVfbWFfbcOpX3hvX3ZlX3PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tob3hlICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHREYXkgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbWHDscOhICcgKyAoKHRoaXMuaG91cnMoKSAhPT0gMSkgPyAnw6FzJyA6ICfDoScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBbJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoXMnIDogJ2EnKSArICddIExUJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29udGUgJyArICgodGhpcy5ob3VycygpICE9PSAxKSA/ICfDoScgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnW29dIGRkZGQgW3Bhc2FkbyAnICsgKCh0aGlzLmhvdXJzKCkgIT09IDEpID8gJ8OhcycgOiAnYScpICsgJ10gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyLmluZGV4T2YoJ3VuJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICduJyArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbiAnICsgc3RyO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiAnaGFpICVzJyxcbiAgICAgICAgICAgIHMgOiAndW5zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW4gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bmhhIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1biBkw61hJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGTDrWFzJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1lc2VzJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW5vJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGFub3MnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnOiBbJ3Rob2RkZSBzZWNvbmRhbmltJywgJ3Rob2RkZSBzZWNvbmQnXSxcbiAgICAgICAgICAgICdzcyc6IFtudW1iZXIgKyAnIHNlY29uZGFuaW0nLCBudW1iZXIgKyAnIHNlY29uZCddLFxuICAgICAgICAgICAgJ20nOiBbJ2VrYSBtaW50YW4nLCAnZWsgbWludXRlJ10sXG4gICAgICAgICAgICAnbW0nOiBbbnVtYmVyICsgJyBtaW50YW5pbScsIG51bWJlciArICcgbWludGFtJ10sXG4gICAgICAgICAgICAnaCc6IFsnZWthIHZvcmFuJywgJ2VrIHZvciddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgdm9yYW5pbScsIG51bWJlciArICcgdm9yYW0nXSxcbiAgICAgICAgICAgICdkJzogWydla2EgZGlzYW4nLCAnZWsgZGlzJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyBkaXNhbmltJywgbnVtYmVyICsgJyBkaXMnXSxcbiAgICAgICAgICAgICdNJzogWydla2EgbWhvaW5lYW4nLCAnZWsgbWhvaW5vJ10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBtaG9pbmVhbmltJywgbnVtYmVyICsgJyBtaG9pbmUnXSxcbiAgICAgICAgICAgICd5JzogWydla2Egdm9yc2FuJywgJ2VrIHZvcm9zJ10sXG4gICAgICAgICAgICAneXknOiBbbnVtYmVyICsgJyB2b3JzYW5pbScsIG51bWJlciArICcgdm9yc2FtJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cblxuICAgIHZhciBnb21MYXRuID0gbW9tZW50LmRlZmluZUxvY2FsZSgnZ29tLWxhdG4nLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5lcl9GZWJyZXJfTWFyc19BYnJpbF9NYWlfSnVuX0p1bGFpX0Fnb3N0X1NldGVtYnJfT3R1YnJfTm92ZW1icl9EZXplbWJyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW4uX0ZlYi5fTWFyc19BYnIuX01haV9KdW5fSnVsLl9BZ28uX1NldC5fT3R1Ll9Ob3YuX0Rlei4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdBaXRhcl9Tb21hcl9Nb25nbGxhcl9CdWR2YXJfQnJlc3Rhcl9TdWtyYXJfU29uXFwndmFyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0FpdC5fU29tLl9Nb24uX0J1ZC5fQnJlLl9TdWsuX1Nvbi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0FpX1NtX01vX0J1X0JyX1N1X1NuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0EgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MgW3ZhenRhXScsXG4gICAgICAgICAgICBMIDogJ0RELU1NLVlZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTVthY2hlYV0gRG8sIFlZWVksIEEgaDptbSBbdmF6dGFdJyxcbiAgICAgICAgICAgIGxsbGw6ICdkZGQsIEQgTU1NIFlZWVksIEEgaDptbSBbdmF6dGFdJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbQWl6XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0ZhbGVhbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdbSWV0YSB0b10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0thbF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRmF0bG9dIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBhZGltJyxcbiAgICAgICAgICAgIHMgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgc3MgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZGQgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNTSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5IDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHl5IDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9KGVyKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIG9yZGluYWwgJ2VyJyBvbmx5IGFwcGxpZXMgdG8gZGF5IG9mIHRoZSBtb250aFxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ2VyJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3JhdGl8c29rYWxsaXxkb25wYXJhbXxzYW5qZS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdyYXRpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc29rYWxsaScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdkb25wYXJhbScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+IDEyID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzYW5qZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncmF0aSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29rYWxsaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZG9ucGFyYW0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NhbmplJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYXRpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGdvbUxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICAgICAnMSc6ICfgq6cnLFxuICAgICAgICAgICAgJzInOiAn4KuoJyxcbiAgICAgICAgICAgICczJzogJ+CrqScsXG4gICAgICAgICAgICAnNCc6ICfgq6onLFxuICAgICAgICAgICAgJzUnOiAn4KurJyxcbiAgICAgICAgICAgICc2JzogJ+CrrCcsXG4gICAgICAgICAgICAnNyc6ICfgq60nLFxuICAgICAgICAgICAgJzgnOiAn4KuuJyxcbiAgICAgICAgICAgICc5JzogJ+CrrycsXG4gICAgICAgICAgICAnMCc6ICfgq6YnXG4gICAgICAgIH0sXG4gICAgICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgICAgICfgq6cnOiAnMScsXG4gICAgICAgICAgICAn4KuoJzogJzInLFxuICAgICAgICAgICAgJ+CrqSc6ICczJyxcbiAgICAgICAgICAgICfgq6onOiAnNCcsXG4gICAgICAgICAgICAn4KurJzogJzUnLFxuICAgICAgICAgICAgJ+CrrCc6ICc2JyxcbiAgICAgICAgICAgICfgq60nOiAnNycsXG4gICAgICAgICAgICAn4KuuJzogJzgnLFxuICAgICAgICAgICAgJ+Crryc6ICc5JyxcbiAgICAgICAgICAgICfgq6YnOiAnMCdcbiAgICAgICAgfTtcblxuICAgIHZhciBndSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2d1Jywge1xuICAgICAgICBtb250aHM6ICfgqpzgqr7gqqjgq43gqq/gq4HgqobgqrDgq4Bf4Kqr4KuH4Kqs4KuN4Kqw4KuB4KqG4Kqw4KuAX+CqruCqvuCqsOCrjeCqml/gqo/gqqrgq43gqrDgqr/gqrJf4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr7gqohf4KqR4KqX4Kq44KuN4KqfX+CquOCqquCrjeCqn+Crh+CqruCrjeCqrOCqsF/gqpHgqpXgq43gqp/gq43gqqzgqrBf4Kqo4Kq14KuH4Kqu4KuN4Kqs4KqwX+CqoeCqv+CquOCrh+CqruCrjeCqrOCqsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgqpzgqr7gqqjgq43gqq/gq4EuX+Cqq+Crh+CqrOCrjeCqsOCrgS5f4Kqu4Kq+4Kqw4KuN4KqaX+Cqj+CqquCrjeCqsOCqvy5f4Kqu4KuHX+CqnOCrguCqqF/gqpzgq4HgqrLgqr4uX+CqkeCqly5f4Kq44Kqq4KuN4Kqf4KuHLl/gqpHgqpXgq43gqp/gq40uX+CqqOCqteCrhy5f4Kqh4Kq/4Kq44KuHLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICfgqrDgqrXgqr/gqrXgqr7gqrBf4Kq44KuL4Kqu4Kq14Kq+4KqwX+CqruCqguCql+Cqs+CqteCqvuCqsF/gqqzgq4Hgqqfgq43gqrXgqr7gqrBf4KqX4KuB4Kqw4KuB4Kq14Kq+4KqwX+CqtuCrgeCqleCrjeCqsOCqteCqvuCqsF/gqrbgqqjgqr/gqrXgqr7gqrAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfgqrDgqrXgqr9f4Kq44KuL4KquX+CqruCqguCql+Cqs1/gqqzgq4Hgqqfgq41f4KqX4KuB4Kqw4KuBX+CqtuCrgeCqleCrjeCqsF/gqrbgqqjgqr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4KqwX+CquOCri1/gqq7gqoJf4Kqs4KuBX+Cql+CrgV/gqrbgq4Ff4Kq2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdBIGg6bW0g4Kq14Kq+4KqX4KuN4Kqv4KuHJyxcbiAgICAgICAgICAgIExUUzogJ0EgaDptbTpzcyDgqrXgqr7gqpfgq43gqq/gq4cnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIOCqteCqvuCql+CrjeCqr+CrhycsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgqrXgqr7gqpfgq43gqq/gq4cnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW+CqhuCqnF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vgqpfgqofgqpXgqr7gqrLgq4ddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW+CqquCqvuCqm+CqsuCqvl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVzIOCqruCqvicsXG4gICAgICAgICAgICBwYXN0OiAnJXMg4Kqq4KuH4Kq54Kqy4Kq+JyxcbiAgICAgICAgICAgIHM6ICfgqoXgqq7gq4HgqpUg4Kqq4Kqz4KuLJyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Kq44KuH4KqV4KqC4KqhJyxcbiAgICAgICAgICAgIG06ICfgqo/gqpUg4Kqu4Kq/4Kqo4Kq/4KqfJyxcbiAgICAgICAgICAgIG1tOiAnJWQg4Kqu4Kq/4Kqo4Kq/4KqfJyxcbiAgICAgICAgICAgIGg6ICfgqo/gqpUg4KqV4Kqy4Kq+4KqVJyxcbiAgICAgICAgICAgIGhoOiAnJWQg4KqV4Kqy4Kq+4KqVJyxcbiAgICAgICAgICAgIGQ6ICfgqo/gqpUg4Kqm4Kq/4Kq14Kq4JyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Kqm4Kq/4Kq14Kq4JyxcbiAgICAgICAgICAgIE06ICfgqo/gqpUg4Kqu4Kq54Kq/4Kqo4KuLJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4Kqu4Kq54Kq/4Kqo4KuLJyxcbiAgICAgICAgICAgIHk6ICfgqo/gqpUg4Kq14Kqw4KuN4Kq3JyxcbiAgICAgICAgICAgIHl5OiAnJWQg4Kq14Kqw4KuN4Kq3J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kun4Kuo4Kup4Kuq4Kur4Kus4Kut4Kuu4Kuv4KumXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBHdWphcmF0aSBub3RhdGlvbiBmb3IgbWVyaWRpZW1zIGFyZSBxdWl0ZSBmdXp6eSBpbiBwcmFjdGljZS4gV2hpbGUgdGhlcmUgZXhpc3RzXG4gICAgICAgIC8vIGEgcmlnaWQgbm90aW9uIG9mIGEgJ1BhaGFyJyBpdCBpcyBub3QgdXNlZCBhcyByaWdpZGx5IGluIG1vZGVybiBHdWphcmF0aS5cbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CqsOCqvuCqpHzgqqzgqqrgq4vgqrB84Kq44Kq14Kq+4KqwfOCquOCqvuCqguCqnC8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+CqsOCqvuCqpCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqteCqvuCqsCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgqqzgqqrgq4vgqrAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CquOCqvuCqguCqnCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrDgqr7gqqQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CquOCqteCqvuCqsCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kqs4Kqq4KuL4KqwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqrjgqr7gqoLgqpwnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CqsOCqvuCqpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDYgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBoZSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2hlJywge1xuICAgICAgICBtb250aHMgOiAn15nXoNeV15DXqF/XpNeR16jXldeQ16hf157XqNelX9eQ16TXqNeZ15xf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXkteV16HXmF/Xodek15jXnteR16hf15DXlden15jXldeR16hf16DXldeR157XkdeoX9eT16bXnteR16gnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9eZ16DXldezX9ek15HXqNezX9ee16jXpV/XkNek16jXs1/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS17Nf16HXpNeY17Nf15DXlden17Nf16DXldeR17Nf15PXptee17MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9eo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfXkNezX9eR17Nf15LXs1/Xk9ezX9eU17Nf15XXs1/XqdezJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfXkF/XkV/Xkl/Xk1/XlF/XlV/XqScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW9eRXU1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBb15FdTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnRC9NL1lZWVknLFxuICAgICAgICAgICAgbGwgOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGwgOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCwgRCBNTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vXlNeZ15XXnSDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9ee15fXqCDXkda+XUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9eR16nXoteUXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vXkNeq157XldecINeR1r5dTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9eR15nXldedXSBkZGRkIFvXlNeQ15fXqNeV158g15HXqdei15RdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfXkdei15XXkyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ9ec16TXoNeZICVzJyxcbiAgICAgICAgICAgIHMgOiAn157Xodek16gg16nXoNeZ15XXqicsXG4gICAgICAgICAgICBzcyA6ICclZCDXqdeg15nXldeqJyxcbiAgICAgICAgICAgIG0gOiAn15PXp9eUJyxcbiAgICAgICAgICAgIG1tIDogJyVkINeT16fXldeqJyxcbiAgICAgICAgICAgIGggOiAn16nXoteUJyxcbiAgICAgICAgICAgIGhoIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXqdei16rXmdeZ150nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyDXqdei15XXqic7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZCA6ICfXmdeV150nLFxuICAgICAgICAgICAgZGQgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9eZ15XXnteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeZ157XmdedJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNIDogJ9eX15XXk9epJyxcbiAgICAgICAgICAgIE1NIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfXl9eV15PXqdeZ15nXnSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINeX15XXk9ep15nXnSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeSA6ICfXqdeg15QnLFxuICAgICAgICAgICAgeXkgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9ep16DXqteZ15nXnSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgJSAxMCA9PT0gMCAmJiBudW1iZXIgIT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXlCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINep16DXmdedJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9eQ15fXlFwi16Z815zXpNeg15RcItemfNeQ15fXqNeZINeU16bXlNeo15nXmdedfNec16TXoNeZINeU16bXlNeo15nXmdedfNec16TXoNeV16og15HXlden16h815HXkdeV16fXqHzXkdei16jXkS9pLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gL14o15DXl9eUXCLXpnzXkNeX16jXmSDXlNem15TXqNeZ15nXnXzXkdei16jXkSkkLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9ec16TXoNeV16og15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR15HXlden16gnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfXnNek16DXlFwi16YnIDogJ9ec16TXoNeZINeU16bXlNeo15nXmdedJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAn15DXl9eUXCLXpicgOiAn15DXl9eo15kg15TXpteU16jXmdeZ150nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9eR16LXqNeRJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhlO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGhpID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaGknLCB7XG4gICAgICAgIG1vbnRocyA6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CkleCksl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KSV4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4KSu4KWH4KSCJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KSq4KS54KSy4KWHJyxcbiAgICAgICAgICAgIHMgOiAn4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4KS44KWH4KSV4KSC4KShJyxcbiAgICAgICAgICAgIG0gOiAn4KSP4KSVIOCkruCkv+CkqOCknycsXG4gICAgICAgICAgICBtbSA6ICclZCDgpK7gpL/gpKjgpJ8nLFxuICAgICAgICAgICAgaCA6ICfgpI/gpJUg4KSY4KSC4KSf4KS+JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOCkmOCkguCkn+ClhycsXG4gICAgICAgICAgICBkIDogJ+Ckj+CklSDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgZGQgOiAnJWQg4KSm4KS/4KSoJyxcbiAgICAgICAgICAgIE0gOiAn4KSP4KSVIOCkruCkueClgOCkqOClhycsXG4gICAgICAgICAgICBNTSA6ICclZCDgpK7gpLngpYDgpKjgpYcnLFxuICAgICAgICAgICAgeSA6ICfgpI/gpJUg4KS14KSw4KWN4KS3JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCkteCksOCljeCktydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gSGluZGkgbm90YXRpb24gZm9yIG1lcmlkaWVtcyBhcmUgcXVpdGUgZnV6enkgaW4gcHJhY3RpY2UuIFdoaWxlIHRoZXJlIGV4aXN0c1xuICAgICAgICAvLyBhIHJpZ2lkIG5vdGlvbiBvZiBhICdQYWhhcicgaXQgaXMgbm90IHVzZWQgYXMgcmlnaWRseSBpbiBtb2Rlcm4gSGluZGkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4KSw4KS+4KSkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS44KWB4KSs4KS5Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CkpuCli+CkquCkueCksCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KS24KS+4KSuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOClgeCkrOCkuSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSm4KWL4KSq4KS54KSwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLbgpL7gpK4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3Nla3VuZGUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdqZWRuYSBtaW51dGEnIDogJ2plZG5lIG1pbnV0ZSc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0YSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ21pbnV0ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtaW51dGEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnamVkYW4gc2F0JyA6ICdqZWRub2cgc2F0YSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIgfHwgbnVtYmVyID09PSAzIHx8IG51bWJlciA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ3NhdGEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnc2F0aSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2Rhbic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdkYW5hJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnbWplc2VjYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdtamVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMiB8fCBudW1iZXIgPT09IDMgfHwgbnVtYmVyID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnZ29kaW5lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gJ2dvZGluYSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdocicsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2lqZcSNbmphX3ZlbGphxI1lX2/FvnVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5qYV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYScuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzaWplxI1hbmpfdmVsamHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnc2lqLl92ZWxqLl9vxb51Ll90cmEuX3N2aS5fbGlwLl9zcnAuX2tvbC5fcnVqLl9saXMuX3N0dS5fcHJvLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSAgOiAnW3N1dHJhIHVdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkamVsanVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzcmlqZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tqdcSNZXIgdV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJvxaFsdV0gZGRkZCBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcm/FoWxpXSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJpamUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ3BhciBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoICAgICA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ21qZXNlYycsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5ICAgICAgOiAnZ29kaW51JyxcbiAgICAgICAgICAgIHl5ICAgICA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgd2Vla0VuZGluZ3MgPSAndmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbicuc3BsaXQoJyAnKTtcbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBudW0gPSBudW1iZXI7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXgpID8gJ27DqWjDoW55IG3DoXNvZHBlcmMnIDogJ27DqWjDoW55IG3DoXNvZHBlcmNlJztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXgpID8gJyBtw6Fzb2RwZXJjJyA6ICcgbcOhc29kcGVyY2UnO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlZ3knICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIHBlcmMnIDogJyBwZXJjZScpO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgcGVyYycgOiAnIHBlcmNlJyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw7NyYScgOiAnIMOzcsOhamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIMOzcmEnIDogJyDDs3LDoWphJyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgbmFwJyA6ICcgbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIG5hcCcgOiAnIG5hcGphJyk7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgaMOzbmFwJyA6ICcgaMOzbmFwamEnKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtICsgKGlzRnV0dXJlIHx8IHdpdGhvdXRTdWZmaXggPyAnIGjDs25hcCcgOiAnIGjDs25hcGphJyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VneScgKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICAgICAgY2FzZSAneXknOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW0gKyAoaXNGdXR1cmUgfHwgd2l0aG91dFN1ZmZpeCA/ICcgw6l2JyA6ICcgw6l2ZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vlayhpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gKGlzRnV0dXJlID8gJycgOiAnW23Dumx0XSAnKSArICdbJyArIHdlZWtFbmRpbmdzW3RoaXMuZGF5KCldICsgJ10gTFRbLWtvcl0nO1xuICAgIH1cblxuICAgIHZhciBodSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2h1Jywge1xuICAgICAgICBtb250aHMgOiAnamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNfasO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX23DoXJjX8OhcHJfbcOhal9qw7puX2rDumxfYXVnX3N6ZXB0X29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICd2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3Zhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DDqW5fc3pvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICd2X2hfa19zemVfY3NfcF9zem8nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkuTU0uREQuJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkuIE1NTU0gRC4nLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkuIE1NTU0gRC4gSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVkuIE1NTU0gRC4sIGRkZGQgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL2RlfGR1L2ksXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0LmNoYXJBdCgxKS50b0xvd2VyQ2FzZSgpID09PSAndSc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2RlJyA6ICdERSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID09PSB0cnVlID8gJ2R1JyA6ICdEVSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbbWFdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW2hvbG5hcF0gTFRbLWtvcl0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdlZWsuY2FsbCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1t0ZWduYXBdIExUWy1rb3JdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3ZWVrLmNhbGwodGhpcywgZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBtw7psdmEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcycsXG4gICAgICAgICAgICBzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbW0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBodTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGh5QW0gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdoeS1hbScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAn1bDVuNaC1bbVvtWh1oDVq1/Wg9Wl1b/WgNW+1aHWgNWrX9W01aHWgNW/1atf1aHVutaA1avVrNWrX9W01aHVtdWr1b3Vq1/VsNW41oLVttWr1b3Vq1/VsNW41oLVrNWr1b3Vq1/WhdWj1bjVvdW/1bjVvdWrX9W91aXVutW/1aXVtNWi1aXWgNWrX9Ww1bjVr9W/1aXVtNWi1aXWgNWrX9W21bjVtdWl1bTVotWl1oDVq1/VpNWl1a/Vv9Wl1bTVotWl1oDVqycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfVsNW41oLVttW+1aHWgF/Wg9Wl1b/WgNW+1aHWgF/VtNWh1oDVv1/VodW61oDVq9WsX9W01aHVtdWr1b1f1bDVuNaC1bbVq9W9X9Ww1bjWgtWs1avVvV/WhdWj1bjVvdW/1bjVvV/VvdWl1brVv9Wl1bTVotWl1oBf1bDVuNWv1b/VpdW01aLVpdaAX9W21bjVtdWl1bTVotWl1oBf1aTVpdWv1b/VpdW01aLVpdaAJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9Ww1bbVvl/Wg9W/1oBf1bTWgNW/X9Wh1brWgF/VtNW11b1f1bDVttW9X9Ww1azVvV/WhdWj1b1f1b3VutW/X9Ww1a/Vv1/VttW01aJf1aTVr9W/Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfVr9Wr1oDVodWv1atf1aXWgNWv1bjWgtW31aHVotWp1atf1aXWgNWl1oTVt9Wh1aLVqdWrX9W51bjWgNWl1oTVt9Wh1aLVqdWrX9Ww1avVttWj1bfVodWi1anVq1/VuNaC1oDVotWh1alf1bfVodWi1aHVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfVr9aA1a9f1aXWgNWvX9Wl1oDWhF/VudaA1oRf1bDVttWjX9W41oLWgNWiX9W31aLVqScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn1a/WgNWvX9Wl1oDVr1/VpdaA1oRf1bnWgNaEX9Ww1bbVo1/VuNaC1oDVol/Vt9Wi1aknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWSDVqS4nLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZINWpLiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSDVqS4sIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb1aHVtdW91oXWgF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vVvtWh1bLVqF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vVpdaA1aXVr10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RkZGQgW9aF1oDVqCDVqtWh1bTVqF0gTFQnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdb1aHVttaB1aHVrl0gZGRkZCBb1oXWgNWoINWq1aHVtNWoXSBMVCc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg1bDVpdW/1bgnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDVodW81aHVuycsXG4gICAgICAgICAgICBzIDogJ9W01asg1oTVodW21asg1b7VodW11oDVr9W11aHVticsXG4gICAgICAgICAgICBzcyA6ICclZCDVvtWh1bXWgNWv1bXVodW2JyxcbiAgICAgICAgICAgIG0gOiAn1oDVuNW61aUnLFxuICAgICAgICAgICAgbW0gOiAnJWQg1oDVuNW61aUnLFxuICAgICAgICAgICAgaCA6ICfVqtWh1bQnLFxuICAgICAgICAgICAgaGggOiAnJWQg1arVodW0JyxcbiAgICAgICAgICAgIGQgOiAn1oXWgCcsXG4gICAgICAgICAgICBkZCA6ICclZCDWhdaAJyxcbiAgICAgICAgICAgIE0gOiAn1aHVtNWr1b0nLFxuICAgICAgICAgICAgTU0gOiAnJWQg1aHVtNWr1b0nLFxuICAgICAgICAgICAgeSA6ICfVv9Wh1oDVqycsXG4gICAgICAgICAgICB5eSA6ICclZCDVv9Wh1oDVqydcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9Wj1avVt9Wl1oDVvtWhfNWh1bzVodW+1bjVv9W+1aF81oHVpdaA1aXVr9W+1aF81aXWgNWl1a/VuNW11aHVti8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIC9eKNaB1aXWgNWl1a/VvtWhfNWl1oDVpdWv1bjVtdWh1bYpJC8udGVzdChpbnB1dCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn1aPVq9W31aXWgNW+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Wh1bzVodW+1bjVv9W+1aEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9aB1aXWgNWl1a/VvtWhJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfVpdaA1aXVr9W41bXVodW2JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9fFxcZHsxLDJ9LSjVq9W2fNaA1aQpLyxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREbyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdWr1bYnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdaA1aQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGh5QW07XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBpZCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lkJywge1xuICAgICAgICBtb250aHMgOiAnSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3RfU2VwX09rdF9Ob3ZfRGVzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdNZ19Tbl9TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdwYWdpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ3NpYW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb3JlJyB8fCBtZXJpZGllbSA9PT0gJ21hbGFtJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGFnaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpYW5nJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc29yZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbWFsYW0nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0hhcmkgaW5pIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tCZXNvayBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0tlbWFyaW4gcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2xhbHUgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGFsdScsXG4gICAgICAgICAgICBzIDogJ2JlYmVyYXBhIGRldGlrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGRldGlrJyxcbiAgICAgICAgICAgIG0gOiAnc2VtZW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtZW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NlamFtJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGphbScsXG4gICAgICAgICAgICBkIDogJ3NlaGFyaScsXG4gICAgICAgICAgICBkZCA6ICclZCBoYXJpJyxcbiAgICAgICAgICAgIE0gOiAnc2VidWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGFodW4nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFodW4nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwobikge1xuICAgICAgICBpZiAobiAlIDEwMCA9PT0gMTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG4gJSAxMCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyAnICc7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdub2trcmFyIHNla8O6bmR1cicgOiAnbm9ra3J1bSBzZWvDum5kdW0nO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2Vrw7puZHVyJyA6ICdzZWvDum5kdW0nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdzZWvDum5kYSc7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtw61uw7p0YScgOiAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbcOtbsO6dHVyJyA6ICdtw61uw7p0dW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw61uw7p0YSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbcOtbsO6dHUnO1xuICAgICAgICAgICAgY2FzZSAnaGgnOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAna2x1a2t1c3R1bmRpcicgOiAna2x1a2t1c3R1bmR1bScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ2tsdWtrdXN0dW5kJztcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnZGFnJyA6ICdkZWdpJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAocGx1cmFsKG51bWJlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFnYXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnZGFnYScgOiAnZMO2Z3VtJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZGFndXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKGlzRnV0dXJlID8gJ2RhZycgOiAnZGVnaScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtw6FudcOwdXInO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChwbHVyYWwobnVtYmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtw6FudcOwaXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsGknIDogJ23DoW51w7B1bScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2l0aG91dFN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ23DoW51w7B1cic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAoaXNGdXR1cmUgPyAnbcOhbnXDsCcgOiAnbcOhbnXDsGknKTtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ8OhcicgOiAnw6FyaSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgaWYgKHBsdXJhbChudW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcnVtJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICfDoXInIDogJ8OhcmknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2lzJywge1xuICAgICAgICBtb250aHMgOiAnamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2Rlcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1cicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBba2wuXSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbw60gZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbw6EgbW9yZ3VuIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vDrSBnw6ZyIGtsLl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZWZ0aXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdmeXJpciAlcyBzw63DsGFuJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiAna2x1a2t1c3R1bmQnLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgTU0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5IDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGl0ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnaXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2dlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdkb21lbmljYV9sdW5lZMOsX21hcnRlZMOsX21lcmNvbGVkw6xfZ2lvdmVkw6xfdmVuZXJkw6xfc2FiYXRvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2RvbV9sdW5fbWFyX21lcl9naW9fdmVuX3NhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnZG9fbHVfbWFfbWVfZ2lfdmVfc2EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbT2dnaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0RvbWFuaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2FsbGVdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSWVyaSBhbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW2xvIHNjb3Jzb10gZGRkZCBbYWxsZV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoL15bMC05XS4rJC8pLnRlc3QocykgPyAndHJhJyA6ICdpbicpICsgJyAnICsgcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXN0IDogJyVzIGZhJyxcbiAgICAgICAgICAgIHMgOiAnYWxjdW5pIHNlY29uZGknLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kaScsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGknLFxuICAgICAgICAgICAgaCA6ICd1blxcJ29yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBvcmUnLFxuICAgICAgICAgICAgZCA6ICd1biBnaW9ybm8nLFxuICAgICAgICAgICAgZGQgOiAnJWQgZ2lvcm5pJyxcbiAgICAgICAgICAgIE0gOiAndW4gbWVzZScsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNpJyxcbiAgICAgICAgICAgIHkgOiAndW4gYW5ubycsXG4gICAgICAgICAgICB5eSA6ICclZCBhbm5pJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlIDogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsOiAnJWTCuicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgaXRDaCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2l0LWNoJywge1xuICAgICAgICBtb250aHMgOiAnZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdkb21fbHVuX21hcl9tZXJfZ2lvX3Zlbl9zYWInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ2RvX2x1X21hX21lX2dpX3ZlX3NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW09nZ2kgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tEb21hbmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFthbGxlXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0llcmkgYWxsZV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoKC9eWzAtOV0uKyQvKS50ZXN0KHMpID8gJ3RyYScgOiAnaW4nKSArICcgJyArIHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFzdCA6ICclcyBmYScsXG4gICAgICAgICAgICBzIDogJ2FsY3VuaSBzZWNvbmRpJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlY29uZGknLFxuICAgICAgICAgICAgbSA6ICd1biBtaW51dG8nLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRpJyxcbiAgICAgICAgICAgIGggOiAndW5cXCdvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgb3JlJyxcbiAgICAgICAgICAgIGQgOiAndW4gZ2lvcm5vJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGdpb3JuaScsXG4gICAgICAgICAgICBNIDogJ3VuIG1lc2UnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzaScsXG4gICAgICAgICAgICB5IDogJ3VuIGFubm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5uaSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBpdENoO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgamEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdqYScsIHtcbiAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn5pel5puc5pelX+aciOabnOaXpV/ngavmm5zml6Vf5rC05puc5pelX+acqOabnOaXpV/ph5Hmm5zml6Vf5Zyf5puc5pelJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+aXpV/mnIhf54GrX+awtF/mnKhf6YeRX+Wcnycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6UgZGRkZCBISDptbScsXG4gICAgICAgICAgICBsIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0TeaciETml6UoZGRkKSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+WNiOWJjXzljYjlvowvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn5Y2I5b6MJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfljYjliY0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+WNiOW+jCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb5LuK5pelXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vmmI7ml6VdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogZnVuY3Rpb24gKG5vdykge1xuICAgICAgICAgICAgICAgIGlmIChub3cud2VlaygpIDwgdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb5p2l6YCxXWRkZGQgTFQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+aYqOaXpV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiBmdW5jdGlvbiAobm93KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2VlaygpIDwgbm93LndlZWsoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vlhYjpgLFdZGRkZCBMVCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkZGRkIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfeaXpS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+W+jCcsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5pWw56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVk56eSJyxcbiAgICAgICAgICAgIG0gOiAnMeWIhicsXG4gICAgICAgICAgICBtbSA6ICclZOWIhicsXG4gICAgICAgICAgICBoIDogJzHmmYLplpMnLFxuICAgICAgICAgICAgaGggOiAnJWTmmYLplpMnLFxuICAgICAgICAgICAgZCA6ICcx5pelJyxcbiAgICAgICAgICAgIGRkIDogJyVk5pelJyxcbiAgICAgICAgICAgIE0gOiAnMeODtuaciCcsXG4gICAgICAgICAgICBNTSA6ICclZOODtuaciCcsXG4gICAgICAgICAgICB5IDogJzHlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWTlubQnXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBqYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGp2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnanYnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3BlbWJlcl9EZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vcF9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ01pbmdndV9TZW5lbl9TZWxvc29fUmVidV9LZW1pc19KZW11d2FoX1NlcHR1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ01pbl9TZW5fU2VsX1JlYl9LZW1fSmVtX1NlcCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTWdfU25fU2xfUmJfS21fSm1fU3AnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9lbmppbmd8c2l5YW5nfHNvbnRlbnxuZGFsdS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdlbmppbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAnc2l5YW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdzb250ZW4nIHx8IG1lcmlkaWVtID09PSAnbmRhbHUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlbmppbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaXlhbmcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VycyA8IDE5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdzb250ZW4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ25kYWx1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tEaW50ZW4gcHVuaWtvIHB1a3VsXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tNYmVuamFuZyBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0thbGEgd2luZ2kgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2tlcGVuZ2tlciBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3dvbnRlbiBpbmcgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBpbmdrYW5nIGtlcGVuZ2tlcicsXG4gICAgICAgICAgICBzIDogJ3Nhd2V0YXdpcyBkZXRpaycsXG4gICAgICAgICAgICBzcyA6ICclZCBkZXRpaycsXG4gICAgICAgICAgICBtIDogJ3NldHVuZ2dhbCBtZW5pdCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtZW5pdCcsXG4gICAgICAgICAgICBoIDogJ3NldHVuZ2dhbCBqYW0nLFxuICAgICAgICAgICAgaGggOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQgOiAnc2VkaW50ZW4nLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGludGVuJyxcbiAgICAgICAgICAgIE0gOiAnc2V3dWxhbicsXG4gICAgICAgICAgICBNTSA6ICclZCB3dWxhbicsXG4gICAgICAgICAgICB5IDogJ3NldGF1bicsXG4gICAgICAgICAgICB5eSA6ICclZCB0YXVuJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBqdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIGthID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2EnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfhg5jhg5Dhg5zhg5Xhg5Dhg6Dhg5hf4YOX4YOU4YOR4YOU4YOg4YOV4YOQ4YOa4YOYX+GDm+GDkOGDoOGDouGDmF/hg5Dhg57hg6Dhg5jhg5rhg5hf4YOb4YOQ4YOY4YOh4YOYX+GDmOGDleGDnOGDmOGDoeGDmF/hg5jhg5Xhg5rhg5jhg6Hhg5hf4YOQ4YOS4YOV4YOY4YOh4YOi4YOdX+GDoeGDlOGDpeGDouGDlOGDm+GDkeGDlOGDoOGDmF/hg53hg6Xhg6Lhg53hg5vhg5Hhg5Thg6Dhg5hf4YOc4YOd4YOU4YOb4YOR4YOU4YOg4YOYX+GDk+GDlOGDmeGDlOGDm+GDkeGDlOGDoOGDmCcuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGZvcm1hdDogJ+GDmOGDkOGDnOGDleGDkOGDoOGDoV/hg5fhg5Thg5Hhg5Thg6Dhg5Xhg5Dhg5rhg6Ff4YOb4YOQ4YOg4YOi4YOhX+GDkOGDnuGDoOGDmOGDmuGDmOGDoV/hg5vhg5Dhg5jhg6Hhg6Ff4YOY4YOV4YOc4YOY4YOh4YOhX+GDmOGDleGDmuGDmOGDoeGDoV/hg5Dhg5Lhg5Xhg5jhg6Hhg6Lhg6Ff4YOh4YOU4YOl4YOi4YOU4YOb4YOR4YOU4YOg4YOhX+GDneGDpeGDouGDneGDm+GDkeGDlOGDoOGDoV/hg5zhg53hg5Thg5vhg5Hhg5Thg6Dhg6Ff4YOT4YOU4YOZ4YOU4YOb4YOR4YOU4YOg4YOhJy5zcGxpdCgnXycpXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+GDmOGDkOGDnF/hg5fhg5Thg5Ff4YOb4YOQ4YOgX+GDkOGDnuGDoF/hg5vhg5Dhg5hf4YOY4YOV4YOcX+GDmOGDleGDml/hg5Dhg5Lhg5Vf4YOh4YOU4YOlX+GDneGDpeGDol/hg5zhg53hg5Rf4YOT4YOU4YOZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6IHtcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfhg5nhg5Xhg5jhg6Dhg5Bf4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDmF/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg5hf4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOYX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDmF/hg6jhg5Dhg5Hhg5Dhg5fhg5gnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBmb3JtYXQ6ICfhg5nhg5Xhg5jhg6Dhg5Dhg6Ff4YOd4YOg4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDoeGDkOGDm+GDqOGDkOGDkeGDkOGDl+GDoV/hg53hg5fhg67hg6jhg5Dhg5Hhg5Dhg5fhg6Ff4YOu4YOj4YOX4YOo4YOQ4YOR4YOQ4YOX4YOhX+GDnuGDkOGDoOGDkOGDoeGDmeGDlOGDleGDoV/hg6jhg5Dhg5Hhg5Dhg5fhg6EnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBpc0Zvcm1hdDogLyjhg6zhg5jhg5zhg5B84YOo4YOU4YOb4YOT4YOU4YOSKS9cbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfhg5nhg5Xhg5hf4YOd4YOg4YOoX+GDoeGDkOGDm1/hg53hg5fhg65f4YOu4YOj4YOXX+GDnuGDkOGDoF/hg6jhg5Dhg5EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+GDmeGDlV/hg53hg6Bf4YOh4YOQX+GDneGDl1/hg67hg6Nf4YOe4YOQX+GDqOGDkCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdoOm1tIEEnLFxuICAgICAgICAgICAgTFRTIDogJ2g6bW06c3MgQScsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIGg6bW0gQScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vhg5Phg6bhg5Thg6FdIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+GDruGDleGDkOGDml0gTFRbLeGDluGDlF0nLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4YOS4YOj4YOo4YOY4YOcXSBMVFst4YOW4YOUXScsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4YOo4YOU4YOb4YOT4YOU4YOSXSBkZGRkIExUWy3hg5bhg5RdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vhg6zhg5jhg5zhg5BdIGRkZGQgTFQt4YOW4YOUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgvKOGDrOGDkOGDm+GDmHzhg6zhg6Phg5fhg5h84YOh4YOQ4YOQ4YOX4YOYfOGDrOGDlOGDmuGDmCkvKS50ZXN0KHMpID9cbiAgICAgICAgICAgICAgICAgICAgcy5yZXBsYWNlKC/hg5gkLywgJ+GDqOGDmCcpIDpcbiAgICAgICAgICAgICAgICAgICAgcyArICfhg6jhg5gnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3QgOiBmdW5jdGlvbiAocykge1xuICAgICAgICAgICAgICAgIGlmICgoLyjhg6zhg5Dhg5vhg5h84YOs4YOj4YOX4YOYfOGDoeGDkOGDkOGDl+GDmHzhg5Phg6bhg5R84YOX4YOV4YOUKS8pLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvKOGDmHzhg5QpJC8sICfhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoL+GDrOGDlOGDmuGDmC8pLnRlc3QocykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgv4YOs4YOU4YOa4YOYJC8sICfhg6zhg5rhg5jhg6Eg4YOs4YOY4YOcJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHMgOiAn4YOg4YOQ4YOb4YOT4YOU4YOc4YOY4YOb4YOUIOGDrOGDkOGDm+GDmCcsXG4gICAgICAgICAgICBzcyA6ICclZCDhg6zhg5Dhg5vhg5gnLFxuICAgICAgICAgICAgbSA6ICfhg6zhg6Phg5fhg5gnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4YOs4YOj4YOX4YOYJyxcbiAgICAgICAgICAgIGggOiAn4YOh4YOQ4YOQ4YOX4YOYJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOGDoeGDkOGDkOGDl+GDmCcsXG4gICAgICAgICAgICBkIDogJ+GDk+GDpuGDlCcsXG4gICAgICAgICAgICBkZCA6ICclZCDhg5Phg6bhg5QnLFxuICAgICAgICAgICAgTSA6ICfhg5fhg5Xhg5QnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4YOX4YOV4YOUJyxcbiAgICAgICAgICAgIHkgOiAn4YOs4YOU4YOa4YOYJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOGDrOGDlOGDmuGDmCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogLzB8MS3hg5rhg5h84YOb4YOULVxcZHsxLDJ9fFxcZHsxLDJ9LeGDlC8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3hg5rhg5gnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChudW1iZXIgPCAyMCkgfHwgKG51bWJlciA8PSAxMDAgJiYgKG51bWJlciAlIDIwID09PSAwKSkgfHwgKG51bWJlciAlIDEwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GDm+GDlC0nICsgbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct4YOUJztcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsXG4gICAgICAgICAgICBkb3kgOiA3XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBrYTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGI0ZYnLFxuICAgICAgICAxOiAnLdGI0ZYnLFxuICAgICAgICAyOiAnLdGI0ZYnLFxuICAgICAgICAzOiAnLdGI0ZYnLFxuICAgICAgICA0OiAnLdGI0ZYnLFxuICAgICAgICA1OiAnLdGI0ZYnLFxuICAgICAgICA2OiAnLdGI0YsnLFxuICAgICAgICA3OiAnLdGI0ZYnLFxuICAgICAgICA4OiAnLdGI0ZYnLFxuICAgICAgICA5OiAnLdGI0YsnLFxuICAgICAgICAxMDogJy3RiNGLJyxcbiAgICAgICAgMjA6ICct0YjRiycsXG4gICAgICAgIDMwOiAnLdGI0YsnLFxuICAgICAgICA0MDogJy3RiNGLJyxcbiAgICAgICAgNTA6ICct0YjRlicsXG4gICAgICAgIDYwOiAnLdGI0YsnLFxuICAgICAgICA3MDogJy3RiNGWJyxcbiAgICAgICAgODA6ICct0YjRlicsXG4gICAgICAgIDkwOiAnLdGI0YsnLFxuICAgICAgICAxMDA6ICct0YjRlidcbiAgICB9O1xuXG4gICAgdmFyIGtrID0gbW9tZW50LmRlZmluZUxvY2FsZSgna2snLCB7XG4gICAgICAgIG1vbnRocyA6ICfSm9Cw0qPRgtCw0YBf0LDSm9C/0LDQvV/QvdCw0YPRgNGL0Ldf0YHTmdGD0ZbRgF/QvNCw0LzRi9GAX9C80LDRg9GB0YvQvF/RiNGW0LvQtNC1X9GC0LDQvNGL0Ldf0pvRi9GA0LrSr9C50LXQul/Sm9Cw0LfQsNC9X9Kb0LDRgNCw0YjQsF/QttC10LvRgtC+0pvRgdCw0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9Kb0LDSo1/QsNKb0L9f0L3QsNGDX9GB05nRg1/QvNCw0Lxf0LzQsNGDX9GI0ZbQu1/RgtCw0Lxf0pvRi9GAX9Kb0LDQt1/Sm9Cw0YBf0LbQtdC7Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQttC10LrRgdC10L3QsdGWX9C00q/QudGB0LXQvdCx0ZZf0YHQtdC50YHQtdC90LHRll/RgdOZ0YDRgdC10L3QsdGWX9Cx0LXQudGB0LXQvdCx0ZZf0LbSsdC80LBf0YHQtdC90LHRlicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQttC10Lpf0LTSr9C5X9GB0LXQuV/RgdOZ0YBf0LHQtdC5X9C20rHQvF/RgdC10L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C20Lpf0LTQuV/RgdC5X9GB0YBf0LHQuV/QttC8X9GB0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQkdKv0LPRltC9INGB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9CV0YDRgtC10qMg0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JrQtdGI0LUg0YHQsNKT0LDRgl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9Oo0YLQutC10L0g0LDQv9GC0LDQvdGL0qNdIGRkZGQgW9GB0LDSk9Cw0YJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDRltGI0ZbQvdC00LUnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDQsdKx0YDRi9C9JyxcbiAgICAgICAgICAgIHMgOiAn0LHRltGA0L3QtdGI0LUg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzIDogJyVkINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBtIDogJ9Cx0ZbRgCDQvNC40L3Rg9GCJyxcbiAgICAgICAgICAgIG1tIDogJyVkINC80LjQvdGD0YInLFxuICAgICAgICAgICAgaCA6ICfQsdGW0YAg0YHQsNKT0LDRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdCw0pPQsNGCJyxcbiAgICAgICAgICAgIGQgOiAn0LHRltGAINC60q/QvScsXG4gICAgICAgICAgICBkZCA6ICclZCDQutKv0L0nLFxuICAgICAgICAgICAgTSA6ICfQsdGW0YAg0LDQuScsXG4gICAgICAgICAgICBNTSA6ICclZCDQsNC5JyxcbiAgICAgICAgICAgIHkgOiAn0LHRltGAINC20YvQuycsXG4gICAgICAgICAgICB5eSA6ICclZCDQttGL0LsnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YjRlnzRiNGLKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYSA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgPj0gMTAwID8gMTAwIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoc3VmZml4ZXNbbnVtYmVyXSB8fCBzdWZmaXhlc1thXSB8fCBzdWZmaXhlc1tiXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGtrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfhn6EnLFxuICAgICAgICAnMic6ICfhn6InLFxuICAgICAgICAnMyc6ICfhn6MnLFxuICAgICAgICAnNCc6ICfhn6QnLFxuICAgICAgICAnNSc6ICfhn6UnLFxuICAgICAgICAnNic6ICfhn6YnLFxuICAgICAgICAnNyc6ICfhn6cnLFxuICAgICAgICAnOCc6ICfhn6gnLFxuICAgICAgICAnOSc6ICfhn6knLFxuICAgICAgICAnMCc6ICfhn6AnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn4Z+hJzogJzEnLFxuICAgICAgICAn4Z+iJzogJzInLFxuICAgICAgICAn4Z+jJzogJzMnLFxuICAgICAgICAn4Z+kJzogJzQnLFxuICAgICAgICAn4Z+lJzogJzUnLFxuICAgICAgICAn4Z+mJzogJzYnLFxuICAgICAgICAn4Z+nJzogJzcnLFxuICAgICAgICAn4Z+oJzogJzgnLFxuICAgICAgICAn4Z+pJzogJzknLFxuICAgICAgICAn4Z+gJzogJzAnXG4gICAgfTtcblxuICAgIHZhciBrbSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2ttJywge1xuICAgICAgICBtb250aHM6ICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfhnpjhnoDhnprhnrZf4Z6A4Z674Z6Y4Z+S4Z6X4Z+IX+GemOGeuOGek+Getl/hnpjhn4Hhnp/hnrZf4Z6n4Z6f4Z6X4Z62X+GemOGet+GekOGeu+Gek+Getl/hnoDhnoDhn5LhnoDhnorhnrZf4Z6f4Z644Z6g4Z62X+GegOGeieGfkuGeieGetl/hno/hnrvhnpvhnrZf4Z6c4Z634Z6F4Z+S4Z6G4Z634Z6A4Z62X+GekuGfkuGek+GevCcuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXM6ICfhnqLhnrbhnpHhnrfhno/hn5Lhnplf4Z6F4Z+Q4Z6T4Z+S4Z6RX+GeouGehOGfkuGeguGetuGeml/hnpbhnrvhnpJf4Z6W4Z+S4Z6a4Z6g4Z6f4Z+S4Z6U4Z6P4Z634Z+NX+Gen+Geu+GegOGfkuGeml/hnp/hn4Xhnprhn40nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICfhnqLhnrZf4Z6FX+Geol/hnpZf4Z6W4Z+S4Z6aX+Gen+Geu1/hnp8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn4Z6i4Z62X+GehV/hnqJf4Z6WX+GeluGfkuGeml/hnp/hnrtf4Z6fJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUzogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv4Z6W4Z+S4Z6a4Z654Z6AfOGem+GfkuGehOGetuGehS8sXG4gICAgICAgIGlzUE06IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ID09PSAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+GeluGfkuGemuGeueGegCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Z6b4Z+S4Z6E4Z624Z6FJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdb4Z6Q4Z+S4Z6E4Z+D4Z6T4Z+B4Z+HIOGemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1vhnp/hn5LhnqLhn4LhnoAg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vhnpjhn5Lhnp/hnrfhnpvhnpjhnrfhnokg4Z6Y4Z+J4Z+E4Z6EXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW+Gen+GelOGfkuGej+GetuGeoOGfjeGemOGeu+Gek10gW+GemOGfieGfhOGehF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4Z6R4Z+A4Z6PJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+GemOGeu+GekycsXG4gICAgICAgICAgICBzOiAn4Z6U4Z+J4Z674Z6T4Z+S4Z6Y4Z624Z6T4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIHNzOiAnJWQg4Z6c4Z634Z6T4Z624Z6R4Z64JyxcbiAgICAgICAgICAgIG06ICfhnpjhnr3hnpnhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgbW06ICclZCDhnpPhnrbhnpHhnrgnLFxuICAgICAgICAgICAgaDogJ+GemOGeveGemeGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBoaDogJyVkIOGemOGfieGfhOGehCcsXG4gICAgICAgICAgICBkOiAn4Z6Y4Z694Z6Z4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIGRkOiAnJWQg4Z6Q4Z+S4Z6E4Z+DJyxcbiAgICAgICAgICAgIE06ICfhnpjhnr3hnpnhnoHhn4InLFxuICAgICAgICAgICAgTU06ICclZCDhnoHhn4InLFxuICAgICAgICAgICAgeTogJ+GemOGeveGemeGehuGfkuGek+GetuGfhicsXG4gICAgICAgICAgICB5eTogJyVkIOGehuGfkuGek+GetuGfhidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC/hnpHhnrhcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiAn4Z6R4Z64JWQnLFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Z+h4Z+i4Z+j4Z+k4Z+l4Z+m4Z+n4Z+o4Z+p4Z+gXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrOiB7XG4gICAgICAgICAgICBkb3c6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95OiA0IC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGttO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgs6cnLFxuICAgICAgICAnMic6ICfgs6gnLFxuICAgICAgICAnMyc6ICfgs6knLFxuICAgICAgICAnNCc6ICfgs6onLFxuICAgICAgICAnNSc6ICfgs6snLFxuICAgICAgICAnNic6ICfgs6wnLFxuICAgICAgICAnNyc6ICfgs60nLFxuICAgICAgICAnOCc6ICfgs64nLFxuICAgICAgICAnOSc6ICfgs68nLFxuICAgICAgICAnMCc6ICfgs6YnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgs6cnOiAnMScsXG4gICAgICAgICfgs6gnOiAnMicsXG4gICAgICAgICfgs6knOiAnMycsXG4gICAgICAgICfgs6onOiAnNCcsXG4gICAgICAgICfgs6snOiAnNScsXG4gICAgICAgICfgs6wnOiAnNicsXG4gICAgICAgICfgs60nOiAnNycsXG4gICAgICAgICfgs64nOiAnOCcsXG4gICAgICAgICfgs68nOiAnOScsXG4gICAgICAgICfgs6YnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIGtuID0gbW9tZW50LmRlZmluZUxvY2FsZSgna24nLCB7XG4gICAgICAgIG1vbnRocyA6ICfgspzgsqjgsrXgsrDgsr9f4LKr4LOG4LKs4LON4LKw4LK14LKw4LK/X+CyruCyvuCysOCzjeCymuCzjV/gso/gsqrgs43gsrDgsr/gsrLgs41f4LKu4LOG4LOVX+CynOCzguCyqOCzjV/gspzgs4HgsrLgs4bgs5Zf4LKG4LKX4LK44LON4LKf4LONX+CyuOCzhuCyquCzjeCyn+CzhuCyguCyrOCysOCzjV/gsoXgspXgs43gsp/gs4bgs4Lgs5XgsqzgsrDgs41f4LKo4LK14LOG4LKC4LKs4LKw4LONX+CyoeCyv+CyuOCzhuCyguCyrOCysOCzjScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4LKc4LKoX+Cyq+CzhuCyrOCzjeCysF/gsq7gsr7gsrDgs43gsprgs41f4LKP4LKq4LON4LKw4LK/4LKy4LONX+CyruCzhuCzlV/gspzgs4Lgsqjgs41f4LKc4LOB4LKy4LOG4LOWX+CyhuCyl+CyuOCzjeCyn+CzjV/gsrjgs4bgsqrgs43gsp/gs4bgsoJf4LKF4LKV4LON4LKf4LOG4LOC4LOVX+CyqOCyteCzhuCygl/gsqHgsr/gsrjgs4bgsoInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CyreCyvuCyqOCzgeCyteCyvuCysF/gsrjgs4bgs4Lgs5Xgsq7gsrXgsr7gsrBf4LKu4LKC4LKX4LKz4LK14LK+4LKwX+CyrOCzgeCyp+CyteCyvuCysF/gspfgs4HgsrDgs4HgsrXgsr7gsrBf4LK24LOB4LKV4LON4LKw4LK14LK+4LKwX+CytuCyqOCyv+CyteCyvuCysCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgsq3gsr7gsqjgs4Ff4LK44LOG4LOC4LOV4LKuX+CyruCyguCyl+Cys1/gsqzgs4Hgsqdf4LKX4LOB4LKw4LOBX+CytuCzgeCyleCzjeCysF/gsrbgsqjgsr8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CyreCyvl/gsrjgs4bgs4Lgs5Vf4LKu4LKCX+CyrOCzgV/gspfgs4Ff4LK24LOBX+Cyticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+Cyh+CyguCypuCzgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LKo4LK+4LKz4LOGXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgsqjgsr/gsqjgs43gsqjgs4ZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgspXgs4bgs4Lgsqjgs4bgsq9dIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgsqjgsoLgsqTgsrAnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgsrngsr/gsoLgsqbgs4YnLFxuICAgICAgICAgICAgcyA6ICfgspXgs4bgsrLgsrXgs4Eg4LKV4LON4LK34LKj4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCyuOCzhuCyleCzhuCyguCyoeCzgeCyl+Cys+CzgScsXG4gICAgICAgICAgICBtIDogJ+CykuCyguCypuCzgSDgsqjgsr/gsq7gsr/gsrcnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LKo4LK/4LKu4LK/4LK3JyxcbiAgICAgICAgICAgIGggOiAn4LKS4LKC4LKm4LOBIOCyl+CyguCyn+CzhicsXG4gICAgICAgICAgICBoaCA6ICclZCDgspfgsoLgsp/gs4YnLFxuICAgICAgICAgICAgZCA6ICfgspLgsoLgsqbgs4Eg4LKm4LK/4LKoJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCypuCyv+CyqCcsXG4gICAgICAgICAgICBNIDogJ+CykuCyguCypuCzgSDgsqTgsr/gsoLgspfgsrPgs4EnLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LKk4LK/4LKC4LKX4LKz4LOBJyxcbiAgICAgICAgICAgIHkgOiAn4LKS4LKC4LKm4LOBIOCyteCysOCzjeCytycsXG4gICAgICAgICAgICB5eSA6ICclZCDgsrXgsrDgs43gsrcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vgs6fgs6jgs6ngs6rgs6vgs6zgs63gs67gs6/gs6ZdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gsrDgsr7gsqTgs43gsrDgsr984LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGfOCyruCyp+CzjeCyr+CyvuCyueCzjeCyqHzgsrjgsoLgspzgs4YvLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4LKw4LK+4LKk4LON4LKw4LK/Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LKs4LOG4LKz4LK/4LKX4LON4LKX4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CyruCyp+CzjeCyr+CyvuCyueCzjeCyqCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LK44LKC4LKc4LOGJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrDgsr7gsqTgs43gsrDgsr8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CyrOCzhuCys+Cyv+Cyl+CzjeCyl+Czhic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LKu4LKn4LON4LKv4LK+4LK54LON4LKoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsrjgsoLgspzgs4YnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CysOCyvuCypOCzjeCysOCyvyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSjgsqjgs4bgs5UpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4LKo4LOG4LOVJztcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga247XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBrbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2tvJywge1xuICAgICAgICBtb250aHMgOiAnMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnQSBoOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ64WEIE1NTU0gROydvCcsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZLk1NLkRELicsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ64WEIE1NTU0gROydvCcsXG4gICAgICAgICAgICBsbGwgOiAnWVlZWeuFhCBNTU1NIETsnbwgQSBoOm1tJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICfsmKTripggTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICfrgrTsnbwgTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ+yWtOygnCBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICfsp4Drgpzso7wgZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg7ZuEJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg7KCEJyxcbiAgICAgICAgICAgIHMgOiAn66qHIOy0iCcsXG4gICAgICAgICAgICBzcyA6ICclZOy0iCcsXG4gICAgICAgICAgICBtIDogJzHrtoQnLFxuICAgICAgICAgICAgbW0gOiAnJWTrtoQnLFxuICAgICAgICAgICAgaCA6ICftlZwg7Iuc6rCEJyxcbiAgICAgICAgICAgIGhoIDogJyVk7Iuc6rCEJyxcbiAgICAgICAgICAgIGQgOiAn7ZWY66OoJyxcbiAgICAgICAgICAgIGRkIDogJyVk7J28JyxcbiAgICAgICAgICAgIE0gOiAn7ZWcIOuLrCcsXG4gICAgICAgICAgICBNTSA6ICclZOuLrCcsXG4gICAgICAgICAgICB5IDogJ+ydvCDrhYQnLFxuICAgICAgICAgICAgeXkgOiAnJWTrhYQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn0o7J28fOyblHzso7wpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+ydvCc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn7JuUJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfso7wnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2UgOiAv7Jik7KCEfOyYpO2bhC8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbiA9PT0gJ+yYpO2bhCc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCAxMiA/ICfsmKTsoIQnIDogJ+yYpO2bhCc7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBrbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn2aEnLFxuICAgICAgICAnMic6ICfZoicsXG4gICAgICAgICczJzogJ9mjJyxcbiAgICAgICAgJzQnOiAn2aQnLFxuICAgICAgICAnNSc6ICfZpScsXG4gICAgICAgICc2JzogJ9mmJyxcbiAgICAgICAgJzcnOiAn2acnLFxuICAgICAgICAnOCc6ICfZqCcsXG4gICAgICAgICc5JzogJ9mpJyxcbiAgICAgICAgJzAnOiAn2aAnXG4gICAgfSwgbnVtYmVyTWFwID0ge1xuICAgICAgICAn2aEnOiAnMScsXG4gICAgICAgICfZoic6ICcyJyxcbiAgICAgICAgJ9mjJzogJzMnLFxuICAgICAgICAn2aQnOiAnNCcsXG4gICAgICAgICfZpSc6ICc1JyxcbiAgICAgICAgJ9mmJzogJzYnLFxuICAgICAgICAn2acnOiAnNycsXG4gICAgICAgICfZqCc6ICc4JyxcbiAgICAgICAgJ9mpJzogJzknLFxuICAgICAgICAn2aAnOiAnMCdcbiAgICB9LFxuICAgIG1vbnRocyA9IFtcbiAgICAgICAgJ9qp2KfZhtmI2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgJ9i02YjYqNin2KonLFxuICAgICAgICAn2KbYp9iy2KfYsScsXG4gICAgICAgICfZhtuM2LPYp9mGJyxcbiAgICAgICAgJ9im2KfbjNin2LEnLFxuICAgICAgICAn2K3ZiNiy25XbjNix2KfZhicsXG4gICAgICAgICfYqtuV2YXZhdmI2LInLFxuICAgICAgICAn2KbYp9ioJyxcbiAgICAgICAgJ9im25XbjNmE2YjZiNmEJyxcbiAgICAgICAgJ9iq2LTYsduM2YbbjCDbjNuV2YPbldmFJyxcbiAgICAgICAgJ9iq2LTYsduM2YbbjCDYr9mI2YjbldmFJyxcbiAgICAgICAgJ9mD2KfZhtmI2YbbjCDbjNuV2qnbldmFJ1xuICAgIF07XG5cblxuICAgIHZhciBrdSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ2t1Jywge1xuICAgICAgICBtb250aHMgOiBtb250aHMsXG4gICAgICAgIG1vbnRoc1Nob3J0IDogbW9udGhzLFxuICAgICAgICB3ZWVrZGF5cyA6ICfbjNmH4oCM2YPYtNmH4oCM2YXZhdmH4oCMX9iv2YjZiNi02YfigIzZhdmF2YfigIxf2LPbjti02YfigIzZhdmF2YfigIxf2obZiNin2LHYtNmH4oCM2YXZhdmH4oCMX9m+247Zhtis2LTZh+KAjNmF2YXZh+KAjF/Zh9mH4oCM24zZhtuMX9i02YfigIzZhdmF2YfigIwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn24zZh+KAjNmD2LTZh+KAjNmFX9iv2YjZiNi02YfigIzZhV/Ys9uO2LTZh+KAjNmFX9qG2YjYp9ix2LTZh+KAjNmFX9m+247Zhtis2LTZh+KAjNmFX9mH2YfigIzbjNmG24xf2LTZh+KAjNmF2YXZh+KAjCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn24xf2K9f2LNf2oZf2b5f2Ydf2LQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9im247ZiNin2LHZh+KAjHzYqNmH4oCM24zYp9mG24wvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAv2KbbjtmI2KfYsdmH4oCMLy50ZXN0KGlucHV0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDEyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfYqNmH4oCM24zYp9mG24wnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9im247ZiNin2LHZh+KAjCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KbZh+KAjNmF2LHbhiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2KjZh+KAjNuM2KfZhtuMINmD2KfYqtqY2YXbjtixXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2K/ZiNuO2YbbjiDZg9in2KramNmF247YsV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBb2YPYp9iq2pjZhduO2LFdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfZhNmH4oCMICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMnLFxuICAgICAgICAgICAgcyA6ICfahtmH4oCM2YbYryDahtix2YPZh+KAjNuM2YfigIzZgycsXG4gICAgICAgICAgICBzcyA6ICfahtix2YPZh+KAjCAlZCcsXG4gICAgICAgICAgICBtIDogJ9uM2YfigIzZgyDYrtmI2YTZh+KAjNmDJyxcbiAgICAgICAgICAgIG1tIDogJyVkINiu2YjZhNmH4oCM2YMnLFxuICAgICAgICAgICAgaCA6ICfbjNmH4oCM2YMg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgaGggOiAnJWQg2YPYp9iq2pjZhduO2LEnLFxuICAgICAgICAgICAgZCA6ICfbjNmH4oCM2YMg2pXbhtqYJyxcbiAgICAgICAgICAgIGRkIDogJyVkINqV24bamCcsXG4gICAgICAgICAgICBNIDogJ9uM2YfigIzZgyDZhdin2YbarycsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdin2YbarycsXG4gICAgICAgICAgICB5IDogJ9uM2YfigIzZgyDYs9in2rUnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9q1J1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSkucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KS5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBrdTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGH0q8nLFxuICAgICAgICAxOiAnLdGH0LgnLFxuICAgICAgICAyOiAnLdGH0LgnLFxuICAgICAgICAzOiAnLdGH0q8nLFxuICAgICAgICA0OiAnLdGH0q8nLFxuICAgICAgICA1OiAnLdGH0LgnLFxuICAgICAgICA2OiAnLdGH0YsnLFxuICAgICAgICA3OiAnLdGH0LgnLFxuICAgICAgICA4OiAnLdGH0LgnLFxuICAgICAgICA5OiAnLdGH0YMnLFxuICAgICAgICAxMDogJy3Rh9GDJyxcbiAgICAgICAgMjA6ICct0YfRiycsXG4gICAgICAgIDMwOiAnLdGH0YMnLFxuICAgICAgICA0MDogJy3Rh9GLJyxcbiAgICAgICAgNTA6ICct0YfSrycsXG4gICAgICAgIDYwOiAnLdGH0YsnLFxuICAgICAgICA3MDogJy3Rh9C4JyxcbiAgICAgICAgODA6ICct0YfQuCcsXG4gICAgICAgIDkwOiAnLdGH0YMnLFxuICAgICAgICAxMDA6ICct0YfSrydcbiAgICB9O1xuXG4gICAgdmFyIGt5ID0gbW9tZW50LmRlZmluZUxvY2FsZSgna3knLCB7XG4gICAgICAgIG1vbnRocyA6ICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GAX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQltC10LrRiNC10LzQsdC4X9CU0q/QudGI06nQvNCx0q9f0KjQtdC50YjQtdC80LHQuF/QqNCw0YDRiNC10LzQsdC4X9CR0LXQudGI0LXQvNCx0Lhf0JbRg9C80LBf0JjRiNC10LzQsdC4Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9CW0LXQul/QlNKv0Llf0KjQtdC5X9Co0LDRgF/QkdC10Llf0JbRg9C8X9CY0YjQtScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0JbQul/QlNC5X9Co0Llf0KjRgF/QkdC5X9CW0Lxf0JjRiCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9CR0q/Qs9Kv0L0g0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Ct0YDRgtC10qMg0YHQsNCw0YJdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW9GB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQmtC10YfRjdGNINGB0LDQsNGCXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb06jRgtC606nQvSDQsNC/0YLQsNC90YvQvV0gZGRkZCBb0LrSr9C90q9dIFvRgdCw0LDRgl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINC40YfQuNC90LTQtScsXG4gICAgICAgICAgICBwYXN0IDogJyVzINC80YPRgNGD0L0nLFxuICAgICAgICAgICAgcyA6ICfQsdC40YDQvdC10YfQtSDRgdC10LrRg9C90LQnLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIG0gOiAn0LHQuNGAINC80q/QvdOp0YInLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LzSr9C906nRgicsXG4gICAgICAgICAgICBoIDogJ9Cx0LjRgCDRgdCw0LDRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdCw0LDRgicsXG4gICAgICAgICAgICBkIDogJ9Cx0LjRgCDQutKv0L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LrSr9C9JyxcbiAgICAgICAgICAgIE0gOiAn0LHQuNGAINCw0LknLFxuICAgICAgICAgICAgTU0gOiAnJWQg0LDQuScsXG4gICAgICAgICAgICB5IDogJ9Cx0LjRgCDQttGL0LsnLFxuICAgICAgICAgICAgeXkgOiAnJWQg0LbRi9C7J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0tKNGH0Lh80YfRi3zRh9KvfNGH0YMpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ga3k7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWxhdGl2ZVRpbWUobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXksIGlzRnV0dXJlKSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnbSc6IFsnZW5nIE1pbnV0dCcsICdlbmdlciBNaW51dHQnXSxcbiAgICAgICAgICAgICdoJzogWydlbmcgU3Rvbm4nLCAnZW5nZXIgU3Rvbm4nXSxcbiAgICAgICAgICAgICdkJzogWydlZW4gRGFnJywgJ2VuZ2VtIERhZyddLFxuICAgICAgICAgICAgJ00nOiBbJ2VlIE1vdW50JywgJ2VuZ2VtIE1vdW50J10sXG4gICAgICAgICAgICAneSc6IFsnZWUgSm9lcicsICdlbmdlbSBKb2VyJ11cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzRnV0dXJlVGltZShzdHJpbmcpIHtcbiAgICAgICAgdmFyIG51bWJlciA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YoJyAnKSk7XG4gICAgICAgIGlmIChlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuICdhICcgKyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdhbiAnICsgc3RyaW5nO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcm9jZXNzUGFzdFRpbWUoc3RyaW5nKSB7XG4gICAgICAgIHZhciBudW1iZXIgPSBzdHJpbmcuc3Vic3RyKDAsIHN0cmluZy5pbmRleE9mKCcgJykpO1xuICAgICAgICBpZiAoZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAndmlydSAnICsgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAndmlydW4gJyArIHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JkIGJlZm9yZSB0aGUgZ2l2ZW4gbnVtYmVyIGxvc2VzIHRoZSAnLW4nIGVuZGluZy5cbiAgICAgKiBlLmcuICdhbiAxMCBEZWVnJyBidXQgJ2EgNSBEZWVnJ1xuICAgICAqXG4gICAgICogQHBhcmFtIG51bWJlciB7aW50ZWdlcn1cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlaWZlbGVyUmVnZWxBcHBsaWVzVG9OdW1iZXIobnVtYmVyKSB7XG4gICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlciwgMTApO1xuICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICAvLyBOZWdhdGl2ZSBOdW1iZXIgLS0+IGFsd2F5cyB0cnVlXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMCkge1xuICAgICAgICAgICAgLy8gT25seSAxIGRpZ2l0XG4gICAgICAgICAgICBpZiAoNCA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IDcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCAxMDApIHtcbiAgICAgICAgICAgIC8vIDIgZGlnaXRzXG4gICAgICAgICAgICB2YXIgbGFzdERpZ2l0ID0gbnVtYmVyICUgMTAsIGZpcnN0RGlnaXQgPSBudW1iZXIgLyAxMDtcbiAgICAgICAgICAgIGlmIChsYXN0RGlnaXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKGZpcnN0RGlnaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihsYXN0RGlnaXQpO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDEwMDAwKSB7XG4gICAgICAgICAgICAvLyAzIG9yIDQgZGlnaXRzIC0tPiByZWN1cnNpdmVseSBjaGVjayBmaXJzdCBkaWdpdFxuICAgICAgICAgICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVpZmVsZXJSZWdlbEFwcGxpZXNUb051bWJlcihudW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQW55dGhpbmcgbGFyZ2VyIHRoYW4gNCBkaWdpdHM6IHJlY3Vyc2l2ZWx5IGNoZWNrIGZpcnN0IG4tMyBkaWdpdHNcbiAgICAgICAgICAgIG51bWJlciA9IG51bWJlciAvIDEwMDA7XG4gICAgICAgICAgICByZXR1cm4gZWlmZWxlclJlZ2VsQXBwbGllc1RvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsYicsIHtcbiAgICAgICAgbW9udGhzOiAnSmFudWFyX0ZlYnJ1YXJfTcOkZXJ6X0FicsOrbGxfTWVlX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnSmFuLl9GZWJyLl9NcnouX0Fici5fTWVlX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXM6ICdTb25uZGVnX03DqWluZGVnX0TDq25zY2hkZWdfTcOrdHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnU28uX03DqS5fRMOrLl9Nw6suX0RvLl9Gci5fU2EuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1NvX03DqV9Ew6tfTcOrX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tIFtBdWVyXScsXG4gICAgICAgICAgICBMVFM6ICdIOm1tOnNzIFtBdWVyXScsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSGF1dCB1bV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTXVlciB1bV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt1bV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tHw6tzY2h0ZXIgdW1dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gRGlmZmVyZW50IGRhdGUgc3RyaW5nIGZvciAnRMOrbnNjaGRlZycgKFR1ZXNkYXkpIGFuZCAnRG9ubmVzY2hkZWcnIChUaHVyc2RheSkgZHVlIHRvIHBob25vbG9naWNhbCBydWxlXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbTGVzY2h0ZW5dIGRkZGQgW3VtXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tMZXNjaHRlXSBkZGRkIFt1bV0gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogcHJvY2Vzc0Z1dHVyZVRpbWUsXG4gICAgICAgICAgICBwYXN0IDogcHJvY2Vzc1Bhc3RUaW1lLFxuICAgICAgICAgICAgcyA6ICdlIHB1ZXIgU2Vrb25uZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgU2Vrb25uZW4nLFxuICAgICAgICAgICAgbSA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtbSA6ICclZCBNaW51dHRlbicsXG4gICAgICAgICAgICBoIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGhoIDogJyVkIFN0b25uZW4nLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6ICclZCBEZWVnJyxcbiAgICAgICAgICAgIE0gOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTU0gOiAnJWQgTcOpaW50JyxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiAnJWQgSm9lcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbDogJyVkLicsXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxiO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbG8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsbycsIHtcbiAgICAgICAgbW9udGhzIDogJ+C6oeC6seC6h+C6geC6reC6mV/guoHgurjguqHgup7gurJf4Lqh4Lq14LqZ4LqyX+C7gOC6oeC6quC6sl/gup7gurbgupTguqrgurDgup7gurJf4Lqh4Lq04LqW4Lq44LqZ4LqyX+C6geC7jeC6peC6sOC6geC6u+C6lF/guqrgurTguofguqvgurJf4LqB4Lqx4LqZ4LqN4LqyX+C6leC6uOC6peC6sl/gup7gurDguojgurTguoFf4LqX4Lqx4LqZ4Lqn4LqyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfguqHgurHguofguoHguq3guplf4LqB4Lq44Lqh4Lqe4LqyX+C6oeC6teC6meC6sl/gu4DguqHguqrgurJf4Lqe4Lq24LqU4Lqq4Lqw4Lqe4LqyX+C6oeC6tOC6luC6uOC6meC6sl/guoHgu43guqXgurDguoHgurvgupRf4Lqq4Lq04LqH4Lqr4LqyX+C6geC6seC6meC6jeC6sl/gupXgurjguqXgurJf4Lqe4Lqw4LqI4Lq04LqBX+C6l+C6seC6meC6p+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4Lqt4Lqy4LqX4Lq04LqUX+C6iOC6seC6mV/guq3gurHguofguoTgurLguplf4Lqe4Lq44LqUX+C6nuC6sOC6q+C6seC6lF/guqrgurjguoFf4LuA4Lqq4Lq74LqyJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C6l+C6tOC6lF/guojgurHguplf4Lqt4Lqx4LqH4LqE4Lqy4LqZX+C6nuC6uOC6lF/gup7gurDguqvgurHgupRf4Lqq4Lq44LqBX+C7gOC6quC6u+C6sicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LqXX+C6iF/guq3guoRf4LqeX+C6nuC6q1/guqrguoFf4LqqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAn4Lqn4Lqx4LqZZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C6leC6reC6meC7gOC6iuC6u+C7ieC6snzgupXguq3gupngu4HguqXguocvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C6leC6reC6meC7geC6peC6hyc7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LqV4Lqt4LqZ4LuA4LqK4Lq74LuJ4LqyJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgupXguq3gupngu4HguqXguocnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+C6oeC6t+C7ieC6meC6teC7ieC7gOC6p+C6peC6sl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4Lqh4Lq34LuJ4Lqt4Lq34LuI4LqZ4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb4Lqn4Lqx4LqZXWRkZGRb4Luc4LuJ4Lqy4LuA4Lqn4Lql4LqyXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vguqHgurfgu4nguqfgurLgupngupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vguqfgurHgupldZGRkZFvgu4HguqXgu4nguqfgupngurXgu4ngu4DguqfguqXgurJdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfguq3gurXguoEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+C6nOC7iOC6suC6meC6oeC6sicsXG4gICAgICAgICAgICBzIDogJ+C6muC7jeC7iOC7gOC6l+C6u+C7iOC6suC7g+C6lOC6p+C6tOC6meC6suC6l+C6tScsXG4gICAgICAgICAgICBzcyA6ICclZCDguqfgurTgupngurLgupfgurUnICxcbiAgICAgICAgICAgIG0gOiAnMSDgupngurLgupfgurUnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LqZ4Lqy4LqX4Lq1JyxcbiAgICAgICAgICAgIGggOiAnMSDguorgurvgu4jguqfgu4LguqHguocnLFxuICAgICAgICAgICAgaGggOiAnJWQg4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHJyxcbiAgICAgICAgICAgIGQgOiAnMSDguqHgurfgu4knLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Lqh4Lq34LuJJyxcbiAgICAgICAgICAgIE0gOiAnMSDgu4DgupTgurfguq3gupknLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LuA4LqU4Lq34Lqt4LqZJyxcbiAgICAgICAgICAgIHkgOiAnMSDgupvgurUnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Lqb4Lq1J1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvKOC6l+C6teC7iClcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ+C6l+C6teC7iCcgKyBudW1iZXI7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsbztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHVuaXRzID0ge1xuICAgICAgICAnc3MnIDogJ3Nla3VuZMSXX3Nla3VuZMW+acWzX3Nla3VuZGVzJyxcbiAgICAgICAgJ20nIDogJ21pbnV0xJdfbWludXTEl3NfbWludXTEmScsXG4gICAgICAgICdtbSc6ICdtaW51dMSXc19taW51xI1pxbNfbWludXRlcycsXG4gICAgICAgICdoJyA6ICd2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFJyxcbiAgICAgICAgJ2hoJzogJ3ZhbGFuZG9zX3ZhbGFuZMWzX3ZhbGFuZGFzJyxcbiAgICAgICAgJ2QnIDogJ2RpZW5hX2RpZW5vc19kaWVuxIUnLFxuICAgICAgICAnZGQnOiAnZGllbm9zX2RpZW7Fs19kaWVuYXMnLFxuICAgICAgICAnTScgOiAnbcSXbnVvX23El25lc2lvX23El25lc8SvJyxcbiAgICAgICAgJ01NJzogJ23El25lc2lhaV9txJduZXNpxbNfbcSXbmVzaXVzJyxcbiAgICAgICAgJ3knIDogJ21ldGFpX21ldMWzX21ldHVzJyxcbiAgICAgICAgJ3l5JzogJ21ldGFpX21ldMWzX21ldHVzJ1xuICAgIH07XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlU2Vjb25kcyhudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIHJldHVybiAna2VsaW9zIHNla3VuZMSXcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXNGdXR1cmUgPyAna2VsacWzIHNla3VuZMW+acWzJyA6ICdrZWxpYXMgc2VrdW5kZXMnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZVNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IGZvcm1zKGtleSlbMF0gOiAoaXNGdXR1cmUgPyBmb3JtcyhrZXkpWzFdIDogZm9ybXMoa2V5KVsyXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwZWNpYWwobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMCB8fCAobnVtYmVyID4gMTAgJiYgbnVtYmVyIDwgMjApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmb3JtcyhrZXkpIHtcbiAgICAgICAgcmV0dXJuIHVuaXRzW2tleV0uc3BsaXQoJ18nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgdHJhbnNsYXRlU2luZ3VsYXIobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXlbMF0sIGlzRnV0dXJlKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBmb3JtcyhrZXkpWzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNwZWNpYWwobnVtYmVyKSA/IGZvcm1zKGtleSlbMV0gOiBmb3JtcyhrZXkpWzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbHQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsdCcsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnc2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICdzYXVzaXNfdmFzYXJpc19rb3Zhc19iYWxhbmRpc19nZWd1xb7El19iaXLFvmVsaXNfbGllcGFfcnVncGrFq3Rpc19ydWdzxJdqaXNfc3BhbGlzX2xhcGtyaXRpc19ncnVvZGlzJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgaXNGb3JtYXQ6IC9EW29EXT8oXFxbW15cXFtcXF1dKlxcXXxcXHMpK01NTU0/fE1NTU0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStEW29EXT8vXG4gICAgICAgIH0sXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ3NhdV92YXNfa292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogJ3Nla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBzdGFuZGFsb25lOiAnc2VrbWFkaWVuaXNfcGlybWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvZGRkZCBISDptbS9cbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl/FoGXFoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU19QX0FfVF9LX1BuX8WgJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0sIEhIOm1tIFt2YWwuXScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS1NTS1ERCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZIFttLl0gTU1NTSBEIFtkLl0nLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dJyxcbiAgICAgICAgICAgIGxsbGwgOiAnWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGQsIEhIOm1tIFt2YWwuXSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vFoGlhbmRpZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1J5dG9qXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW1Zha2FyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdbUHJhxJdqdXPEr10gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAncG8gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwcmllxaEgJXMnLFxuICAgICAgICAgICAgcyA6IHRyYW5zbGF0ZVNlY29uZHMsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgaGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkIDogdHJhbnNsYXRlU2luZ3VsYXIsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGVTaW5ndWxhcixcbiAgICAgICAgICAgIE1NIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgeSA6IHRyYW5zbGF0ZVNpbmd1bGFyLFxuICAgICAgICAgICAgeXkgOiB0cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LW9qaS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy1vamknO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHVuaXRzID0ge1xuICAgICAgICAnc3MnOiAnc2VrdW5kZXNfc2VrdW5kxJNtX3Nla3VuZGVfc2VrdW5kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdtJzogJ21pbsWrdGVzX21pbsWrdMSTbV9taW7Fq3RlX21pbsWrdGVzJy5zcGxpdCgnXycpLFxuICAgICAgICAnbW0nOiAnbWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdoJzogJ3N0dW5kYXNfc3R1bmTEgW1fc3R1bmRhX3N0dW5kYXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdoaCc6ICdzdHVuZGFzX3N0dW5kxIFtX3N0dW5kYV9zdHVuZGFzJy5zcGxpdCgnXycpLFxuICAgICAgICAnZCc6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdkZCc6ICdkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMnLnNwbGl0KCdfJyksXG4gICAgICAgICdNJzogJ23Ek25lxaFhX23Ek25lxaFpZW1fbcSTbmVzaXNfbcSTbmXFoWknLnNwbGl0KCdfJyksXG4gICAgICAgICdNTSc6ICdtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpJy5zcGxpdCgnXycpLFxuICAgICAgICAneSc6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJyksXG4gICAgICAgICd5eSc6ICdnYWRhX2dhZGllbV9nYWRzX2dhZGknLnNwbGl0KCdfJylcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB3aXRob3V0U3VmZml4IGJvb2xlYW4gdHJ1ZSA9IGEgbGVuZ3RoIG9mIHRpbWU7IGZhbHNlID0gYmVmb3JlL2FmdGVyIGEgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ybWF0KGZvcm1zLCBudW1iZXIsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgICAgIC8vIEUuZy4gXCIyMSBtaW7Fq3RlXCIsIFwiMyBtaW7Fq3Rlc1wiLlxuICAgICAgICAgICAgcmV0dXJuIG51bWJlciAlIDEwID09PSAxICYmIG51bWJlciAlIDEwMCAhPT0gMTEgPyBmb3Jtc1syXSA6IGZvcm1zWzNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRS5nLiBcIjIxIG1pbsWrdGVzXCIgYXMgaW4gXCJwxJNjIDIxIG1pbsWrdGVzXCIuXG4gICAgICAgICAgICAvLyBFLmcuIFwiMyBtaW7Fq3TEk21cIiBhcyBpbiBcInDEk2MgMyBtaW7Fq3TEk21cIi5cbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgJSAxMCA9PT0gMSAmJiBudW1iZXIgJSAxMDAgIT09IDExID8gZm9ybXNbMF0gOiBmb3Jtc1sxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBmb3JtYXQodW5pdHNba2V5XSwgbnVtYmVyLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQodW5pdHNba2V5XSwgbnVtYmVyLCB3aXRob3V0U3VmZml4KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVTZWNvbmRzKG51bWJlciwgd2l0aG91dFN1ZmZpeCkge1xuICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdkYcW+YXMgc2VrdW5kZXMnIDogJ2Rhxb7EgW0gc2VrdW5kxJNtJztcbiAgICB9XG5cbiAgICB2YXIgbHYgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdsdicsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21haWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcycuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTdl9QX09fVF9DX1BrX1MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ1N2X1BfT19UX0NfUGtfUycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZLicsXG4gICAgICAgICAgICBMTCA6ICdZWVlZLiBbZ2FkYV0gRC4gTU1NTScsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW8Wgb2RpZW4gcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW1LEq3QgcHVsa3N0ZW5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1bGtzdGVuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tWYWthciBwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ3DEk2MgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwaXJtcyAlcycsXG4gICAgICAgICAgICBzIDogcmVsYXRpdmVTZWNvbmRzLFxuICAgICAgICAgICAgc3MgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICBoaCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBkIDogcmVsYXRpdmVUaW1lV2l0aFNpbmd1bGFyLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6IHJlbGF0aXZlVGltZVdpdGhTaW5ndWxhcixcbiAgICAgICAgICAgIE1NIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIHkgOiByZWxhdGl2ZVRpbWVXaXRoU2luZ3VsYXIsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7IC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWydzZWt1bmQnLCAnc2VrdW5kYScsICdzZWt1bmRpJ10sXG4gICAgICAgICAgICBtOiBbJ2plZGFuIG1pbnV0JywgJ2plZG5vZyBtaW51dGEnXSxcbiAgICAgICAgICAgIG1tOiBbJ21pbnV0JywgJ21pbnV0YScsICdtaW51dGEnXSxcbiAgICAgICAgICAgIGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sXG4gICAgICAgICAgICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNTTogWydtamVzZWMnLCAnbWplc2VjYScsICdtamVzZWNpJ10sXG4gICAgICAgICAgICB5eTogWydnb2RpbmEnLCAnZ29kaW5lJywgJ2dvZGluYSddXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDEgPyB3b3JkS2V5WzBdIDogKG51bWJlciA+PSAyICYmIG51bWJlciA8PSA0ID8gd29yZEtleVsxXSA6IHdvcmRLZXlbMl0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbWUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtZScsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ25lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQ6ICduZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW46ICduZV9wb191dF9zcl/EjWVfcGVfc3UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiB7XG4gICAgICAgICAgICBMVDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEw6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQuIE1NTU0gWVlZWSBIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tkYW5hcyB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3NqdXRyYSB1XSBMVCcsXG5cbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtuZWRqZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyaWplZHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIFtzdWJvdHVdIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3VdIGRkZGQgW3VdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW2p1xI1lIHVdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW25lZGplbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRqZWxqa2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsZV0gW3NyaWplZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJpamUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ25la29saWtvIHNla3VuZGknLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICdkYW4nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAnbWplc2VjJyxcbiAgICAgICAgICAgIE1NICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsXG4gICAgICAgICAgICB5eSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbWkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdtaScsIHtcbiAgICAgICAgbW9udGhzOiAnS29oaS10xIF0ZV9IdWktdGFuZ3VydV9Qb3V0xastdGUtcmFuZ2lfUGFlbmdhLXdoxIF3aMSBX0hhcmF0dWFfUGlwaXJpX0jFjW5nb2luZ29pX0hlcmUtdHVyaS1rxY1rxIFfTWFodXJ1X1doaXJpbmdhLcSBLW51a3VfV2hpcmluZ2EtxIEtcmFuZ2lfSGFraWhlYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICdLb2hpX0h1aV9Qb3VfUGFlX0hhcmFfUGlwaV9IxY1uZ29pX0hlcmVfTWFodV9XaGktbnVfV2hpLXJhX0hha2knLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1JlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC8oPzpbJ2EtelxcdTAxMDFcXHUwMTREXFx1MDE2Ql0rXFwtPyl7MSwzfS9pLFxuICAgICAgICBtb250aHNTaG9ydFJlZ2V4OiAvKD86WydhLXpcXHUwMTAxXFx1MDE0RFxcdTAxNkJdK1xcLT8pezEsM30vaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogLyg/OlsnYS16XFx1MDEwMVxcdTAxNERcXHUwMTZCXStcXC0/KXsxLDJ9L2ksXG4gICAgICAgIHdlZWtkYXlzOiAnUsSBdGFwdV9NYW5lX1TFq3JlaV9XZW5lcmVpX1TEgWl0ZV9QYXJhaXJlX0jEgXRhcmVpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnVGFfTWFfVMWrX1dlX1TEgWlfUGFfSMSBJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ1RhX01hX1TFq19XZV9UxIFpX1BhX0jEgScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEw6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdEIE1NTU0gWVlZWSBbaV0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTDogJ2RkZGQsIEQgTU1NTSBZWVlZIFtpXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbaSB0ZWllIG1haGFuYSwgaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1thcG9wbyBpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ldIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaW5hbmFoaSBpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3doYWthbXV0dW5nYSBpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZToge1xuICAgICAgICAgICAgZnV0dXJlOiAnaSByb3RvIGkgJXMnLFxuICAgICAgICAgICAgcGFzdDogJyVzIGkgbXVhJyxcbiAgICAgICAgICAgIHM6ICd0ZSBoxJNrb25hIHJ1YXJ1YScsXG4gICAgICAgICAgICBzczogJyVkIGjEk2tvbmEnLFxuICAgICAgICAgICAgbTogJ2hlIG1lbmV0aScsXG4gICAgICAgICAgICBtbTogJyVkIG1lbmV0aScsXG4gICAgICAgICAgICBoOiAndGUgaGFvcmEnLFxuICAgICAgICAgICAgaGg6ICclZCBoYW9yYScsXG4gICAgICAgICAgICBkOiAnaGUgcmEnLFxuICAgICAgICAgICAgZGQ6ICclZCByYScsXG4gICAgICAgICAgICBNOiAnaGUgbWFyYW1hJyxcbiAgICAgICAgICAgIE1NOiAnJWQgbWFyYW1hJyxcbiAgICAgICAgICAgIHk6ICdoZSB0YXUnLFxuICAgICAgICAgICAgeXk6ICclZCB0YXUnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtaTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1rID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbWsnLCB7XG4gICAgICAgIG1vbnRocyA6ICfRmNCw0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGYX9GY0YPQvdC4X9GY0YPQu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfRmNCw0L1f0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn0L3QtdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0LVf0YfQtdGCX9C/0LXRgl/RgdCw0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C9ZV/Qv29f0LLRgl/RgdGAX9GH0LVf0L/QtV/RgWEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0QuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb0JTQtdC90LXRgSDQstC+XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQo9GC0YDQtSDQstC+XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb0JLQvl0gZGRkZCBb0LLQvl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JLRh9C10YDQsCDQstC+XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LDRgtCwXSBkZGRkIFvQstC+XSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CY0LfQvNC40L3QsNGC0LjQvtGCXSBkZGRkIFvQstC+XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQv9C+0YHQu9C1ICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAn0L/RgNC10LQgJXMnLFxuICAgICAgICAgICAgcyA6ICfQvdC10LrQvtC70LrRgyDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBzcyA6ICclZCDRgdC10LrRg9C90LTQuCcsXG4gICAgICAgICAgICBtIDogJ9C80LjQvdGD0YLQsCcsXG4gICAgICAgICAgICBtbSA6ICclZCDQvNC40L3Rg9GC0LgnLFxuICAgICAgICAgICAgaCA6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGggOiAnJWQg0YfQsNGB0LAnLFxuICAgICAgICAgICAgZCA6ICfQtNC10L0nLFxuICAgICAgICAgICAgZGQgOiAnJWQg0LTQtdC90LAnLFxuICAgICAgICAgICAgTSA6ICfQvNC10YHQtdGGJyxcbiAgICAgICAgICAgIE1NIDogJyVkINC80LXRgdC10YbQuCcsXG4gICAgICAgICAgICB5IDogJ9Cz0L7QtNC40L3QsCcsXG4gICAgICAgICAgICB5eSA6ICclZCDQs9C+0LTQuNC90LgnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBsYXN0RGlnaXQgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBsYXN0MkRpZ2l0cyA9IG51bWJlciAlIDEwMDtcbiAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdCyJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QtdC9JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdDJEaWdpdHMgPiAxMCAmJiBsYXN0MkRpZ2l0cyA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0YLQuCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCy0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0RGlnaXQgPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgNC4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdERpZ2l0ID09PSA3IHx8IGxhc3REaWdpdCA9PT0gOCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdC80LgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3RgtC4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWs7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ21sJywge1xuICAgICAgICBtb250aHMgOiAn4LSc4LSo4LWB4LS14LSw4LS/X+C0q+C1huC0rOC1jeC0sOC1geC0teC0sOC0v1/gtK7gtL7gtbzgtJrgtY3gtJrgtY1f4LSP4LSq4LWN4LSw4LS/4LW9X+C0ruC1h+C0r+C1jV/gtJzgtYLgtbpf4LSc4LWC4LSy4LWIX+C0k+C0l+C0uOC1jeC0seC1jeC0seC1jV/gtLjgtYbgtKrgtY3gtLHgtY3gtLHgtILgtKzgtbxf4LSS4LSV4LWN4LSf4LWL4LSs4LW8X+C0qOC0teC0guC0rOC1vF/gtKHgtL/gtLjgtILgtKzgtbwnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+C0nOC0qOC1gS5f4LSr4LWG4LSs4LWN4LSw4LWBLl/gtK7gtL7gtbwuX+C0j+C0quC1jeC0sOC0vy5f4LSu4LWH4LSv4LWNX+C0nOC1guC1ul/gtJzgtYLgtLLgtYguX+C0k+C0ly5f4LS44LWG4LSq4LWN4LSx4LWN4LSxLl/gtJLgtJXgtY3gtJ/gtYsuX+C0qOC0teC0gi5f4LSh4LS/4LS44LSCLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+C0nuC0vuC0r+C0seC0vuC0tOC1jeC0ml/gtKTgtL/gtJngtY3gtJXgtLPgtL7gtLTgtY3gtJpf4LSa4LWK4LS14LWN4LS14LS+4LS04LWN4LSaX+C0rOC1geC0p+C0qOC0vuC0tOC1jeC0ml/gtLXgtY3gtK/gtL7gtLTgtL7gtLTgtY3gtJpf4LS14LWG4LSz4LWN4LSz4LS/4LSv4LS+4LS04LWN4LSaX+C0tuC0qOC0v+C0r+C0vuC0tOC1jeC0micuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgtJ7gtL7gtK/gtbxf4LSk4LS/4LSZ4LWN4LSV4LW+X+C0muC1iuC0teC1jeC0tV/gtKzgtYHgtKfgtbtf4LS14LWN4LSv4LS+4LS04LSCX+C0teC1huC0s+C1jeC0s+C0v1/gtLbgtKjgtL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+C0nuC0vl/gtKTgtL9f4LSa4LWKX+C0rOC1gV/gtLXgtY3gtK/gtL5f4LS14LWGX+C0ticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0gLeC0qOC1gScsXG4gICAgICAgICAgICBMVFMgOiAnQSBoOm1tOnNzIC3gtKjgtYEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIC3gtKjgtYEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb4LSH4LSo4LWN4LSo4LWNXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vgtKjgtL7gtLPgtYZdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQsIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+C0h+C0qOC1jeC0qOC0suC1hl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+C0leC0tOC0v+C0nuC1jeC0nl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOC0leC0tOC0v+C0nuC1jeC0nuC1jScsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOC0ruC1geC1u+C0quC1jScsXG4gICAgICAgICAgICBzIDogJ+C0heC1veC0qiDgtKjgtL/gtK7gtL/gtLfgtJngtY3gtJngtb4nLFxuICAgICAgICAgICAgc3MgOiAnJWQg4LS44LWG4LSV4LWN4LSV4LW74LSh4LWNJyxcbiAgICAgICAgICAgIG0gOiAn4LSS4LSw4LWBIOC0ruC0v+C0qOC0v+C0seC1jeC0seC1jScsXG4gICAgICAgICAgICBtbSA6ICclZCDgtK7gtL/gtKjgtL/gtLHgtY3gtLHgtY0nLFxuICAgICAgICAgICAgaCA6ICfgtJLgtLDgtYEg4LSu4LSj4LS/4LSV4LWN4LSV4LWC4LW8JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOC0ruC0o+C0v+C0leC1jeC0leC1guC1vCcsXG4gICAgICAgICAgICBkIDogJ+C0kuC0sOC1gSDgtKbgtL/gtLXgtLjgtIInLFxuICAgICAgICAgICAgZGQgOiAnJWQg4LSm4LS/4LS14LS44LSCJyxcbiAgICAgICAgICAgIE0gOiAn4LSS4LSw4LWBIOC0ruC0vuC0uOC0gicsXG4gICAgICAgICAgICBNTSA6ICclZCDgtK7gtL7gtLjgtIInLFxuICAgICAgICAgICAgeSA6ICfgtJLgtLDgtYEg4LS14LW84LS34LSCJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOC0teC1vOC0t+C0gidcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+C0sOC0vuC0pOC1jeC0sOC0v3zgtLDgtL7gtLXgtL/gtLLgtYZ84LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jXzgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIJ84LSw4LS+4LSk4LWN4LSw4LS/L2ksXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1lcmlkaWVtID09PSAn4LSw4LS+4LSk4LWN4LSw4LS/JyAmJiBob3VyID49IDQpIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jScgfHxcbiAgICAgICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfgtLXgtYjgtJXgtYHgtKjgtY3gtKjgtYfgtLDgtIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C0sOC0vuC0teC0v+C0suC1hic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LSJ4LSa4LWN4LSaIOC0leC0tOC0v+C0nuC1jeC0nuC1jSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LS14LWI4LSV4LWB4LSo4LWN4LSo4LWH4LSw4LSCJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgtLDgtL7gtKTgtY3gtLDgtL8nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LQnIDogJ9GF0Y3QtNGF0Y3QvSDRgdC10LrRg9C90LTRi9C9JztcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGB0LXQutGD0L3QtCcgOiAnINGB0LXQutGD0L3QtNGL0L0nKTtcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAod2l0aG91dFN1ZmZpeCA/ICcg0LzQuNC90YPRgicgOiAnINC80LjQvdGD0YLRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINGG0LDQsycgOiAnINGG0LDQs9C40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBjYXNlICdkZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDTqdC006nRgCcgOiAnINOp0LTRgNC40LnQvScpO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICh3aXRob3V0U3VmZml4ID8gJyDRgdCw0YAnIDogJyDRgdCw0YDRi9C9Jyk7XG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHdpdGhvdXRTdWZmaXggPyAnINC20LjQuycgOiAnINC20LjQu9C40LnQvScpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1uID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbW4nLCB7XG4gICAgICAgIG1vbnRocyA6ICfQndGN0LPQtNKv0LPRjdGN0YAg0YHQsNGAX9Cl0L7RkdGA0LTRg9Cz0LDQsNGAINGB0LDRgF/Qk9GD0YDQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/QlNOp0YDTqdCy0LTSr9Cz0Y3RjdGAINGB0LDRgF/QotCw0LLQtNGD0LPQsNCw0YAg0YHQsNGAX9CX0YPRgNCz0LDQtNGD0LPQsNCw0YAg0YHQsNGAX9CU0L7Qu9C00YPQs9Cw0LDRgCDRgdCw0YBf0J3QsNC50LzQtNGD0LPQsNCw0YAg0YHQsNGAX9CV0YHQtNKv0LPRjdGN0YAg0YHQsNGAX9CQ0YDQsNCy0LTRg9Cz0LDQsNGAINGB0LDRgF/QkNGA0LLQsNC9INC90Y3Qs9C00q/Qs9GN0Y3RgCDRgdCw0YBf0JDRgNCy0LDQvSDRhdC+0ZHRgNC00YPQs9Cw0LDRgCDRgdCw0YAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzEg0YHQsNGAXzIg0YHQsNGAXzMg0YHQsNGAXzQg0YHQsNGAXzUg0YHQsNGAXzYg0YHQsNGAXzcg0YHQsNGAXzgg0YHQsNGAXzkg0YHQsNGAXzEwINGB0LDRgF8xMSDRgdCw0YBfMTIg0YHQsNGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAn0J3Rj9C8X9CU0LDQstCw0LBf0JzRj9Cz0LzQsNGAX9Cb0YXQsNCz0LLQsF/Qn9Kv0YDRjdCyX9CR0LDQsNGB0LDQvV/QkdGP0LzQsdCwJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cd0Y/QvF/QlNCw0LJf0JzRj9CzX9Cb0YXQsF/Qn9Kv0YBf0JHQsNCwX9CR0Y/QvCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn0J3Rj1/QlNCwX9Cc0Y9f0JvRhV/Qn9KvX9CR0LBf0JHRjycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdZWVlZLU1NLUREJyxcbiAgICAgICAgICAgIExMIDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVkg0L7QvdGLIE1NTU3Ri9C9IEQgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBZWVlZINC+0L3RiyBNTU1N0YvQvSBEIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv0q7TqHzSrtClL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ9Ku0KUnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku06gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Ku0KUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW9Oo0L3TqdOp0LTTqdGAXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vQnNCw0YDQs9Cw0LDRiF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW9CY0YDRjdGFXSBkZGRkIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW9Oo0YfQuNCz0LTTqdGAXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb06jQvdCz06nRgNGB06nQvV0gZGRkZCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg0LTQsNGA0LDQsCcsXG4gICAgICAgICAgICBwYXN0IDogJyVzINOp0LzQvdOpJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0g06nQtNOp0YAvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnINOp0LTTqdGAJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+ClpycsXG4gICAgICAgICcyJzogJ+ClqCcsXG4gICAgICAgICczJzogJ+ClqScsXG4gICAgICAgICc0JzogJ+ClqicsXG4gICAgICAgICc1JzogJ+ClqycsXG4gICAgICAgICc2JzogJ+ClrCcsXG4gICAgICAgICc3JzogJ+ClrScsXG4gICAgICAgICc4JzogJ+ClricsXG4gICAgICAgICc5JzogJ+ClrycsXG4gICAgICAgICcwJzogJ+ClpidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Clpyc6ICcxJyxcbiAgICAgICAgJ+ClqCc6ICcyJyxcbiAgICAgICAgJ+ClqSc6ICczJyxcbiAgICAgICAgJ+Clqic6ICc0JyxcbiAgICAgICAgJ+Clqyc6ICc1JyxcbiAgICAgICAgJ+ClrCc6ICc2JyxcbiAgICAgICAgJ+ClrSc6ICc3JyxcbiAgICAgICAgJ+Clric6ICc4JyxcbiAgICAgICAgJ+Clryc6ICc5JyxcbiAgICAgICAgJ+Clpic6ICcwJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVNcihudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpXG4gICAge1xuICAgICAgICB2YXIgb3V0cHV0ID0gJyc7XG4gICAgICAgIGlmICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3MnOiBvdXRwdXQgPSAn4KSV4KS+4KS54KWAIOCkuOClh+CkleCkguCkpic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NzJzogb3V0cHV0ID0gJyVkIOCkuOClh+CkleCkguCkpic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOiBvdXRwdXQgPSAn4KSP4KSVIOCkruCkv+CkqOCkv+Cknyc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21tJzogb3V0cHV0ID0gJyVkIOCkruCkv+CkqOCkv+Ckn+Clhyc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOiBvdXRwdXQgPSAn4KSP4KSVIOCkpOCkvuCkuCc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2hoJzogb3V0cHV0ID0gJyVkIOCkpOCkvuCkuCc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOiBvdXRwdXQgPSAn4KSP4KSVIOCkpuCkv+CkteCkuCc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RkJzogb3V0cHV0ID0gJyVkIOCkpuCkv+CkteCkuCc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOiBvdXRwdXQgPSAn4KSP4KSVIOCkruCkueCkv+CkqOCkvic7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ01NJzogb3V0cHV0ID0gJyVkIOCkruCkueCkv+CkqOClhyc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOiBvdXRwdXQgPSAn4KSP4KSVIOCkteCksOCljeCktyc7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3l5Jzogb3V0cHV0ID0gJyVkIOCkteCksOCljeCkt+Clhyc7IGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzJzogb3V0cHV0ID0gJ+CkleCkvuCkueClgCDgpLjgpYfgpJXgpILgpKbgpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcyc6IG91dHB1dCA9ICclZCDgpLjgpYfgpJXgpILgpKbgpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtJzogb3V0cHV0ID0gJ+Ckj+CkleCkviDgpK7gpL/gpKjgpL/gpJ/gpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtbSc6IG91dHB1dCA9ICclZCDgpK7gpL/gpKjgpL/gpJ/gpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoJzogb3V0cHV0ID0gJ+Ckj+CkleCkviDgpKTgpL7gpLjgpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdoaCc6IG91dHB1dCA9ICclZCDgpKTgpL7gpLjgpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkJzogb3V0cHV0ID0gJ+Ckj+CkleCkviDgpKbgpL/gpLXgpLjgpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdkZCc6IG91dHB1dCA9ICclZCDgpKbgpL/gpLXgpLjgpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzogb3V0cHV0ID0gJ+Ckj+CkleCkviDgpK7gpLngpL/gpKjgpY3gpK/gpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNTSc6IG91dHB1dCA9ICclZCDgpK7gpLngpL/gpKjgpY3gpK/gpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5Jzogb3V0cHV0ID0gJ+Ckj+CkleCkviDgpLXgpLDgpY3gpLfgpL4nOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5eSc6IG91dHB1dCA9ICclZCDgpLXgpLDgpY3gpLfgpL7gpIInOyBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoLyVkL2ksIG51bWJlcik7XG4gICAgfVxuXG4gICAgdmFyIG1yID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXInLCB7XG4gICAgICAgIG1vbnRocyA6ICfgpJzgpL7gpKjgpYfgpLXgpL7gpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KS+4KSw4KWAX+CkruCkvuCksOCljeCkml/gpI/gpKrgpY3gpLDgpL/gpLJf4KSu4KWHX+CknOClguCkqF/gpJzgpYHgpLLgpYhf4KSR4KSX4KS44KWN4KSfX+CkuOCkquCljeCkn+Clh+CkguCkrOCksF/gpJHgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KS14KWN4KS54KWH4KSC4KSs4KSwX+CkoeCkv+CkuOClh+CkguCkrOCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQ6ICfgpJzgpL7gpKjgpYcuX+Ckq+Clh+CkrOCljeCksOClgS5f4KSu4KS+4KSw4KWN4KSaLl/gpI/gpKrgpY3gpLDgpL8uX+CkruClhy5f4KSc4KWC4KSoLl/gpJzgpYHgpLLgpYguX+CkkeCkly5f4KS44KSq4KWN4KSf4KWH4KSCLl/gpJHgpJXgpY3gpJ/gpYsuX+CkqOCli+CkteCljeCkueClh+Ckgi5f4KSh4KS/4KS44KWH4KSCLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSz4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cks1/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+Ckticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4KS14KS+4KSc4KSk4KS+JyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgpLXgpL7gpJzgpKTgpL4nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkteCkvuCknOCkpOCkvidcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CkieCkpuCljeCkr+Ckvl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KSV4KS+4KSyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1vgpK7gpL7gpJfgpYDgpLJdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZTogJyVz4KSu4KSn4KWN4KSv4KWHJyxcbiAgICAgICAgICAgIHBhc3Q6ICclc+CkquClguCksOCljeCkteClgCcsXG4gICAgICAgICAgICBzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIHNzOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIG06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgbW06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBoaDogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICBkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIGRkOiByZWxhdGl2ZVRpbWVNcixcbiAgICAgICAgICAgIE06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgTU06IHJlbGF0aXZlVGltZU1yLFxuICAgICAgICAgICAgeTogcmVsYXRpdmVUaW1lTXIsXG4gICAgICAgICAgICB5eTogcmVsYXRpdmVUaW1lTXJcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOCljeCksOClgHzgpLjgpJXgpL7gpLPgpYB84KSm4KWB4KSq4KS+4KSw4KWAfOCkuOCkvuCkr+CkguCkleCkvuCks+ClgC8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpY3gpLDgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpJXgpL7gpLPgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KWB4KSq4KS+4KSw4KWAJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpK/gpILgpJXgpL7gpLPgpYAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW06IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KWN4KSw4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDEwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLjgpJXgpL7gpLPgpYAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkpuClgeCkquCkvuCksOClgCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KS44KS+4KSv4KSC4KSV4KS+4KSz4KWAJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpLDgpL7gpKTgpY3gpLDgpYAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtcjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1zID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdBaF9Jc19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAndGVuZ2FoYXJpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgcyA6ICdiZWJlcmFwYSBzYWF0JyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgbSA6ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbml0JyxcbiAgICAgICAgICAgIGggOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGggOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQgOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTSA6ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHkgOiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eSA6ICclZCB0YWh1bidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXM7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtc015ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXMtbXknLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdBaF9Jc19TbF9SYl9LbV9KbV9TYicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISC5tbScsXG4gICAgICAgICAgICBMVFMgOiAnSEgubW0uc3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ3BhZ2knKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAndGVuZ2FoYXJpJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdwZXRhbmcnIHx8IG1lcmlkaWVtID09PSAnbWFsYW0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VycyA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwYWdpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxNSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGVuZ2FoYXJpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAncGV0YW5nJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtYWxhbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbSGFyaSBpbmkgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW0Vzb2sgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW3B1a3VsXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tLZWxtYXJpbiBwdWt1bF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbbGVwYXMgcHVrdWxdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdkYWxhbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIHlhbmcgbGVwYXMnLFxuICAgICAgICAgICAgcyA6ICdiZWJlcmFwYSBzYWF0JyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgbSA6ICdzZW1pbml0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbml0JyxcbiAgICAgICAgICAgIGggOiAnc2VqYW0nLFxuICAgICAgICAgICAgaGggOiAnJWQgamFtJyxcbiAgICAgICAgICAgIGQgOiAnc2VoYXJpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGhhcmknLFxuICAgICAgICAgICAgTSA6ICdzZWJ1bGFuJyxcbiAgICAgICAgICAgIE1NIDogJyVkIGJ1bGFuJyxcbiAgICAgICAgICAgIHkgOiAnc2V0YWh1bicsXG4gICAgICAgICAgICB5eSA6ICclZCB0YWh1bidcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXNNeTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG10ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5uYXJfRnJhcl9NYXJ6dV9BcHJpbF9NZWpqdV/EoHVuanVfTHVsanVfQXd3aXNzdV9TZXR0ZW1icnVfT3R0dWJydV9Ob3ZlbWJydV9EacSLZW1icnUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GcmFfTWFyX0Fwcl9NZWpfxKB1bl9MdWxfQXd3X1NldF9PdHRfTm92X0RpxIsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0lsLcSmYWRkX0l0LVRuZWpuX0l0LVRsaWV0YV9MLUVyYmfEp2FfSWwtxKZhbWlzX0lsLcSgaW1nxKdhX0lzLVNpYnQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnxKZhZF9UbmVfVGxpX0VyYl/EpmFtX8SgaW1fU2liJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfEpmFfVG5fVGxfRXJfxKZhX8SgaV9TaScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW0lsbHVtIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbR8SnYWRhIGZpbC1dTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbZmlsLV1MVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tJbC1iaWVyYcSnIGZpbC1dTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbbGkgZ8SnYWRkYV0gW2ZpbC1dTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2bigJkgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBpbHUnLFxuICAgICAgICAgICAgcyA6ICdmdGl0IHNla29uZGknLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vrb25kaScsXG4gICAgICAgICAgICBtIDogJ21pbnV0YScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGknLFxuICAgICAgICAgICAgaCA6ICdzaWVnxKdhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNpZWfEp2F0JyxcbiAgICAgICAgICAgIGQgOiAnxKF1cm5hdGEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgxKFyYW5ldCcsXG4gICAgICAgICAgICBNIDogJ3hhaGFyJyxcbiAgICAgICAgICAgIE1NIDogJyVkIHhodXInLFxuICAgICAgICAgICAgeSA6ICdzZW5hJyxcbiAgICAgICAgICAgIHl5IDogJyVkIHNuaSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC9cXGR7MSwyfcK6LyxcbiAgICAgICAgb3JkaW5hbDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4YGBJyxcbiAgICAgICAgJzInOiAn4YGCJyxcbiAgICAgICAgJzMnOiAn4YGDJyxcbiAgICAgICAgJzQnOiAn4YGEJyxcbiAgICAgICAgJzUnOiAn4YGFJyxcbiAgICAgICAgJzYnOiAn4YGGJyxcbiAgICAgICAgJzcnOiAn4YGHJyxcbiAgICAgICAgJzgnOiAn4YGIJyxcbiAgICAgICAgJzknOiAn4YGJJyxcbiAgICAgICAgJzAnOiAn4YGAJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+GBgSc6ICcxJyxcbiAgICAgICAgJ+GBgic6ICcyJyxcbiAgICAgICAgJ+GBgyc6ICczJyxcbiAgICAgICAgJ+GBhCc6ICc0JyxcbiAgICAgICAgJ+GBhSc6ICc1JyxcbiAgICAgICAgJ+GBhic6ICc2JyxcbiAgICAgICAgJ+GBhyc6ICc3JyxcbiAgICAgICAgJ+GBiCc6ICc4JyxcbiAgICAgICAgJ+GBiSc6ICc5JyxcbiAgICAgICAgJ+GBgCc6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgbXkgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdteScsIHtcbiAgICAgICAgbW9udGhzOiAn4YCH4YCU4YC64YCU4YCd4YCr4YCb4YCuX+GAluGAseGAluGAseGArOGAuuGAneGAq+GAm+GArl/hgJnhgJDhgLpf4YCn4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCH4YCw4YCc4YCt4YCv4YCE4YC6X+GAnuGAvOGAguGAr+GAkOGAul/hgIXhgIDhgLrhgJDhgIThgLrhgJjhgKxf4YCh4YCx4YCs4YCA4YC64YCQ4YCt4YCv4YCY4YCsX+GAlOGAreGAr+GAneGAhOGAuuGAmOGArF/hgJLhgK7hgIfhgIThgLrhgJjhgKwnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAn4YCH4YCU4YC6X+GAluGAsV/hgJnhgJDhgLpf4YCV4YC84YCuX+GAmeGAsV/hgIfhgL3hgJThgLpf4YCc4YCt4YCv4YCE4YC6X+GAnuGAvF/hgIXhgIDhgLpf4YCh4YCx4YCs4YCA4YC6X+GAlOGAreGAr1/hgJLhgK4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzOiAn4YCQ4YCU4YCE4YC64YC54YCC4YCU4YC94YCxX+GAkOGAlOGAhOGAuuGAueGAnOGArF/hgKHhgIThgLrhgLnhgILhgKtf4YCX4YCv4YCS4YC54YCT4YCf4YCw4YC4X+GAgOGAvOGArOGAnuGAleGAkOGAseGAuF/hgJ7hgLHhgKzhgIDhgLzhgKxf4YCF4YCU4YCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAn4YCU4YC94YCxX+GAnOGArF/hgILhgKtf4YCf4YCw4YC4X+GAgOGAvOGArF/hgJ7hgLHhgKxf4YCU4YCxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbjogJ+GAlOGAveGAsV/hgJzhgKxf4YCC4YCrX+GAn+GAsOGAuF/hgIDhgLzhgKxf4YCe4YCx4YCsX+GAlOGAsScuc3BsaXQoJ18nKSxcblxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdISDptbScsXG4gICAgICAgICAgICBMVFM6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vhgJrhgJThgLEuXSBMVCBb4YCZ4YC+4YCsXScsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+GAmeGAlOGAgOGAuuGAluGAvOGAlOGAul0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb4YCZ4YCU4YCxLuGAgF0gTFQgW+GAmeGAvuGArF0nLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdb4YCV4YC84YCu4YC44YCB4YCy4YC34YCe4YCx4YCsXSBkZGRkIExUIFvhgJnhgL7hgKxdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICfhgJzhgKzhgJnhgIrhgLrhgLcgJXMg4YCZ4YC+4YCsJyxcbiAgICAgICAgICAgIHBhc3Q6ICfhgJzhgL3hgJThgLrhgIHhgLLhgLfhgJ7hgLHhgKwgJXMg4YCAJyxcbiAgICAgICAgICAgIHM6ICfhgIXhgIDhgLnhgIDhgJThgLou4YCh4YCU4YCK4YC64YC44YCE4YCa4YC6JyxcbiAgICAgICAgICAgIHNzIDogJyVkIOGAheGAgOGAueGAgOGAlOGAt+GAuicsXG4gICAgICAgICAgICBtOiAn4YCQ4YCF4YC64YCZ4YCt4YCU4YCF4YC6JyxcbiAgICAgICAgICAgIG1tOiAnJWQg4YCZ4YCt4YCU4YCF4YC6JyxcbiAgICAgICAgICAgIGg6ICfhgJDhgIXhgLrhgJThgKzhgJvhgK4nLFxuICAgICAgICAgICAgaGg6ICclZCDhgJThgKzhgJvhgK4nLFxuICAgICAgICAgICAgZDogJ+GAkOGAheGAuuGAm+GAgOGAuicsXG4gICAgICAgICAgICBkZDogJyVkIOGAm+GAgOGAuicsXG4gICAgICAgICAgICBNOiAn4YCQ4YCF4YC64YCcJyxcbiAgICAgICAgICAgIE1NOiAnJWQg4YCcJyxcbiAgICAgICAgICAgIHk6ICfhgJDhgIXhgLrhgJThgL7hgIXhgLonLFxuICAgICAgICAgICAgeXk6ICclZCDhgJThgL7hgIXhgLonXG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1vhgYHhgYLhgYPhgYThgYXhgYbhgYfhgYjhgYnhgYBdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXJNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxkL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzeW1ib2xNYXBbbWF0Y2hdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWs6IHtcbiAgICAgICAgICAgIGRvdzogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3k6IDQgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXk7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBuYiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25iJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuLl9mZWIuX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICdzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3PDuC5fbWEuX3RpLl9vbi5fdG8uX2ZyLl9sw7guJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzw7hfbWFfdGlfb25fdG9fZnJfbMO4Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2kgZGFnIGtsLl0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tpIG1vcmdlbiBrbC5dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBba2wuXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW2kgZ8OlciBrbC5dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb20gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBzaWRlbicsXG4gICAgICAgICAgICBzIDogJ25vZW4gc2VrdW5kZXInLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbSA6ICdldHQgbWludXR0JyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0dGVyJyxcbiAgICAgICAgICAgIGggOiAnZW4gdGltZScsXG4gICAgICAgICAgICBoaCA6ICclZCB0aW1lcicsXG4gICAgICAgICAgICBkIDogJ2VuIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdlcicsXG4gICAgICAgICAgICBNIDogJ2VuIG3DpW5lZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtw6VuZWRlcicsXG4gICAgICAgICAgICB5IDogJ2V0dCDDpXInLFxuICAgICAgICAgICAgeXkgOiAnJWQgw6VyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5iO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3ltYm9sTWFwID0ge1xuICAgICAgICAnMSc6ICfgpacnLFxuICAgICAgICAnMic6ICfgpagnLFxuICAgICAgICAnMyc6ICfgpaknLFxuICAgICAgICAnNCc6ICfgpaonLFxuICAgICAgICAnNSc6ICfgpasnLFxuICAgICAgICAnNic6ICfgpawnLFxuICAgICAgICAnNyc6ICfgpa0nLFxuICAgICAgICAnOCc6ICfgpa4nLFxuICAgICAgICAnOSc6ICfgpa8nLFxuICAgICAgICAnMCc6ICfgpaYnXG4gICAgfSxcbiAgICBudW1iZXJNYXAgPSB7XG4gICAgICAgICfgpacnOiAnMScsXG4gICAgICAgICfgpagnOiAnMicsXG4gICAgICAgICfgpaknOiAnMycsXG4gICAgICAgICfgpaonOiAnNCcsXG4gICAgICAgICfgpasnOiAnNScsXG4gICAgICAgICfgpawnOiAnNicsXG4gICAgICAgICfgpa0nOiAnNycsXG4gICAgICAgICfgpa4nOiAnOCcsXG4gICAgICAgICfgpa8nOiAnOScsXG4gICAgICAgICfgpaYnOiAnMCdcbiAgICB9O1xuXG4gICAgdmFyIG5lID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmUnLCB7XG4gICAgICAgIG1vbnRocyA6ICfgpJzgpKjgpLXgpLDgpYBf4KSr4KWH4KSs4KWN4KSw4KWB4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL/gpLJf4KSu4KSIX+CknOClgeCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS34KWN4KSfX+CkuOClh+CkquCljeCkn+Clh+CkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYvgpKzgpLBf4KSo4KWL4KSt4KWH4KSu4KWN4KSs4KSwX+CkoeCkv+CkuOClh+CkruCljeCkrOCksCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4KSc4KSoLl/gpKvgpYfgpKzgpY3gpLDgpYEuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpL8uX+CkruCkiF/gpJzgpYHgpKhf4KSc4KWB4KSy4KS+4KSILl/gpIXgpJcuX+CkuOClh+CkquCljeCkny5f4KSF4KSV4KWN4KSf4KWLLl/gpKjgpYvgpK3gpYcuX+CkoeCkv+CkuOClhy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfgpIbgpIfgpKTgpKzgpL7gpLBf4KS44KWL4KSu4KSs4KS+4KSwX+CkruCkmeCljeCkl+CksuCkrOCkvuCksF/gpKzgpYHgpKfgpKzgpL7gpLBf4KSs4KS/4KS54KS/4KSs4KS+4KSwX+CktuClgeCkleCljeCksOCkrOCkvuCksF/gpLbgpKjgpL/gpKzgpL7gpLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4KSG4KSH4KSkLl/gpLjgpYvgpK4uX+CkruCkmeCljeCkl+Cksi5f4KSs4KWB4KSnLl/gpKzgpL/gpLngpL8uX+CktuClgeCkleCljeCksC5f4KS24KSo4KS/Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4KSGLl/gpLjgpYsuX+CkruCkgi5f4KSs4KWBLl/gpKzgpL8uX+CktuClgS5f4KS2Licuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdB4KSV4KWLIGg6bW0g4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIExUUyA6ICdB4KSV4KWLIGg6bW06c3Mg4KSs4KSc4KWHJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEHgpJXgpYsgaDptbSDgpKzgpJzgpYcnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQeCkleCliyBoOm1tIOCkrOCknOClhydcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CksOCkvuCkpOCkv3zgpKzgpL/gpLngpL7gpKh84KSm4KS/4KSJ4KSB4KS44KWLfOCkuOCkvuCkgeCknS8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgpLDgpL7gpKTgpL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpKzgpL/gpLngpL7gpKgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4KSm4KS/4KSJ4KSB4KS44KWLJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgpLjgpL7gpIHgpJ0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CksOCkvuCkpOCkvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSs4KS/4KS54KS+4KSoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgpKbgpL/gpIngpIHgpLjgpYsnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CkuOCkvuCkgeCknSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4KSw4KS+4KSk4KS/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgpIbgpJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CkreCli+CksuCkv10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+CkhuCkieCkgeCkpuCli10gZGRkZFssXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgpLngpL/gpJzgpYtdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgpJfgpI/gpJXgpYtdIGRkZGRbLF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz4KSu4KS+JyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4KSF4KSX4KS+4KSh4KS/JyxcbiAgICAgICAgICAgIHMgOiAn4KSV4KWH4KS54KWAIOCkleCljeCkt+CkoycsXG4gICAgICAgICAgICBzcyA6ICclZCDgpLjgpYfgpJXgpYfgpKPgpY3gpKEnLFxuICAgICAgICAgICAgbSA6ICfgpI/gpJUg4KSu4KS/4KSo4KWH4KSfJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCkruCkv+CkqOClh+CknycsXG4gICAgICAgICAgICBoIDogJ+Ckj+CklSDgpJjgpKPgpY3gpJ/gpL4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KSY4KSj4KWN4KSf4KS+JyxcbiAgICAgICAgICAgIGQgOiAn4KSP4KSVIOCkpuCkv+CkqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgpKbgpL/gpKgnLFxuICAgICAgICAgICAgTSA6ICfgpI/gpJUg4KSu4KS54KS/4KSo4KS+JyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCkruCkueCkv+CkqOCkvicsXG4gICAgICAgICAgICB5IDogJ+Ckj+CklSDgpKzgpLDgpY3gpLcnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4KSs4KSw4KWN4KS3J1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmphbi9pLCAvXmZlYi9pLCAvXm1hYXJ0fG1ydC4/JC9pLCAvXmFwci9pLCAvXm1laSQvaSwgL15qdW5baS5dPyQvaSwgL15qdWxbaS5dPyQvaSwgL15hdWcvaSwgL15zZXAvaSwgL15va3QvaSwgL15ub3YvaSwgL15kZWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sID0gbW9tZW50LmRlZmluZUxvY2FsZSgnbmwnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogZnVuY3Rpb24gKG0sIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC8tTU1NLS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aG91dERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1Nob3J0V2l0aERvdHNbbS5tb250aCgpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtb250aHNSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IG1vbnRoc1JlZ2V4LFxuICAgICAgICBtb250aHNTdHJpY3RSZWdleDogL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxcbiAgICAgICAgbW9udGhzU2hvcnRTdHJpY3RSZWdleDogL14oamFuXFwuP3xmZWJcXC4/fG1ydFxcLj98YXByXFwuP3xtZWl8anVbbmxdXFwuP3xhdWdcXC4/fHNlcFxcLj98b2t0XFwuP3xub3ZcXC4/fGRlY1xcLj8pL2ksXG5cbiAgICAgICAgbW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgbG9uZ01vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIHNob3J0TW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcblxuICAgICAgICB3ZWVrZGF5cyA6ICd6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ3pvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnem9fbWFfZGlfd29fZG9fdnJfemEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQtTU0tWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbdmFuZGFhZyBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttb3JnZW4gb21dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbZ2lzdGVyZW4gb21dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW2FmZ2Vsb3Blbl0gZGRkZCBbb21dIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ292ZXIgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBnZWxlZGVuJyxcbiAgICAgICAgICAgIHMgOiAnZWVuIHBhYXIgc2Vjb25kZW4nLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2Vjb25kZW4nLFxuICAgICAgICAgICAgbSA6ICfDqcOpbiBtaW51dXQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgbWludXRlbicsXG4gICAgICAgICAgICBoIDogJ8Opw6luIHV1cicsXG4gICAgICAgICAgICBoaCA6ICclZCB1dXInLFxuICAgICAgICAgICAgZCA6ICfDqcOpbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnZW4nLFxuICAgICAgICAgICAgTSA6ICfDqcOpbiBtYWFuZCcsXG4gICAgICAgICAgICBNTSA6ICclZCBtYWFuZGVuJyxcbiAgICAgICAgICAgIHkgOiAnw6nDqW4gamFhcicsXG4gICAgICAgICAgICB5eSA6ICclZCBqYWFyJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3RlfGRlKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKChudW1iZXIgPT09IDEgfHwgbnVtYmVyID09PSA4IHx8IG51bWJlciA+PSAyMCkgPyAnc3RlJyA6ICdkZScpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBubDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIG1vbnRoc1Nob3J0V2l0aERvdHMgPSAnamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnRXaXRob3V0RG90cyA9ICdqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKTtcblxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXmphbi9pLCAvXmZlYi9pLCAvXm1hYXJ0fG1ydC4/JC9pLCAvXmFwci9pLCAvXm1laSQvaSwgL15qdW5baS5dPyQvaSwgL15qdWxbaS5dPyQvaSwgL15hdWcvaSwgL15zZXAvaSwgL15va3QvaSwgL15ub3YvaSwgL15kZWMvaV07XG4gICAgdmFyIG1vbnRoc1JlZ2V4ID0gL14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fGp1W25sXVxcLj98YXVnXFwuP3xzZXBcXC4/fG9rdFxcLj98bm92XFwuP3xkZWNcXC4/KS9pO1xuXG4gICAgdmFyIG5sQmUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdubC1iZScsIHtcbiAgICAgICAgbW9udGhzIDogJ2phbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBmdW5jdGlvbiAobSwgZm9ybWF0KSB7XG4gICAgICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90cztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoLy1NTU0tLy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRob3V0RG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzU2hvcnRXaXRoRG90c1ttLm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vbnRoc1JlZ2V4OiBtb250aHNSZWdleCxcbiAgICAgICAgbW9udGhzU2hvcnRSZWdleDogbW9udGhzUmVnZXgsXG4gICAgICAgIG1vbnRoc1N0cmljdFJlZ2V4OiAvXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLFxuICAgICAgICBtb250aHNTaG9ydFN0cmljdFJlZ2V4OiAvXihqYW5cXC4/fGZlYlxcLj98bXJ0XFwuP3xhcHJcXC4/fG1laXxqdVtubF1cXC4/fGF1Z1xcLj98c2VwXFwuP3xva3RcXC4/fG5vdlxcLj98ZGVjXFwuPykvaSxcblxuICAgICAgICBtb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBsb25nTW9udGhzUGFyc2UgOiBtb250aHNQYXJzZSxcbiAgICAgICAgc2hvcnRNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuXG4gICAgICAgIHdlZWtkYXlzIDogJ3pvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICd6b19tYV9kaV93b19kb192cl96YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1t2YW5kYWFnIG9tXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW21vcmdlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tnaXN0ZXJlbiBvbV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnb3ZlciAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIGdlbGVkZW4nLFxuICAgICAgICAgICAgcyA6ICdlZW4gcGFhciBzZWNvbmRlbicsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWNvbmRlbicsXG4gICAgICAgICAgICBtIDogJ8Opw6luIG1pbnV1dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVuJyxcbiAgICAgICAgICAgIGggOiAnw6nDqW4gdXVyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIHV1cicsXG4gICAgICAgICAgICBkIDogJ8Opw6luIGRhZycsXG4gICAgICAgICAgICBkZCA6ICclZCBkYWdlbicsXG4gICAgICAgICAgICBNIDogJ8Opw6luIG1hYW5kJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG1hYW5kZW4nLFxuICAgICAgICAgICAgeSA6ICfDqcOpbiBqYWFyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIGphYXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShzdGV8ZGUpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAoKG51bWJlciA9PT0gMSB8fCBudW1iZXIgPT09IDggfHwgbnVtYmVyID49IDIwKSA/ICdzdGUnIDogJ2RlJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5sQmU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBubiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ25uJywge1xuICAgICAgICBtb250aHMgOiAnamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ3N1bmRhZ19tw6VuZGFnX3R5c2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbGF1cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzdW5fbcOlbl90eXNfb25zX3Rvcl9mcmVfbGF1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzdV9tw6VfdHlfb25fdG9fZnJfbMO4Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdELiBNTU1NIFlZWVkgW2tsLl0gSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSSBkYWcga2xva2thXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0kgbW9yZ29uIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSSBnw6VyIGtsb2trYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbRsO4cmVnw6VhbmRlXSBkZGRkIFtrbG9ra2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29tICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgc2lkYW4nLFxuICAgICAgICAgICAgcyA6ICdub2tyZSBzZWt1bmQnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kJyxcbiAgICAgICAgICAgIG0gOiAnZWl0IG1pbnV0dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dHQnLFxuICAgICAgICAgICAgaCA6ICdlaW4gdGltZScsXG4gICAgICAgICAgICBoaCA6ICclZCB0aW1hcicsXG4gICAgICAgICAgICBkIDogJ2VpbiBkYWcnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGFnYXInLFxuICAgICAgICAgICAgTSA6ICdlaW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHkgOiAnZWl0IMOlcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDpXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzeW1ib2xNYXAgPSB7XG4gICAgICAgICcxJzogJ+CppycsXG4gICAgICAgICcyJzogJ+CpqCcsXG4gICAgICAgICczJzogJ+CpqScsXG4gICAgICAgICc0JzogJ+CpqicsXG4gICAgICAgICc1JzogJ+CpqycsXG4gICAgICAgICc2JzogJ+CprCcsXG4gICAgICAgICc3JzogJ+CprScsXG4gICAgICAgICc4JzogJ+CpricsXG4gICAgICAgICc5JzogJ+CprycsXG4gICAgICAgICcwJzogJ+CppidcbiAgICB9LFxuICAgIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Cppyc6ICcxJyxcbiAgICAgICAgJ+CpqCc6ICcyJyxcbiAgICAgICAgJ+CpqSc6ICczJyxcbiAgICAgICAgJ+Cpqic6ICc0JyxcbiAgICAgICAgJ+Cpqyc6ICc1JyxcbiAgICAgICAgJ+CprCc6ICc2JyxcbiAgICAgICAgJ+CprSc6ICc3JyxcbiAgICAgICAgJ+Cpric6ICc4JyxcbiAgICAgICAgJ+Cpryc6ICc5JyxcbiAgICAgICAgJ+Cppic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgcGFJbiA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3BhLWluJywge1xuICAgICAgICAvLyBUaGVyZSBhcmUgbW9udGhzIG5hbWUgYXMgcGVyIE5hbmFrc2hhaGkgQ2FsZW5kYXIgYnV0IHRoZXkgYXJlIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmphYmkuXG4gICAgICAgIG1vbnRocyA6ICfgqJzgqKjgqLXgqLDgqYBf4Kir4Ki84Kiw4Ki14Kiw4KmAX+CoruCovuCosOComl/gqIXgqKrgqY3gqLDgqYjgqLJf4Kiu4KiIX+ConOCpguCoqF/gqJzgqYHgqLLgqL7gqIhf4KiF4KiX4Ki44KikX+CouOCopOCpsOCorOCosF/gqIXgqJXgqKTgqYLgqKzgqLBf4Kio4Ki14Kmw4Kis4KiwX+CopuCouOCpsOCorOCosCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4Kic4Kio4Ki14Kiw4KmAX+Coq+CovOCosOCoteCosOCpgF/gqK7gqL7gqLDgqJpf4KiF4Kiq4KmN4Kiw4KmI4KiyX+CoruCoiF/gqJzgqYLgqKhf4Kic4KmB4Kiy4Ki+4KiIX+CoheCol+CouOCopF/gqLjgqKTgqbDgqKzgqLBf4KiF4KiV4Kik4KmC4Kis4KiwX+CoqOCoteCpsOCorOCosF/gqKbgqLjgqbDgqKzgqLAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ+CokOCopOCoteCovuCosF/gqLjgqYvgqK7gqLXgqL7gqLBf4Kiu4Kmw4KiX4Kiy4Ki14Ki+4KiwX+CorOCpgeCop+CoteCovuCosF/gqLXgqYDgqLDgqLXgqL7gqLBf4Ki44Ki84KmB4Kmx4KiV4Kiw4Ki14Ki+4KiwX+CouOCovOCoqOCpgOComuCosOCoteCovuCosCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgqJDgqKRf4Ki44KmL4KiuX+CoruCpsOCol+Cosl/gqKzgqYHgqKdf4Ki14KmA4KiwX+CouOCovOCpgeColeCosF/gqLjgqLzgqKjgqYAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+CokOCopF/gqLjgqYvgqK5f4Kiu4Kmw4KiX4KiyX+CorOCpgeCop1/gqLXgqYDgqLBf4Ki44Ki84KmB4KiV4KiwX+CouOCovOCoqOCpgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0g4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIExUUyA6ICdBIGg6bW06c3Mg4Ki14Kic4KmHJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVksIEEgaDptbSDgqLXgqJzgqYcnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCoteConOCphydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgqIXgqJxdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+ColeCosl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnW+CoheCol+CosuCovl0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4KiV4KiyXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4Kiq4Ki/4Kib4Kiy4KmHXSBkZGRkLCBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMg4Ki14Ki/4Kmx4KiaJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg4Kiq4Ki/4Kib4Kiy4KmHJyxcbiAgICAgICAgICAgIHMgOiAn4KiV4KmB4KidIOCouOColeCov+CpsOConycsXG4gICAgICAgICAgICBzcyA6ICclZCDgqLjgqJXgqL/gqbDgqJ8nLFxuICAgICAgICAgICAgbSA6ICfgqIfgqJUg4Kiu4Ki/4Kmw4KifJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOCoruCov+CpsOConycsXG4gICAgICAgICAgICBoIDogJ+Coh+CpseColSDgqJjgqbDgqJ/gqL4nLFxuICAgICAgICAgICAgaGggOiAnJWQg4KiY4Kmw4Kif4KmHJyxcbiAgICAgICAgICAgIGQgOiAn4KiH4Kmx4KiVIOCopuCov+CoqCcsXG4gICAgICAgICAgICBkZCA6ICclZCDgqKbgqL/gqKgnLFxuICAgICAgICAgICAgTSA6ICfgqIfgqbHgqJUg4Kiu4Ki54KmA4Kio4Ki+JyxcbiAgICAgICAgICAgIE1NIDogJyVkIOCoruCoueCpgOCoqOCphycsXG4gICAgICAgICAgICB5IDogJ+Coh+CpseColSDgqLjgqL7gqLInLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Ki44Ki+4KiyJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9b4Kmn4Kmo4Kmp4Kmq4Kmr4Kms4Kmt4Kmu4Kmv4KmmXS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcZC9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9sTWFwW21hdGNoXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBQdW5qYWJpIG5vdGF0aW9uIGZvciBtZXJpZGllbXMgYXJlIHF1aXRlIGZ1enp5IGluIHByYWN0aWNlLiBXaGlsZSB0aGVyZSBleGlzdHNcbiAgICAgICAgLy8gYSByaWdpZCBub3Rpb24gb2YgYSAnUGFoYXInIGl0IGlzIG5vdCB1c2VkIGFzIHJpZ2lkbHkgaW4gbW9kZXJuIFB1bmphYmkuXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/gqLDgqL7gqKR84Ki44Ki14KmH4KiwfOCopuCpgeCoquCoueCov+CosHzgqLjgqLzgqL7gqK4vLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4Kiw4Ki+4KikJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgNCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki14KmH4KiwJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+CopuCpgeCoquCoueCov+CosCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMCA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4Ki44Ki84Ki+4KiuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLDgqL7gqKQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CouOCoteCph+CosCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxNykge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Kim4KmB4Kiq4Ki54Ki/4KiwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDIwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgqLjgqLzgqL7gqK4nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CosOCovuCopCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDYgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDZ0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhSW47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBtb250aHNOb21pbmF0aXZlID0gJ3N0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU3ViamVjdGl2ZSA9ICdzdHljem5pYV9sdXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJwbmlhX3dyemXFm25pYV9wYcW6ZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiAobiAlIDEwIDwgNSkgJiYgKG4gJSAxMCA+IDEpICYmICgofn4obiAvIDEwKSAlIDEwKSAhPT0gMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnc2VrdW5keScgOiAnc2VrdW5kJyk7XG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0xJknO1xuICAgICAgICAgICAgY2FzZSAnbW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWludXR5JyA6ICdtaW51dCcpO1xuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggID8gJ2dvZHppbmEnICA6ICdnb2R6aW7EmSc7XG4gICAgICAgICAgICBjYXNlICdoaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdnb2R6aW55JyA6ICdnb2R6aW4nKTtcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ21pZXNpxIVjZScgOiAnbWllc2nEmWN5Jyk7XG4gICAgICAgICAgICBjYXNlICd5eSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdsYXRhJyA6ICdsYXQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwbCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3BsJywge1xuICAgICAgICBtb250aHMgOiBmdW5jdGlvbiAobW9tZW50VG9Gb3JtYXQsIGZvcm1hdCkge1xuICAgICAgICAgICAgaWYgKCFtb21lbnRUb0Zvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFjazogaWYgZm9ybWF0IGVtcHR5IHdlIGtub3cgdGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlXG4gICAgICAgICAgICAgICAgLy8gUmVnRXhwIGJ5IG1vbWVudC4gR2l2ZSB0aGVuIGJhY2sgYm90aCB2YWxpZCBmb3JtcyBvZiBtb250aHNcbiAgICAgICAgICAgICAgICAvLyBpbiBSZWdFeHAgcmVhZHkgZm9ybWF0LlxuICAgICAgICAgICAgICAgIHJldHVybiAnKCcgKyBtb250aHNTdWJqZWN0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldICsgJ3wnICsgbW9udGhzTm9taW5hdGl2ZVttb21lbnRUb0Zvcm1hdC5tb250aCgpXSArICcpJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL0QgTU1NTS8udGVzdChmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoc1N1YmplY3RpdmVbbW9tZW50VG9Gb3JtYXQubW9udGgoKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHNOb21pbmF0aXZlW21vbWVudFRvRm9ybWF0Lm1vbnRoKCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb250aHNTaG9ydCA6ICdzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ25pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmR6X3Bvbl93dF/Fm3JfY3p3X3B0X3NvYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnTmRfUG5fV3RfxZpyX0N6X1B0X1NvJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tEemnFmyBvXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0p1dHJvIG9dIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgbmllZHppZWzEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbV2Ugd3RvcmVrIG9dIExUJztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIMWbcm9kxJkgb10gTFQnO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgc29ib3TEmSBvXSBMVCc7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1ddIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1tXY3pvcmFqIG9dIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW1cgemVzesWCxIUgc29ib3TEmSBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1tXIHplc3rFgnldIGRkZGQgW29dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB0ZW11JyxcbiAgICAgICAgICAgIHMgOiAna2lsa2Egc2VrdW5kJyxcbiAgICAgICAgICAgIHNzIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6ICcxIGR6aWXFhCcsXG4gICAgICAgICAgICBkZCA6ICclZCBkbmknLFxuICAgICAgICAgICAgTSA6ICdtaWVzacSFYycsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiAncm9rJyxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBwdCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3B0Jywge1xuICAgICAgICBtb250aHMgOiAnSmFuZWlyb19GZXZlcmVpcm9fTWFyw6dvX0FicmlsX01haW9fSnVuaG9fSnVsaG9fQWdvc3RvX1NldGVtYnJvX091dHVicm9fTm92ZW1icm9fRGV6ZW1icm8nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9Tw6FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEb18ywqpfM8KqXzTCql81wqpfNsKqX1PDoScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSG9qZSDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbQW1hbmjDoyDDoHNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbw6BzXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW09udGVtIMOgc10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMuZGF5KCkgPT09IDAgfHwgdGhpcy5kYXkoKSA9PT0gNikgP1xuICAgICAgICAgICAgICAgICAgICAnW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQnIDogLy8gU2F0dXJkYXkgKyBTdW5kYXlcbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1hXSBkZGRkIFvDoHNdIExUJzsgLy8gTW9uZGF5IC0gRnJpZGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZW0gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdow6EgJXMnLFxuICAgICAgICAgICAgcyA6ICdzZWd1bmRvcycsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWd1bmRvcycsXG4gICAgICAgICAgICBtIDogJ3VtIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG9zJyxcbiAgICAgICAgICAgIGggOiAndW1hIGhvcmEnLFxuICAgICAgICAgICAgaGggOiAnJWQgaG9yYXMnLFxuICAgICAgICAgICAgZCA6ICd1bSBkaWEnLFxuICAgICAgICAgICAgZGQgOiAnJWQgZGlhcycsXG4gICAgICAgICAgICBNIDogJ3VtIG3DqnMnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbWVzZXMnLFxuICAgICAgICAgICAgeSA6ICd1bSBhbm8nLFxuICAgICAgICAgICAgeXkgOiAnJWQgYW5vcydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9wrovLFxuICAgICAgICBvcmRpbmFsIDogJyVkwronLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwdDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHB0QnIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdwdC1icicsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5nb19TZWd1bmRhLWZlaXJhX1RlcsOnYS1mZWlyYV9RdWFydGEtZmVpcmFfUXVpbnRhLWZlaXJhX1NleHRhLWZlaXJhX1PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRG9fMsKqXzPCql80wqpfNcKqXzbCql9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIFtkZV0gTU1NTSBbZGVdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0hvamUgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW0FtYW5ow6Mgw6BzXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW8Ogc10gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tPbnRlbSDDoHNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmRheSgpID09PSAwIHx8IHRoaXMuZGF5KCkgPT09IDYpID9cbiAgICAgICAgICAgICAgICAgICAgJ1vDmmx0aW1vXSBkZGRkIFvDoHNdIExUJyA6IC8vIFNhdHVyZGF5ICsgU3VuZGF5XG4gICAgICAgICAgICAgICAgICAgICdbw5psdGltYV0gZGRkZCBbw6BzXSBMVCc7IC8vIE1vbmRheSAtIEZyaWRheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ2VtICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnaMOhICVzJyxcbiAgICAgICAgICAgIHMgOiAncG91Y29zIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIHNzIDogJyVkIHNlZ3VuZG9zJyxcbiAgICAgICAgICAgIG0gOiAndW0gbWludXRvJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0b3MnLFxuICAgICAgICAgICAgaCA6ICd1bWEgaG9yYScsXG4gICAgICAgICAgICBoaCA6ICclZCBob3JhcycsXG4gICAgICAgICAgICBkIDogJ3VtIGRpYScsXG4gICAgICAgICAgICBkZCA6ICclZCBkaWFzJyxcbiAgICAgICAgICAgIE0gOiAndW0gbcOqcycsXG4gICAgICAgICAgICBNTSA6ICclZCBtZXNlcycsXG4gICAgICAgICAgICB5IDogJ3VtIGFubycsXG4gICAgICAgICAgICB5eSA6ICclZCBhbm9zJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn3Cui8sXG4gICAgICAgIG9yZGluYWwgOiAnJWTCuidcbiAgICB9KTtcblxuICAgIHJldHVybiBwdEJyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAgICAgJ3NzJzogJ3NlY3VuZGUnLFxuICAgICAgICAgICAgICAgICdtbSc6ICdtaW51dGUnLFxuICAgICAgICAgICAgICAgICdoaCc6ICdvcmUnLFxuICAgICAgICAgICAgICAgICdkZCc6ICd6aWxlJyxcbiAgICAgICAgICAgICAgICAnTU0nOiAnbHVuaScsXG4gICAgICAgICAgICAgICAgJ3l5JzogJ2FuaSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXBhcmF0b3IgPSAnICc7XG4gICAgICAgIGlmIChudW1iZXIgJSAxMDAgPj0gMjAgfHwgKG51bWJlciA+PSAxMDAgJiYgbnVtYmVyICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gJyBkZSAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudW1iZXIgKyBzZXBhcmF0b3IgKyBmb3JtYXRba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgcm8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdybycsIHtcbiAgICAgICAgbW9udGhzIDogJ2lhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2lhbi5fZmVici5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2R1bWluaWPEg19sdW5pX21hcsibaV9taWVyY3VyaV9qb2lfdmluZXJpX3PDom1ixIN0xIMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRHVtX0x1bl9NYXJfTWllX0pvaV9WaW5fU8OibScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnRHVfTHVfTWFfTWlfSm9fVmlfU8OiJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2F6aSBsYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1ttw6JpbmUgbGFdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbbGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbaWVyaSBsYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbZm9zdGFdIGRkZGQgW2xhXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdwZXN0ZSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIMOubiB1cm3EgycsXG4gICAgICAgICAgICBzIDogJ2PDonRldmEgc2VjdW5kZScsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogJ3VuIG1pbnV0JyxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAnbyBvcsSDJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAnbyB6aScsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ28gbHVuxIMnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICd1biBhbicsXG4gICAgICAgICAgICB5eSA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWxcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm87XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIGZ1bmN0aW9uIHBsdXJhbCh3b3JkLCBudW0pIHtcbiAgICAgICAgdmFyIGZvcm1zID0gd29yZC5zcGxpdCgnXycpO1xuICAgICAgICByZXR1cm4gbnVtICUgMTAgPT09IDEgJiYgbnVtICUgMTAwICE9PSAxMSA/IGZvcm1zWzBdIDogKG51bSAlIDEwID49IDIgJiYgbnVtICUgMTAgPD0gNCAmJiAobnVtICUgMTAwIDwgMTAgfHwgbnVtICUgMTAwID49IDIwKSA/IGZvcm1zWzFdIDogZm9ybXNbMl0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXQgPSB7XG4gICAgICAgICAgICAnc3MnOiB3aXRob3V0U3VmZml4ID8gJ9GB0LXQutGD0L3QtNCwX9GB0LXQutGD0L3QtNGLX9GB0LXQutGD0L3QtCcgOiAn0YHQtdC60YPQvdC00YNf0YHQtdC60YPQvdC00Ytf0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgICdtbSc6IHdpdGhvdXRTdWZmaXggPyAn0LzQuNC90YPRgtCwX9C80LjQvdGD0YLRi1/QvNC40L3Rg9GCJyA6ICfQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YInLFxuICAgICAgICAgICAgJ2hoJzogJ9GH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyJyxcbiAgICAgICAgICAgICdkZCc6ICfQtNC10L3RjF/QtNC90Y9f0LTQvdC10LknLFxuICAgICAgICAgICAgJ01NJzogJ9C80LXRgdGP0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyJyxcbiAgICAgICAgICAgICd5eSc6ICfQs9C+0LRf0LPQvtC00LBf0LvQtdGCJ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoa2V5ID09PSAnbScpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ9C80LjQvdGD0YLQsCcgOiAn0LzQuNC90YPRgtGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyBwbHVyYWwoZm9ybWF0W2tleV0sICtudW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBtb250aHNQYXJzZSA9IFsvXtGP0L3Qsi9pLCAvXtGE0LXQsi9pLCAvXtC80LDRgC9pLCAvXtCw0L/RgC9pLCAvXtC80LBb0LnRj10vaSwgL17QuNGO0L0vaSwgL17QuNGO0LsvaSwgL17QsNCy0LMvaSwgL17RgdC10L0vaSwgL17QvtC60YIvaSwgL17QvdC+0Y8vaSwgL17QtNC10LovaV07XG5cbiAgICAvLyBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9ydWxlcy8xMzktcHJvcCA6IMKnIDEwM1xuICAgIC8vINCh0L7QutGA0LDRidC10L3QuNGPINC80LXRgdGP0YbQtdCyOiBodHRwOi8vbmV3LmdyYW1vdGEucnUvc3ByYXZrYS9idXJvL3NlYXJjaC1hbnN3ZXI/cz0yNDI2MzdcbiAgICAvLyBDTERSIGRhdGE6ICAgICAgICAgIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY2xkci9jaGFydHMvMjgvc3VtbWFyeS9ydS5odG1sIzE3NTNcbiAgICB2YXIgcnUgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdydScsIHtcbiAgICAgICAgbW9udGhzIDoge1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIHN0YW5kYWxvbmU6ICfRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiB7XG4gICAgICAgICAgICAvLyDQv9C+IENMRFIg0LjQvNC10L3QvdC+IFwi0LjRjtC7LlwiINC4IFwi0LjRjtC9LlwiLCDQvdC+INC60LDQutC+0Lkg0YHQvNGL0YHQuyDQvNC10L3Rj9GC0Ywg0LHRg9C60LLRgyDQvdCwINGC0L7Rh9C60YMgP1xuICAgICAgICAgICAgZm9ybWF0OiAn0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGALl/QsNC/0YAuX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgc3RhbmRhbG9uZTogJ9GP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgNGCX9Cw0L/RgC5f0LzQsNC5X9C40Y7QvdGMX9C40Y7Qu9GMX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4nLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgd2Vla2RheXMgOiB7XG4gICAgICAgICAgICBzdGFuZGFsb25lOiAn0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHRg9Cx0LHQvtGC0LAnLnNwbGl0KCdfJyksXG4gICAgICAgICAgICBmb3JtYXQ6ICfQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgICAgIGlzRm9ybWF0OiAvXFxbID9b0JLQsl0gPyg/OtC/0YDQvtGI0LvRg9GOfNGB0LvQtdC00YPRjtGJ0YPRjnzRjdGC0YMpPyA/XFxdID9kZGRkL1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9Cy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Cy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG4gICAgICAgIGxvbmdNb250aHNQYXJzZSA6IG1vbnRoc1BhcnNlLFxuICAgICAgICBzaG9ydE1vbnRoc1BhcnNlIDogbW9udGhzUGFyc2UsXG5cbiAgICAgICAgLy8g0L/QvtC70L3Ri9C1INC90LDQt9Cy0LDQvdC40Y8g0YEg0L/QsNC00LXQttCw0LzQuCwg0L/QviDRgtGA0Lgg0LHRg9C60LLRiywg0LTQu9GPINC90LXQutC+0YLQvtGA0YvRhSwg0L/QviA0INCx0YPQutCy0YssINGB0L7QutGA0LDRidC10L3QuNGPINGBINGC0L7Rh9C60L7QuSDQuCDQsdC10Lcg0YLQvtGH0LrQuFxuICAgICAgICBtb250aHNSZWdleDogL14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cXC4/fNC80LDRgNGC0LA/fNC80LDRgFxcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVxcLj980LjRjtC7W9GM0Y9dfNC40Y7Qu1xcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1xcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XFwuP3zQvtC60YLRj9Cx0YBb0YzRj1180L7QutGCXFwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1xcLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulxcLj8pL2ksXG5cbiAgICAgICAgLy8g0LrQvtC/0LjRjyDQv9GA0LXQtNGL0LTRg9GJ0LXQs9C+XG4gICAgICAgIG1vbnRoc1Nob3J0UmVnZXg6IC9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXFwuP3zRhNC10LLRgNCw0Ltb0YzRj1180YTQtdCy0YA/XFwuP3zQvNCw0YDRgtCwP3zQvNCw0YBcXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXFwuP3zQvNCwW9C50Y9dfNC40Y7QvVvRjNGPXXzQuNGO0L1cXC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcXC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcXC4/fNGB0LXQvdGC0Y/QsdGAW9GM0Y9dfNGB0LXQvdGCP1xcLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglxcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cXC4/fNC00LXQutCw0LHRgFvRjNGPXXzQtNC10LpcXC4/KS9pLFxuXG4gICAgICAgIC8vINC/0L7Qu9C90YvQtSDQvdCw0LfQstCw0L3QuNGPINGBINC/0LDQtNC10LbQsNC80LhcbiAgICAgICAgbW9udGhzU3RyaWN0UmVnZXg6IC9eKNGP0L3QstCw0YBb0Y/RjF180YTQtdCy0YDQsNC7W9GP0YxdfNC80LDRgNGC0LA/fNCw0L/RgNC10Ltb0Y/RjF180LzQsFvRj9C5XXzQuNGO0L1b0Y/RjF180LjRjtC7W9GP0YxdfNCw0LLQs9GD0YHRgtCwP3zRgdC10L3RgtGP0LHRgFvRj9GMXXzQvtC60YLRj9Cx0YBb0Y/RjF180L3QvtGP0LHRgFvRj9GMXXzQtNC10LrQsNCx0YBb0Y/RjF0pL2ksXG5cbiAgICAgICAgLy8g0JLRi9GA0LDQttC10L3QuNC1LCDQutC+0YLQvtGA0L7QtSDRgdC+0L7RgtCy0LXRgdGC0LLRg9C10YIg0YLQvtC70YzQutC+INGB0L7QutGA0LDRidGR0L3QvdGL0Lwg0YTQvtGA0LzQsNC8XG4gICAgICAgIG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6IC9eKNGP0L3QslxcLnzRhNC10LLRgD9cXC580LzQsNGAW9GCLl180LDQv9GAXFwufNC80LBb0Y/QuV180LjRjtC9W9GM0Y8uXXzQuNGO0Ltb0YzRjy5dfNCw0LLQs1xcLnzRgdC10L3Rgj9cXC580L7QutGCXFwufNC90L7Rj9CxP1xcLnzQtNC10LpcXC4pL2ksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVkg0LMuJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSDQsy4sIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vQodC10LPQvtC00L3Rjywg0LJdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0JfQsNCy0YLRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1vQktGH0LXRgNCwLCDQsl0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0YHQu9C10LTRg9GO0YnQtdC1XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDRgdC70LXQtNGD0Y7RidC40LldIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINGB0LvQtdC00YPRjtGJ0YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uIChub3cpIHtcbiAgICAgICAgICAgICAgICBpZiAobm93LndlZWsoKSAhPT0gdGhpcy53ZWVrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmRheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQsIFvQsl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9CSINC/0YDQvtGI0LvRi9C5XSBkZGRkLCBb0LJdIExUJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXkoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0JLQvl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vQkl0gZGRkZCwgW9CyXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0YfQtdGA0LXQtyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINC90LDQt9Cw0LQnLFxuICAgICAgICAgICAgcyA6ICfQvdC10YHQutC+0LvRjNC60L4g0YHQtdC60YPQvdC0JyxcbiAgICAgICAgICAgIHNzIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgbW0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgaCA6ICfRh9Cw0YEnLFxuICAgICAgICAgICAgaGggOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgZCA6ICfQtNC10L3RjCcsXG4gICAgICAgICAgICBkZCA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBNIDogJ9C80LXRgdGP0YYnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICfQs9C+0LQnLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0LgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GD0YLRgNCwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQtNC90Y8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cy0LXRh9C10YDQsCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0Ll80LPQvnzRjykvLFxuICAgICAgICBvcmRpbmFsOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnREREJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0LknO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Qs9C+JztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICct0Y8nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJ1O1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn2KzZhtmI2LHZiicsXG4gICAgICAgICfZgdmK2KjYsdmI2LHZiicsXG4gICAgICAgICfZhdin2LHahicsXG4gICAgICAgICfYp9m+2LHZitmEJyxcbiAgICAgICAgJ9mF2KbZiicsXG4gICAgICAgICfYrNmI2YYnLFxuICAgICAgICAn2KzZiNmE2KfYodmQJyxcbiAgICAgICAgJ9ii2q/Ys9m9JyxcbiAgICAgICAgJ9iz2YrZvtm92YXYqNixJyxcbiAgICAgICAgJ9ii2qrZvdmI2KjYsScsXG4gICAgICAgICfZhtmI2YXYqNixJyxcbiAgICAgICAgJ9qK2LPZhdio2LEnXG4gICAgXTtcbiAgICB2YXIgZGF5cyA9IFtcbiAgICAgICAgJ9ii2obYsScsXG4gICAgICAgICfYs9mI2YXYsScsXG4gICAgICAgICfYp9qx2KfYsdmIJyxcbiAgICAgICAgJ9in2LHYqNi5JyxcbiAgICAgICAgJ9iu2YXZitizJyxcbiAgICAgICAgJ9is2YXYuScsXG4gICAgICAgICfah9mG2ofYsSdcbiAgICBdO1xuXG4gICAgdmFyIHNkID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2QnLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHMsXG4gICAgICAgIHdlZWtkYXlzIDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6IGRheXMsXG4gICAgICAgIHdlZWtkYXlzTWluIDogZGF5cyxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGTYjCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9i12KjYrXzYtNin2YUvLFxuICAgICAgICBpc1BNIDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhScgPT09IGlucHV0O1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9i12KjYrSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ9i02KfZhSc7XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdb2KfahF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb2LPagNin2rvZil0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb2Kfas9mK2YYg2YfZgdiq2Yog2KrZil0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2qrYp9mE2YfZh10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW9qv2LLYsdmK2YQg2YfZgdiq2YpdIGRkZGQgW9iq2YpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDZvtmI2KEnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDYp9qzJyxcbiAgICAgICAgICAgIHMgOiAn2obZhtivINiz2YraqtmG2oonLFxuICAgICAgICAgICAgc3MgOiAnJWQg2LPZitqq2YbaiicsXG4gICAgICAgICAgICBtIDogJ9mH2qog2YXZhtm9JyxcbiAgICAgICAgICAgIG1tIDogJyVkINmF2YbZvScsXG4gICAgICAgICAgICBoIDogJ9mH2qog2qrZhNin2qonLFxuICAgICAgICAgICAgaGggOiAnJWQg2qrZhNin2qonLFxuICAgICAgICAgICAgZCA6ICfZh9qqINqP2YrZhtmH2YYnLFxuICAgICAgICAgICAgZGQgOiAnJWQg2o/ZitmG2YfZhicsXG4gICAgICAgICAgICBNIDogJ9mH2qog2YXZh9mK2YbZiCcsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdmH2YrZhtinJyxcbiAgICAgICAgICAgIHkgOiAn2YfaqiDYs9in2YQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg2LPYp9mEJ1xuICAgICAgICB9LFxuICAgICAgICBwcmVwYXJzZTogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC/YjC9nLCAnLCcpO1xuICAgICAgICB9LFxuICAgICAgICBwb3N0Zm9ybWF0OiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLywvZywgJ9iMJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNkO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc2UgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzZScsIHtcbiAgICAgICAgbW9udGhzIDogJ2/EkcSRYWphZ2Vtw6FubnVfZ3VvdnZhbcOhbm51X25qdWvEjWFtw6FubnVfY3VvxYtvbcOhbm51X21pZXNzZW3DoW5udV9nZWFzc2Vtw6FubnVfc3VvaWRuZW3DoW5udV9ib3JnZW3DoW5udV/EjWFrxI1hbcOhbm51X2dvbGdnb3Rtw6FubnVfc2vDoWJtYW3DoW5udV9qdW92bGFtw6FubnUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ2/EkcSRal9ndW92X25qdWtfY3VvX21pZXNfZ2Vhc19zdW9pX2JvcmdfxI1ha8SNX2dvbGdfc2vDoWJfanVvdicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc290bmFiZWFpdmlfdnVvc3PDoXJnYV9tYcWLxYtlYsOhcmdhX2dhc2thdmFoa2t1X2R1b3Jhc3RhdF9iZWFyamFkYXRfbMOhdnZhcmRhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzb3RuX3Z1b3NfbWHFi19nYXNrX2R1b3JfYmVhcl9sw6F2Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdzX3ZfbV9nX2RfYl9MJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnTU1NTSBELiBbYi5dIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ01NTU0gRC4gW2IuXSBZWVlZIFt0aS5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBELiBbYi5dIFlZWVkgW3RpLl0gSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tvdG5lIHRpXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW2lodHRpbiB0aV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFt0aV0gTFQnLFxuICAgICAgICAgICAgbGFzdERheTogJ1tpa3RlIHRpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ1tvdmRkaXRdIGRkZGQgW3RpXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyBnZWHFvmVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnbWHFi2l0ICVzJyxcbiAgICAgICAgICAgIHMgOiAnbW9hZGRlIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBzczogJyVkIHNla3VuZGRhdCcsXG4gICAgICAgICAgICBtIDogJ29rdGEgbWludWh0YScsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51aHRhdCcsXG4gICAgICAgICAgICBoIDogJ29rdGEgZGlpbW11JyxcbiAgICAgICAgICAgIGhoIDogJyVkIGRpaW1tdXQnLFxuICAgICAgICAgICAgZCA6ICdva3RhIGJlYWl2aScsXG4gICAgICAgICAgICBkZCA6ICclZCBiZWFpdnZpdCcsXG4gICAgICAgICAgICBNIDogJ29rdGEgbcOhbm51JyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DoW51dCcsXG4gICAgICAgICAgICB5IDogJ29rdGEgamFoa2knLFxuICAgICAgICAgICAgeXkgOiAnJWQgamFnaXQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2U7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIC8qanNoaW50IC1XMTAwKi9cbiAgICB2YXIgc2kgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzaScsIHtcbiAgICAgICAgbW9udGhzIDogJ+C2ouC2seC3gOC3j+C2u+C3kl/gtrTgt5ngtrbgtrvgt4Dgt4/gtrvgt5Jf4La44LeP4La74LeK4Lat4LeUX+C2heC2tOC3iuKAjeC2u+C3muC2veC3il/gtrjgt5Dgtrrgt5Jf4Lai4LeW4Lax4LeSX+C2ouC3luC2veC3kl/gtoXgtpzgt53gt4Pgt4rgtq3gt5Rf4LeD4LeQ4La04LeK4Lat4LeQ4La44LeK4La24La74LeKX+C2lOC2muC3iuC2reC3neC2tuC2u+C3il/gtrHgt5zgt4Dgt5Dgtrjgt4rgtrbgtrvgt4pf4Lav4LeZ4LeD4LeQ4La44LeK4La24La74LeKJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgtqLgtrFf4La04LeZ4La2X+C2uOC3j+C2u+C3il/gtoXgtrTgt4pf4La44LeQ4La64LeSX+C2ouC3luC2seC3kl/gtqLgt5bgtr3gt5Jf4LaF4Lac4LedX+C3g+C3kOC2tOC3il/gtpTgtprgt4pf4Lax4Lec4LeA4LeQX+C2r+C3meC3g+C3kCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4LaJ4La74LeS4Lav4LePX+C3g+C2s+C3lOC2r+C3j1/gtoXgtp/gt4Tgtrvgt5Tgt4Dgt4/gtq/gt49f4La24Lav4LeP4Lav4LePX+C2tuC3iuKAjeC2u+C3hOC3g+C3iuC2tOC2reC3kuC2seC3iuC2r+C3j1/gt4Pgt5Lgtprgt5Tgtrvgt4/gtq/gt49f4LeD4LeZ4Lax4LeD4LeU4La74LeP4Lav4LePJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+C2ieC2u+C3kl/gt4PgtrPgt5Rf4LaF4LafX+C2tuC2r+C3j1/gtrbgt4rigI3gtrvgt4Rf4LeD4LeS4Laa4LeUX+C3g+C3meC2sScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4LaJX+C3g1/gtoVf4La2X+C2tuC3iuKAjeC2u1/gt4Pgt5Jf4LeD4LeZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2EgaDptbScsXG4gICAgICAgICAgICBMVFMgOiAnYSBoOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZIE1NTU0gRCcsXG4gICAgICAgICAgICBMTEwgOiAnWVlZWSBNTU1NIEQsIGEgaDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVkgTU1NTSBEIFvgt4Dgt5DgtrHgt5JdIGRkZGQsIGEgaDptbTpzcydcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgtoXgtq9dIExUW+C2p10nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LeE4LeZ4LanXSBMVFvgtqddJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgTFRb4LanXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgtorgtrrgt5pdIExUW+C2p10nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW+C2tOC3g+C3lOC2nOC3kuC2ul0gZGRkZCBMVFvgtqddJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+C2muC3kuC2seC3iicsXG4gICAgICAgICAgICBwYXN0IDogJyVz4Laa4LanIOC2tOC3meC2uycsXG4gICAgICAgICAgICBzIDogJ+C2reC2reC3iuC2tOC2uyDgtprgt5Lgt4Tgt5LgtrTgtronLFxuICAgICAgICAgICAgc3MgOiAn4Lat4Lat4LeK4La04La7ICVkJyxcbiAgICAgICAgICAgIG0gOiAn4La44LeS4Lax4LeS4Lat4LeK4Lat4LeU4LeAJyxcbiAgICAgICAgICAgIG1tIDogJ+C2uOC3kuC2seC3kuC2reC3iuC2reC3lCAlZCcsXG4gICAgICAgICAgICBoIDogJ+C2tOC3kOC2uicsXG4gICAgICAgICAgICBoaCA6ICfgtrTgt5DgtrogJWQnLFxuICAgICAgICAgICAgZCA6ICfgtq/gt5LgtrHgtronLFxuICAgICAgICAgICAgZGQgOiAn4Lav4LeS4LaxICVkJyxcbiAgICAgICAgICAgIE0gOiAn4La44LeP4LeD4La6JyxcbiAgICAgICAgICAgIE1NIDogJ+C2uOC3j+C3gyAlZCcsXG4gICAgICAgICAgICB5IDogJ+C3gOC3g+C2uycsXG4gICAgICAgICAgICB5eSA6ICfgt4Dgt4PgtrsgJWQnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSDgt4Dgt5DgtrHgt5IvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcg4LeA4LeQ4Lax4LeSJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZSA6IC/gtrTgt5ngtrsg4LeA4La74LeUfOC2tOC3g+C3iiDgt4Dgtrvgt5R84La04LeZLuC3gHzgtrQu4LeALi8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCA9PT0gJ+C2tC7gt4AuJyB8fCBpbnB1dCA9PT0gJ+C2tOC3g+C3iiDgt4Dgtrvgt5QnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzID4gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICfgtrQu4LeALicgOiAn4La04LeD4LeKIOC3gOC2u+C3lCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ+C2tOC3mS7gt4AuJyA6ICfgtrTgt5ngtrsg4LeA4La74LeUJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gJ2phbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0ID0gJ2phbl9mZWJfbWFyX2Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIHBsdXJhbChuKSB7XG4gICAgICAgIHJldHVybiAobiA+IDEpICYmIChuIDwgNSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSwgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bWJlciArICcgJztcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3MnOiAgLy8gYSBmZXcgc2Vjb25kcyAvIGluIGEgZmV3IHNlY29uZHMgLyBhIGZldyBzZWNvbmRzIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncMOhciBzZWvDum5kJyA6ICdww6FyIHNla3VuZGFtaSc7XG4gICAgICAgICAgICBjYXNlICdzcyc6IC8vIDkgc2Vjb25kcyAvIGluIDkgc2Vjb25kcyAvIDkgc2Vjb25kcyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Nla3VuZHknIDogJ3Nla8O6bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgJ3Nla3VuZGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6ICAvLyBhIG1pbnV0ZSAvIGluIGEgbWludXRlIC8gYSBtaW51dGUgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnbWluw7p0YScgOiAoaXNGdXR1cmUgPyAnbWluw7p0dScgOiAnbWluw7p0b3UnKTtcbiAgICAgICAgICAgIGNhc2UgJ21tJzogLy8gOSBtaW51dGVzIC8gaW4gOSBtaW51dGVzIC8gOSBtaW51dGVzIGFnb1xuICAgICAgICAgICAgICAgIGlmICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAocGx1cmFsKG51bWJlcikgPyAnbWluw7p0eScgOiAnbWluw7p0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdtaW7DunRhbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2gnOiAgLy8gYW4gaG91ciAvIGluIGFuIGhvdXIgLyBhbiBob3VyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gJ2hvZGluYScgOiAoaXNGdXR1cmUgPyAnaG9kaW51JyA6ICdob2Rpbm91Jyk7XG4gICAgICAgICAgICBjYXNlICdoaCc6IC8vIDkgaG91cnMgLyBpbiA5IGhvdXJzIC8gOSBob3VycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2hvZGlueScgOiAnaG9kw61uJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdob2RpbmFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZCc6ICAvLyBhIGRheSAvIGluIGEgZGF5IC8gYSBkYXkgYWdvXG4gICAgICAgICAgICAgICAgcmV0dXJuICh3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlKSA/ICdkZcWIJyA6ICdkxYhvbSc7XG4gICAgICAgICAgICBjYXNlICdkZCc6IC8vIDkgZGF5cyAvIGluIDkgZGF5cyAvIDkgZGF5cyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ2RuaScgOiAnZG7DrScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnZMWIYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdNJzogIC8vIGEgbW9udGggLyBpbiBhIG1vbnRoIC8gYSBtb250aCBhZ29cbiAgICAgICAgICAgICAgICByZXR1cm4gKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpID8gJ21lc2lhYycgOiAnbWVzaWFjb20nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOiAvLyA5IG1vbnRocyAvIGluIDkgbW9udGhzIC8gOSBtb250aHMgYWdvXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArIChwbHVyYWwobnVtYmVyKSA/ICdtZXNpYWNlJyA6ICdtZXNpYWNvdicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyAnbWVzaWFjbWknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3knOiAgLy8gYSB5ZWFyIC8gaW4gYSB5ZWFyIC8gYSB5ZWFyIGFnb1xuICAgICAgICAgICAgICAgIHJldHVybiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkgPyAncm9rJyA6ICdyb2tvbSc7XG4gICAgICAgICAgICBjYXNlICd5eSc6IC8vIDkgeWVhcnMgLyBpbiA5IHllYXJzIC8gOSB5ZWFycyBhZ29cbiAgICAgICAgICAgICAgICBpZiAod2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHBsdXJhbChudW1iZXIpID8gJ3Jva3knIDogJ3Jva292Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCArICdyb2ttaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNrID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2snLCB7XG4gICAgICAgIG1vbnRocyA6IG1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQgOiBtb250aHNTaG9ydCxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkZcS+YV9wb25kZWxva191dG9yb2tfc3RyZWRhX8WhdHZydG9rX3BpYXRva19zb2JvdGEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnbmVfcG9fdXRfc3RfxaF0X3BpX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICduZV9wb191dF9zdF/FoXRfcGlfc28nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2RuZXMgb10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1t6YWp0cmEgb10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdm8gxaF0dnJ0b2sgb10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2IHBpYXRvayBvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW3Ygc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheTogJ1t2xI1lcmEgb10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbbWludWzDuiBuZWRlxL51IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc3RyZWR1IG9dIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1ttaW51bMO9XSBkZGRkIFtvXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW21pbnVsw7ogc29ib3R1IG9dIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnemEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHMgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBzcyA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBkZCA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIE0gOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICB5eSA6IHRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgJyAnO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbmVrYWogc2VrdW5kJyA6ICduZWthaiBzZWt1bmRhbWknO1xuICAgICAgICAgICAgY2FzZSAnc3MnOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggPyAnc2VrdW5kbycgOiAnc2VrdW5kaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnc2VrdW5kaScgOiAnc2VrdW5kYWgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdzZWt1bmRlJyA6ICdzZWt1bmRhaCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICdzZWt1bmQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAnZW5hIG1pbnV0YScgOiAnZW5vIG1pbnV0byc7XG4gICAgICAgICAgICBjYXNlICdtbSc6XG4gICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCA/ICdtaW51dGEnIDogJ21pbnV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWludXRpJyA6ICdtaW51dGFtYSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPCA1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0ZScgOiAnbWludXRhbWknO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21pbnV0JyA6ICdtaW51dGFtaSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/ICdlbmEgdXJhJyA6ICdlbm8gdXJvJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4ID8gJ3VyYScgOiAndXJvJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICd1cmknIDogJ3VyYW1hJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA8IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXJlJyA6ICd1cmFtaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAndXInIDogJ3VyYW1pJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIGRhbicgOiAnZW5pbSBkbmVtJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2RhbicgOiAnZG5lbSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnZG5pJyA6ICdkbmV2b21hJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdkbmknIDogJ2RuZXZpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VuIG1lc2VjJyA6ICdlbmltIG1lc2VjZW0nO1xuICAgICAgICAgICAgY2FzZSAnTU0nOlxuICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWMnIDogJ21lc2VjZW0nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ21lc2VjYScgOiAnbWVzZWNlbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdtZXNlY2UnIDogJ21lc2VjaSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdpdGhvdXRTdWZmaXggfHwgaXNGdXR1cmUgPyAnbWVzZWNldicgOiAnbWVzZWNpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2VubyBsZXRvJyA6ICdlbmltIGxldG9tJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3aXRob3V0U3VmZml4IHx8IGlzRnV0dXJlID8gJ2xldG8nIDogJ2xldG9tJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bWJlciA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRpJyA6ICdsZXRvbWEnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXRhJyA6ICdsZXRpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gd2l0aG91dFN1ZmZpeCB8fCBpc0Z1dHVyZSA/ICdsZXQnIDogJ2xldGknO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNsID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc2wnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnbmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICduZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnbmVfcG9fdG9fc3JfxI1lX3BlX3NvJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRC4gTU1NTSBZWVlZIEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5ICA6ICdbZGFuZXMgb2JdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgIDogJ1tqdXRyaSBvYl0gTFQnLFxuXG4gICAgICAgICAgICBuZXh0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gW25lZGVsam9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t2XSBbc29ib3RvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdl0gZGRkZCBbb2JdIExUJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdERheSAgOiAnW3bEjWVyYWogb2JdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbcHJlasWhbmpvXSBbc3JlZG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuam9dIFtzb2JvdG9dIFtvYl0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1twcmVqxaFuamldIGRkZGQgW29iXSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfEjWV6ICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICdwcmVkICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgbSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBoICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGQgICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgTSAgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NICAgICA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICB5ICAgICAgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgICAgIDogcHJvY2Vzc1JlbGF0aXZlVGltZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgc3EgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcScsIHtcbiAgICAgICAgbW9udGhzIDogJ0phbmFyX1Noa3VydF9NYXJzX1ByaWxsX01hal9RZXJzaG9yX0tvcnJpa19HdXNodF9TaHRhdG9yX1RldG9yX07Dq250b3JfRGhqZXRvcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX1Noa19NYXJfUHJpX01hal9RZXJfS29yX0d1c19TaHRfVGV0X07Dq25fRGhqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdFIERpZWxfRSBIw6tuw6tfRSBNYXJ0w6tfRSBNw6tya3Vyw6tfRSBFbmp0ZV9FIFByZW10ZV9FIFNodHVuw6snLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRGllX0jDq25fTWFyX03Dq3JfRW5qX1ByZV9TaHQnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0RfSF9NYV9Nw6tfRV9QX1NoJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvUER8TUQvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dC5jaGFyQXQoMCkgPT09ICdNJztcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBob3VycyA8IDEyID8gJ1BEJyA6ICdNRCc7XG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tTb3QgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tOZXPDq3IgbsOrXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0RqZSBuw6tdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ2RkZGQgW2Uga2FsdWFyIG7Dq10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ27DqyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzIG3DqyBwYXLDqycsXG4gICAgICAgICAgICBzIDogJ2Rpc2Egc2Vrb25kYScsXG4gICAgICAgICAgICBzcyA6ICclZCBzZWtvbmRhJyxcbiAgICAgICAgICAgIG0gOiAnbmrDqyBtaW51dMOrJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnV0YScsXG4gICAgICAgICAgICBoIDogJ25qw6sgb3LDqycsXG4gICAgICAgICAgICBoaCA6ICclZCBvcsOrJyxcbiAgICAgICAgICAgIGQgOiAnbmrDqyBkaXTDqycsXG4gICAgICAgICAgICBkZCA6ICclZCBkaXTDqycsXG4gICAgICAgICAgICBNIDogJ25qw6sgbXVhaicsXG4gICAgICAgICAgICBNTSA6ICclZCBtdWFqJyxcbiAgICAgICAgICAgIHkgOiAnbmrDqyB2aXQnLFxuICAgICAgICAgICAgeXkgOiAnJWQgdml0ZSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRyYW5zbGF0b3IgPSB7XG4gICAgICAgIHdvcmRzOiB7IC8vRGlmZmVyZW50IGdyYW1tYXRpY2FsIGNhc2VzXG4gICAgICAgICAgICBzczogWydzZWt1bmRhJywgJ3Nla3VuZGUnLCAnc2VrdW5kaSddLFxuICAgICAgICAgICAgbTogWydqZWRhbiBtaW51dCcsICdqZWRuZSBtaW51dGUnXSxcbiAgICAgICAgICAgIG1tOiBbJ21pbnV0JywgJ21pbnV0ZScsICdtaW51dGEnXSxcbiAgICAgICAgICAgIGg6IFsnamVkYW4gc2F0JywgJ2plZG5vZyBzYXRhJ10sXG4gICAgICAgICAgICBoaDogWydzYXQnLCAnc2F0YScsICdzYXRpJ10sXG4gICAgICAgICAgICBkZDogWydkYW4nLCAnZGFuYScsICdkYW5hJ10sXG4gICAgICAgICAgICBNTTogWydtZXNlYycsICdtZXNlY2EnLCAnbWVzZWNpJ10sXG4gICAgICAgICAgICB5eTogWydnb2RpbmEnLCAnZ29kaW5lJywgJ2dvZGluYSddXG4gICAgICAgIH0sXG4gICAgICAgIGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6IGZ1bmN0aW9uIChudW1iZXIsIHdvcmRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgPT09IDEgPyB3b3JkS2V5WzBdIDogKG51bWJlciA+PSAyICYmIG51bWJlciA8PSA0ID8gd29yZEtleVsxXSA6IHdvcmRLZXlbMl0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uIChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICAgICAgdmFyIHdvcmRLZXkgPSB0cmFuc2xhdG9yLndvcmRzW2tleV07XG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aXRob3V0U3VmZml4ID8gd29yZEtleVswXSA6IHdvcmRLZXlbMV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnICcgKyB0cmFuc2xhdG9yLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UobnVtYmVyLCB3b3JkS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgc3IgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCdzcicsIHtcbiAgICAgICAgbW9udGhzOiAnamFudWFyX2ZlYnJ1YXJfbWFydF9hcHJpbF9tYWpfanVuX2p1bF9hdmd1c3Rfc2VwdGVtYmFyX29rdG9iYXJfbm92ZW1iYXJfZGVjZW1iYXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0OiAnamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4nLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1BhcnNlRXhhY3Q6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzOiAnbmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiAnbmVkLl9wb24uX3V0by5fc3JlLl/EjWV0Ll9wZXQuX3N1Yi4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAnbmVfcG9fdXRfc3JfxI1lX3BlX3N1Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdDoge1xuICAgICAgICAgICAgTFQ6ICdIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdIOm1tOnNzJyxcbiAgICAgICAgICAgIEw6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMOiAnRC4gTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTDogJ0QuIE1NTU0gWVlZWSBIOm1tJyxcbiAgICAgICAgICAgIExMTEw6ICdkZGRkLCBELiBNTU1NIFlZWVkgSDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXI6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbZGFuYXMgdV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tzdXRyYSB1XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5kYXkoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbbmVkZWxqdV0gW3VdIExUJztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbdV0gW3NyZWR1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBbc3Vib3R1XSBbdV0gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1t1XSBkZGRkIFt1XSBMVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhc3REYXkgIDogJ1tqdcSNZSB1XSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFdlZWtEYXlzID0gW1xuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxvZ10gW3V0b3JrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdbcHJvxaFsb2ddIFtwZXRrYV0gW3VdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1twcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQnXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICd6YSAlcycsXG4gICAgICAgICAgICBwYXN0ICAgOiAncHJlICVzJyxcbiAgICAgICAgICAgIHMgICAgICA6ICduZWtvbGlrbyBzZWt1bmRpJyxcbiAgICAgICAgICAgIHNzICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgbSAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtbSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaGggICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBkICAgICAgOiAnZGFuJyxcbiAgICAgICAgICAgIGRkICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgTSAgICAgIDogJ21lc2VjJyxcbiAgICAgICAgICAgIE1NICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgeSAgICAgIDogJ2dvZGludScsXG4gICAgICAgICAgICB5eSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZVxuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn1cXC4vLFxuICAgICAgICBvcmRpbmFsIDogJyVkLicsXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNyO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHJhbnNsYXRvciA9IHtcbiAgICAgICAgd29yZHM6IHsgLy9EaWZmZXJlbnQgZ3JhbW1hdGljYWwgY2FzZXNcbiAgICAgICAgICAgIHNzOiBbJ9GB0LXQutGD0L3QtNCwJywgJ9GB0LXQutGD0L3QtNC1JywgJ9GB0LXQutGD0L3QtNC4J10sXG4gICAgICAgICAgICBtOiBbJ9GY0LXQtNCw0L0g0LzQuNC90YPRgicsICfRmNC10LTQvdC1INC80LjQvdGD0YLQtSddLFxuICAgICAgICAgICAgbW06IFsn0LzQuNC90YPRgicsICfQvNC40L3Rg9GC0LUnLCAn0LzQuNC90YPRgtCwJ10sXG4gICAgICAgICAgICBoOiBbJ9GY0LXQtNCw0L0g0YHQsNGCJywgJ9GY0LXQtNC90L7QsyDRgdCw0YLQsCddLFxuICAgICAgICAgICAgaGg6IFsn0YHQsNGCJywgJ9GB0LDRgtCwJywgJ9GB0LDRgtC4J10sXG4gICAgICAgICAgICBkZDogWyfQtNCw0L0nLCAn0LTQsNC90LAnLCAn0LTQsNC90LAnXSxcbiAgICAgICAgICAgIE1NOiBbJ9C80LXRgdC10YYnLCAn0LzQtdGB0LXRhtCwJywgJ9C80LXRgdC10YbQuCddLFxuICAgICAgICAgICAgeXk6IFsn0LPQvtC00LjQvdCwJywgJ9Cz0L7QtNC40L3QtScsICfQs9C+0LTQuNC90LAnXVxuICAgICAgICB9LFxuICAgICAgICBjb3JyZWN0R3JhbW1hdGljYWxDYXNlOiBmdW5jdGlvbiAobnVtYmVyLCB3b3JkS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyID09PSAxID8gd29yZEtleVswXSA6IChudW1iZXIgPj0gMiAmJiBudW1iZXIgPD0gNCA/IHdvcmRLZXlbMV0gOiB3b3JkS2V5WzJdKTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiBmdW5jdGlvbiAobnVtYmVyLCB3aXRob3V0U3VmZml4LCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB3b3JkS2V5ID0gdHJhbnNsYXRvci53b3Jkc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2l0aG91dFN1ZmZpeCA/IHdvcmRLZXlbMF0gOiB3b3JkS2V5WzFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJyAnICsgdHJhbnNsYXRvci5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKG51bWJlciwgd29yZEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHNyQ3lybCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NyLWN5cmwnLCB7XG4gICAgICAgIG1vbnRoczogJ9GY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQvNCx0LDRgF/QtNC10YbQtdC80LHQsNGAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydDogJ9GY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5czogJ9C90LXQtNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9C90LXQtC5f0L/QvtC9Ll/Rg9GC0L4uX9GB0YDQtS5f0YfQtdGCLl/Qv9C10YIuX9GB0YPQsS4nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn0L3QtV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSDptbTpzcycsXG4gICAgICAgICAgICBMOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTDogJ0QuIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEw6ICdELiBNTU1NIFlZWVkgSDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW9C00LDQvdCw0YEg0YNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb0YHRg9GC0YDQsCDRg10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdb0YNdIFvQvdC10LTQtdGZ0YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YDQtdC00YNdIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1vRg10gW9GB0YPQsdC+0YLRg10gW9GDXSBMVCc7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnW9GDXSBkZGRkIFvRg10gTFQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYXN0RGF5ICA6ICdb0ZjRg9GH0LUg0YNdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBsYXN0V2Vla0RheXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70L7Qs10gW9C/0L7QvdC10LTQtdGZ0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvRg9GC0L7RgNC60LBdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQnLFxuICAgICAgICAgICAgICAgICAgICAnW9C/0YDQvtGI0LvQvtCzXSBb0YfQtdGC0LLRgNGC0LrQsF0gW9GDXSBMVCcsXG4gICAgICAgICAgICAgICAgICAgICdb0L/RgNC+0YjQu9C+0LNdIFvQv9C10YLQutCwXSBb0YNdIExUJyxcbiAgICAgICAgICAgICAgICAgICAgJ1vQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQnXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFdlZWtEYXlzW3RoaXMuZGF5KCldO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3QgICA6ICfQv9GA0LUgJXMnLFxuICAgICAgICAgICAgcyAgICAgIDogJ9C90LXQutC+0LvQuNC60L4g0YHQtdC60YPQvdC00LgnLFxuICAgICAgICAgICAgc3MgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBtICAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIG1tICAgICA6IHRyYW5zbGF0b3IudHJhbnNsYXRlLFxuICAgICAgICAgICAgaCAgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBoaCAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGQgICAgICA6ICfQtNCw0L0nLFxuICAgICAgICAgICAgZGQgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGUsXG4gICAgICAgICAgICBNICAgICAgOiAn0LzQtdGB0LXRhicsXG4gICAgICAgICAgICBNTSAgICAgOiB0cmFuc2xhdG9yLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgICAgICA6ICfQs9C+0LTQuNC90YMnLFxuICAgICAgICAgICAgeXkgICAgIDogdHJhbnNsYXRvci50cmFuc2xhdGVcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9XFwuLyxcbiAgICAgICAgb3JkaW5hbCA6ICclZC4nLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzckN5cmw7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBzcyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3NzJywge1xuICAgICAgICBtb250aHMgOiBcIkJoaW1iaWR2d2FuZV9JbmRsb3ZhbmFfSW5kbG92J2xlbmtodWx1X01hYmFzYV9Jbmtod2VraHdldGlfSW5obGFiYV9LaG9sd2FuZV9JbmdjaV9JbnlvbmlfSW1waGFsYV9Md2V0aV9JbmdvbmdvbmlcIi5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdCaGlfSW5hX0ludV9NYWJfSW5rX0luaF9LaG9fSWdjX0lueV9JbXBfTHdlX0lnbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnTGlzb250Zm9fVW1zb21idWx1a29fTGVzaWJpbGlfTGVzaXRzYXRmdV9MZXNpbmVfTGVzaWhsYW51X1VtZ2NpYmVsbycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdMaXNfVW1iX0xzYl9MZXNfTHNpX0xzaF9VbWcnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0xpX1VzX0xiX0x0X0xzX0xoX1VnJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ2g6bW0gQScsXG4gICAgICAgICAgICBMVFMgOiAnaDptbTpzcyBBJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgaDptbSBBJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgaDptbSBBJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW05hbXVobGEgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tLdXNhc2EgbmdhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0l0b2xvIG5nYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBbbGVsaXBoZWxpbGVdIFtuZ2FdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICduZ2EgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICd3ZW50ZWthIG5nYSAlcycsXG4gICAgICAgICAgICBzIDogJ2VtaXp1endhbmEgbG9tY2FuZScsXG4gICAgICAgICAgICBzcyA6ICclZCBtenV6d2FuYScsXG4gICAgICAgICAgICBtIDogJ3VtenV6dScsXG4gICAgICAgICAgICBtbSA6ICclZCBlbWl6dXp1JyxcbiAgICAgICAgICAgIGggOiAnbGlob3JhJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGVtYWhvcmEnLFxuICAgICAgICAgICAgZCA6ICdsaWxhbmdhJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGVtYWxhbmdhJyxcbiAgICAgICAgICAgIE0gOiAnaW55YW5nYScsXG4gICAgICAgICAgICBNTSA6ICclZCB0aW55YW5nYScsXG4gICAgICAgICAgICB5IDogJ3Vtbnlha2EnLFxuICAgICAgICAgICAgeXkgOiAnJWQgaW1pbnlha2EnXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC9la3VzZW5pfGVtaW5pfGVudHNhbWJhbWF8ZWJ1c3VrdS8sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPCAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWt1c2VuaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXJzIDwgMTUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VtaW5pJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPCAxOSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZW50c2FtYmFtYSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZWJ1c3VrdSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICdla3VzZW5pJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ2VtaW5pJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICdlbnRzYW1iYW1hJyB8fCBtZXJpZGllbSA9PT0gJ2VidXN1a3UnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQnLFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN2ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3YnLCB7XG4gICAgICAgIG1vbnRocyA6ICdqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnc8O2bmRhZ19tw6VuZGFnX3Rpc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO2cmRhZycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdzw7ZuX23DpW5fdGlzX29uc190b3JfZnJlX2zDtnInLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIFtrbC5dIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbScsXG4gICAgICAgICAgICBsbGwgOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCBEIE1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbSWRhZ10gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tJbW9yZ29uXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW0lnw6VyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ1tQw6VdIGRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdbSV0gZGRkZFtzXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdvbSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2bDtnIgJXMgc2VkYW4nLFxuICAgICAgICAgICAgcyA6ICduw6VncmEgc2VrdW5kZXInLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VrdW5kZXInLFxuICAgICAgICAgICAgbSA6ICdlbiBtaW51dCcsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dGVyJyxcbiAgICAgICAgICAgIGggOiAnZW4gdGltbWUnLFxuICAgICAgICAgICAgaGggOiAnJWQgdGltbWFyJyxcbiAgICAgICAgICAgIGQgOiAnZW4gZGFnJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGRhZ2FyJyxcbiAgICAgICAgICAgIE0gOiAnZW4gbcOlbmFkJyxcbiAgICAgICAgICAgIE1NIDogJyVkIG3DpW5hZGVyJyxcbiAgICAgICAgICAgIHkgOiAnZXR0IMOlcicsXG4gICAgICAgICAgICB5eSA6ICclZCDDpXInXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfShlfGEpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAnZScgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdhJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ2EnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAnZScgOiAnZSc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN3ID0gbW9tZW50LmRlZmluZUxvY2FsZSgnc3cnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJpX0ZlYnJ1YXJpX01hY2hpX0FwcmlsaV9NZWlfSnVuaV9KdWxhaV9BZ29zdGlfU2VwdGVtYmFfT2t0b2JhX05vdmVtYmFfRGVzZW1iYScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnSmFuX0ZlYl9NYWNfQXByX01laV9KdW5fSnVsX0Fnb19TZXBfT2t0X05vdl9EZXMnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0p1bWFwaWxpX0p1bWF0YXR1X0p1bWFubmVfSnVtYXRhbm9fQWxoYW1pc2lfSWp1bWFhX0p1bWFtb3NpJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0pwbF9KdGF0X0pubmVfSnRhbl9BbGhfSWptX0ptb3MnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0oyX0ozX0o0X0o1X0FsX0lqX0oxJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbbGVvIHNhYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdba2VzaG8gc2FhXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbd2lraSBpamF5b10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbamFuYV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3dpa2kgaWxpeW9waXRhXSBkZGRkIFtzYWF0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgYmFhZGF5ZScsXG4gICAgICAgICAgICBwYXN0IDogJ3Rva2VhICVzJyxcbiAgICAgICAgICAgIHMgOiAnaGl2aSBwdW5kZScsXG4gICAgICAgICAgICBzcyA6ICdzZWt1bmRlICVkJyxcbiAgICAgICAgICAgIG0gOiAnZGFraWthIG1vamEnLFxuICAgICAgICAgICAgbW0gOiAnZGFraWthICVkJyxcbiAgICAgICAgICAgIGggOiAnc2FhIGxpbW9qYScsXG4gICAgICAgICAgICBoaCA6ICdtYXNhYSAlZCcsXG4gICAgICAgICAgICBkIDogJ3Npa3UgbW9qYScsXG4gICAgICAgICAgICBkZCA6ICdtYXNpa3UgJWQnLFxuICAgICAgICAgICAgTSA6ICdtd2V6aSBtbW9qYScsXG4gICAgICAgICAgICBNTSA6ICdtaWV6aSAlZCcsXG4gICAgICAgICAgICB5IDogJ213YWthIG1tb2phJyxcbiAgICAgICAgICAgIHl5IDogJ21pYWthICVkJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN5bWJvbE1hcCA9IHtcbiAgICAgICAgJzEnOiAn4K+nJyxcbiAgICAgICAgJzInOiAn4K+oJyxcbiAgICAgICAgJzMnOiAn4K+pJyxcbiAgICAgICAgJzQnOiAn4K+qJyxcbiAgICAgICAgJzUnOiAn4K+rJyxcbiAgICAgICAgJzYnOiAn4K+sJyxcbiAgICAgICAgJzcnOiAn4K+tJyxcbiAgICAgICAgJzgnOiAn4K+uJyxcbiAgICAgICAgJzknOiAn4K+vJyxcbiAgICAgICAgJzAnOiAn4K+mJ1xuICAgIH0sIG51bWJlck1hcCA9IHtcbiAgICAgICAgJ+Cvpyc6ICcxJyxcbiAgICAgICAgJ+CvqCc6ICcyJyxcbiAgICAgICAgJ+CvqSc6ICczJyxcbiAgICAgICAgJ+Cvqic6ICc0JyxcbiAgICAgICAgJ+Cvqyc6ICc1JyxcbiAgICAgICAgJ+CvrCc6ICc2JyxcbiAgICAgICAgJ+CvrSc6ICc3JyxcbiAgICAgICAgJ+Cvric6ICc4JyxcbiAgICAgICAgJ+Cvryc6ICc5JyxcbiAgICAgICAgJ+Cvpic6ICcwJ1xuICAgIH07XG5cbiAgICB2YXIgdGEgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0YScsIHtcbiAgICAgICAgbW9udGhzIDogJ+CunOCuqeCuteCusOCuv1/grqrgrr/grqrgr43grrDgrrXgrrDgrr9f4K6u4K6+4K6w4K+N4K6a4K+NX+Cuj+CuquCvjeCusOCusuCvjV/grq7gr4df4K6c4K+C4K6p4K+NX+CunOCvguCusuCviF/grobgrpXgrrjgr43grp/gr41f4K6a4K+G4K6q4K+N4K6f4K+G4K6u4K+N4K6q4K6w4K+NX+CuheCuleCvjeCun+Cvh+CuvuCuquCusOCvjV/grqjgrrXgrq7gr43grqrgrrDgr41f4K6f4K6/4K6a4K6u4K+N4K6q4K6w4K+NJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICfgrpzgrqngrrXgrrDgrr9f4K6q4K6/4K6q4K+N4K6w4K614K6w4K6/X+CuruCuvuCusOCvjeCumuCvjV/gro/grqrgr43grrDgrrLgr41f4K6u4K+HX+CunOCvguCuqeCvjV/grpzgr4LgrrLgr4hf4K6G4K6V4K644K+N4K6f4K+NX+CumuCvhuCuquCvjeCun+CvhuCuruCvjeCuquCusOCvjV/groXgrpXgr43grp/gr4fgrr7grqrgrrDgr41f4K6o4K614K6u4K+N4K6q4K6w4K+NX+Cun+Cuv+CumuCuruCvjeCuquCusOCvjScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn4K6e4K6+4K6v4K6/4K6x4K+N4K6x4K+B4K6V4K+N4K6V4K6/4K604K6u4K+IX+CupOCuv+CumeCvjeCuleCun+CvjeCuleCuv+CutOCuruCviF/grprgr4bgrrXgr43grrXgrr7grq/gr43grpXgrr/grrTgrq7gr4hf4K6q4K+B4K6k4K6p4K+N4K6V4K6/4K604K6u4K+IX+CuteCuv+Cur+CuvuCutOCuleCvjeCuleCuv+CutOCuruCviF/grrXgr4bgrrPgr43grrPgrr/grpXgr43grpXgrr/grrTgrq7gr4hf4K6a4K6p4K6/4K6V4K+N4K6V4K6/4K604K6u4K+IJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+CunuCuvuCur+Cuv+CuseCvgV/grqTgrr/grpngr43grpXgrrPgr41f4K6a4K+G4K614K+N4K614K6+4K6v4K+NX+CuquCvgeCupOCuqeCvjV/grrXgrr/grq/grr7grrTgrqngr41f4K614K+G4K6z4K+N4K6z4K6/X+CumuCuqeCuvycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn4K6e4K6+X+CupOCuv1/grprgr4Zf4K6q4K+BX+CuteCuv1/grrXgr4Zf4K6aJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZLCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vgrofgrqngr43grrHgr4FdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW+CuqOCuvuCus+CviF0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCwgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb4K6o4K+H4K6x4K+N4K6x4K+BXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb4K6V4K6f4K6o4K+N4K6kIOCuteCuvuCusOCuruCvjV0gZGRkZCwgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIOCuh+CusuCvjScsXG4gICAgICAgICAgICBwYXN0IDogJyVzIOCuruCvgeCuqeCvjScsXG4gICAgICAgICAgICBzIDogJ+CukuCusOCvgSDgrprgrr/grrIg4K614K6/4K6o4K6+4K6f4K6/4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCuteCuv+CuqOCuvuCun+Cuv+CuleCus+CvjScsXG4gICAgICAgICAgICBtIDogJ+CukuCusOCvgSDgrqjgrr/grq7grr/grp/grq7gr40nLFxuICAgICAgICAgICAgbW0gOiAnJWQg4K6o4K6/4K6u4K6/4K6f4K6Z4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIGggOiAn4K6S4K6w4K+BIOCuruCuo+CuvyDgrqjgr4fgrrDgrq7gr40nLFxuICAgICAgICAgICAgaGggOiAnJWQg4K6u4K6j4K6/IOCuqOCvh+CusOCuruCvjScsXG4gICAgICAgICAgICBkIDogJ+CukuCusOCvgSDgrqjgrr7grrPgr40nLFxuICAgICAgICAgICAgZGQgOiAnJWQg4K6o4K6+4K6f4K+N4K6V4K6z4K+NJyxcbiAgICAgICAgICAgIE0gOiAn4K6S4K6w4K+BIOCuruCuvuCupOCuruCvjScsXG4gICAgICAgICAgICBNTSA6ICclZCDgrq7grr7grqTgrpngr43grpXgrrPgr40nLFxuICAgICAgICAgICAgeSA6ICfgrpLgrrDgr4Eg4K614K6w4K+B4K6f4K6u4K+NJyxcbiAgICAgICAgICAgIHl5IDogJyVkIOCuhuCuo+CvjeCun+CvgeCuleCus+CvjSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ94K614K6k4K+BLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn4K614K6k4K+BJztcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvW+Cvp+CvqOCvqeCvquCvq+CvrOCvreCvruCvr+Cvpl0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlck1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXGQvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbE1hcFttYXRjaF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gcmVmZXIgaHR0cDovL3RhLndpa2lwZWRpYS5vcmcvcy8xZXIxXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/grq/grr7grq7grq7gr4184K614K+I4K6V4K6x4K+IfOCuleCuvuCusuCviHzgrqjgrqPgr43grqrgrpXgrrLgr4184K6O4K6x4K+N4K6q4K6+4K6f4K+BfOCuruCuvuCusuCviC8sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6v4K6+4K6u4K6u4K+NJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrrXgr4jgrpXgrrHgr4gnOyAgLy8g4K614K+I4K6V4K6x4K+IXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuleCuvuCusuCviCc7IC8vIOCuleCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrqjgrqPgr43grqrgrpXgrrLgr40nOyAvLyDgrqjgrqPgr43grqrgrpXgrrLgr41cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcg4K6O4K6x4K+N4K6q4K6+4K6f4K+BJzsgLy8g4K6O4K6x4K+N4K6q4K6+4K6f4K+BXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAyMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnIOCuruCuvuCusuCviCc7IC8vIOCuruCuvuCusuCviFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyDgrq/grr7grq7grq7gr40nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn4K6v4K6+4K6u4K6u4K+NJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyIDwgMiA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4K614K+I4K6V4K6x4K+IJyB8fCBtZXJpZGllbSA9PT0gJ+CuleCuvuCusuCviCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgrqjgrqPgr43grqrgrpXgrrLgr40nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTAgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMCwgLy8gU3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA2ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA2dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0YTtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHRlID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGUnLCB7XG4gICAgICAgIG1vbnRocyA6ICfgsJzgsKjgsLXgsLDgsL9f4LCr4LC/4LCs4LGN4LCw4LC14LCw4LC/X+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL/gsLLgsY1f4LCu4LGHX+CwnOCxguCwqOCxjV/gsJzgsYHgsLLgsYhf4LCG4LCX4LC44LGN4LCf4LGBX+CwuOCxhuCwquCxjeCwn+CxhuCwguCwrOCwsOCxjV/gsIXgsJXgsY3gsJ/gsYvgsKzgsLDgsY1f4LCo4LC14LCC4LCs4LCw4LGNX+CwoeCwv+CwuOCxhuCwguCwrOCwsOCxjScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn4LCc4LCoLl/gsKvgsL/gsKzgsY3gsLAuX+CwruCwvuCwsOCxjeCwmuCwv1/gsI/gsKrgsY3gsLDgsL8uX+CwruCxh1/gsJzgsYLgsKjgsY1f4LCc4LGB4LCy4LGIX+CwhuCwly5f4LC44LGG4LCq4LGNLl/gsIXgsJXgsY3gsJ/gsYsuX+CwqOCwtS5f4LCh4LC/4LC44LGGLicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ+CwhuCwpuCwv+CwteCwvuCwsOCwgl/gsLjgsYvgsK7gsLXgsL7gsLDgsIJf4LCu4LCC4LCX4LCz4LC14LC+4LCw4LCCX+CwrOCxgeCwp+CwteCwvuCwsOCwgl/gsJfgsYHgsLDgsYHgsLXgsL7gsLDgsIJf4LC24LGB4LCV4LGN4LCw4LC14LC+4LCw4LCCX+CwtuCwqOCwv+CwteCwvuCwsOCwgicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfgsIbgsKbgsL9f4LC44LGL4LCuX+CwruCwguCwl+Cws1/gsKzgsYHgsKdf4LCX4LGB4LCw4LGBX+CwtuCxgeCwleCxjeCwsF/gsLbgsKjgsL8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ+Cwhl/gsLjgsYtf4LCu4LCCX+CwrOCxgV/gsJfgsYFf4LC24LGBX+Cwticuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdBIGg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0EgaDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZLCBBIGg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+CwqOCxh+CwoeCxgV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4LCw4LGH4LCq4LGBXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkLCBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vgsKjgsL/gsKjgsY3gsKhdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vgsJfgsKRdIGRkZGQsIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclcyDgsLLgsYsnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDgsJXgsY3gsLDgsL/gsKTgsIInLFxuICAgICAgICAgICAgcyA6ICfgsJXgsYrgsKjgsY3gsKjgsL8g4LCV4LGN4LC34LCj4LC+4LCy4LGBJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOCwuOCxhuCwleCwqOCxjeCwsuCxgScsXG4gICAgICAgICAgICBtIDogJ+CwkuCwlSDgsKjgsL/gsK7gsL/gsLfgsIInLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LCo4LC/4LCu4LC/4LC34LC+4LCy4LGBJyxcbiAgICAgICAgICAgIGggOiAn4LCS4LCVIOCwl+CwguCwnycsXG4gICAgICAgICAgICBoaCA6ICclZCDgsJfgsILgsJ/gsLLgsYEnLFxuICAgICAgICAgICAgZCA6ICfgsJLgsJUg4LCw4LGL4LCc4LGBJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOCwsOCxi+CwnOCxgeCwsuCxgScsXG4gICAgICAgICAgICBNIDogJ+CwkuCwlSDgsKjgsYbgsLInLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LCo4LGG4LCy4LCy4LGBJyxcbiAgICAgICAgICAgIHkgOiAn4LCS4LCVIOCwuOCwguCwteCwpOCxjeCwuOCwsOCwgicsXG4gICAgICAgICAgICB5eSA6ICclZCDgsLjgsILgsLXgsKTgsY3gsLjgsLDgsL7gsLLgsYEnXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2UgOiAvXFxkezEsMn3gsLUvLFxuICAgICAgICBvcmRpbmFsIDogJyVk4LC1JyxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL+CwsOCwvuCwpOCxjeCwsOCwv3zgsIngsKbgsK/gsIJ84LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCfOCwuOCwvuCwr+CwguCwpOCxjeCwsOCwgi8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICfgsLDgsL7gsKTgsY3gsLDgsL8nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPCA0ID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsIngsKbgsK/gsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn4LCu4LCn4LGN4LCv4LC+4LC54LGN4LCo4LCCJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDEwID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfgsLjgsL7gsK/gsILgsKTgsY3gsLDgsIInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA8IDQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwsOCwvuCwpOCxjeCwsOCwvyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvdXIgPCAxMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCJ4LCm4LCv4LCCJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE3KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfgsK7gsKfgsY3gsK/gsL7gsLngsY3gsKjgsIInO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+CwuOCwvuCwr+CwguCwpOCxjeCwsOCwgic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4LCw4LC+4LCk4LGN4LCw4LC/JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDAsIC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGU7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0ZXQgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZXQnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW5laXJ1X0ZldmVyZWlydV9NYXJzdV9BYnJpbF9NYWl1X0p1w7F1X0p1bGx1X0FndXN0dV9TZXRlbWJydV9PdXR1YnJ1X05vdmVtYnJ1X0RlemVtYnJ1Jy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnRG9taW5ndV9TZWd1bmRhX1RlcnNhX0t1YXJ0YV9LaW50YV9TZXN0YV9TYWJhZHUnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnRG9tX1NlZ19UZXJzX0t1YV9LaW50X1Nlc3RfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdEb19TZWdfVGVfS3VfS2lfU2VzX1NhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1tPaGluIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheTogJ1tBYmFuIGloYV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdkZGRkIFtpaGFdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSG9yaXNlaWsgaWhhXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlazogJ2RkZGQgW3NlbWFuYSBrb3R1a10gW2loYV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnaWhhICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgbGl1YmEnLFxuICAgICAgICAgICAgcyA6ICdtaW51dHUgYmFsdW4nLFxuICAgICAgICAgICAgc3MgOiAnbWludXR1ICVkJyxcbiAgICAgICAgICAgIG0gOiAnbWludXR1IGlkYScsXG4gICAgICAgICAgICBtbSA6ICdtaW51dHUgJWQnLFxuICAgICAgICAgICAgaCA6ICdvcmFzIGlkYScsXG4gICAgICAgICAgICBoaCA6ICdvcmFzICVkJyxcbiAgICAgICAgICAgIGQgOiAnbG9yb24gaWRhJyxcbiAgICAgICAgICAgIGRkIDogJ2xvcm9uICVkJyxcbiAgICAgICAgICAgIE0gOiAnZnVsYW4gaWRhJyxcbiAgICAgICAgICAgIE1NIDogJ2Z1bGFuICVkJyxcbiAgICAgICAgICAgIHkgOiAndGluYW4gaWRhJyxcbiAgICAgICAgICAgIHl5IDogJ3RpbmFuICVkJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0oc3R8bmR8cmR8dGgpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKH5+KG51bWJlciAlIDEwMCAvIDEwKSA9PT0gMSkgPyAndGgnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMSkgPyAnc3QnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMikgPyAnbmQnIDpcbiAgICAgICAgICAgICAgICAoYiA9PT0gMykgPyAncmQnIDogJ3RoJztcbiAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRldDtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAwOiAnLdGD0LwnLFxuICAgICAgICAxOiAnLdGD0LwnLFxuICAgICAgICAyOiAnLdGO0LwnLFxuICAgICAgICAzOiAnLdGO0LwnLFxuICAgICAgICA0OiAnLdGD0LwnLFxuICAgICAgICA1OiAnLdGD0LwnLFxuICAgICAgICA2OiAnLdGD0LwnLFxuICAgICAgICA3OiAnLdGD0LwnLFxuICAgICAgICA4OiAnLdGD0LwnLFxuICAgICAgICA5OiAnLdGD0LwnLFxuICAgICAgICAxMDogJy3Rg9C8JyxcbiAgICAgICAgMTI6ICct0YPQvCcsXG4gICAgICAgIDEzOiAnLdGD0LwnLFxuICAgICAgICAyMDogJy3Rg9C8JyxcbiAgICAgICAgMzA6ICct0Y7QvCcsXG4gICAgICAgIDQwOiAnLdGD0LwnLFxuICAgICAgICA1MDogJy3Rg9C8JyxcbiAgICAgICAgNjA6ICct0YPQvCcsXG4gICAgICAgIDcwOiAnLdGD0LwnLFxuICAgICAgICA4MDogJy3Rg9C8JyxcbiAgICAgICAgOTA6ICct0YPQvCcsXG4gICAgICAgIDEwMDogJy3Rg9C8J1xuICAgIH07XG5cbiAgICB2YXIgdGcgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0ZycsIHtcbiAgICAgICAgbW9udGhzIDogJ9GP0L3QstCw0YBf0YTQtdCy0YDQsNC7X9C80LDRgNGCX9Cw0L/RgNC10Ltf0LzQsNC5X9C40Y7QvV/QuNGO0Ltf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGAX9C+0LrRgtGP0LHRgF/QvdC+0Y/QsdGAX9C00LXQutCw0LHRgCcuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0Y/QvdCyX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LonLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ9GP0LrRiNCw0L3QsdC1X9C00YPRiNCw0L3QsdC1X9GB0LXRiNCw0L3QsdC1X9GH0L7RgNGI0LDQvdCx0LVf0L/QsNC90rfRiNCw0L3QsdC1X9K30YPQvNGK0LBf0YjQsNC90LHQtScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfRj9GI0LFf0LTRiNCxX9GB0YjQsV/Rh9GI0LFf0L/RiNCxX9K30YPQvF/RiNC90LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9GP0Yhf0LTRiF/RgdGIX9GH0Yhf0L/RiF/St9C8X9GI0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQmNC80YDTr9C3INGB0L7QsNGC0LhdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW9Cf0LDQs9C+0rMg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb0JTQuNGA06/QtyDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkW9C4XSBb0rPQsNGE0YLQsNC4INC+0Y/QvdC00LAg0YHQvtCw0YLQuF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZFvQuF0gW9Kz0LDRhNGC0LDQuCDQs9GD0LfQsNGI0YLQsCDRgdC+0LDRgtC4XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn0LHQsNGK0LTQuCAlcycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINC/0LXRiCcsXG4gICAgICAgICAgICBzIDogJ9GP0LrRh9Cw0L3QtCDRgdC+0L3QuNGPJyxcbiAgICAgICAgICAgIG0gOiAn0Y/QuiDQtNCw0pvQuNKb0LAnLFxuICAgICAgICAgICAgbW0gOiAnJWQg0LTQsNKb0LjSm9CwJyxcbiAgICAgICAgICAgIGggOiAn0Y/QuiDRgdC+0LDRgicsXG4gICAgICAgICAgICBoaCA6ICclZCDRgdC+0LDRgicsXG4gICAgICAgICAgICBkIDogJ9GP0Log0YDTr9C3JyxcbiAgICAgICAgICAgIGRkIDogJyVkINGA06/QtycsXG4gICAgICAgICAgICBNIDogJ9GP0Log0LzQvtKzJyxcbiAgICAgICAgICAgIE1NIDogJyVkINC80L7SsycsXG4gICAgICAgICAgICB5IDogJ9GP0Log0YHQvtC7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINGB0L7QuydcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9GI0LDQsXzRgdGD0LHSs3zRgNOv0Ld80LHQtdCz0L7Ssy8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ9GI0LDQsScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA8IDQgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9GB0YPQsdKzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9GA06/QtycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn0LHQtdCz0L7SsycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbTogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCA0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRiNCw0LEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GB0YPQsdKzJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG91ciA8IDE2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfRgNOv0LcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9Cx0LXQs9C+0rMnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GI0LDQsSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfS0o0YPQvHzRjtC8KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHZhciBhID0gbnVtYmVyICUgMTAsXG4gICAgICAgICAgICAgICAgYiA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIChzdWZmaXhlc1tudW1iZXJdIHx8IHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGc7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0aCA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3RoJywge1xuICAgICAgICBtb250aHMgOiAn4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+C4oS7guIQuX+C4gS7guJ4uX+C4oeC4tS7guIQuX+C5gOC4oS7guKIuX+C4ni7guIQuX+C4oeC4tC7guKIuX+C4gS7guIQuX+C4qi7guIQuX+C4gS7guKIuX+C4lS7guIQuX+C4ni7guKIuX+C4mC7guIQuJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0OiB0cnVlLFxuICAgICAgICB3ZWVrZGF5cyA6ICfguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMJy5zcGxpdCgnXycpLCAvLyB5ZXMsIHRocmVlIGNoYXJhY3RlcnMgZGlmZmVyZW5jZVxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0g6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0g6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbScsXG4gICAgICAgICAgICBMTExMIDogJ+C4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHLyxcbiAgICAgICAgaXNQTTogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgPT09ICfguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcnO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4hyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vguJ7guKPguLjguYjguIfguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkW+C4q+C4meC5ieC4siDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vguKfguLHguJldZGRkZFvguJfguLXguYjguYHguKXguYnguKcg4LmA4Lin4Lil4LiyXSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAn4Lit4Li14LiBICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPguJfguLXguYjguYHguKXguYnguKcnLFxuICAgICAgICAgICAgcyA6ICfguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUnLFxuICAgICAgICAgICAgc3MgOiAnJWQg4Lin4Li04LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIG0gOiAnMSDguJnguLLguJfguLUnLFxuICAgICAgICAgICAgbW0gOiAnJWQg4LiZ4Liy4LiX4Li1JyxcbiAgICAgICAgICAgIGggOiAnMSDguIrguLHguYjguKfguYLguKHguIcnLFxuICAgICAgICAgICAgaGggOiAnJWQg4LiK4Lix4LmI4Lin4LmC4Lih4LiHJyxcbiAgICAgICAgICAgIGQgOiAnMSDguKfguLHguJknLFxuICAgICAgICAgICAgZGQgOiAnJWQg4Lin4Lix4LiZJyxcbiAgICAgICAgICAgIE0gOiAnMSDguYDguJTguLfguK3guJknLFxuICAgICAgICAgICAgTU0gOiAnJWQg4LmA4LiU4Li34Lit4LiZJyxcbiAgICAgICAgICAgIHkgOiAnMSDguJvguLUnLFxuICAgICAgICAgICAgeXkgOiAnJWQg4Lib4Li1J1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB0bFBoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGwtcGgnLCB7XG4gICAgICAgIG1vbnRocyA6ICdFbmVyb19QZWJyZXJvX01hcnNvX0FicmlsX01heW9fSHVueW9fSHVseW9fQWdvc3RvX1NldHllbWJyZV9Pa3R1YnJlX05vYnllbWJyZV9EaXN5ZW1icmUnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0VuZV9QZWJfTWFyX0Ficl9NYXlfSHVuX0h1bF9BZ29fU2V0X09rdF9Ob2JfRGlzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdMaW5nZ29fTHVuZXNfTWFydGVzX01peWVya3VsZXNfSHV3ZWJlc19CaXllcm5lc19TYWJhZG8nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnTGluX0x1bl9NYXJfTWl5X0h1d19CaXlfU2FiJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdMaV9MdV9NYV9NaV9IdV9CaV9TYWInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnTU0vRC9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ01NTU0gRCwgWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnTU1NTSBELCBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgTU1NTSBERCwgWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnTFQgW25nYXlvbmcgYXJhd10nLFxuICAgICAgICAgICAgbmV4dERheTogJ1tCdWthcyBuZ10gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdMVCBbc2Egc3VzdW5vZCBuYV0gZGRkZCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnTFQgW2thaGFwb25dJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTFQgW25vb25nIG5ha2FyYWFuZ10gZGRkZCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICdzYSBsb29iIG5nICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgYW5nIG5ha2FsaXBhcycsXG4gICAgICAgICAgICBzIDogJ2lsYW5nIHNlZ3VuZG8nLFxuICAgICAgICAgICAgc3MgOiAnJWQgc2VndW5kbycsXG4gICAgICAgICAgICBtIDogJ2lzYW5nIG1pbnV0bycsXG4gICAgICAgICAgICBtbSA6ICclZCBtaW51dG8nLFxuICAgICAgICAgICAgaCA6ICdpc2FuZyBvcmFzJyxcbiAgICAgICAgICAgIGhoIDogJyVkIG9yYXMnLFxuICAgICAgICAgICAgZCA6ICdpc2FuZyBhcmF3JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGFyYXcnLFxuICAgICAgICAgICAgTSA6ICdpc2FuZyBidXdhbicsXG4gICAgICAgICAgICBNTSA6ICclZCBidXdhbicsXG4gICAgICAgICAgICB5IDogJ2lzYW5nIHRhb24nLFxuICAgICAgICAgICAgeXkgOiAnJWQgdGFvbidcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRsUGg7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciBudW1iZXJzTm91bnMgPSAncGFnaF93YeKAmV9jaGHigJlfd2VqX2xvU192YWdoX2phdl9Tb2NoX2Nob3JnaF9IdXQnLnNwbGl0KCdfJyk7XG5cbiAgICBmdW5jdGlvbiB0cmFuc2xhdGVGdXR1cmUob3V0cHV0KSB7XG4gICAgICAgIHZhciB0aW1lID0gb3V0cHV0O1xuICAgICAgICB0aW1lID0gKG91dHB1dC5pbmRleE9mKCdqYWonKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnbGVTJyA6XG4gICAgICAgIChvdXRwdXQuaW5kZXhPZignamFyJykgIT09IC0xKSA/XG4gICAgICAgIHRpbWUuc2xpY2UoMCwgLTMpICsgJ3dhUScgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ0RJUycpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICduZW0nIDpcbiAgICAgICAgdGltZSArICcgcElxJztcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlUGFzdChvdXRwdXQpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBvdXRwdXQ7XG4gICAgICAgIHRpbWUgPSAob3V0cHV0LmluZGV4T2YoJ2phaicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICdIdeKAmScgOlxuICAgICAgICAob3V0cHV0LmluZGV4T2YoJ2phcicpICE9PSAtMSkgP1xuICAgICAgICB0aW1lLnNsaWNlKDAsIC0zKSArICd3ZW4nIDpcbiAgICAgICAgKG91dHB1dC5pbmRleE9mKCdESVMnKSAhPT0gLTEpID9cbiAgICAgICAgdGltZS5zbGljZSgwLCAtMykgKyAnYmVuJyA6XG4gICAgICAgIHRpbWUgKyAnIHJldCc7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZShudW1iZXIsIHdpdGhvdXRTdWZmaXgsIHN0cmluZywgaXNGdXR1cmUpIHtcbiAgICAgICAgdmFyIG51bWJlck5vdW4gPSBudW1iZXJBc05vdW4obnVtYmVyKTtcbiAgICAgICAgc3dpdGNoIChzdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgbHVwJztcbiAgICAgICAgICAgIGNhc2UgJ21tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgdHVwJztcbiAgICAgICAgICAgIGNhc2UgJ2hoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgcmVwJztcbiAgICAgICAgICAgIGNhc2UgJ2RkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFqJztcbiAgICAgICAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgamFyJztcbiAgICAgICAgICAgIGNhc2UgJ3l5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyTm91biArICcgRElTJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG51bWJlckFzTm91bihudW1iZXIpIHtcbiAgICAgICAgdmFyIGh1bmRyZWQgPSBNYXRoLmZsb29yKChudW1iZXIgJSAxMDAwKSAvIDEwMCksXG4gICAgICAgIHRlbiA9IE1hdGguZmxvb3IoKG51bWJlciAlIDEwMCkgLyAxMCksXG4gICAgICAgIG9uZSA9IG51bWJlciAlIDEwLFxuICAgICAgICB3b3JkID0gJyc7XG4gICAgICAgIGlmIChodW5kcmVkID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSBudW1iZXJzTm91bnNbaHVuZHJlZF0gKyAndmF0bGgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZW4gPiAwKSB7XG4gICAgICAgICAgICB3b3JkICs9ICgod29yZCAhPT0gJycpID8gJyAnIDogJycpICsgbnVtYmVyc05vdW5zW3Rlbl0gKyAnbWFIJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob25lID4gMCkge1xuICAgICAgICAgICAgd29yZCArPSAoKHdvcmQgIT09ICcnKSA/ICcgJyA6ICcnKSArIG51bWJlcnNOb3Vuc1tvbmVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAod29yZCA9PT0gJycpID8gJ3BhZ2gnIDogd29yZDtcbiAgICB9XG5cbiAgICB2YXIgdGxoID0gbW9tZW50LmRlZmluZUxvY2FsZSgndGxoJywge1xuICAgICAgICBtb250aHMgOiAndGVyYeKAmSBqYXIgd2HigJlfdGVyYeKAmSBqYXIgY2hh4oCZX3RlcmHigJkgamFyIHdlal90ZXJh4oCZIGphciBsb1NfdGVyYeKAmSBqYXIgdmFnaF90ZXJh4oCZIGphciBqYXZfdGVyYeKAmSBqYXIgU29jaF90ZXJh4oCZIGphciBjaG9yZ2hfdGVyYeKAmSBqYXIgSHV0X3RlcmHigJkgamFyIHdh4oCZbWFIX3RlcmHigJkgamFyIHdh4oCZbWFIIHdh4oCZX3RlcmHigJkgamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnamFyIHdh4oCZX2phciBjaGHigJlfamFyIHdlal9qYXIgbG9TX2phciB2YWdoX2phciBqYXZfamFyIFNvY2hfamFyIGNob3JnaF9qYXIgSHV0X2phciB3YeKAmW1hSF9qYXIgd2HigJltYUggd2HigJlfamFyIHdh4oCZbWFIIGNoYeKAmScuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzUGFyc2VFeGFjdCA6IHRydWUsXG4gICAgICAgIHdlZWtkYXlzIDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ2xvam1JdGphal9EYVNqYWpfcG92amFqX2doSXRsaGphal9sb2doamFqX2J1cWphal9naEluamFqJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdsb2ptSXRqYWpfRGFTamFqX3Bvdmphal9naEl0bGhqYWpfbG9naGphal9idXFqYWpfZ2hJbmphaicuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQgOiB7XG4gICAgICAgICAgICBMVCA6ICdISDptbScsXG4gICAgICAgICAgICBMVFMgOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC5NTS5ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6ICdbRGFIamFqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW3dh4oCZbGVTXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ0xMTCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW3dh4oCZSHXigJldIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnTExMJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogdHJhbnNsYXRlRnV0dXJlLFxuICAgICAgICAgICAgcGFzdCA6IHRyYW5zbGF0ZVBhc3QsXG4gICAgICAgICAgICBzIDogJ3B1UyBsdXAnLFxuICAgICAgICAgICAgc3MgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBtIDogJ3dh4oCZIHR1cCcsXG4gICAgICAgICAgICBtbSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGggOiAnd2HigJkgcmVwJyxcbiAgICAgICAgICAgIGhoIDogdHJhbnNsYXRlLFxuICAgICAgICAgICAgZCA6ICd3YeKAmSBqYWonLFxuICAgICAgICAgICAgZGQgOiB0cmFuc2xhdGUsXG4gICAgICAgICAgICBNIDogJ3dh4oCZIGphcicsXG4gICAgICAgICAgICBNTSA6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgIHkgOiAnd2HigJkgRElTJyxcbiAgICAgICAgICAgIHl5IDogdHJhbnNsYXRlXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGxoO1xuXG59KSkpO1xuIiwiXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIHN1ZmZpeGVzID0ge1xuICAgICAgICAxOiAnXFwnaW5jaScsXG4gICAgICAgIDU6ICdcXCdpbmNpJyxcbiAgICAgICAgODogJ1xcJ2luY2knLFxuICAgICAgICA3MDogJ1xcJ2luY2knLFxuICAgICAgICA4MDogJ1xcJ2luY2knLFxuICAgICAgICAyOiAnXFwnbmNpJyxcbiAgICAgICAgNzogJ1xcJ25jaScsXG4gICAgICAgIDIwOiAnXFwnbmNpJyxcbiAgICAgICAgNTA6ICdcXCduY2knLFxuICAgICAgICAzOiAnXFwnw7xuY8O8JyxcbiAgICAgICAgNDogJ1xcJ8O8bmPDvCcsXG4gICAgICAgIDEwMDogJ1xcJ8O8bmPDvCcsXG4gICAgICAgIDY6ICdcXCduY8SxJyxcbiAgICAgICAgOTogJ1xcJ3VuY3UnLFxuICAgICAgICAxMDogJ1xcJ3VuY3UnLFxuICAgICAgICAzMDogJ1xcJ3VuY3UnLFxuICAgICAgICA2MDogJ1xcJ8SxbmPEsScsXG4gICAgICAgIDkwOiAnXFwnxLFuY8SxJ1xuICAgIH07XG5cbiAgICB2YXIgdHIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0cicsIHtcbiAgICAgICAgbW9udGhzIDogJ09jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdPY2FfxZ51Yl9NYXJfTmlzX01heV9IYXpfVGVtX0HEn3VfRXlsX0VraV9LYXNfQXJhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICdQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2knLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnUGF6X1B0c19TYWxfw4dhcl9QZXJfQ3VtX0N0cycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnUHpfUHRfU2Ffw4dhX1BlX0N1X0N0Jy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0RELk1NLllZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbYnVnw7xuIHNhYXRdIExUJyxcbiAgICAgICAgICAgIG5leHREYXkgOiAnW3lhcsSxbiBzYWF0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdbZ2VsZWNla10gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdbZMO8bl0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW2dlw6dlbl0gZGRkZCBbc2FhdF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzIHNvbnJhJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMgw7ZuY2UnLFxuICAgICAgICAgICAgcyA6ICdiaXJrYcOnIHNhbml5ZScsXG4gICAgICAgICAgICBzcyA6ICclZCBzYW5peWUnLFxuICAgICAgICAgICAgbSA6ICdiaXIgZGFraWthJyxcbiAgICAgICAgICAgIG1tIDogJyVkIGRha2lrYScsXG4gICAgICAgICAgICBoIDogJ2JpciBzYWF0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNhYXQnLFxuICAgICAgICAgICAgZCA6ICdiaXIgZ8O8bicsXG4gICAgICAgICAgICBkZCA6ICclZCBnw7xuJyxcbiAgICAgICAgICAgIE0gOiAnYmlyIGF5JyxcbiAgICAgICAgICAgIE1NIDogJyVkIGF5JyxcbiAgICAgICAgICAgIHkgOiAnYmlyIHnEsWwnLFxuICAgICAgICAgICAgeXkgOiAnJWQgecSxbCdcbiAgICAgICAgfSxcbiAgICAgICAgb3JkaW5hbDogZnVuY3Rpb24gKG51bWJlciwgcGVyaW9kKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvJzpcbiAgICAgICAgICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gMCkgeyAgLy8gc3BlY2lhbCBjYXNlIGZvciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ1xcJ8SxbmPEsSc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBudW1iZXIgJSAxMDAgLSBhLFxuICAgICAgICAgICAgICAgICAgICAgICAgYyA9IG51bWJlciA+PSAxMDAgPyAxMDAgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgKHN1ZmZpeGVzW2FdIHx8IHN1ZmZpeGVzW2JdIHx8IHN1ZmZpeGVzW2NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gN3RoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHI7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIC8vIEFmdGVyIHRoZSB5ZWFyIHRoZXJlIHNob3VsZCBiZSBhIHNsYXNoIGFuZCB0aGUgYW1vdW50IG9mIHllYXJzIHNpbmNlIERlY2VtYmVyIDI2LCAxOTc5IGluIFJvbWFuIG51bWVyYWxzLlxuICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IHRvbyBkaWZmaWN1bHQgKG1heWJlIGV2ZW4gaW1wb3NzaWJsZSkgdG8gYWRkLlxuICAgIHZhciB0emwgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd0emwnLCB7XG4gICAgICAgIG1vbnRocyA6ICdKYW51YXJfRmV2cmFnbGhfTWFyw6dfQXZyw691X01haV9Hw7xuX0p1bGlhX0d1c2NodF9TZXRlbXZhcl9MaXN0b3DDpHRzX05vZW12YXJfWmVjZW12YXInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ0phbl9GZXZfTWFyX0F2cl9NYWlfR8O8bl9KdWxfR3VzX1NldF9MaXNfTm9lX1plYycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnU8O6bGFkaV9Mw7puZcOnaV9NYWl0emlfTcOhcmN1cmlfWGjDumFkaV9WacOpbmVyw6dpX1PDoXR1cmknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAnU8O6bF9Mw7puX01haV9Nw6FyX1how7pfVmnDqV9Tw6F0Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdTw7pfTMO6X01hX03DoV9YaF9WaV9Tw6EnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEgubW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hILm1tLnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdELiBNTU1NIFtkYWxsYXNdIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QuIE1NTU0gW2RhbGxhc10gWVlZWSBISC5tbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQsIFtsaV0gRC4gTU1NTSBbZGFsbGFzXSBZWVlZIEhILm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAvZFxcJ298ZFxcJ2EvaSxcbiAgICAgICAgaXNQTSA6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuICdkXFwnbycgPT09IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICBpZiAoaG91cnMgPiAxMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2RcXCdvJyA6ICdEXFwnTyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0xvd2VyID8gJ2RcXCdhJyA6ICdEXFwnQSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbb3hoaSDDoF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbZGVtw6Agw6BdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ2RkZGQgW8OgXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tpZWlyaSDDoF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW3PDvHIgZWxdIGRkZGQgW2xhc3RldSDDoF0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ29zcHJlaSAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ2phJXMnLFxuICAgICAgICAgICAgcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBzcyA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBtIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIG1tIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgaGggOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBkZCA6IHByb2Nlc3NSZWxhdGl2ZVRpbWUsXG4gICAgICAgICAgICBNIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIE1NIDogcHJvY2Vzc1JlbGF0aXZlVGltZSxcbiAgICAgICAgICAgIHkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lLFxuICAgICAgICAgICAgeXkgOiBwcm9jZXNzUmVsYXRpdmVUaW1lXG4gICAgICAgIH0sXG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfVxcLi8sXG4gICAgICAgIG9yZGluYWwgOiAnJWQuJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUmVsYXRpdmVUaW1lKG51bWJlciwgd2l0aG91dFN1ZmZpeCwga2V5LCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3MnOiBbJ3ZpZW5zYXMgc2VjdW5kcycsICdcXCdpZW5zYXMgc2VjdW5kcyddLFxuICAgICAgICAgICAgJ3NzJzogW251bWJlciArICcgc2VjdW5kcycsICcnICsgbnVtYmVyICsgJyBzZWN1bmRzJ10sXG4gICAgICAgICAgICAnbSc6IFsnXFwnbiBtw611dCcsICdcXCdpZW5zIG3DrXV0J10sXG4gICAgICAgICAgICAnbW0nOiBbbnVtYmVyICsgJyBtw611dHMnLCAnJyArIG51bWJlciArICcgbcOtdXRzJ10sXG4gICAgICAgICAgICAnaCc6IFsnXFwnbiDDvm9yYScsICdcXCdpZW5zYSDDvm9yYSddLFxuICAgICAgICAgICAgJ2hoJzogW251bWJlciArICcgw75vcmFzJywgJycgKyBudW1iZXIgKyAnIMO+b3JhcyddLFxuICAgICAgICAgICAgJ2QnOiBbJ1xcJ24geml1YScsICdcXCdpZW5zYSB6aXVhJ10sXG4gICAgICAgICAgICAnZGQnOiBbbnVtYmVyICsgJyB6aXVhcycsICcnICsgbnVtYmVyICsgJyB6aXVhcyddLFxuICAgICAgICAgICAgJ00nOiBbJ1xcJ24gbWVzJywgJ1xcJ2llbnMgbWVzJ10sXG4gICAgICAgICAgICAnTU0nOiBbbnVtYmVyICsgJyBtZXNlbicsICcnICsgbnVtYmVyICsgJyBtZXNlbiddLFxuICAgICAgICAgICAgJ3knOiBbJ1xcJ24gYXInLCAnXFwnaWVucyBhciddLFxuICAgICAgICAgICAgJ3l5JzogW251bWJlciArICcgYXJzJywgJycgKyBudW1iZXIgKyAnIGFycyddXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBpc0Z1dHVyZSA/IGZvcm1hdFtrZXldWzBdIDogKHdpdGhvdXRTdWZmaXggPyBmb3JtYXRba2V5XVswXSA6IGZvcm1hdFtrZXldWzFdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHpsO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHptID0gbW9tZW50LmRlZmluZUxvY2FsZSgndHptJywge1xuICAgICAgICBtb250aHMgOiAn4rWJ4rWP4rWP4rSw4rWi4rWUX+K0seK1leK0sOK1ouK1lV/itY7itLDitZXitZpf4rWJ4rSx4rWU4rWJ4rWUX+K1juK0sOK1ouK1ouK1k1/itaLitZPitY/itaLitZNf4rWi4rWT4rWN4rWi4rWT4rWjX+K1luK1k+K1m+K1nF/itZvitZPitZzitLDitY/itLHitYnitZRf4rS94rWf4rWT4rSx4rWVX+K1j+K1k+K1oeK0sOK1j+K0seK1ieK1lF/itLfitZPitYritY/itLHitYnitZQnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ+K1ieK1j+K1j+K0sOK1ouK1lF/itLHitZXitLDitaLitZVf4rWO4rSw4rWV4rWaX+K1ieK0seK1lOK1ieK1lF/itY7itLDitaLitaLitZNf4rWi4rWT4rWP4rWi4rWTX+K1ouK1k+K1jeK1ouK1k+K1o1/itZbitZPitZvitZxf4rWb4rWT4rWc4rSw4rWP4rSx4rWJ4rWUX+K0veK1n+K1k+K0seK1lV/itY/itZPitaHitLDitY/itLHitYnitZRf4rS34rWT4rWK4rWP4rSx4rWJ4rWUJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn4rSw4rWZ4rSw4rWO4rSw4rWZX+K0sOK1ouK1j+K0sOK1mV/itLDitZnitYnitY/itLDitZlf4rSw4rS94rWU4rSw4rWZX+K0sOK0veK1oeK0sOK1mV/itLDitZnitYnitY7itaHitLDitZlf4rSw4rWZ4rWJ4rS54rWi4rSw4rWZJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfitLDitZnitLDitY7itLDitZlf4rSw4rWi4rWP4rSw4rWZX+K0sOK1meK1ieK1j+K0sOK1mV/itLDitL3itZTitLDitZlf4rSw4rS94rWh4rSw4rWZX+K0sOK1meK1ieK1juK1oeK0sOK1mV/itLDitZnitYnitLnitaLitLDitZknLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ2RkZGQgRCBNTU1NIFlZWVkgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vitLDitZnitLfitYUg4rS0XSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5OiAnW+K0sOK1meK0veK0sCDitLRdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5OiAnW+K0sOK1muK0sOK1j+K1nCDitLRdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBb4rS0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfitLfitLDitLfitYUg4rWZIOK1ouK0sOK1jyAlcycsXG4gICAgICAgICAgICBwYXN0IDogJ+K1ouK0sOK1jyAlcycsXG4gICAgICAgICAgICBzIDogJ+K1ieK1juK1ieK0vScsXG4gICAgICAgICAgICBzcyA6ICclZCDitYnitY7itYnitL0nLFxuICAgICAgICAgICAgbSA6ICfitY7itYnitY/itZPitLonLFxuICAgICAgICAgICAgbW0gOiAnJWQg4rWO4rWJ4rWP4rWT4rS6JyxcbiAgICAgICAgICAgIGggOiAn4rWZ4rSw4rWE4rSwJyxcbiAgICAgICAgICAgIGhoIDogJyVkIOK1nOK0sOK1meK1meK0sOK1hOK1ieK1jycsXG4gICAgICAgICAgICBkIDogJ+K0sOK1meK1mScsXG4gICAgICAgICAgICBkZCA6ICclZCBv4rWZ4rWZ4rSw4rWPJyxcbiAgICAgICAgICAgIE0gOiAn4rSw4rWib+K1k+K1lCcsXG4gICAgICAgICAgICBNTSA6ICclZCDitYnitaLitaLitYnitZTitY8nLFxuICAgICAgICAgICAgeSA6ICfitLDitZnitLPitLDitZknLFxuICAgICAgICAgICAgeXkgOiAnJWQg4rWJ4rWZ4rSz4rSw4rWZ4rWPJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogNiwgLy8gU2F0dXJkYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDEyICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxMnRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHptO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgdHptTGF0biA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3R6bS1sYXRuJywge1xuICAgICAgICBtb250aHMgOiAnaW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpcicuc3BsaXQoJ18nKSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAnaW5uYXlyX2Jyy6RheXLLpF9tYXLLpHPLpF9pYnJpcl9tYXl5d195d255d195d2x5d3pfyaN3xaF0X8Whd3RhbmJpcl9rdMukd2Jyy6Rfbnd3YW5iaXJfZHdqbmJpcicuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAnYXNhbWFzX2F5bmFzX2FzaW5hc19ha3Jhc19ha3dhc19hc2ltd2FzX2FzaeG4jXlhcycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdhc2FtYXNfYXluYXNfYXNpbmFzX2FrcmFzX2Frd2FzX2FzaW13YXNfYXNp4biNeWFzJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW2FzZGtoIGddIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbYXNrYSBnXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlazogJ2RkZGQgW2ddIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbYXNzYW50IGddIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnZGRkZCBbZ10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnZGFka2ggcyB5YW4gJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICd5YW4gJXMnLFxuICAgICAgICAgICAgcyA6ICdpbWlrJyxcbiAgICAgICAgICAgIHNzIDogJyVkIGltaWsnLFxuICAgICAgICAgICAgbSA6ICdtaW514biNJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1pbnXhuI0nLFxuICAgICAgICAgICAgaCA6ICdzYcmbYScsXG4gICAgICAgICAgICBoaCA6ICclZCB0YXNzYcmbaW4nLFxuICAgICAgICAgICAgZCA6ICdhc3MnLFxuICAgICAgICAgICAgZGQgOiAnJWQgb3NzYW4nLFxuICAgICAgICAgICAgTSA6ICdheW93cicsXG4gICAgICAgICAgICBNTSA6ICclZCBpeXlpcm4nLFxuICAgICAgICAgICAgeSA6ICdhc2dhcycsXG4gICAgICAgICAgICB5eSA6ICclZCBpc2dhc24nXG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiA2LCAvLyBTYXR1cmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogMTIgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDEydGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0em1MYXRuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsYW5ndWFnZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1Z0NuID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWctY24nLCB7XG4gICAgICAgIG1vbnRoczogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICBtb250aHNTaG9ydDogJ9mK2KfZhtuL2KfYsV/ZgduQ24vYsdin2YRf2YXYp9ix2Kpf2KbYp9m+2LHbkNmEX9mF2KfZil/YptmJ2Yrbh9mGX9im2YnZituH2YRf2KbYp9uL2Lrbh9iz2Kpf2LPbkNmG2Krbldio2YnYsV/YptuG2YPYqtuV2KjZidixX9mG2YjZitin2KjZidixX9iv25DZg9in2KjZidixJy5zcGxpdChcbiAgICAgICAgICAgICdfJ1xuICAgICAgICApLFxuICAgICAgICB3ZWVrZGF5czogJ9mK25XZg9i025XZhtio25Vf2K/biNi025XZhtio25Vf2LPbldmK2LTbldmG2KjblV/ahtin2LHYtNuV2YbYqNuVX9m+25XZiti025XZhtio25Vf2KzbiNmF25Vf2LTbldmG2KjblScuc3BsaXQoXG4gICAgICAgICAgICAnXydcbiAgICAgICAgKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydDogJ9mK25Vf2K/biF/Ys9uVX9qG2Kdf2b7blV/YrNuIX9i025UnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluOiAn2YrblV/Yr9uIX9iz25Vf2obYp1/ZvtuVX9is24hf2LTblScuc3BsaXQoJ18nKSxcbiAgICAgICAgbG9uZ0RhdGVGb3JtYXQ6IHtcbiAgICAgICAgICAgIExUOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTOiAnSEg6bW06c3MnLFxuICAgICAgICAgICAgTDogJ1lZWVktTU0tREQnLFxuICAgICAgICAgICAgTEw6ICdZWVlZLdmK2YnZhNmJTS3Yptin2YrZhtmJ2q1ELdmD24jZhtmJJyxcbiAgICAgICAgICAgIExMTDogJ1lZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbScsXG4gICAgICAgICAgICBMTExMOiAnZGRkZNiMIFlZWVkt2YrZidmE2YlNLdim2KfZitmG2YnarUQt2YPbiNmG2YnYjCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL9mK25DYsdmJ2YUg2YPbkNqG25V82LPbldq+25XYsXzahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhnzahtuI2LR82obbiNi02KrZidmGINmD25DZitmJ2YZ82YPbldqGLyxcbiAgICAgICAgbWVyaWRpZW1Ib3VyOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn2YrbkNix2YnZhSDZg9uQ2obblScgfHxcbiAgICAgICAgICAgICAgICBtZXJpZGllbSA9PT0gJ9iz25XavtuV2LEnIHx8XG4gICAgICAgICAgICAgICAgbWVyaWRpZW0gPT09ICfahtuI2LTYqtmJ2YYg2Kjbh9ix24fZhidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ9qG24jYtNiq2YnZhiDZg9uQ2YrZidmGJyB8fCBtZXJpZGllbSA9PT0gJ9mD25XahicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZituQ2LHZidmFINmD25DahtuVJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9iz25XavtuV2LEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDExMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtNiq2YnZhiDYqNuH2LHbh9mGJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfahtuI2LQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9qG24jYtNiq2YnZhiDZg9uQ2YrZidmGJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfZg9uV2oYnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhcjoge1xuICAgICAgICAgICAgc2FtZURheTogJ1vYqNuI2q/biNmGINiz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdb2Kbbldiq25Ug2LPYp9im25XYql0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWs6ICdb2YPbkNmE25XYsdmD2YldIGRkZGQgW9iz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdb2KrbhtmG24jar9uI2YZdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrOiAnW9im2KfZhNiv2YnZhtmC2YldIGRkZGQgW9iz2KfYptuV2KpdIExUJyxcbiAgICAgICAgICAgIHNhbWVFbHNlOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiB7XG4gICAgICAgICAgICBmdXR1cmU6ICclcyDZg9uQ2YrZidmGJyxcbiAgICAgICAgICAgIHBhc3Q6ICclcyDYqNuH2LHbh9mGJyxcbiAgICAgICAgICAgIHM6ICfZhtuV2obahtuVINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBzczogJyVkINiz25DZg9mI2YbYqicsXG4gICAgICAgICAgICBtOiAn2KjZidixINmF2YnZhtuH2KonLFxuICAgICAgICAgICAgbW06ICclZCDZhdmJ2Ybbh9iqJyxcbiAgICAgICAgICAgIGg6ICfYqNmJ2LEg2LPYp9im25XYqicsXG4gICAgICAgICAgICBoaDogJyVkINiz2KfYptuV2KonLFxuICAgICAgICAgICAgZDogJ9io2YnYsSDZg9uI2YYnLFxuICAgICAgICAgICAgZGQ6ICclZCDZg9uI2YYnLFxuICAgICAgICAgICAgTTogJ9io2YnYsSDYptin2YonLFxuICAgICAgICAgICAgTU06ICclZCDYptin2YonLFxuICAgICAgICAgICAgeTogJ9io2YnYsSDZitmJ2YQnLFxuICAgICAgICAgICAgeXk6ICclZCDZitmJ2YQnXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KC3Zg9uI2YbZiXwt2KbYp9mKfC3avtuV2b7YqtuVKS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3Zg9uI2YbZiSc7XG4gICAgICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdq+25XZvtiq25UnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByZXBhcnNlOiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL9iML2csICcsJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHBvc3Rmb3JtYXQ6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvLC9nLCAn2IwnKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2Vlazoge1xuICAgICAgICAgICAgLy8gR0IvVCA3NDA4LTE5OTTjgIrmlbDmja7lhYPlkozkuqTmjaLmoLzlvI/Ct+S/oeaBr+S6pOaNosK35pel5pyf5ZKM5pe26Ze06KGo56S65rOV44CL5LiOSVNPIDg2MDE6MTk4OOetieaViFxuICAgICAgICAgICAgZG93OiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveTogNyAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiAxc3QgaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1Z0NuO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICBmdW5jdGlvbiBwbHVyYWwod29yZCwgbnVtKSB7XG4gICAgICAgIHZhciBmb3JtcyA9IHdvcmQuc3BsaXQoJ18nKTtcbiAgICAgICAgcmV0dXJuIG51bSAlIDEwID09PSAxICYmIG51bSAlIDEwMCAhPT0gMTEgPyBmb3Jtc1swXSA6IChudW0gJSAxMCA+PSAyICYmIG51bSAlIDEwIDw9IDQgJiYgKG51bSAlIDEwMCA8IDEwIHx8IG51bSAlIDEwMCA+PSAyMCkgPyBmb3Jtc1sxXSA6IGZvcm1zWzJdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVsYXRpdmVUaW1lV2l0aFBsdXJhbChudW1iZXIsIHdpdGhvdXRTdWZmaXgsIGtleSkge1xuICAgICAgICB2YXIgZm9ybWF0ID0ge1xuICAgICAgICAgICAgJ3NzJzogd2l0aG91dFN1ZmZpeCA/ICfRgdC10LrRg9C90LTQsF/RgdC10LrRg9C90LTQuF/RgdC10LrRg9C90LQnIDogJ9GB0LXQutGD0L3QtNGDX9GB0LXQutGD0L3QtNC4X9GB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICAnbW0nOiB3aXRob3V0U3VmZml4ID8gJ9GF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvScgOiAn0YXQstC40LvQuNC90YNf0YXQstC40LvQuNC90Lhf0YXQstC40LvQuNC9JyxcbiAgICAgICAgICAgICdoaCc6IHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwX9Cz0L7QtNC40L3QuF/Qs9C+0LTQuNC9JyA6ICfQs9C+0LTQuNC90YNf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0nLFxuICAgICAgICAgICAgJ2RkJzogJ9C00LXQvdGMX9C00L3Rll/QtNC90ZbQsicsXG4gICAgICAgICAgICAnTU0nOiAn0LzRltGB0Y/RhtGMX9C80ZbRgdGP0YbRll/QvNGW0YHRj9GG0ZbQsicsXG4gICAgICAgICAgICAneXknOiAn0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LInXG4gICAgICAgIH07XG4gICAgICAgIGlmIChrZXkgPT09ICdtJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0YXQstC40LvQuNC90LAnIDogJ9GF0LLQuNC70LjQvdGDJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09ICdoJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhvdXRTdWZmaXggPyAn0LPQvtC00LjQvdCwJyA6ICfQs9C+0LTQuNC90YMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICcgJyArIHBsdXJhbChmb3JtYXRba2V5XSwgK251bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gd2Vla2RheXNDYXNlUmVwbGFjZShtLCBmb3JtYXQpIHtcbiAgICAgICAgdmFyIHdlZWtkYXlzID0ge1xuICAgICAgICAgICAgJ25vbWluYXRpdmUnOiAn0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgJ2FjY3VzYXRpdmUnOiAn0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDJy5zcGxpdCgnXycpLFxuICAgICAgICAgICAgJ2dlbml0aXZlJzogJ9C90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgnLnNwbGl0KCdfJylcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ10uc2xpY2UoMSwgNykuY29uY2F0KHdlZWtkYXlzWydub21pbmF0aXZlJ10uc2xpY2UoMCwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzWydub21pbmF0aXZlJ107XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbm91bkNhc2UgPSAoLyhcXFtb0JLQstCj0YNdXFxdKSA/ZGRkZC8pLnRlc3QoZm9ybWF0KSA/XG4gICAgICAgICAgICAnYWNjdXNhdGl2ZScgOlxuICAgICAgICAgICAgKCgvXFxbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXF0gP2RkZGQvKS50ZXN0KGZvcm1hdCkgP1xuICAgICAgICAgICAgICAgICdnZW5pdGl2ZScgOlxuICAgICAgICAgICAgICAgICdub21pbmF0aXZlJyk7XG4gICAgICAgIHJldHVybiB3ZWVrZGF5c1tub3VuQ2FzZV1bbS5kYXkoKV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKHN0cikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0ciArICfQvicgKyAodGhpcy5ob3VycygpID09PSAxMSA/ICfQsScgOiAnJykgKyAnXSBMVCc7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHVrID0gbW9tZW50LmRlZmluZUxvY2FsZSgndWsnLCB7XG4gICAgICAgIG1vbnRocyA6IHtcbiAgICAgICAgICAgICdmb3JtYXQnOiAn0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8nLnNwbGl0KCdfJyksXG4gICAgICAgICAgICAnc3RhbmRhbG9uZSc6ICfRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwnLnNwbGl0KCdfJylcbiAgICAgICAgfSxcbiAgICAgICAgbW9udGhzU2hvcnQgOiAn0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiB3ZWVrZGF5c0Nhc2VSZXBsYWNlLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9C90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQuTU0uWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWSDRgC4nLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZINGALiwgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KHRjNC+0LPQvtC00L3RliAnKSxcbiAgICAgICAgICAgIG5leHREYXk6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JfQsNCy0YLRgNCwICcpLFxuICAgICAgICAgICAgbGFzdERheTogcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQktGH0L7RgNCwICcpLFxuICAgICAgICAgICAgbmV4dFdlZWs6IHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0KNdIGRkZGQgWycpLFxuICAgICAgICAgICAgbGFzdFdlZWs6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NIb3Vyc0Z1bmN0aW9uKCdb0JzQuNC90YPQu9C+0ZddIGRkZGQgWycpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc0hvdXJzRnVuY3Rpb24oJ1vQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsnKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQt9CwICVzJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXMg0YLQvtC80YMnLFxuICAgICAgICAgICAgcyA6ICfQtNC10LrRltC70YzQutCwINGB0LXQutGD0L3QtCcsXG4gICAgICAgICAgICBzcyA6IHJlbGF0aXZlVGltZVdpdGhQbHVyYWwsXG4gICAgICAgICAgICBtIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIG1tIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGggOiAn0LPQvtC00LjQvdGDJyxcbiAgICAgICAgICAgIGhoIDogcmVsYXRpdmVUaW1lV2l0aFBsdXJhbCxcbiAgICAgICAgICAgIGQgOiAn0LTQtdC90YwnLFxuICAgICAgICAgICAgZGQgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgTSA6ICfQvNGW0YHRj9GG0YwnLFxuICAgICAgICAgICAgTU0gOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsLFxuICAgICAgICAgICAgeSA6ICfRgNGW0LonLFxuICAgICAgICAgICAgeXkgOiByZWxhdGl2ZVRpbWVXaXRoUGx1cmFsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE0uIEUuOiB0aG9zZSB0d28gYXJlIHZpcnR1YWxseSB1bnVzZWQgYnV0IGEgdXNlciBtaWdodCB3YW50IHRvIGltcGxlbWVudCB0aGVtIGZvciBoaXMvaGVyIHdlYnNpdGUgZm9yIHNvbWUgcmVhc29uXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLFxuICAgICAgICBpc1BNOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXijQtNC90Y980LLQtdGH0L7RgNCwKSQvLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VyLCBtaW51dGUsIGlzTG93ZXIpIHtcbiAgICAgICAgICAgIGlmIChob3VyIDwgNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0L3QvtGH0ZYnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9GA0LDQvdC60YMnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChob3VyIDwgMTcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ9C00L3Rjyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn0LLQtdGH0L7RgNCwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LSjQuXzQs9C+KS8sXG4gICAgICAgIG9yZGluYWw6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJy3QuSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAnLdCz0L4nO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDcgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDd0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgbW9udGhzID0gW1xuICAgICAgICAn2KzZhtmI2LHbjCcsXG4gICAgICAgICfZgdix2YjYsduMJyxcbiAgICAgICAgJ9mF2KfYsdqGJyxcbiAgICAgICAgJ9in2b7YsduM2YQnLFxuICAgICAgICAn2YXYptuMJyxcbiAgICAgICAgJ9is2YjZhicsXG4gICAgICAgICfYrNmI2YTYp9im24wnLFxuICAgICAgICAn2Kfar9iz2KonLFxuICAgICAgICAn2LPYqtmF2KjYsScsXG4gICAgICAgICfYp9qp2KrZiNio2LEnLFxuICAgICAgICAn2YbZiNmF2KjYsScsXG4gICAgICAgICfYr9iz2YXYqNixJ1xuICAgIF07XG4gICAgdmFyIGRheXMgPSBbXG4gICAgICAgICfYp9iq2YjYp9ixJyxcbiAgICAgICAgJ9m+24zYsScsXG4gICAgICAgICfZhdmG2q/ZhCcsXG4gICAgICAgICfYqNiv2r4nLFxuICAgICAgICAn2KzZhdi52LHYp9iqJyxcbiAgICAgICAgJ9is2YXYuduBJyxcbiAgICAgICAgJ9uB2YHYqtuBJ1xuICAgIF07XG5cbiAgICB2YXIgdXIgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1cicsIHtcbiAgICAgICAgbW9udGhzIDogbW9udGhzLFxuICAgICAgICBtb250aHNTaG9ydCA6IG1vbnRocyxcbiAgICAgICAgd2Vla2RheXMgOiBkYXlzLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogZGF5cyxcbiAgICAgICAgd2Vla2RheXNNaW4gOiBkYXlzLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnZGRkZNiMIEQgTU1NTSBZWVlZIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv2LXYqNitfNi02KfZhS8sXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJyA9PT0gaW5wdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXIgPCAxMikge1xuICAgICAgICAgICAgICAgIHJldHVybiAn2LXYqNitJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAn2LTYp9mFJztcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vYotisINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1vaqdmEINio2YjZgtiqXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb2q/YsNi02KrbgSDYsdmI2LIg2KjZiNmC2KpdIExUJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1var9iw2LTYqtuBXSBkZGRkIFvYqNmI2YLYql0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVzINio2LnYrycsXG4gICAgICAgICAgICBwYXN0IDogJyVzINmC2KjZhCcsXG4gICAgICAgICAgICBzIDogJ9qG2YbYryDYs9uM2qnZhtqIJyxcbiAgICAgICAgICAgIHNzIDogJyVkINiz24zaqdmG2ognLFxuICAgICAgICAgICAgbSA6ICfYp9uM2qkg2YXZhtm5JyxcbiAgICAgICAgICAgIG1tIDogJyVkINmF2YbZuScsXG4gICAgICAgICAgICBoIDogJ9in24zaqSDar9q+2YbZuduBJyxcbiAgICAgICAgICAgIGhoIDogJyVkINqv2r7Zhtm525InLFxuICAgICAgICAgICAgZCA6ICfYp9uM2qkg2K/ZhicsXG4gICAgICAgICAgICBkZCA6ICclZCDYr9mGJyxcbiAgICAgICAgICAgIE0gOiAn2KfbjNqpINmF2KfbgScsXG4gICAgICAgICAgICBNTSA6ICclZCDZhdin24EnLFxuICAgICAgICAgICAgeSA6ICfYp9uM2qkg2LPYp9mEJyxcbiAgICAgICAgICAgIHl5IDogJyVkINiz2KfZhCdcbiAgICAgICAgfSxcbiAgICAgICAgcHJlcGFyc2U6IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgv2IwvZywgJywnKTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9zdGZvcm1hdDogZnVuY3Rpb24gKHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8sL2csICfYjCcpO1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHV6ID0gbW9tZW50LmRlZmluZUxvY2FsZSgndXonLCB7XG4gICAgICAgIG1vbnRocyA6ICfRj9C90LLQsNGAX9GE0LXQstGA0LDQu1/QvNCw0YDRgl/QsNC/0YDQtdC7X9C80LDQuV/QuNGO0L1f0LjRjtC7X9Cw0LLQs9GD0YHRgl/RgdC10L3RgtGP0LHRgF/QvtC60YLRj9Cx0YBf0L3QvtGP0LHRgF/QtNC10LrQsNCx0YAnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ9GP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0LjRjtC9X9C40Y7Qu1/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfQr9C60YjQsNC90LHQsF/QlNGD0YjQsNC90LHQsF/QodC10YjQsNC90LHQsF/Qp9C+0YDRiNCw0L3QsdCwX9Cf0LDQudGI0LDQvdCx0LBf0JbRg9C80LBf0KjQsNC90LHQsCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICfQr9C60Yhf0JTRg9GIX9Ch0LXRiF/Qp9C+0YBf0J/QsNC5X9CW0YPQvF/QqNCw0L0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ9Cv0Lpf0JTRg1/QodC1X9Cn0L5f0J/QsF/QltGDX9Co0LAnLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdEIE1NTU0gWVlZWSwgZGRkZCBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vQkdGD0LPRg9C9INGB0L7QsNGCXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb0K3RgNGC0LDQs9CwXSBMVCBb0LTQsF0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb0LrRg9C90Lgg0YHQvtCw0YJdIExUIFvQtNCwXScsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1vQmtC10YfQsCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIGxhc3RXZWVrIDogJ1vQo9GC0LPQsNC9XSBkZGRkIFvQutGD0L3QuCDRgdC+0LDRgl0gTFQgW9C00LBdJyxcbiAgICAgICAgICAgIHNhbWVFbHNlIDogJ0wnXG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICfQr9C60LjQvSAlcyDQuNGH0LjQtNCwJyxcbiAgICAgICAgICAgIHBhc3QgOiAn0JHQuNGAINC90LXRh9CwICVzINC+0LvQtNC40L0nLFxuICAgICAgICAgICAgcyA6ICfRhNGD0YDRgdCw0YInLFxuICAgICAgICAgICAgc3MgOiAnJWQg0YTRg9GA0YHQsNGCJyxcbiAgICAgICAgICAgIG0gOiAn0LHQuNGAINC00LDQutC40LrQsCcsXG4gICAgICAgICAgICBtbSA6ICclZCDQtNCw0LrQuNC60LAnLFxuICAgICAgICAgICAgaCA6ICfQsdC40YAg0YHQvtCw0YInLFxuICAgICAgICAgICAgaGggOiAnJWQg0YHQvtCw0YInLFxuICAgICAgICAgICAgZCA6ICfQsdC40YAg0LrRg9C9JyxcbiAgICAgICAgICAgIGRkIDogJyVkINC60YPQvScsXG4gICAgICAgICAgICBNIDogJ9Cx0LjRgCDQvtC5JyxcbiAgICAgICAgICAgIE1NIDogJyVkINC+0LknLFxuICAgICAgICAgICAgeSA6ICfQsdC40YAg0LnQuNC7JyxcbiAgICAgICAgICAgIHl5IDogJyVkINC50LjQuydcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNyAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXo7XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB1ekxhdG4gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd1ei1sYXRuJywge1xuICAgICAgICBtb250aHMgOiAnWWFudmFyX0ZldnJhbF9NYXJ0X0FwcmVsX01heV9JeXVuX0l5dWxfQXZndXN0X1NlbnRhYnJfT2t0YWJyX05veWFicl9EZWthYnInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ1lhbl9GZXZfTWFyX0Fwcl9NYXlfSXl1bl9JeXVsX0F2Z19TZW5fT2t0X05veV9EZWsnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ1lha3NoYW5iYV9EdXNoYW5iYV9TZXNoYW5iYV9DaG9yc2hhbmJhX1BheXNoYW5iYV9KdW1hX1NoYW5iYScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdZYWtfRHVzaF9TZXNoX0Nob3JfUGF5X0p1bV9TaGFuJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdZYV9EdV9TZV9DaG9fUGFfSnVfU2hhJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFlZWVknLFxuICAgICAgICAgICAgTExMIDogJ0QgTU1NTSBZWVlZIEhIOm1tJyxcbiAgICAgICAgICAgIExMTEwgOiAnRCBNTU1NIFlZWVksIGRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbQnVndW4gc29hdF0gTFQgW2RhXScsXG4gICAgICAgICAgICBuZXh0RGF5IDogJ1tFcnRhZ2FdIExUIFtkYV0nLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBba3VuaSBzb2F0XSBMVCBbZGFdJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW0tlY2hhIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW09cXCd0Z2FuXSBkZGRkIFtrdW5pIHNvYXRdIExUIFtkYV0nLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ1lhcWluICVzIGljaGlkYScsXG4gICAgICAgICAgICBwYXN0IDogJ0JpciBuZWNoYSAlcyBvbGRpbicsXG4gICAgICAgICAgICBzIDogJ3Nvbml5YScsXG4gICAgICAgICAgICBzcyA6ICclZCBzb25peWEnLFxuICAgICAgICAgICAgbSA6ICdiaXIgZGFxaXFhJyxcbiAgICAgICAgICAgIG1tIDogJyVkIGRhcWlxYScsXG4gICAgICAgICAgICBoIDogJ2JpciBzb2F0JyxcbiAgICAgICAgICAgIGhoIDogJyVkIHNvYXQnLFxuICAgICAgICAgICAgZCA6ICdiaXIga3VuJyxcbiAgICAgICAgICAgIGRkIDogJyVkIGt1bicsXG4gICAgICAgICAgICBNIDogJ2JpciBveScsXG4gICAgICAgICAgICBNTSA6ICclZCBveScsXG4gICAgICAgICAgICB5IDogJ2JpciB5aWwnLFxuICAgICAgICAgICAgeXkgOiAnJWQgeWlsJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA3ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA3dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1ekxhdG47XG5cbn0pKSk7XG4iLCIvLyEgbW9tZW50LmpzIGxvY2FsZSBjb25maWd1cmF0aW9uXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnXG4gICAgICAgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBmYWN0b3J5KHJlcXVpcmUoJy4uL21vbWVudCcpKSA6XG4gICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWycuLi9tb21lbnQnXSwgZmFjdG9yeSkgOlxuICAgZmFjdG9yeShnbG9iYWwubW9tZW50KVxufSh0aGlzLCAoZnVuY3Rpb24gKG1vbWVudCkgeyAndXNlIHN0cmljdCc7XG5cblxuICAgIHZhciB2aSA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3ZpJywge1xuICAgICAgICBtb250aHMgOiAndGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTInLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJ1RoMDFfVGgwMl9UaDAzX1RoMDRfVGgwNV9UaDA2X1RoMDdfVGgwOF9UaDA5X1RoMTBfVGgxMV9UaDEyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ0NOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Jy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICdDTl9UMl9UM19UNF9UNV9UNl9UNycuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgbWVyaWRpZW1QYXJzZTogL3NhfGNoL2ksXG4gICAgICAgIGlzUE0gOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAvXmNoJC9pLnRlc3QoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbSA6IGZ1bmN0aW9uIChob3VycywgbWludXRlcywgaXNMb3dlcikge1xuICAgICAgICAgICAgaWYgKGhvdXJzIDwgMTIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdzYScgOiAnU0EnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdjaCcgOiAnQ0gnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ0REL01NL1lZWVknLFxuICAgICAgICAgICAgTEwgOiAnRCBNTU1NIFtuxINtXSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdERC9NL1lZWVknLFxuICAgICAgICAgICAgbGwgOiAnRCBNTU0gWVlZWScsXG4gICAgICAgICAgICBsbGwgOiAnRCBNTU0gWVlZWSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ2RkZCwgRCBNTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5OiAnW0jDtG0gbmF5IGzDumNdIExUJyxcbiAgICAgICAgICAgIG5leHREYXk6ICdbTmfDoHkgbWFpIGzDumNdIExUJyxcbiAgICAgICAgICAgIG5leHRXZWVrOiAnZGRkZCBbdHXhuqduIHThu5tpIGzDumNdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXk6ICdbSMO0bSBxdWEgbMO6Y10gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWs6ICdkZGRkIFt0deG6p24gcuG7k2kgbMO6Y10gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXMgdOG7m2knLFxuICAgICAgICAgICAgcGFzdCA6ICclcyB0csaw4bubYycsXG4gICAgICAgICAgICBzIDogJ3bDoGkgZ2nDonknLFxuICAgICAgICAgICAgc3MgOiAnJWQgZ2nDonknICxcbiAgICAgICAgICAgIG0gOiAnbeG7mXQgcGjDunQnLFxuICAgICAgICAgICAgbW0gOiAnJWQgcGjDunQnLFxuICAgICAgICAgICAgaCA6ICdt4buZdCBnaeG7nScsXG4gICAgICAgICAgICBoaCA6ICclZCBnaeG7nScsXG4gICAgICAgICAgICBkIDogJ23hu5l0IG5nw6B5JyxcbiAgICAgICAgICAgIGRkIDogJyVkIG5nw6B5JyxcbiAgICAgICAgICAgIE0gOiAnbeG7mXQgdGjDoW5nJyxcbiAgICAgICAgICAgIE1NIDogJyVkIHRow6FuZycsXG4gICAgICAgICAgICB5IDogJ23hu5l0IG7Eg20nLFxuICAgICAgICAgICAgeXkgOiAnJWQgbsSDbSdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9LyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdlZWsgOiB7XG4gICAgICAgICAgICBkb3cgOiAxLCAvLyBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgICAgIGRveSA6IDQgIC8vIFRoZSB3ZWVrIHRoYXQgY29udGFpbnMgSmFuIDR0aCBpcyB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci5cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgeFBzZXVkbyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3gtcHNldWRvJywge1xuICAgICAgICBtb250aHMgOiAnSn7DocOxw7rDoX5yw71fRn7DqWJyw7p+w6Fyw71ffk3DoXJjfmhfw4FwfnLDrWxffk3DocO9X35Kw7rDscOpfl9Kw7psfsO9X8OBw7p+Z8O6c3R+X1PDqXB+dMOpbWJ+w6lyX8OTfmN0w7NifsOpcl/DkX7Ds3bDqW1+YsOpcl9+RMOpY8Opfm1iw6lyJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdKfsOhw7FffkbDqWJffk3DoXJffsOBcHJffk3DocO9X35Kw7rDsV9+SsO6bF9+w4HDumdfflPDqXBffsOTY3RffsORw7N2X35Ew6ljJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNQYXJzZUV4YWN0IDogdHJ1ZSxcbiAgICAgICAgd2Vla2RheXMgOiAnU37DusOxZMOhfsO9X03Ds37DsWTDocO9fl9Uw7rDqX5zZMOhw71+X1fDqWR+w7HDqXNkfsOhw71fVH5ow7pyc35kw6HDvV9+RnLDrWR+w6HDvV9TfsOhdMO6cn5kw6HDvScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdTfsO6w7Fffk3Ds8OxX35Uw7rDqV9+V8OpZF9+VGjDul9+RnLDrV9+U8OhdCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAnU37Dul9Nw7N+X1TDul9+V8OpX1R+aF9Gcn5fU8OhJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1BhcnNlRXhhY3QgOiB0cnVlLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIEwgOiAnREQvTU0vWVlZWScsXG4gICAgICAgICAgICBMTCA6ICdEIE1NTU0gWVlZWScsXG4gICAgICAgICAgICBMTEwgOiAnRCBNTU1NIFlZWVkgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBISDptbSdcbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1tUfsOzZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdbVH7Ds23Ds35ycsOzfncgw6F0XSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdkZGRkIFvDoXRdIExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW8OdfsOpc3R+w6lyZMOhfsO9IMOhdF0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnW0x+w6FzdF0gZGRkZCBbw6F0XSBMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnw61+w7EgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyDDoX5nw7MnLFxuICAgICAgICAgICAgcyA6ICfDoSB+ZsOpdyB+c8OpY8OzfsOxZHMnLFxuICAgICAgICAgICAgc3MgOiAnJWQgc37DqWPDs8OxfmRzJyxcbiAgICAgICAgICAgIG0gOiAnw6Egfm3DrcOxfsO6dMOpJyxcbiAgICAgICAgICAgIG1tIDogJyVkIG1+w63DscO6fnTDqXMnLFxuICAgICAgICAgICAgaCA6ICfDoX7DsSBow7N+w7pyJyxcbiAgICAgICAgICAgIGhoIDogJyVkIGh+w7PDunJzJyxcbiAgICAgICAgICAgIGQgOiAnw6EgfmTDocO9JyxcbiAgICAgICAgICAgIGRkIDogJyVkIGR+w6HDvXMnLFxuICAgICAgICAgICAgTSA6ICfDoSB+bcOzw7F+dGgnLFxuICAgICAgICAgICAgTU0gOiAnJWQgbX7Ds8OxdH5ocycsXG4gICAgICAgICAgICB5IDogJ8OhIH7DvcOpw6FyJyxcbiAgICAgICAgICAgIHl5IDogJyVkIMO9fsOpw6FycydcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KHRofHN0fG5kfHJkKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgYiA9IG51bWJlciAlIDEwLFxuICAgICAgICAgICAgICAgIG91dHB1dCA9ICh+fihudW1iZXIgJSAxMDAgLyAxMCkgPT09IDEpID8gJ3RoJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDEpID8gJ3N0JyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDIpID8gJ25kJyA6XG4gICAgICAgICAgICAgICAgKGIgPT09IDMpID8gJ3JkJyA6ICd0aCc7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgb3V0cHV0O1xuICAgICAgICB9LFxuICAgICAgICB3ZWVrIDoge1xuICAgICAgICAgICAgZG93IDogMSwgLy8gTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgICAgICBkb3kgOiA0ICAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB4UHNldWRvO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgeW8gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd5bycsIHtcbiAgICAgICAgbW9udGhzIDogJ1PhurnMgXLhurnMgV9FzIByZcyAbGXMgF/hurhy4bq5zIBuYcyAX0nMgGdiZcyBX0XMgGJpYmlfT8yAa3XMgGR1X0Fn4bq5bW9fT8yAZ3XMgW5fT3dld2Vf4buMzIB3YcyAcmHMgF9CZcyBbHXMgV/hu4zMgHDhurnMgMyAJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICdT4bq5zIFyX0XMgHJsX+G6uHJuX0nMgGdiX0XMgGJpX0/MgGt1zIBfQWfhurlfT8yAZ3XMgV9Pd2Vf4buMzIB3YcyAX0JlzIFsX+G7jMyAcOG6ucyAzIAnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzIDogJ0HMgGnMgGt1zIFfQWplzIFfScyAc+G6ucyBZ3VuX+G7jGrhu43MgXJ1zIFf4buMauG7jcyBYuG7jV/hurh0acyAX0HMgGJhzIFt4bq5zIF0YScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNTaG9ydCA6ICdBzIBpzIBrX0FqZcyBX0nMgHPhurnMgV/hu4xqcl/hu4xqYl/hurh0acyAX0HMgGJhzIEnLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzTWluIDogJ0HMgGnMgF9Bal9JzIBzX+G7jHJf4buMYl/hurh0X0HMgGInLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnaDptbSBBJyxcbiAgICAgICAgICAgIExUUyA6ICdoOm1tOnNzIEEnLFxuICAgICAgICAgICAgTCA6ICdERC9NTS9ZWVlZJyxcbiAgICAgICAgICAgIExMIDogJ0QgTU1NTSBZWVlZJyxcbiAgICAgICAgICAgIExMTCA6ICdEIE1NTU0gWVlZWSBoOm1tIEEnLFxuICAgICAgICAgICAgTExMTCA6ICdkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGVuZGFyIDoge1xuICAgICAgICAgICAgc2FtZURheSA6ICdbT8yAbmnMgCBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb4buMzIBsYSBuaV0gTFQnLFxuICAgICAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFuXFwnYuG7jV0gW25pXSBMVCcsXG4gICAgICAgICAgICBsYXN0RGF5IDogJ1tBzIBuYSBuaV0gTFQnLFxuICAgICAgICAgICAgbGFzdFdlZWsgOiAnZGRkZCBb4buMc+G6ucyAIHRvzIFs4buNzIFdIFtuaV0gTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJ25pzIEgJXMnLFxuICAgICAgICAgICAgcGFzdCA6ICclcyBr4buNamHMgScsXG4gICAgICAgICAgICBzIDogJ2nMgHPhurlqdcyBIGFheWHMgSBkaWUnLFxuICAgICAgICAgICAgc3MgOidhYXlhzIEgJWQnLFxuICAgICAgICAgICAgbSA6ICdpzIBz4bq5anXMgSBrYW4nLFxuICAgICAgICAgICAgbW0gOiAnacyAc+G6uWp1zIEgJWQnLFxuICAgICAgICAgICAgaCA6ICd3YcyBa2F0aSBrYW4nLFxuICAgICAgICAgICAgaGggOiAnd2HMgWthdGkgJWQnLFxuICAgICAgICAgICAgZCA6ICfhu41q4buNzIEga2FuJyxcbiAgICAgICAgICAgIGRkIDogJ+G7jWrhu43MgSAlZCcsXG4gICAgICAgICAgICBNIDogJ29zdcyAIGthbicsXG4gICAgICAgICAgICBNTSA6ICdvc3XMgCAlZCcsXG4gICAgICAgICAgICB5IDogJ+G7jWR1zIFuIGthbicsXG4gICAgICAgICAgICB5eSA6ICfhu41kdcyBbiAlZCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZSA6IC/hu41q4buNzIFcXHNcXGR7MSwyfS8sXG4gICAgICAgIG9yZGluYWwgOiAn4buNauG7jcyBICVkJyxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAvLyBUaGUgd2VlayB0aGF0IGNvbnRhaW5zIEphbiA0dGggaXMgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB5bztcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHpoQ24gPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1jbicsIHtcbiAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+WRqOaXpV/lkajkuIBf5ZGo5LqMX+WRqOS4iV/lkajlm5tf5ZGo5LqUX+WRqOWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ5bm0TeaciETml6VBaOeCuW1t5YiGJyxcbiAgICAgICAgICAgIExMTEwgOiAnWVlZWeW5tE3mnIhE5pelZGRkZEFo54K5bW3liIYnLFxuICAgICAgICAgICAgbCA6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91cjogZnVuY3Rpb24gKGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXJpZGllbSA9PT0gJ+WHjOaZqCcgfHwgbWVyaWRpZW0gPT09ICfml6nkuIonIHx8XG4gICAgICAgICAgICAgICAgICAgIG1lcmlkaWVtID09PSAn5LiK5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gJ+S4reWNiCdcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91ciA+PSAxMSA/IGhvdXIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vku4rlpKldTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vkuItdZGRkZExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+aYqOWkqV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb5LiKXWRkZGRMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzlkagpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn5pyIJztcbiAgICAgICAgICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICflkagnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbGF0aXZlVGltZSA6IHtcbiAgICAgICAgICAgIGZ1dHVyZSA6ICclc+WGhScsXG4gICAgICAgICAgICBwYXN0IDogJyVz5YmNJyxcbiAgICAgICAgICAgIHMgOiAn5Yeg56eSJyxcbiAgICAgICAgICAgIHNzIDogJyVkIOenkicsXG4gICAgICAgICAgICBtIDogJzEg5YiG6ZKfJyxcbiAgICAgICAgICAgIG1tIDogJyVkIOWIhumSnycsXG4gICAgICAgICAgICBoIDogJzEg5bCP5pe2JyxcbiAgICAgICAgICAgIGhoIDogJyVkIOWwj+aXticsXG4gICAgICAgICAgICBkIDogJzEg5aSpJyxcbiAgICAgICAgICAgIGRkIDogJyVkIOWkqScsXG4gICAgICAgICAgICBNIDogJzEg5Liq5pyIJyxcbiAgICAgICAgICAgIE1NIDogJyVkIOS4quaciCcsXG4gICAgICAgICAgICB5IDogJzEg5bm0JyxcbiAgICAgICAgICAgIHl5IDogJyVkIOW5tCdcbiAgICAgICAgfSxcbiAgICAgICAgd2VlayA6IHtcbiAgICAgICAgICAgIC8vIEdCL1QgNzQwOC0xOTk044CK5pWw5o2u5YWD5ZKM5Lqk5o2i5qC85byPwrfkv6Hmga/kuqTmjaLCt+aXpeacn+WSjOaXtumXtOihqOekuuazleOAi+S4jklTTyA4NjAxOjE5ODjnrYnmlYhcbiAgICAgICAgICAgIGRvdyA6IDEsIC8vIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICAgICAgZG95IDogNCAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gNHRoIGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhDbjtcblxufSkpKTtcbiIsIi8vISBtb21lbnQuanMgbG9jYWxlIGNvbmZpZ3VyYXRpb25cblxuOyhmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyA/IGZhY3RvcnkocmVxdWlyZSgnLi4vbW9tZW50JykpIDpcbiAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJy4uL21vbWVudCddLCBmYWN0b3J5KSA6XG4gICBmYWN0b3J5KGdsb2JhbC5tb21lbnQpXG59KHRoaXMsIChmdW5jdGlvbiAobW9tZW50KSB7ICd1c2Ugc3RyaWN0JztcblxuXG4gICAgdmFyIHpoSGsgPSBtb21lbnQuZGVmaW5lTG9jYWxlKCd6aC1oaycsIHtcbiAgICAgICAgbW9udGhzIDogJ+S4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICBtb250aHNTaG9ydCA6ICcx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCcuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXMgOiAn5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0IDogJ+mAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrScuc3BsaXQoJ18nKSxcbiAgICAgICAgd2Vla2RheXNNaW4gOiAn5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICBsb25nRGF0ZUZvcm1hdCA6IHtcbiAgICAgICAgICAgIExUIDogJ0hIOm1tJyxcbiAgICAgICAgICAgIExUUyA6ICdISDptbTpzcycsXG4gICAgICAgICAgICBMIDogJ1lZWVkvTU0vREQnLFxuICAgICAgICAgICAgTEwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIExMTCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgTExMTCA6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJyxcbiAgICAgICAgICAgIGwgOiAnWVlZWS9NL0QnLFxuICAgICAgICAgICAgbGwgOiAnWVlZWeW5tE3mnIhE5pelJyxcbiAgICAgICAgICAgIGxsbCA6ICdZWVlZ5bm0TeaciETml6UgSEg6bW0nLFxuICAgICAgICAgICAgbGxsbCA6ICdZWVlZ5bm0TeaciETml6VkZGRkIEhIOm1tJ1xuICAgICAgICB9LFxuICAgICAgICBtZXJpZGllbVBhcnNlOiAv5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLFxuICAgICAgICBtZXJpZGllbUhvdXIgOiBmdW5jdGlvbiAoaG91ciwgbWVyaWRpZW0pIHtcbiAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWVtID09PSAn5YeM5pmoJyB8fCBtZXJpZGllbSA9PT0gJ+aXqeS4iicgfHwgbWVyaWRpZW0gPT09ICfkuIrljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lcmlkaWVtID09PSAn5Lit5Y2IJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyID49IDExID8gaG91ciA6IGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuIvljYgnIHx8IG1lcmlkaWVtID09PSAn5pma5LiKJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBob3VyICsgMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtIDogZnVuY3Rpb24gKGhvdXIsIG1pbnV0ZSwgaXNMb3dlcikge1xuICAgICAgICAgICAgdmFyIGhtID0gaG91ciAqIDEwMCArIG1pbnV0ZTtcbiAgICAgICAgICAgIGlmIChobSA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5YeM5pmoJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCA5MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+aXqeS4iic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTEzMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiK5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMjMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuK3ljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDE4MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4i+WNiCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pma5LiKJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2FsZW5kYXIgOiB7XG4gICAgICAgICAgICBzYW1lRGF5IDogJ1vku4rlpKldTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5aSpXUxUJyxcbiAgICAgICAgICAgIG5leHRXZWVrIDogJ1vkuItdZGRkZExUJyxcbiAgICAgICAgICAgIGxhc3REYXkgOiAnW+aYqOWkqV1MVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb5LiKXWRkZGRMVCcsXG4gICAgICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgICAgICB9LFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiAvXFxkezEsMn0o5pelfOaciHzpgLEpLyxcbiAgICAgICAgb3JkaW5hbCA6IGZ1bmN0aW9uIChudW1iZXIsIHBlcmlvZCkge1xuICAgICAgICAgICAgc3dpdGNoIChwZXJpb2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkJyA6XG4gICAgICAgICAgICAgICAgY2FzZSAnRCcgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0RERCcgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aXpSc7XG4gICAgICAgICAgICAgICAgY2FzZSAnTScgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyICsgJ+aciCc7XG4gICAgICAgICAgICAgICAgY2FzZSAndycgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ1cnIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfpgLEnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQgOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWxhdGl2ZVRpbWUgOiB7XG4gICAgICAgICAgICBmdXR1cmUgOiAnJXPlhacnLFxuICAgICAgICAgICAgcGFzdCA6ICclc+WJjScsXG4gICAgICAgICAgICBzIDogJ+W5vuenkicsXG4gICAgICAgICAgICBzcyA6ICclZCDnp5InLFxuICAgICAgICAgICAgbSA6ICcxIOWIhumQmCcsXG4gICAgICAgICAgICBtbSA6ICclZCDliIbpkJgnLFxuICAgICAgICAgICAgaCA6ICcxIOWwj+aZgicsXG4gICAgICAgICAgICBoaCA6ICclZCDlsI/mmYInLFxuICAgICAgICAgICAgZCA6ICcxIOWkqScsXG4gICAgICAgICAgICBkZCA6ICclZCDlpKknLFxuICAgICAgICAgICAgTSA6ICcxIOWAi+aciCcsXG4gICAgICAgICAgICBNTSA6ICclZCDlgIvmnIgnLFxuICAgICAgICAgICAgeSA6ICcxIOW5tCcsXG4gICAgICAgICAgICB5eSA6ICclZCDlubQnXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB6aEhrO1xuXG59KSkpO1xuIiwiLy8hIG1vbWVudC5qcyBsb2NhbGUgY29uZmlndXJhdGlvblxuXG47KGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nID8gZmFjdG9yeShyZXF1aXJlKCcuLi9tb21lbnQnKSkgOlxuICAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnLi4vbW9tZW50J10sIGZhY3RvcnkpIDpcbiAgIGZhY3RvcnkoZ2xvYmFsLm1vbWVudClcbn0odGhpcywgKGZ1bmN0aW9uIChtb21lbnQpIHsgJ3VzZSBzdHJpY3QnO1xuXG5cbiAgICB2YXIgemhUdyA9IG1vbWVudC5kZWZpbmVMb2NhbGUoJ3poLXR3Jywge1xuICAgICAgICBtb250aHMgOiAn5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgnLnNwbGl0KCdfJyksXG4gICAgICAgIG1vbnRoc1Nob3J0IDogJzHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5cyA6ICfmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIHdlZWtkYXlzU2hvcnQgOiAn6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtJy5zcGxpdCgnXycpLFxuICAgICAgICB3ZWVrZGF5c01pbiA6ICfml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0nLnNwbGl0KCdfJyksXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0IDoge1xuICAgICAgICAgICAgTFQgOiAnSEg6bW0nLFxuICAgICAgICAgICAgTFRTIDogJ0hIOm1tOnNzJyxcbiAgICAgICAgICAgIEwgOiAnWVlZWS9NTS9ERCcsXG4gICAgICAgICAgICBMTCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgTExMIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBMTExMIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nLFxuICAgICAgICAgICAgbCA6ICdZWVlZL00vRCcsXG4gICAgICAgICAgICBsbCA6ICdZWVlZ5bm0TeaciETml6UnLFxuICAgICAgICAgICAgbGxsIDogJ1lZWVnlubRN5pyIROaXpSBISDptbScsXG4gICAgICAgICAgICBsbGxsIDogJ1lZWVnlubRN5pyIROaXpWRkZGQgSEg6bW0nXG4gICAgICAgIH0sXG4gICAgICAgIG1lcmlkaWVtUGFyc2U6IC/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sXG4gICAgICAgIG1lcmlkaWVtSG91ciA6IGZ1bmN0aW9uIChob3VyLCBtZXJpZGllbSkge1xuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWVyaWRpZW0gPT09ICflh4zmmagnIHx8IG1lcmlkaWVtID09PSAn5pep5LiKJyB8fCBtZXJpZGllbSA9PT0gJ+S4iuWNiCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVyaWRpZW0gPT09ICfkuK3ljYgnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgPj0gMTEgPyBob3VyIDogaG91ciArIDEyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXJpZGllbSA9PT0gJ+S4i+WNiCcgfHwgbWVyaWRpZW0gPT09ICfmmZrkuIonKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvdXIgKyAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWVyaWRpZW0gOiBmdW5jdGlvbiAoaG91ciwgbWludXRlLCBpc0xvd2VyKSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBob3VyICogMTAwICsgbWludXRlO1xuICAgICAgICAgICAgaWYgKGhtIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICflh4zmmagnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDkwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5pep5LiKJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaG0gPCAxMTMwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfkuIrljYgnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChobSA8IDEyMzApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ+S4reWNiCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhtIDwgMTgwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAn5LiL5Y2IJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICfmmZrkuIonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjYWxlbmRhciA6IHtcbiAgICAgICAgICAgIHNhbWVEYXkgOiAnW+S7iuWkqV0gTFQnLFxuICAgICAgICAgICAgbmV4dERheSA6ICdb5piO5aSpXSBMVCcsXG4gICAgICAgICAgICBuZXh0V2VlayA6ICdb5LiLXWRkZGQgTFQnLFxuICAgICAgICAgICAgbGFzdERheSA6ICdb5pio5aSpXSBMVCcsXG4gICAgICAgICAgICBsYXN0V2VlayA6ICdb5LiKXWRkZGQgTFQnLFxuICAgICAgICAgICAgc2FtZUVsc2UgOiAnTCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF5T2ZNb250aE9yZGluYWxQYXJzZTogL1xcZHsxLDJ9KOaXpXzmnIh86YCxKS8sXG4gICAgICAgIG9yZGluYWwgOiBmdW5jdGlvbiAobnVtYmVyLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGVyaW9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZCcgOlxuICAgICAgICAgICAgICAgIGNhc2UgJ0QnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdEREQnIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfml6UnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nIDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlciArICfmnIgnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3cnIDpcbiAgICAgICAgICAgICAgICBjYXNlICdXJyA6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1iZXIgKyAn6YCxJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0IDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVsYXRpdmVUaW1lIDoge1xuICAgICAgICAgICAgZnV0dXJlIDogJyVz5YWnJyxcbiAgICAgICAgICAgIHBhc3QgOiAnJXPliY0nLFxuICAgICAgICAgICAgcyA6ICflub7np5InLFxuICAgICAgICAgICAgc3MgOiAnJWQg56eSJyxcbiAgICAgICAgICAgIG0gOiAnMSDliIbpkJgnLFxuICAgICAgICAgICAgbW0gOiAnJWQg5YiG6ZCYJyxcbiAgICAgICAgICAgIGggOiAnMSDlsI/mmYInLFxuICAgICAgICAgICAgaGggOiAnJWQg5bCP5pmCJyxcbiAgICAgICAgICAgIGQgOiAnMSDlpKknLFxuICAgICAgICAgICAgZGQgOiAnJWQg5aSpJyxcbiAgICAgICAgICAgIE0gOiAnMSDlgIvmnIgnLFxuICAgICAgICAgICAgTU0gOiAnJWQg5YCL5pyIJyxcbiAgICAgICAgICAgIHkgOiAnMSDlubQnLFxuICAgICAgICAgICAgeXkgOiAnJWQg5bm0J1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gemhUdztcblxufSkpKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgdXRpbHMgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKipcbiAqIExvb3BzIHRocm91Z2ggdGhlIGNvbGxlY3Rpb24gYW5kIGNhbGxzIHRoZSBjYWxsYmFjayBmb3IgZWFjaCBlbGVtZW50LiBpZiB0aGUgY2FsbGJhY2sgcmV0dXJucyB0cnV0aHksIHRoZSBsb29wIGlzIGJyb2tlbiBhbmQgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZS5cbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7Kn0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBsb29wIHRocm91Z2guIE5lZWRzIHRvIGhhdmUgYSBsZW5ndGggcHJvcGVydHkgc2V0IGFuZCBoYXZlIGluZGljZXMgc2V0IGZyb20gMCB0byBsZW5ndGggLSAxLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBlbGVtZW50LiBUaGUgZWxlbWVudCB3aWxsIGJlIGdpdmVuIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBjYWxsYmFjay4gSWYgdGhpcyBjYWxsYmFjayByZXR1cm5zIHRydXRoeSwgdGhlIGxvb3AgaXMgYnJva2VuIGFuZCB0aGUgc2FtZSB2YWx1ZSBpcyByZXR1cm5lZC5cbiAqIEByZXR1cm5zIHsqfSBUaGUgdmFsdWUgdGhhdCBhIGNhbGxiYWNrIGhhcyByZXR1cm5lZCAoaWYgdHJ1dGh5KS4gT3RoZXJ3aXNlIG5vdGhpbmcuXG4gKi9cbnV0aWxzLmZvckVhY2ggPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYWxsYmFjaykge1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjb2xsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhjb2xsZWN0aW9uW2ldKTtcbiAgICAgICAgaWYocmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgZGV0ZWN0b3IgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG5kZXRlY3Rvci5pc0lFID0gZnVuY3Rpb24odmVyc2lvbikge1xuICAgIGZ1bmN0aW9uIGlzQW55SWVWZXJzaW9uKCkge1xuICAgICAgICB2YXIgYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBhZ2VudC5pbmRleE9mKFwibXNpZVwiKSAhPT0gLTEgfHwgYWdlbnQuaW5kZXhPZihcInRyaWRlbnRcIikgIT09IC0xIHx8IGFnZW50LmluZGV4T2YoXCIgZWRnZS9cIikgIT09IC0xO1xuICAgIH1cblxuICAgIGlmKCFpc0FueUllVmVyc2lvbigpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZighdmVyc2lvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvL1NoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3BhZG9sc2V5LzUyNzY4M1xuICAgIHZhciBpZVZlcnNpb24gPSAoZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIHVuZGVmLFxuICAgICAgICAgICAgdiA9IDMsXG4gICAgICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgYWxsID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaVwiKTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gXCI8IS0tW2lmIGd0IElFIFwiICsgKCsrdikgKyBcIl0+PGk+PC9pPjwhW2VuZGlmXS0tPlwiO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhbGxbMF0pO1xuXG4gICAgICAgIHJldHVybiB2ID4gNCA/IHYgOiB1bmRlZjtcbiAgICB9KCkpO1xuXG4gICAgcmV0dXJuIHZlcnNpb24gPT09IGllVmVyc2lvbjtcbn07XG5cbmRldGVjdG9yLmlzTGVnYWN5T3BlcmEgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gISF3aW5kb3cub3BlcmE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcERlZmF1bHQgKGV4KSB7IHJldHVybiAoZXggJiYgKHR5cGVvZiBleCA9PT0gJ29iamVjdCcpICYmICdkZWZhdWx0JyBpbiBleCkgPyBleFsnZGVmYXVsdCddIDogZXg7IH1cblxudmFyIFByb3BUeXBlcyA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdwcm9wLXR5cGVzJykpO1xudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcbnZhciBSZWFjdF9fZGVmYXVsdCA9IF9pbnRlcm9wRGVmYXVsdChSZWFjdCk7XG52YXIgd2FybmluZyA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCd3YXJuaW5nJykpO1xudmFyIENvdW50VXAkMSA9IF9pbnRlcm9wRGVmYXVsdChyZXF1aXJlKCdjb3VudHVwLmpzJykpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7XG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7XG4gICAgfSk7XG4gICAga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuXG4gICAgaWYgKGkgJSAyKSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gIH07XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7XG59XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgIHJldHVybiBjYWxsO1xuICB9XG5cbiAgcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHtcbiAgaWYgKCEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfYXJyID0gW107XG4gIHZhciBfbiA9IHRydWU7XG4gIHZhciBfZCA9IGZhbHNlO1xuICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG4gICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfZCA9IHRydWU7XG4gICAgX2UgPSBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gX2Fycjtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG59XG5cbnZhciBjcmVhdGVDb3VudFVwSW5zdGFuY2UgPSBmdW5jdGlvbiBjcmVhdGVDb3VudFVwSW5zdGFuY2UoZWwsIHByb3BzKSB7XG4gIHZhciBkZWNpbWFsID0gcHJvcHMuZGVjaW1hbCxcbiAgICAgIGRlY2ltYWxzID0gcHJvcHMuZGVjaW1hbHMsXG4gICAgICBkdXJhdGlvbiA9IHByb3BzLmR1cmF0aW9uLFxuICAgICAgZWFzaW5nRm4gPSBwcm9wcy5lYXNpbmdGbixcbiAgICAgIGVuZCA9IHByb3BzLmVuZCxcbiAgICAgIGZvcm1hdHRpbmdGbiA9IHByb3BzLmZvcm1hdHRpbmdGbixcbiAgICAgIHByZWZpeCA9IHByb3BzLnByZWZpeCxcbiAgICAgIHNlcGFyYXRvciA9IHByb3BzLnNlcGFyYXRvcixcbiAgICAgIHN0YXJ0ID0gcHJvcHMuc3RhcnQsXG4gICAgICBzdWZmaXggPSBwcm9wcy5zdWZmaXgsXG4gICAgICB1c2VFYXNpbmcgPSBwcm9wcy51c2VFYXNpbmc7XG4gIHJldHVybiBuZXcgQ291bnRVcCQxKGVsLCBzdGFydCwgZW5kLCBkZWNpbWFscywgZHVyYXRpb24sIHtcbiAgICBkZWNpbWFsOiBkZWNpbWFsLFxuICAgIGVhc2luZ0ZuOiBlYXNpbmdGbixcbiAgICBmb3JtYXR0aW5nRm46IGZvcm1hdHRpbmdGbixcbiAgICBzZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgICBwcmVmaXg6IHByZWZpeCxcbiAgICBzdWZmaXg6IHN1ZmZpeCxcbiAgICB1c2VFYXNpbmc6IHVzZUVhc2luZyxcbiAgICB1c2VHcm91cGluZzogISFzZXBhcmF0b3JcbiAgfSk7XG59O1xuXG52YXIgQ291bnRVcCA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ291bnRVcCwgX0NvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQ291bnRVcCgpIHtcbiAgICB2YXIgX2dldFByb3RvdHlwZU9mMjtcblxuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb3VudFVwKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfZ2V0UHJvdG90eXBlT2YyID0gX2dldFByb3RvdHlwZU9mKENvdW50VXApKS5jYWxsLmFwcGx5KF9nZXRQcm90b3R5cGVPZjIsIFt0aGlzXS5jb25jYXQoYXJncykpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjcmVhdGVJbnN0YW5jZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFdhcm4gd2hlbiB1c2VyIGRpZG4ndCB1c2UgY29udGFpbmVyUmVmIGF0IGFsbFxuICAgICAgICB3YXJuaW5nKF90aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50ICYmIChfdGhpcy5jb250YWluZXJSZWYuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IF90aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50IGluc3RhbmNlb2YgU1ZHVGV4dEVsZW1lbnQgfHwgX3RoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQgaW5zdGFuY2VvZiBTVkdUU3BhbkVsZW1lbnQpLCBcIkNvdWxkbid0IGZpbmQgYXR0YWNoZWQgZWxlbWVudCB0byBob29rIHRoZSBDb3VudFVwIGluc3RhbmNlIGludG8hIFRyeSB0byBhdHRhY2ggXFxcImNvbnRhaW5lclJlZlxcXCIgZnJvbSB0aGUgcmVuZGVyIHByb3AgdG8gYSBhbiBIVE1MRWxlbWVudCwgZWcuIDxzcGFuIHJlZj17Y29udGFpbmVyUmVmfSAvPi5cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjcmVhdGVDb3VudFVwSW5zdGFuY2UoX3RoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQsIF90aGlzLnByb3BzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwYXVzZVJlc3VtZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgICAgcmVzZXQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUucmVzZXQsXG4gICAgICAgICAgc3RhcnQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUucmVzdGFydCxcbiAgICAgICAgICB1cGRhdGUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUudXBkYXRlO1xuXG4gICAgICB2YXIgb25QYXVzZVJlc3VtZSA9IF90aGlzLnByb3BzLm9uUGF1c2VSZXN1bWU7XG5cbiAgICAgIF90aGlzLmluc3RhbmNlLnBhdXNlUmVzdW1lKCk7XG5cbiAgICAgIG9uUGF1c2VSZXN1bWUoe1xuICAgICAgICByZXNldDogcmVzZXQsXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlc2V0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUyID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgICAgcGF1c2VSZXN1bWUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUyLnBhdXNlUmVzdW1lLFxuICAgICAgICAgIHN0YXJ0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplMi5yZXN0YXJ0LFxuICAgICAgICAgIHVwZGF0ZSA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTIudXBkYXRlO1xuXG4gICAgICB2YXIgb25SZXNldCA9IF90aGlzLnByb3BzLm9uUmVzZXQ7XG5cbiAgICAgIF90aGlzLmluc3RhbmNlLnJlc2V0KCk7XG5cbiAgICAgIG9uUmVzZXQoe1xuICAgICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlc3RhcnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMucmVzZXQoKTtcblxuICAgICAgX3RoaXMuc3RhcnQoKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGFydFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2Fzc2VydFRoaXNJbml0aWFsaXplMyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICAgIHBhdXNlUmVzdW1lID0gX2Fzc2VydFRoaXNJbml0aWFsaXplMy5wYXVzZVJlc3VtZSxcbiAgICAgICAgICByZXNldCA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTMucmVzZXQsXG4gICAgICAgICAgc3RhcnQgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemUzLnJlc3RhcnQsXG4gICAgICAgICAgdXBkYXRlID0gX2Fzc2VydFRoaXNJbml0aWFsaXplMy51cGRhdGU7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGRlbGF5ID0gX3RoaXMkcHJvcHMuZGVsYXksXG4gICAgICAgICAgb25FbmQgPSBfdGhpcyRwcm9wcy5vbkVuZCxcbiAgICAgICAgICBvblN0YXJ0ID0gX3RoaXMkcHJvcHMub25TdGFydDtcblxuICAgICAgdmFyIHJ1biA9IGZ1bmN0aW9uIHJ1bigpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmluc3RhbmNlLnN0YXJ0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gb25FbmQoe1xuICAgICAgICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9OyAvLyBEZWxheSBzdGFydCBpZiBkZWxheSBwcm9wIGlzIHByb3Blcmx5IHNldFxuXG5cbiAgICAgIGlmIChkZWxheSA+IDApIHtcbiAgICAgICAgX3RoaXMudGltZW91dElkID0gc2V0VGltZW91dChydW4sIGRlbGF5ICogMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBydW4oKTtcbiAgICAgIH1cblxuICAgICAgb25TdGFydCh7XG4gICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwidXBkYXRlXCIsIGZ1bmN0aW9uIChuZXdFbmQpIHtcbiAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemU0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgICAgcGF1c2VSZXN1bWUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemU0LnBhdXNlUmVzdW1lLFxuICAgICAgICAgIHJlc2V0ID0gX2Fzc2VydFRoaXNJbml0aWFsaXplNC5yZXNldCxcbiAgICAgICAgICBzdGFydCA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZTQucmVzdGFydDtcblxuICAgICAgdmFyIG9uVXBkYXRlID0gX3RoaXMucHJvcHMub25VcGRhdGU7XG5cbiAgICAgIF90aGlzLmluc3RhbmNlLnVwZGF0ZShuZXdFbmQpO1xuXG4gICAgICBvblVwZGF0ZSh7XG4gICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICBzdGFydDogc3RhcnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImNvbnRhaW5lclJlZlwiLCBSZWFjdF9fZGVmYXVsdC5jcmVhdGVSZWYoKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ291bnRVcCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMi5jaGlsZHJlbixcbiAgICAgICAgICBkZWxheSA9IF90aGlzJHByb3BzMi5kZWxheTtcbiAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7IC8vIERvbid0IGludm9rZSBzdGFydCBpZiBjb21wb25lbnQgaXMgdXNlZCBhcyBhIHJlbmRlciBwcm9wXG5cbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgJiYgZGVsYXkgIT09IDApIHJldHVybjsgLy8gT3RoZXJ3aXNlIGp1c3Qgc3RhcnQgaW1tZWRpYXRlbHlcblxuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaG91bGRDb21wb25lbnRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgZW5kID0gX3RoaXMkcHJvcHMzLmVuZCxcbiAgICAgICAgICBzdGFydCA9IF90aGlzJHByb3BzMy5zdGFydCxcbiAgICAgICAgICBzdWZmaXggPSBfdGhpcyRwcm9wczMuc3VmZml4LFxuICAgICAgICAgIHByZWZpeCA9IF90aGlzJHByb3BzMy5wcmVmaXgsXG4gICAgICAgICAgcmVkcmF3ID0gX3RoaXMkcHJvcHMzLnJlZHJhdyxcbiAgICAgICAgICBkdXJhdGlvbiA9IF90aGlzJHByb3BzMy5kdXJhdGlvbixcbiAgICAgICAgICBzZXBhcmF0b3IgPSBfdGhpcyRwcm9wczMuc2VwYXJhdG9yLFxuICAgICAgICAgIGRlY2ltYWxzID0gX3RoaXMkcHJvcHMzLmRlY2ltYWxzLFxuICAgICAgICAgIGRlY2ltYWwgPSBfdGhpcyRwcm9wczMuZGVjaW1hbDtcbiAgICAgIHZhciBoYXNDZXJ0YWluUHJvcHNDaGFuZ2VkID0gZHVyYXRpb24gIT09IG5leHRQcm9wcy5kdXJhdGlvbiB8fCBlbmQgIT09IG5leHRQcm9wcy5lbmQgfHwgc3RhcnQgIT09IG5leHRQcm9wcy5zdGFydCB8fCBzdWZmaXggIT09IG5leHRQcm9wcy5zdWZmaXggfHwgcHJlZml4ICE9PSBuZXh0UHJvcHMucHJlZml4IHx8IHNlcGFyYXRvciAhPT0gbmV4dFByb3BzLnNlcGFyYXRvciB8fCBkZWNpbWFscyAhPT0gbmV4dFByb3BzLmRlY2ltYWxzIHx8IGRlY2ltYWwgIT09IG5leHRQcm9wcy5kZWNpbWFsO1xuICAgICAgcmV0dXJuIGhhc0NlcnRhaW5Qcm9wc0NoYW5nZWQgfHwgcmVkcmF3O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgLy8gSWYgZHVyYXRpb24sIHN1ZmZpeCwgcHJlZml4LCBzZXBhcmF0b3Igb3Igc3RhcnQgaGFzIGNoYW5nZWRcbiAgICAgIC8vIHRoZXJlJ3Mgbm8gd2F5IHRvIHVwZGF0ZSB0aGUgdmFsdWVzLlxuICAgICAgLy8gU28gd2UgbmVlZCB0byByZS1jcmVhdGUgdGhlIENvdW50VXAgaW5zdGFuY2UgaW4gb3JkZXIgdG9cbiAgICAgIC8vIHJlc3RhcnQgaXQuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBlbmQgPSBfdGhpcyRwcm9wczQuZW5kLFxuICAgICAgICAgIHN0YXJ0ID0gX3RoaXMkcHJvcHM0LnN0YXJ0LFxuICAgICAgICAgIHN1ZmZpeCA9IF90aGlzJHByb3BzNC5zdWZmaXgsXG4gICAgICAgICAgcHJlZml4ID0gX3RoaXMkcHJvcHM0LnByZWZpeCxcbiAgICAgICAgICBkdXJhdGlvbiA9IF90aGlzJHByb3BzNC5kdXJhdGlvbixcbiAgICAgICAgICBzZXBhcmF0b3IgPSBfdGhpcyRwcm9wczQuc2VwYXJhdG9yLFxuICAgICAgICAgIGRlY2ltYWxzID0gX3RoaXMkcHJvcHM0LmRlY2ltYWxzLFxuICAgICAgICAgIGRlY2ltYWwgPSBfdGhpcyRwcm9wczQuZGVjaW1hbCxcbiAgICAgICAgICBwcmVzZXJ2ZVZhbHVlID0gX3RoaXMkcHJvcHM0LnByZXNlcnZlVmFsdWU7XG5cbiAgICAgIGlmIChkdXJhdGlvbiAhPT0gcHJldlByb3BzLmR1cmF0aW9uIHx8IHN0YXJ0ICE9PSBwcmV2UHJvcHMuc3RhcnQgfHwgc3VmZml4ICE9PSBwcmV2UHJvcHMuc3VmZml4IHx8IHByZWZpeCAhPT0gcHJldlByb3BzLnByZWZpeCB8fCBzZXBhcmF0b3IgIT09IHByZXZQcm9wcy5zZXBhcmF0b3IgfHwgZGVjaW1hbHMgIT09IHByZXZQcm9wcy5kZWNpbWFscyB8fCBkZWNpbWFsICE9PSBwcmV2UHJvcHMuZGVjaW1hbCkge1xuICAgICAgICB0aGlzLmluc3RhbmNlLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIH0gLy8gT25seSBlbmQgdmFsdWUgaGFzIGNoYW5nZWQsIHNvIHJlc2V0IGFuZCBhbmQgcmUtYW5pbWF0ZSB3aXRoIHRoZSB1cGRhdGVkXG4gICAgICAvLyBlbmQgdmFsdWUuXG5cblxuICAgICAgaWYgKGVuZCAhPT0gcHJldlByb3BzLmVuZCkge1xuICAgICAgICBpZiAoIXByZXNlcnZlVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmluc3RhbmNlLnJlc2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZShlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJZCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluc3RhbmNlLnJlc2V0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNS5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczUuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHM1LnN0eWxlO1xuICAgICAgdmFyIGNvbnRhaW5lclJlZiA9IHRoaXMuY29udGFpbmVyUmVmLFxuICAgICAgICAgIHBhdXNlUmVzdW1lID0gdGhpcy5wYXVzZVJlc3VtZSxcbiAgICAgICAgICByZXNldCA9IHRoaXMucmVzZXQsXG4gICAgICAgICAgcmVzdGFydCA9IHRoaXMucmVzdGFydCxcbiAgICAgICAgICB1cGRhdGUgPSB0aGlzLnVwZGF0ZTtcblxuICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oe1xuICAgICAgICAgIGNvdW50VXBSZWY6IGNvbnRhaW5lclJlZixcbiAgICAgICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgIHN0YXJ0OiByZXN0YXJ0LFxuICAgICAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgcmVmOiBjb250YWluZXJSZWYsXG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvdW50VXA7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDb3VudFVwLCBcInByb3BUeXBlc1wiLCB7XG4gIGRlY2ltYWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRlY2ltYWxzOiBQcm9wVHlwZXMubnVtYmVyLFxuICBkZWxheTogUHJvcFR5cGVzLm51bWJlcixcbiAgZWFzaW5nRm46IFByb3BUeXBlcy5mdW5jLFxuICBlbmQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZm9ybWF0dGluZ0ZuOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgcHJlZml4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICByZWRyYXc6IFByb3BUeXBlcy5ib29sLFxuICBzZXBhcmF0b3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0YXJ0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBzdGFydE9uTW91bnQ6IFByb3BUeXBlcy5ib29sLFxuICBzdWZmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICB1c2VFYXNpbmc6IFByb3BUeXBlcy5ib29sLFxuICBwcmVzZXJ2ZVZhbHVlOiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDb3VudFVwLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGRlY2ltYWw6ICcuJyxcbiAgZGVjaW1hbHM6IDAsXG4gIGRlbGF5OiBudWxsLFxuICBkdXJhdGlvbjogbnVsbCxcbiAgZWFzaW5nRm46IG51bGwsXG4gIGZvcm1hdHRpbmdGbjogbnVsbCxcbiAgb25FbmQ6IGZ1bmN0aW9uIG9uRW5kKCkge30sXG4gIG9uUGF1c2VSZXN1bWU6IGZ1bmN0aW9uIG9uUGF1c2VSZXN1bWUoKSB7fSxcbiAgb25SZXNldDogZnVuY3Rpb24gb25SZXNldCgpIHt9LFxuICBvblN0YXJ0OiBmdW5jdGlvbiBvblN0YXJ0KCkge30sXG4gIG9uVXBkYXRlOiBmdW5jdGlvbiBvblVwZGF0ZSgpIHt9LFxuICBwcmVmaXg6ICcnLFxuICByZWRyYXc6IGZhbHNlLFxuICBzZXBhcmF0b3I6ICcnLFxuICBzdGFydDogMCxcbiAgc3RhcnRPbk1vdW50OiB0cnVlLFxuICBzdWZmaXg6ICcnLFxuICBzdHlsZTogdW5kZWZpbmVkLFxuICB1c2VFYXNpbmc6IHRydWUsXG4gIHByZXNlcnZlVmFsdWU6IGZhbHNlXG59KTtcblxuLy8gYW5kIGp1c3Qgc2V0cyB0aGUgaW5uZXJIVE1MIG9mIHRoZSBlbGVtZW50LlxuXG52YXIgTU9DS19FTEVNRU5UID0ge1xuICBpbm5lckhUTUw6IG51bGxcbn07XG5cbnZhciB1c2VDb3VudFVwID0gZnVuY3Rpb24gdXNlQ291bnRVcChwcm9wcykge1xuICB2YXIgX3Byb3BzID0gX29iamVjdFNwcmVhZDIoe30sIENvdW50VXAuZGVmYXVsdFByb3BzLCB7fSwgcHJvcHMpO1xuXG4gIHZhciBzdGFydCA9IF9wcm9wcy5zdGFydCxcbiAgICAgIGZvcm1hdHRpbmdGbiA9IF9wcm9wcy5mb3JtYXR0aW5nRm47XG5cbiAgdmFyIF91c2VTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKHR5cGVvZiBmb3JtYXR0aW5nRm4gPT09ICdmdW5jdGlvbicgPyBmb3JtYXR0aW5nRm4oc3RhcnQpIDogc3RhcnQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICBjb3VudCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRDb3VudCA9IF91c2VTdGF0ZTJbMV07XG5cbiAgdmFyIGNvdW50VXBSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG5cbiAgdmFyIGNyZWF0ZUluc3RhbmNlID0gZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoKSB7XG4gICAgdmFyIGNvdW50VXAgPSBjcmVhdGVDb3VudFVwSW5zdGFuY2UoTU9DS19FTEVNRU5ULCBfcHJvcHMpO1xuICAgIHZhciBmb3JtYXR0aW5nRm5SZWYgPSBjb3VudFVwLm9wdGlvbnMuZm9ybWF0dGluZ0ZuO1xuXG4gICAgY291bnRVcC5vcHRpb25zLmZvcm1hdHRpbmdGbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBmb3JtYXR0aW5nRm5SZWYuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgc2V0Q291bnQocmVzdWx0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvdW50VXA7XG4gIH07XG5cbiAgdmFyIGdldENvdW50VXAgPSBmdW5jdGlvbiBnZXRDb3VudFVwKCkge1xuICAgIHZhciBjb3VudFVwID0gY291bnRVcFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKGNvdW50VXAgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb3VudFVwO1xuICAgIH1cblxuICAgIHZhciBuZXdDb3VudFVwID0gY3JlYXRlSW5zdGFuY2UoKTtcbiAgICBjb3VudFVwUmVmLmN1cnJlbnQgPSBuZXdDb3VudFVwO1xuICAgIHJldHVybiBuZXdDb3VudFVwO1xuICB9O1xuXG4gIHZhciByZXNldCA9IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIHZhciBvblJlc2V0ID0gX3Byb3BzLm9uUmVzZXQ7XG4gICAgZ2V0Q291bnRVcCgpLnJlc2V0KCk7XG4gICAgb25SZXNldCh7XG4gICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICBzdGFydDogcmVzdGFydCxcbiAgICAgIHVwZGF0ZTogdXBkYXRlXG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIHJlc3RhcnQgPSBmdW5jdGlvbiByZXN0YXJ0KCkge1xuICAgIHZhciBvblN0YXJ0ID0gX3Byb3BzLm9uU3RhcnQsXG4gICAgICAgIG9uRW5kID0gX3Byb3BzLm9uRW5kO1xuICAgIGdldENvdW50VXAoKS5yZXNldCgpO1xuICAgIGdldENvdW50VXAoKS5zdGFydChmdW5jdGlvbiAoKSB7XG4gICAgICBvbkVuZCh7XG4gICAgICAgIHBhdXNlUmVzdW1lOiBwYXVzZVJlc3VtZSxcbiAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICBzdGFydDogcmVzdGFydCxcbiAgICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG9uU3RhcnQoe1xuICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgdXBkYXRlOiB1cGRhdGVcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgcGF1c2VSZXN1bWUgPSBmdW5jdGlvbiBwYXVzZVJlc3VtZSgpIHtcbiAgICB2YXIgb25QYXVzZVJlc3VtZSA9IF9wcm9wcy5vblBhdXNlUmVzdW1lO1xuICAgIGdldENvdW50VXAoKS5wYXVzZVJlc3VtZSgpO1xuICAgIG9uUGF1c2VSZXN1bWUoe1xuICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgc3RhcnQ6IHJlc3RhcnQsXG4gICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgIH0pO1xuICB9O1xuXG4gIHZhciB1cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobmV3RW5kKSB7XG4gICAgdmFyIG9uVXBkYXRlID0gX3Byb3BzLm9uVXBkYXRlO1xuICAgIGdldENvdW50VXAoKS51cGRhdGUobmV3RW5kKTtcbiAgICBvblVwZGF0ZSh7XG4gICAgICBwYXVzZVJlc3VtZTogcGF1c2VSZXN1bWUsXG4gICAgICByZXNldDogcmVzZXQsXG4gICAgICBzdGFydDogcmVzdGFydFxuICAgIH0pO1xuICB9O1xuXG4gIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlbGF5ID0gX3Byb3BzLmRlbGF5LFxuICAgICAgICBvblN0YXJ0ID0gX3Byb3BzLm9uU3RhcnQsXG4gICAgICAgIG9uRW5kID0gX3Byb3BzLm9uRW5kLFxuICAgICAgICBzdGFydE9uTW91bnQgPSBfcHJvcHMuc3RhcnRPbk1vdW50O1xuXG4gICAgaWYgKHN0YXJ0T25Nb3VudCkge1xuICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25TdGFydCh7XG4gICAgICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgICAgIHJlc2V0OiByZXNldCxcbiAgICAgICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgICAgICB9KTtcbiAgICAgICAgZ2V0Q291bnRVcCgpLnN0YXJ0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgb25FbmQoe1xuICAgICAgICAgICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgICAgICAgICAgcmVzZXQ6IHJlc2V0LFxuICAgICAgICAgICAgc3RhcnQ6IHJlc3RhcnQsXG4gICAgICAgICAgICB1cGRhdGU6IHVwZGF0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGRlbGF5ICogMTAwMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc2V0O1xuICB9LCBbXSk7XG4gIHJldHVybiB7XG4gICAgY291bnRVcDogY291bnQsXG4gICAgc3RhcnQ6IHJlc3RhcnQsXG4gICAgcGF1c2VSZXN1bWU6IHBhdXNlUmVzdW1lLFxuICAgIHJlc2V0OiByZXNldCxcbiAgICB1cGRhdGU6IHVwZGF0ZVxuICB9O1xufTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gQ291bnRVcDtcbmV4cG9ydHMudXNlQ291bnRVcCA9IHVzZUNvdW50VXA7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9zbGlkZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3NsaWRlclwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBfZGVmYXVsdCA9IF9zbGlkZXIuZGVmYXVsdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsInZhciBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgZmxhdFJlc3QgPSByZXF1aXJlKCcuL19mbGF0UmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFxuICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICogLy8gPT4gMVxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gMlxuICovXG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gIH1cbiAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZEluZGV4O1xuIiwidmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIE1hc29ucnkgPSBpc0Jyb3dzZXIgPyB3aW5kb3cuTWFzb25yeSB8fCByZXF1aXJlKCdtYXNvbnJ5LWxheW91dCcpIDogbnVsbDtcbnZhciBpbWFnZXNsb2FkZWQgPSBpc0Jyb3dzZXIgPyByZXF1aXJlKCdpbWFnZXNsb2FkZWQnKSA6IG51bGw7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnbG9kYXNoL2Fzc2lnbicpO1xudmFyIGVsZW1lbnRSZXNpemVEZXRlY3Rvck1ha2VyID0gcmVxdWlyZSgnZWxlbWVudC1yZXNpemUtZGV0ZWN0b3InKTtcbnZhciBkZWJvdW5jZSA9IHJlcXVpcmUoJ2xvZGFzaC9kZWJvdW5jZScpO1xudmFyIG9taXQgPSByZXF1aXJlKCdsb2Rhc2gvb21pdCcpO1xudmFyIFByb3BUeXBlcyA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMnKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgY3JlYXRlUmVhY3RDbGFzcyA9IHJlcXVpcmUoJ2NyZWF0ZS1yZWFjdC1jbGFzcycpO1xuXG52YXIgcHJvcFR5cGVzID0ge1xuICBlbmFibGVSZXNpemFibGVDaGlsZHJlbjogUHJvcFR5cGVzLmJvb2wsXG4gIGRpc2FibGVJbWFnZXNMb2FkZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkltYWdlc0xvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIHVwZGF0ZU9uRWFjaEltYWdlTG9hZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGltYWdlc0xvYWRlZE9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGVsZW1lbnRUeXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkxheW91dENvbXBsZXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZW1vdmVDb21wbGV0ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbnZhciBNYXNvbnJ5Q29tcG9uZW50ID0gY3JlYXRlUmVhY3RDbGFzcyh7XG4gIG1hc29ucnk6IGZhbHNlLFxuICBlcmQ6IHVuZGVmaW5lZCxcbiAgbGF0ZXN0S25vd25Eb21DaGlsZHJlbjogW10sXG4gIGRpc3BsYXlOYW1lOiAnTWFzb25yeUNvbXBvbmVudCcsXG4gIGltYWdlc0xvYWRlZENhbmNlbFJlZjogdW5kZWZpbmVkLFxuICBwcm9wVHlwZXM6IHByb3BUeXBlcyxcblxuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVSZXNpemFibGVDaGlsZHJlbjogZmFsc2UsXG4gICAgICBkaXNhYmxlSW1hZ2VzTG9hZGVkOiBmYWxzZSxcbiAgICAgIHVwZGF0ZU9uRWFjaEltYWdlTG9hZDogZmFsc2UsXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICAgIGltYWdlc0xvYWRlZE9wdGlvbnM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgIGVsZW1lbnRUeXBlOiAnZGl2JyxcbiAgICAgIG9uTGF5b3V0Q29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgfSxcbiAgICAgIG9uUmVtb3ZlQ29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAgICAgfVxuICAgIH07XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZU1hc29ucnk6IGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgaWYgKCF0aGlzLm1hc29ucnkgfHwgZm9yY2UpIHtcbiAgICAgIHRoaXMubWFzb25yeSA9IG5ldyBNYXNvbnJ5KFxuICAgICAgICB0aGlzLm1hc29ucnlDb250YWluZXIsXG4gICAgICAgIHRoaXMucHJvcHMub3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMucHJvcHMub25MYXlvdXRDb21wbGV0ZSkge1xuICAgICAgICB0aGlzLm1hc29ucnkub24oJ2xheW91dENvbXBsZXRlJywgdGhpcy5wcm9wcy5vbkxheW91dENvbXBsZXRlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmVDb21wbGV0ZSkge1xuICAgICAgICB0aGlzLm1hc29ucnkub24oJ3JlbW92ZUNvbXBsZXRlJywgdGhpcy5wcm9wcy5vblJlbW92ZUNvbXBsZXRlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXRlc3RLbm93bkRvbUNoaWxkcmVuID0gdGhpcy5nZXRDdXJyZW50RG9tQ2hpbGRyZW4oKTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0Q3VycmVudERvbUNoaWxkcmVuOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMubWFzb25yeUNvbnRhaW5lcjtcbiAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BzLm9wdGlvbnMuaXRlbVNlbGVjdG9yID8gbm9kZS5xdWVyeVNlbGVjdG9yQWxsKHRoaXMucHJvcHMub3B0aW9ucy5pdGVtU2VsZWN0b3IpIDogbm9kZS5jaGlsZHJlbjtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY2hpbGRyZW4pO1xuICB9LFxuXG4gIGRpZmZEb21DaGlsZHJlbjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGZvcmNlSXRlbVJlbG9hZCA9IGZhbHNlO1xuXG4gICAgdmFyIGtub3duQ2hpbGRyZW5TdGlsbEF0dGFjaGVkID0gdGhpcy5sYXRlc3RLbm93bkRvbUNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAvKlxuICAgICAgICogdGFrZSBvbmx5IGVsZW1lbnRzIGF0dGFjaGVkIHRvIERPTVxuICAgICAgICogKGFrYSB0aGUgcGFyZW50IGlzIHRoZSBtYXNvbnJ5IGNvbnRhaW5lciwgbm90IG51bGwpXG4gICAgICAgKiBvdGhlcndpc2UgbWFzb25yeSB3b3VsZCB0cnkgdG8gXCJyZW1vdmUgaXRcIiBhZ2FpbiBmcm9tIHRoZSBET01cbiAgICAgICAqL1xuICAgICAgcmV0dXJuICEhZWxlbWVudC5wYXJlbnROb2RlO1xuICAgIH0pO1xuXG4gICAgLypcbiAgICAgKiBJZiBub3QgYWxsIGtub3duIGNoaWxkcmVuIGFyZSBhdHRhY2hlZCB0byB0aGUgZG9tIC0gd2UgaGF2ZSBubyBvdGhlciB3YXkgb2Ygbm90aWZ5aW5nXG4gICAgICogbWFzb25yeSB0byByZW1vdmUgdGhlIG9uZXMgbm90IHN0aWxsIGF0dGFjaGVkIGJlc2lkZXMgaW52b2tpbmcgYSBjb21wbGV0ZSBpdGVtIHJlbG9hZC5cbiAgICAgKiBiYXNpY2FsbHkgYWxsIHRoZSByZXN0IG9mIHRoZSBjb2RlIGJlbG93IGRvZXMgbm90IG1hdHRlciBpbiB0aGF0IGNhc2UuXG4gICAgICovXG4gICAgaWYgKGtub3duQ2hpbGRyZW5TdGlsbEF0dGFjaGVkLmxlbmd0aCAhPT0gdGhpcy5sYXRlc3RLbm93bkRvbUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgZm9yY2VJdGVtUmVsb2FkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudERvbUNoaWxkcmVuID0gdGhpcy5nZXRDdXJyZW50RG9tQ2hpbGRyZW4oKTtcblxuICAgIC8qXG4gICAgICogU2luY2Ugd2UgYXJlIGxvb2tpbmcgZm9yIGEga25vd24gY2hpbGQgd2hpY2ggaXMgYWxzbyBhdHRhY2hlZCB0byB0aGUgZG9tIEFORFxuICAgICAqIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9tIGF0IHRoZSBzYW1lIHRpbWUgLSB0aGlzIHdvdWxkICphbHdheXMqIHByb2R1Y2UgYW4gZW1wdHkgYXJyYXkuXG4gICAgICovXG4gICAgdmFyIHJlbW92ZWQgPSBrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZC5maWx0ZXIoZnVuY3Rpb24oYXR0YWNoZWRLbm93bkNoaWxkKSB7XG4gICAgICByZXR1cm4gIX5jdXJyZW50RG9tQ2hpbGRyZW4uaW5kZXhPZihhdHRhY2hlZEtub3duQ2hpbGQpO1xuICAgIH0pO1xuXG4gICAgLypcbiAgICAgKiBUaGlzIHdvdWxkIGdldCBhbnkgY2hpbGRyZW4gd2hpY2ggYXJlIGF0dGFjaGVkIHRvIHRoZSBkb20gYnV0IGFyZSAqdW5rb3duKiB0byB1c1xuICAgICAqIGZyb20gcHJldmlvdXMgcmVuZGVyc1xuICAgICAqL1xuICAgIHZhciBuZXdEb21DaGlsZHJlbiA9IGN1cnJlbnREb21DaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY3VycmVudENoaWxkKSB7XG4gICAgICByZXR1cm4gIX5rbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZC5pbmRleE9mKGN1cnJlbnRDaGlsZCk7XG4gICAgfSk7XG5cbiAgICB2YXIgYmVnaW5uaW5nSW5kZXggPSAwO1xuXG4gICAgLy8gZ2V0IGV2ZXJ5dGhpbmcgYWRkZWQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgRE9NTm9kZSBsaXN0XG4gICAgdmFyIHByZXBlbmRlZCA9IG5ld0RvbUNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihuZXdDaGlsZCkge1xuICAgICAgdmFyIHByZXBlbmQgPSAoYmVnaW5uaW5nSW5kZXggPT09IGN1cnJlbnREb21DaGlsZHJlbi5pbmRleE9mKG5ld0NoaWxkKSk7XG5cbiAgICAgIGlmIChwcmVwZW5kKSB7XG4gICAgICAgIC8vIGluY3JlYXNlIHRoZSBpbmRleFxuICAgICAgICBiZWdpbm5pbmdJbmRleCsrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJlcGVuZDtcbiAgICB9KTtcblxuICAgIC8vIHdlIGFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBpcyBhcHBlbmRlZFxuICAgIHZhciBhcHBlbmRlZCA9IG5ld0RvbUNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihlbCkge1xuICAgICAgcmV0dXJuIHByZXBlbmRlZC5pbmRleE9mKGVsKSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgICAvKlxuICAgICAqIG90aGVyd2lzZSB3ZSByZXZlcnNlIGl0IGJlY2F1c2Ugc28gd2UncmUgZ29pbmcgdGhyb3VnaCB0aGUgbGlzdCBwaWNraW5nIG9mZiB0aGUgaXRlbXMgdGhhdFxuICAgICAqIGhhdmUgYmVlbiBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LiB0aGlzIGNvbXBsZXggbG9naWMgaXMgcHJlc2VydmVkIGluIGNhc2UgaXQgbmVlZHMgdG8gYmVcbiAgICAgKiBpbnZva2VkXG4gICAgICpcbiAgICAgKiB2YXIgZW5kaW5nSW5kZXggPSBjdXJyZW50RG9tQ2hpbGRyZW4ubGVuZ3RoIC0gMTtcbiAgICAgKlxuICAgICAqIG5ld0RvbUNoaWxkcmVuLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24obmV3Q2hpbGQsIGkpe1xuICAgICAqICAgICB2YXIgYXBwZW5kID0gZW5kaW5nSW5kZXggPT0gY3VycmVudERvbUNoaWxkcmVuLmluZGV4T2YobmV3Q2hpbGQpO1xuICAgICAqXG4gICAgICogICAgIGlmIChhcHBlbmQpIHtcbiAgICAgKiAgICAgICAgIGVuZGluZ0luZGV4LS07XG4gICAgICogICAgIH1cbiAgICAgKlxuICAgICAqICAgICByZXR1cm4gYXBwZW5kO1xuICAgICAqIH0pO1xuICAgICAqL1xuXG4gICAgLy8gZ2V0IGV2ZXJ5dGhpbmcgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgRE9NTm9kZSBsaXN0XG4gICAgdmFyIG1vdmVkID0gW107XG5cbiAgICAvKlxuICAgICAqIFRoaXMgd291bGQgYWx3YXlzIGJlIHRydWUgKHNlZSBhYm92ZSBhYm91dCB0aGUgbG9maWMgZm9yIFwicmVtb3ZlZFwiKVxuICAgICAqL1xuICAgIGlmIChyZW1vdmVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLypcbiAgICAgICAqICdtb3ZlZCcgd2lsbCBjb250YWluIHNvbWUgcmFuZG9tIGVsZW1lbnRzIChpZiBhbnkpIHNpbmNlIHRoZSBcImtub3duQ2hpbGRyZW5TdGlsbEF0dGFjaGVkXCIgaXMgYSBmaWx0ZXJcbiAgICAgICAqIG9mIHRoZSBcImtub3duXCIgY2hpbGRyZW4gd2hpY2ggYXJlIHN0aWxsIGF0dGFjaGVkIC0gQWxsIGluZGV4ZXMgY291bGQgYmFzaWNhbGx5IGNoYW5nZS4gKGZvciBleGFtcGxlXG4gICAgICAgKiBpZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBub3QgYXR0YWNoZWQpXG4gICAgICAgKiBEb24ndCB0cnVzdCB0aGlzIGFycmF5LlxuICAgICAgICovXG4gICAgICBtb3ZlZCA9IGtub3duQ2hpbGRyZW5TdGlsbEF0dGFjaGVkLmZpbHRlcihmdW5jdGlvbihjaGlsZCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ICE9PSBjdXJyZW50RG9tQ2hpbGRyZW4uaW5kZXhPZihjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmxhdGVzdEtub3duRG9tQ2hpbGRyZW4gPSBjdXJyZW50RG9tQ2hpbGRyZW47XG5cbiAgICByZXR1cm4ge1xuICAgICAgb2xkOiBrbm93bkNoaWxkcmVuU3RpbGxBdHRhY2hlZCwgLy8gTm90IHVzZWRcbiAgICAgIG5ldzogY3VycmVudERvbUNoaWxkcmVuLCAvLyBOb3QgdXNlZFxuICAgICAgcmVtb3ZlZDogcmVtb3ZlZCxcbiAgICAgIGFwcGVuZGVkOiBhcHBlbmRlZCxcbiAgICAgIHByZXBlbmRlZDogcHJlcGVuZGVkLFxuICAgICAgbW92ZWQ6IG1vdmVkLFxuICAgICAgZm9yY2VJdGVtUmVsb2FkOiBmb3JjZUl0ZW1SZWxvYWRcbiAgICB9O1xuICB9LFxuXG4gIHBlcmZvcm1MYXlvdXQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBkaWZmID0gdGhpcy5kaWZmRG9tQ2hpbGRyZW4oKTtcbiAgICB2YXIgcmVsb2FkSXRlbXMgPSBkaWZmLmZvcmNlSXRlbVJlbG9hZCB8fCBkaWZmLm1vdmVkLmxlbmd0aCA+IDA7XG5cbiAgICAvLyBXb3VsZCBuZXZlciBiZSB0cnVlLiAoc2VlIGNvbW1lbnRzIG9mICdkaWZmRG9tQ2hpbGRyZW4nIGFib3V0ICdyZW1vdmVkJylcbiAgICBpZiAoZGlmZi5yZW1vdmVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmVuYWJsZVJlc2l6YWJsZUNoaWxkcmVuKSB7XG4gICAgICAgIGRpZmYucmVtb3ZlZC5mb3JFYWNoKHRoaXMuZXJkLnJlbW92ZUFsbExpc3RlbmVycywgdGhpcy5lcmQpO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXNvbnJ5LnJlbW92ZShkaWZmLnJlbW92ZWQpO1xuICAgICAgcmVsb2FkSXRlbXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkaWZmLmFwcGVuZGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWFzb25yeS5hcHBlbmRlZChkaWZmLmFwcGVuZGVkKTtcblxuICAgICAgaWYgKGRpZmYucHJlcGVuZGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZWxvYWRJdGVtcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmVuYWJsZVJlc2l6YWJsZUNoaWxkcmVuKSB7XG4gICAgICAgIGRpZmYuYXBwZW5kZWQuZm9yRWFjaCh0aGlzLmxpc3RlblRvRWxlbWVudFJlc2l6ZSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpZmYucHJlcGVuZGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWFzb25yeS5wcmVwZW5kZWQoZGlmZi5wcmVwZW5kZWQpO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVSZXNpemFibGVDaGlsZHJlbikge1xuICAgICAgICBkaWZmLnByZXBlbmRlZC5mb3JFYWNoKHRoaXMubGlzdGVuVG9FbGVtZW50UmVzaXplLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVsb2FkSXRlbXMpIHtcbiAgICAgIHRoaXMubWFzb25yeS5yZWxvYWRJdGVtcygpO1xuICAgIH1cblxuICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKTtcbiAgfSxcblxuICBkZXJlZkltYWdlc0xvYWRlZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pbWFnZXNMb2FkZWRDYW5jZWxSZWYoKTtcbiAgICB0aGlzLmltYWdlc0xvYWRlZENhbmNlbFJlZiA9IHVuZGVmaW5lZDtcbiAgfSxcblxuICBpbWFnZXNMb2FkZWQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVJbWFnZXNMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbWFnZXNMb2FkZWRDYW5jZWxSZWYpIHtcbiAgICAgIHRoaXMuZGVyZWZJbWFnZXNMb2FkZWQoKTtcbiAgICB9XG5cbiAgICB2YXIgZXZlbnQgPSB0aGlzLnByb3BzLnVwZGF0ZU9uRWFjaEltYWdlTG9hZCA/ICdwcm9ncmVzcycgOiAnYWx3YXlzJztcbiAgICB2YXIgaGFuZGxlciA9IGRlYm91bmNlKFxuICAgICAgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25JbWFnZXNMb2FkZWQpIHtcbiAgICAgICAgICB0aGlzLnByb3BzLm9uSW1hZ2VzTG9hZGVkKGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hc29ucnkubGF5b3V0KCk7XG4gICAgICB9LmJpbmQodGhpcyksIDEwMCk7XG5cbiAgICB2YXIgaW1nTG9hZCA9IGltYWdlc2xvYWRlZCh0aGlzLm1hc29ucnlDb250YWluZXIsIHRoaXMucHJvcHMuaW1hZ2VzTG9hZGVkT3B0aW9ucykub24oZXZlbnQsIGhhbmRsZXIpO1xuXG4gICAgdGhpcy5pbWFnZXNMb2FkZWRDYW5jZWxSZWYgPSBmdW5jdGlvbigpIHtcbiAgICAgIGltZ0xvYWQub2ZmKGV2ZW50LCBoYW5kbGVyKTtcbiAgICAgIGhhbmRsZXIuY2FuY2VsKCk7XG4gICAgfTtcbiAgfSxcblxuICBpbml0aWFsaXplUmVzaXphYmxlQ2hpbGRyZW46IGZ1bmN0aW9uKCkge1xuICAgIGlmICghdGhpcy5wcm9wcy5lbmFibGVSZXNpemFibGVDaGlsZHJlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZXJkID0gZWxlbWVudFJlc2l6ZURldGVjdG9yTWFrZXIoe1xuICAgICAgc3RyYXRlZ3k6ICdzY3JvbGwnXG4gICAgfSk7XG5cbiAgICB0aGlzLmxhdGVzdEtub3duRG9tQ2hpbGRyZW4uZm9yRWFjaCh0aGlzLmxpc3RlblRvRWxlbWVudFJlc2l6ZSwgdGhpcyk7XG4gIH0sXG5cbiAgbGlzdGVuVG9FbGVtZW50UmVzaXplOiBmdW5jdGlvbihlbCkge1xuICAgIHRoaXMuZXJkLmxpc3RlblRvKGVsLCBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMubWFzb25yeS5sYXlvdXQoKVxuICAgIH0uYmluZCh0aGlzKSlcbiAgfSxcblxuICBkZXN0cm95RXJkOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5lcmQpIHtcbiAgICAgIHRoaXMubGF0ZXN0S25vd25Eb21DaGlsZHJlbi5mb3JFYWNoKHRoaXMuZXJkLnVuaW5zdGFsbCwgdGhpcy5lcmQpO1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pbml0aWFsaXplTWFzb25yeSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVJlc2l6YWJsZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5pbWFnZXNMb2FkZWQoKTtcbiAgfSxcblxuICBjb21wb25lbnREaWRVcGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucGVyZm9ybUxheW91dCgpO1xuICAgIHRoaXMuaW1hZ2VzTG9hZGVkKCk7XG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZGVzdHJveUVyZCgpO1xuXG4gICAgLy8gdW5yZWdpc3RlciBldmVudHNcbiAgICBpZiAodGhpcy5wcm9wcy5vbkxheW91dENvbXBsZXRlKSB7XG4gICAgICB0aGlzLm1hc29ucnkub2ZmKCdsYXlvdXRDb21wbGV0ZScsIHRoaXMucHJvcHMub25MYXlvdXRDb21wbGV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmVDb21wbGV0ZSkge1xuICAgICAgdGhpcy5tYXNvbnJ5Lm9mZigncmVtb3ZlQ29tcGxldGUnLCB0aGlzLnByb3BzLm9uUmVtb3ZlQ29tcGxldGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmltYWdlc0xvYWRlZENhbmNlbFJlZikge1xuICAgICAgdGhpcy5kZXJlZkltYWdlc0xvYWRlZCgpO1xuICAgIH1cbiAgICB0aGlzLm1hc29ucnkuZGVzdHJveSgpO1xuICB9LFxuICBcbiAgc2V0UmVmOiBmdW5jdGlvbihuKSB7XG4gICAgdGhpcy5tYXNvbnJ5Q29udGFpbmVyID0gbjtcbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgT2JqZWN0LmtleXMocHJvcFR5cGVzKSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5lbGVtZW50VHlwZSwgYXNzaWduKHt9LCBwcm9wcywge3JlZjogdGhpcy5zZXRSZWZ9KSwgdGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hc29ucnlDb21wb25lbnQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gTWFzb25yeUNvbXBvbmVudDtcbiIsIi8qKlxuICogTWVtaXplIG9wdGlvbnMgb2JqZWN0LlxuICpcbiAqIEB0eXBlZGVmIE1lbWl6ZU9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21heFNpemVdIE1heGltdW0gc2l6ZSBvZiB0aGUgY2FjaGUuXG4gKi9cblxuLyoqXG4gKiBJbnRlcm5hbCBjYWNoZSBlbnRyeS5cbiAqXG4gKiBAdHlwZWRlZiBNZW1pemVDYWNoZU5vZGVcbiAqXG4gKiBAcHJvcGVydHkgez9NZW1pemVDYWNoZU5vZGV8dW5kZWZpbmVkfSBbcHJldl0gUHJldmlvdXMgbm9kZS5cbiAqIEBwcm9wZXJ0eSB7P01lbWl6ZUNhY2hlTm9kZXx1bmRlZmluZWR9IFtuZXh0XSBOZXh0IG5vZGUuXG4gKiBAcHJvcGVydHkge0FycmF5PCo+fSAgICAgICAgICAgICAgICAgICBhcmdzICAgRnVuY3Rpb24gYXJndW1lbnRzIGZvciBjYWNoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LlxuICogQHByb3BlcnR5IHsqfSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsICAgIEZ1bmN0aW9uIHJlc3VsdC5cbiAqL1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgdGhlIGVuaGFuY2VkIGZ1bmN0aW9uIGZvciBjb250cm9sbGluZyBjYWNoZS5cbiAqXG4gKiBAdHlwZWRlZiBNZW1pemVNZW1vaXplZEZ1bmN0aW9uXG4gKlxuICogQHByb3BlcnR5IHsoKT0+dm9pZH0gY2xlYXIgQ2xlYXIgdGhlIGNhY2hlLlxuICovXG5cbi8qKlxuICogQWNjZXB0cyBhIGZ1bmN0aW9uIHRvIGJlIG1lbW9pemVkLCBhbmQgcmV0dXJucyBhIG5ldyBtZW1vaXplZCBmdW5jdGlvbiwgd2l0aFxuICogb3B0aW9uYWwgb3B0aW9ucy5cbiAqXG4gKiBAdGVtcGxhdGUge0Z1bmN0aW9ufSBGXG4gKlxuICogQHBhcmFtIHtGfSAgICAgICAgICAgICBmbiAgICAgICAgRnVuY3Rpb24gdG8gbWVtb2l6ZS5cbiAqIEBwYXJhbSB7TWVtaXplT3B0aW9uc30gW29wdGlvbnNdIE9wdGlvbnMgb2JqZWN0LlxuICpcbiAqIEByZXR1cm4ge0YgJiBNZW1pemVNZW1vaXplZEZ1bmN0aW9ufSBNZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtaXplKCBmbiwgb3B0aW9ucyApIHtcblx0dmFyIHNpemUgPSAwO1xuXG5cdC8qKiBAdHlwZSB7P01lbWl6ZUNhY2hlTm9kZXx1bmRlZmluZWR9ICovXG5cdHZhciBoZWFkO1xuXG5cdC8qKiBAdHlwZSB7P01lbWl6ZUNhY2hlTm9kZXx1bmRlZmluZWR9ICovXG5cdHZhciB0YWlsO1xuXG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdGZ1bmN0aW9uIG1lbW9pemVkKCAvKiAuLi5hcmdzICovICkge1xuXHRcdHZhciBub2RlID0gaGVhZCxcblx0XHRcdGxlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cdFx0XHRhcmdzLCBpO1xuXG5cdFx0c2VhcmNoQ2FjaGU6IHdoaWxlICggbm9kZSApIHtcblx0XHRcdC8vIFBlcmZvcm0gYSBzaGFsbG93IGVxdWFsaXR5IHRlc3QgdG8gY29uZmlybSB0aGF0IHdoZXRoZXIgdGhlIG5vZGVcblx0XHRcdC8vIHVuZGVyIHRlc3QgaXMgYSBjYW5kaWRhdGUgZm9yIHRoZSBhcmd1bWVudHMgcGFzc2VkLiBUd28gYXJyYXlzXG5cdFx0XHQvLyBhcmUgc2hhbGxvd2x5IGVxdWFsIGlmIHRoZWlyIGxlbmd0aCBtYXRjaGVzIGFuZCBlYWNoIGVudHJ5IGlzXG5cdFx0XHQvLyBzdHJpY3RseSBlcXVhbCBiZXR3ZWVuIHRoZSB0d28gc2V0cy4gQXZvaWQgYWJzdHJhY3RpbmcgdG8gYVxuXHRcdFx0Ly8gZnVuY3Rpb24gd2hpY2ggY291bGQgaW5jdXIgYW4gYXJndW1lbnRzIGxlYWtpbmcgZGVvcHRpbWl6YXRpb24uXG5cblx0XHRcdC8vIENoZWNrIHdoZXRoZXIgbm9kZSBhcmd1bWVudHMgbWF0Y2ggYXJndW1lbnRzIGxlbmd0aFxuXHRcdFx0aWYgKCBub2RlLmFyZ3MubGVuZ3RoICE9PSBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0XHRub2RlID0gbm9kZS5uZXh0O1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2hlY2sgd2hldGhlciBub2RlIGFyZ3VtZW50cyBtYXRjaCBhcmd1bWVudHMgdmFsdWVzXG5cdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRpZiAoIG5vZGUuYXJnc1sgaSBdICE9PSBhcmd1bWVudHNbIGkgXSApIHtcblx0XHRcdFx0XHRub2RlID0gbm9kZS5uZXh0O1xuXHRcdFx0XHRcdGNvbnRpbnVlIHNlYXJjaENhY2hlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIEF0IHRoaXMgcG9pbnQgd2UgY2FuIGFzc3VtZSB3ZSd2ZSBmb3VuZCBhIG1hdGNoXG5cblx0XHRcdC8vIFN1cmZhY2UgbWF0Y2hlZCBub2RlIHRvIGhlYWQgaWYgbm90IGFscmVhZHlcblx0XHRcdGlmICggbm9kZSAhPT0gaGVhZCApIHtcblx0XHRcdFx0Ly8gQXMgdGFpbCwgc2hpZnQgdG8gcHJldmlvdXMuIE11c3Qgb25seSBzaGlmdCBpZiBub3QgYWxzb1xuXHRcdFx0XHQvLyBoZWFkLCBzaW5jZSBpZiBib3RoIGhlYWQgYW5kIHRhaWwsIHRoZXJlIGlzIG5vIHByZXZpb3VzLlxuXHRcdFx0XHRpZiAoIG5vZGUgPT09IHRhaWwgKSB7XG5cdFx0XHRcdFx0dGFpbCA9IG5vZGUucHJldjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFkanVzdCBzaWJsaW5ncyB0byBwb2ludCB0byBlYWNoIG90aGVyLiBJZiBub2RlIHdhcyB0YWlsLFxuXHRcdFx0XHQvLyB0aGlzIGFsc28gaGFuZGxlcyBuZXcgdGFpbCdzIGVtcHR5IGBuZXh0YCBhc3NpZ25tZW50LlxuXHRcdFx0XHQvKiogQHR5cGUge01lbWl6ZUNhY2hlTm9kZX0gKi8gKCBub2RlLnByZXYgKS5uZXh0ID0gbm9kZS5uZXh0O1xuXHRcdFx0XHRpZiAoIG5vZGUubmV4dCApIHtcblx0XHRcdFx0XHRub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG5vZGUubmV4dCA9IGhlYWQ7XG5cdFx0XHRcdG5vZGUucHJldiA9IG51bGw7XG5cdFx0XHRcdC8qKiBAdHlwZSB7TWVtaXplQ2FjaGVOb2RlfSAqLyAoIGhlYWQgKS5wcmV2ID0gbm9kZTtcblx0XHRcdFx0aGVhZCA9IG5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVybiBpbW1lZGlhdGVseVxuXHRcdFx0cmV0dXJuIG5vZGUudmFsO1xuXHRcdH1cblxuXHRcdC8vIE5vIGNhY2hlZCB2YWx1ZSBmb3VuZC4gQ29udGludWUgdG8gaW5zZXJ0aW9uIHBoYXNlOlxuXG5cdFx0Ly8gQ3JlYXRlIGEgY29weSBvZiBhcmd1bWVudHMgKGF2b2lkIGxlYWtpbmcgZGVvcHRpbWl6YXRpb24pXG5cdFx0YXJncyA9IG5ldyBBcnJheSggbGVuICk7XG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGFyZ3NbIGkgXSA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdH1cblxuXHRcdG5vZGUgPSB7XG5cdFx0XHRhcmdzOiBhcmdzLFxuXG5cdFx0XHQvLyBHZW5lcmF0ZSB0aGUgcmVzdWx0IGZyb20gb3JpZ2luYWwgZnVuY3Rpb25cblx0XHRcdHZhbDogZm4uYXBwbHkoIG51bGwsIGFyZ3MgKSxcblx0XHR9O1xuXG5cdFx0Ly8gRG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0aGVyIG5vZGUgaXMgYWxyZWFkeSBoZWFkLCBzaW5jZSBpdCB3b3VsZFxuXHRcdC8vIGhhdmUgYmVlbiByZXR1cm5lZCBhYm92ZSBhbHJlYWR5IGlmIGl0IHdhc1xuXG5cdFx0Ly8gU2hpZnQgZXhpc3RpbmcgaGVhZCBkb3duIGxpc3Rcblx0XHRpZiAoIGhlYWQgKSB7XG5cdFx0XHRoZWFkLnByZXYgPSBub2RlO1xuXHRcdFx0bm9kZS5uZXh0ID0gaGVhZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gSWYgbm8gaGVhZCwgZm9sbG93cyB0aGF0IHRoZXJlJ3Mgbm8gdGFpbCAoYXQgaW5pdGlhbCBvciByZXNldClcblx0XHRcdHRhaWwgPSBub2RlO1xuXHRcdH1cblxuXHRcdC8vIFRyaW0gdGFpbCBpZiB3ZSdyZSByZWFjaGVkIG1heCBzaXplIGFuZCBhcmUgcGVuZGluZyBjYWNoZSBpbnNlcnRpb25cblx0XHRpZiAoIHNpemUgPT09IC8qKiBAdHlwZSB7TWVtaXplT3B0aW9uc30gKi8gKCBvcHRpb25zICkubWF4U2l6ZSApIHtcblx0XHRcdHRhaWwgPSAvKiogQHR5cGUge01lbWl6ZUNhY2hlTm9kZX0gKi8gKCB0YWlsICkucHJldjtcblx0XHRcdC8qKiBAdHlwZSB7TWVtaXplQ2FjaGVOb2RlfSAqLyAoIHRhaWwgKS5uZXh0ID0gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2l6ZSsrO1xuXHRcdH1cblxuXHRcdGhlYWQgPSBub2RlO1xuXG5cdFx0cmV0dXJuIG5vZGUudmFsO1xuXHR9XG5cblx0bWVtb2l6ZWQuY2xlYXIgPSBmdW5jdGlvbigpIHtcblx0XHRoZWFkID0gbnVsbDtcblx0XHR0YWlsID0gbnVsbDtcblx0XHRzaXplID0gMDtcblx0fTtcblxuXHRpZiAoIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcgKSB7XG5cdFx0Ly8gQ2FjaGUgaXMgbm90IGV4cG9zZWQgaW4gdGhlIHB1YmxpYyBBUEksIGJ1dCB1c2VkIGluIHRlc3RzIHRvIGVuc3VyZVxuXHRcdC8vIGV4cGVjdGVkIGxpc3QgcHJvZ3Jlc3Npb25cblx0XHRtZW1vaXplZC5nZXRDYWNoZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIFsgaGVhZCwgdGFpbCwgc2l6ZSBdO1xuXHRcdH07XG5cdH1cblxuXHQvLyBJZ25vcmUgcmVhc29uOiBUaGVyZSdzIG5vdCBhIGNsZWFyIHNvbHV0aW9uIHRvIGNyZWF0ZSBhbiBpbnRlcnNlY3Rpb24gb2Zcblx0Ly8gdGhlIGZ1bmN0aW9uIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB3aGVyZSB0aGUgZ29hbCBpcyB0byByZXRhaW4gdGhlXG5cdC8vIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiB0aGUgaW5jb21pbmcgYXJndW1lbnQgYW5kIGFkZCBjb250cm9sIHByb3BlcnRpZXNcblx0Ly8gb24gdGhlIHJldHVybiB2YWx1ZS5cblxuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBtZW1vaXplZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1pemU7XG4iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG52YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBJbnZva2VzIHRoZSBpdGVyYXRlZSBgbmAgdGltZXMsIHJldHVybmluZyBhbiBhcnJheSBvZiB0aGUgcmVzdWx0cyBvZlxuICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDMsIFN0cmluZyk7XG4gKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAqXG4gKiAgXy50aW1lcyg0LCBfLmNvbnN0YW50KDApKTtcbiAqIC8vID0+IFswLCAwLCAwLCAwXVxuICovXG5mdW5jdGlvbiB0aW1lcyhuLCBpdGVyYXRlZSkge1xuICBuID0gdG9JbnRlZ2VyKG4pO1xuICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKTtcblxuICBpdGVyYXRlZSA9IGNhc3RGdW5jdGlvbihpdGVyYXRlZSk7XG4gIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0aW1lcztcbiIsImNvbnN0IGVsID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50O1xuY29uc3QgY2F0ZWdvcnlJY29uID0gZWwoJ3N2ZycsXG4gICAge1xuICAgICAgICB3aWR0aDogMjAsXG4gICAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuXG5cbiAgICBlbChcInBhdGhcIiwgeyBmaWxsOiBcIiM0NzQ3NDVcIiwgZDpcIk0wLjEsMTAuN0MtMC4yLDcuNCwxLjQsMyw1LjgsMUM5LjctMC45LDE0LjUsMC4xLDE3LDIuOGMtMC40LDAtMC44LTAuMS0xLjItMC4xIGMtMS41LDAtMi43LDEuMS0zLDIuNmMwLDAuMiwwLDAuNCwwLDAuNmMwLDMuMiwwLDYuNCwwLDkuNWMwLDEuMSwwLDIuMywwLDMuNGMwLDAuNi0wLjMsMS0wLjgsMS4xYy0wLjYsMC4yLTEuMi0wLjItMS4zLTAuOSBjMC0wLjEsMC0wLjIsMC0wLjJjMC0xLjQsMC0yLjgsMC00LjJjMC0wLjcsMC0xLjUtMC4xLTIuMmMtMC4zLTIuMi0yLjEtNC00LjMtNC41QzQsNy40LDEuOCw4LjMsMC41LDEwLjMgQzAuNCwxMC40LDAuMywxMC41LDAuMSwxMC43elwiIH0gKSxcbiAgICBlbChcInBhdGhcIiwgeyBmaWxsOiBcIiM0NzQ3NDVcIiwgZDpcIk0xNC41LDE4LjljMC0wLjcsMC0xLjMsMC0xLjljMC0xLjEsMC0yLjMsMC0zLjRjMC0wLjIsMC4xLTAuMywwLjMtMC4zYzAuNywwLDEuNCwwLDIsMCBjMC42LDAsMS0wLjQsMS0wLjljMC0wLjYtMC40LTEtMS0xYy0wLjcsMC0xLjQsMC0yLDBjLTAuMywwLTAuNC0wLjEtMC40LTAuM2MwLTEuNywwLTMuNSwwLTUuMmMwLTAuNywwLjMtMS4xLDAuOS0xLjMgYzAuNS0wLjEsMS4xLDAuMiwxLjIsMC43YzAuMSwwLjIsMC4xLDAuNCwwLjEsMC42YzAuMSwwLjYsMC41LDAuOSwxLjEsMC45YzAuNiwwLDEtMC41LDAuOS0xLjJjMCwwLDAtMC4xLDAtMC4yIGMxLjIsMS43LDEuNiw0LjcsMC44LDcuNUMxOC43LDE1LjYsMTcuMSwxNy42LDE0LjUsMTguOXpcIiwgfSApLFxuICAgIGVsKFwicGF0aFwiLCB7IGZpbGw6IFwiIzQ3NDc0NVwiLCBkOlwiTTguOSwxMy41YzAsMi4xLTEuNywzLjctMy43LDMuN3MtMy43LTEuNy0zLjctMy44YzAtMi4xLDEuNy0zLjcsMy44LTMuNyBDNy4yLDkuNyw4LjksMTEuMyw4LjksMTMuNXpcIiB9ICksXG4gICAgZWwoXCJwYXRoXCIsIHsgZmlsbDogXCIjNDc0NzQ1XCIsIGQ6XCJNNS44LDE5LjFjMS4xLTAuMiwyLjEtMC42LDMtMS4zQzguOSwxOC41LDguOSwxOS4zLDksMjBDNy45LDE5LjksNi44LDE5LjYsNS44LDE5LjF6XCJ9IClcblxuICAgICk7XG53cC5ibG9ja3MudXBkYXRlQ2F0ZWdvcnkoICdibG9ja3NwYXJlJywgeyBpY29uOiBjYXRlZ29yeUljb24gfSApOyIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2xvbmU7XG4iLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlQ2xlYXI7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwidmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksXG4gICAgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUNsZWFyO1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpID8gZGF0YVtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlRGVsZXRlO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbkluO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBXZWFrTWFwO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpLFxuICAgIGNsb25lRGF0YVZpZXcgPSByZXF1aXJlKCcuL19jbG9uZURhdGFWaWV3JyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU3ltYm9sID0gcmVxdWlyZSgnLi9fY2xvbmVTeW1ib2wnKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQnlUYWc7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iLCJ2YXIgYmFzZUlzTWFwID0gcmVxdWlyZSgnLi9fYmFzZUlzTWFwJyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFwO1xuIiwidmFyIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gbWFwVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hcDtcbiIsInZhciBiYXNlSXNTZXQgPSByZXF1aXJlKCcuL19iYXNlSXNTZXQnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTZXQ7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBsYXN0ID0gcmVxdWlyZSgnLi9sYXN0JyksXG4gICAgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIiwidmFyIG1lbW9pemVDYXBwZWQgPSByZXF1aXJlKCcuL19tZW1vaXplQ2FwcGVkJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG52YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICByZXN1bHQucHVzaCgnJyk7XG4gIH1cbiAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iLCJ2YXIgbWVtb2l6ZSA9IHJlcXVpcmUoJy4vbWVtb2l6ZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG52YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9KTtcblxuICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZUNhcHBlZDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICpcbiAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiB2YWx1ZXMob3RoZXIpO1xuICogLy8gPT4gWzMsIDRdXG4gKlxuICogb2JqZWN0LmEgPSAyO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWydhJywgJ2InXVxuICpcbiAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplO1xuIiwidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNsaWNlID0gcmVxdWlyZSgnLi9fYmFzZVNsaWNlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gIH1cbiAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5ndGg7XG4gIH1cbiAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICBzdGFydCA+Pj49IDA7XG5cbiAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGFycmF5W2luZGV4ICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNsaWNlO1xuIiwidmFyIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLm9taXRgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uY2xvbmVEZWVwYCB1c2UgdG8gb25seSBjbG9uZSBwbGFpblxuICogb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bmNsb25lZCB2YWx1ZSBvciBgdW5kZWZpbmVkYCB0byBkZWZlciBjbG9uaW5nIHRvIGBfLmNsb25lRGVlcGAuXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjdXN0b21PbWl0Q2xvbmU7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW47XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNGbGF0dGVuYWJsZSA9IHJlcXVpcmUoJy4vX2lzRmxhdHRlbmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mbGF0dGVuYCB3aXRoIHN1cHBvcnQgZm9yIHJlc3RyaWN0aW5nIGZsYXR0ZW5pbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNTdHJpY3RdIFJlc3RyaWN0IHRvIHZhbHVlcyB0aGF0IHBhc3MgYHByZWRpY2F0ZWAgY2hlY2tzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1N0cmljdCkge1xuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZsYXR0ZW47XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZsYXR0ZW5hYmxlIGBhcmd1bWVudHNgIG9iamVjdCBvciBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlO1xuIiwiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG4iLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvcnRPdXQ7XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBsPXJlcXVpcmUoXCJvYmplY3QtYXNzaWduXCIpLG49XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixwPW4/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMscT1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYscj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyx0PW4/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LHU9bj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsdj1uP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSx3PW4/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAseD1uP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMix5PW4/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHo9bj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxBPW4/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6XG42MDExNixCPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBDKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifVxudmFyIEQ9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LEU9e307ZnVuY3Rpb24gRihhLGIsYyl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1FO3RoaXMudXBkYXRlcj1jfHxEfUYucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e307Ri5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSxiKXtpZihcIm9iamVjdFwiIT09dHlwZW9mIGEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZudWxsIT1hKXRocm93IEVycm9yKEMoODUpKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0YucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O1xuZnVuY3Rpb24gRygpe31HLnByb3RvdHlwZT1GLnByb3RvdHlwZTtmdW5jdGlvbiBIKGEsYixjKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUU7dGhpcy51cGRhdGVyPWN8fER9dmFyIEk9SC5wcm90b3R5cGU9bmV3IEc7SS5jb25zdHJ1Y3Rvcj1IO2woSSxGLnByb3RvdHlwZSk7SS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgSj17Y3VycmVudDpudWxsfSxLPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksTD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gTShhLGIsYyl7dmFyIGUsZD17fSxnPW51bGwsaz1udWxsO2lmKG51bGwhPWIpZm9yKGUgaW4gdm9pZCAwIT09Yi5yZWYmJihrPWIucmVmKSx2b2lkIDAhPT1iLmtleSYmKGc9XCJcIitiLmtleSksYilLLmNhbGwoYixlKSYmIUwuaGFzT3duUHJvcGVydHkoZSkmJihkW2VdPWJbZV0pO3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZilkLmNoaWxkcmVuPWM7ZWxzZSBpZigxPGYpe2Zvcih2YXIgaD1BcnJheShmKSxtPTA7bTxmO20rKyloW21dPWFyZ3VtZW50c1ttKzJdO2QuY2hpbGRyZW49aH1pZihhJiZhLmRlZmF1bHRQcm9wcylmb3IoZSBpbiBmPWEuZGVmYXVsdFByb3BzLGYpdm9pZCAwPT09ZFtlXSYmKGRbZV09ZltlXSk7cmV0dXJueyQkdHlwZW9mOnAsdHlwZTphLGtleTpnLHJlZjprLHByb3BzOmQsX293bmVyOkouY3VycmVudH19XG5mdW5jdGlvbiBOKGEsYil7cmV0dXJueyQkdHlwZW9mOnAsdHlwZTphLnR5cGUsa2V5OmIscmVmOmEucmVmLHByb3BzOmEucHJvcHMsX293bmVyOmEuX293bmVyfX1mdW5jdGlvbiBPKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1wfWZ1bmN0aW9uIGVzY2FwZShhKXt2YXIgYj17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrKFwiXCIrYSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZyxRPVtdO2Z1bmN0aW9uIFIoYSxiLGMsZSl7aWYoUS5sZW5ndGgpe3ZhciBkPVEucG9wKCk7ZC5yZXN1bHQ9YTtkLmtleVByZWZpeD1iO2QuZnVuYz1jO2QuY29udGV4dD1lO2QuY291bnQ9MDtyZXR1cm4gZH1yZXR1cm57cmVzdWx0OmEsa2V5UHJlZml4OmIsZnVuYzpjLGNvbnRleHQ6ZSxjb3VudDowfX1cbmZ1bmN0aW9uIFMoYSl7YS5yZXN1bHQ9bnVsbDthLmtleVByZWZpeD1udWxsO2EuZnVuYz1udWxsO2EuY29udGV4dD1udWxsO2EuY291bnQ9MDsxMD5RLmxlbmd0aCYmUS5wdXNoKGEpfVxuZnVuY3Rpb24gVChhLGIsYyxlKXt2YXIgZD10eXBlb2YgYTtpZihcInVuZGVmaW5lZFwiPT09ZHx8XCJib29sZWFuXCI9PT1kKWE9bnVsbDt2YXIgZz0hMTtpZihudWxsPT09YSlnPSEwO2Vsc2Ugc3dpdGNoKGQpe2Nhc2UgXCJzdHJpbmdcIjpjYXNlIFwibnVtYmVyXCI6Zz0hMDticmVhaztjYXNlIFwib2JqZWN0XCI6c3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgcDpjYXNlIHE6Zz0hMH19aWYoZylyZXR1cm4gYyhlLGEsXCJcIj09PWI/XCIuXCIrVShhLDApOmIpLDE7Zz0wO2I9XCJcIj09PWI/XCIuXCI6YitcIjpcIjtpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgaz0wO2s8YS5sZW5ndGg7aysrKXtkPWFba107dmFyIGY9YitVKGQsayk7Zys9VChkLGYsYyxlKX1lbHNlIGlmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGE/Zj1udWxsOihmPUImJmFbQl18fGFbXCJAQGl0ZXJhdG9yXCJdLGY9XCJmdW5jdGlvblwiPT09dHlwZW9mIGY/ZjpudWxsKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZilmb3IoYT1mLmNhbGwoYSksaz1cbjA7IShkPWEubmV4dCgpKS5kb25lOylkPWQudmFsdWUsZj1iK1UoZCxrKyspLGcrPVQoZCxmLGMsZSk7ZWxzZSBpZihcIm9iamVjdFwiPT09ZCl0aHJvdyBjPVwiXCIrYSxFcnJvcihDKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1jP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmMsXCJcIikpO3JldHVybiBnfWZ1bmN0aW9uIFYoYSxiLGMpe3JldHVybiBudWxsPT1hPzA6VChhLFwiXCIsYixjKX1mdW5jdGlvbiBVKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKGEua2V5KTpiLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBXKGEsYil7YS5mdW5jLmNhbGwoYS5jb250ZXh0LGIsYS5jb3VudCsrKX1cbmZ1bmN0aW9uIGFhKGEsYixjKXt2YXIgZT1hLnJlc3VsdCxkPWEua2V5UHJlZml4O2E9YS5mdW5jLmNhbGwoYS5jb250ZXh0LGIsYS5jb3VudCsrKTtBcnJheS5pc0FycmF5KGEpP1goYSxlLGMsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KTpudWxsIT1hJiYoTyhhKSYmKGE9TihhLGQrKCFhLmtleXx8YiYmYi5rZXk9PT1hLmtleT9cIlwiOihcIlwiK2Eua2V5KS5yZXBsYWNlKFAsXCIkJi9cIikrXCIvXCIpK2MpKSxlLnB1c2goYSkpfWZ1bmN0aW9uIFgoYSxiLGMsZSxkKXt2YXIgZz1cIlwiO251bGwhPWMmJihnPShcIlwiK2MpLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIik7Yj1SKGIsZyxlLGQpO1YoYSxhYSxiKTtTKGIpfXZhciBZPXtjdXJyZW50Om51bGx9O2Z1bmN0aW9uIFooKXt2YXIgYT1ZLmN1cnJlbnQ7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IoQygzMjEpKTtyZXR1cm4gYX1cbnZhciBiYT17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpZLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOntzdXNwZW5zZTpudWxsfSxSZWFjdEN1cnJlbnRPd25lcjpKLElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxhc3NpZ246bH07ZXhwb3J0cy5DaGlsZHJlbj17bWFwOmZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1hKXJldHVybiBhO3ZhciBlPVtdO1goYSxlLG51bGwsYixjKTtyZXR1cm4gZX0sZm9yRWFjaDpmdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSlyZXR1cm4gYTtiPVIobnVsbCxudWxsLGIsYyk7VihhLFcsYik7UyhiKX0sY291bnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYoYSxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKX0sdG9BcnJheTpmdW5jdGlvbihhKXt2YXIgYj1bXTtYKGEsYixudWxsLGZ1bmN0aW9uKGEpe3JldHVybiBhfSk7cmV0dXJuIGJ9LG9ubHk6ZnVuY3Rpb24oYSl7aWYoIU8oYSkpdGhyb3cgRXJyb3IoQygxNDMpKTtyZXR1cm4gYX19O1xuZXhwb3J0cy5Db21wb25lbnQ9RjtleHBvcnRzLkZyYWdtZW50PXI7ZXhwb3J0cy5Qcm9maWxlcj11O2V4cG9ydHMuUHVyZUNvbXBvbmVudD1IO2V4cG9ydHMuU3RyaWN0TW9kZT10O2V4cG9ydHMuU3VzcGVuc2U9eTtleHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPWJhO1xuZXhwb3J0cy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PT1hfHx2b2lkIDA9PT1hKXRocm93IEVycm9yKEMoMjY3LGEpKTt2YXIgZT1sKHt9LGEucHJvcHMpLGQ9YS5rZXksZz1hLnJlZixrPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoZz1iLnJlZixrPUouY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihkPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZj1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihoIGluIGIpSy5jYWxsKGIsaCkmJiFMLmhhc093blByb3BlcnR5KGgpJiYoZVtoXT12b2lkIDA9PT1iW2hdJiZ2b2lkIDAhPT1mP2ZbaF06YltoXSl9dmFyIGg9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1oKWUuY2hpbGRyZW49YztlbHNlIGlmKDE8aCl7Zj1BcnJheShoKTtmb3IodmFyIG09MDttPGg7bSsrKWZbbV09YXJndW1lbnRzW20rMl07ZS5jaGlsZHJlbj1mfXJldHVybnskJHR5cGVvZjpwLHR5cGU6YS50eXBlLFxua2V5OmQscmVmOmcscHJvcHM6ZSxfb3duZXI6a319O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPW51bGwpO2E9eyQkdHlwZW9mOncsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOmIsX2N1cnJlbnRWYWx1ZTphLF9jdXJyZW50VmFsdWUyOmEsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfTthLlByb3ZpZGVyPXskJHR5cGVvZjp2LF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPWF9O2V4cG9ydHMuY3JlYXRlRWxlbWVudD1NO2V4cG9ydHMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtiLnR5cGU9YTtyZXR1cm4gYn07ZXhwb3J0cy5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX07ZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp4LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO1xuZXhwb3J0cy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjpBLF9jdG9yOmEsX3N0YXR1czotMSxfcmVzdWx0Om51bGx9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eix0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWigpLnVzZUNhbGxiYWNrKGEsYil9O2V4cG9ydHMudXNlQ29udGV4dD1mdW5jdGlvbihhLGIpe3JldHVybiBaKCkudXNlQ29udGV4dChhLGIpfTtleHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFooKS51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gWigpLnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGMpfTtcbmV4cG9ydHMudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFooKS51c2VMYXlvdXRFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VNZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFooKS51c2VNZW1vKGEsYil9O2V4cG9ydHMudXNlUmVkdWNlcj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFooKS51c2VSZWR1Y2VyKGEsYixjKX07ZXhwb3J0cy51c2VSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIFooKS51c2VSZWYoYSl9O2V4cG9ydHMudXNlU3RhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFooKS51c2VTdGF0ZShhKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTYuMTMuMVwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgX19ERVZfXyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbic7XG5cbnZhciB3YXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKF9fREVWX18pIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDEgPyBsZW4gLSAxIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMTsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAxXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgK1xuICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH1cblxuICB3YXJuaW5nID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDIgPyBsZW4gLSAyIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMjsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAyXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArXG4gICAgICAgICAgJ21lc3NhZ2UgYXJndW1lbnQnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KG51bGwsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG4iLCIhZnVuY3Rpb24oYSxuKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKG4pOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPW4ocmVxdWlyZSxleHBvcnRzLG1vZHVsZSk6YS5Db3VudFVwPW4oKX0odGhpcyxmdW5jdGlvbihhLG4sdCl7dmFyIGU9ZnVuY3Rpb24oYSxuLHQsZSxpLHIpe2Z1bmN0aW9uIG8oYSl7dmFyIG4sdCxlLGkscixvLHM9YTwwO2lmKGE9TWF0aC5hYnMoYSkudG9GaXhlZChsLmRlY2ltYWxzKSxhKz1cIlwiLG49YS5zcGxpdChcIi5cIiksdD1uWzBdLGU9bi5sZW5ndGg+MT9sLm9wdGlvbnMuZGVjaW1hbCtuWzFdOlwiXCIsbC5vcHRpb25zLnVzZUdyb3VwaW5nKXtmb3IoaT1cIlwiLHI9MCxvPXQubGVuZ3RoO3I8bzsrK3IpMCE9PXImJnIlMz09PTAmJihpPWwub3B0aW9ucy5zZXBhcmF0b3IraSksaT10W28tci0xXStpO3Q9aX1yZXR1cm4gbC5vcHRpb25zLm51bWVyYWxzLmxlbmd0aCYmKHQ9dC5yZXBsYWNlKC9bMC05XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBsLm9wdGlvbnMubnVtZXJhbHNbK2FdfSksZT1lLnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24oYSl7cmV0dXJuIGwub3B0aW9ucy5udW1lcmFsc1srYV19KSksKHM/XCItXCI6XCJcIikrbC5vcHRpb25zLnByZWZpeCt0K2UrbC5vcHRpb25zLnN1ZmZpeH1mdW5jdGlvbiBzKGEsbix0LGUpe3JldHVybiB0KigtTWF0aC5wb3coMiwtMTAqYS9lKSsxKSoxMDI0LzEwMjMrbn1mdW5jdGlvbiB1KGEpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBhJiYhaXNOYU4oYSl9dmFyIGw9dGhpcztpZihsLnZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm5cIjEuOS4zXCJ9LGwub3B0aW9ucz17dXNlRWFzaW5nOiEwLHVzZUdyb3VwaW5nOiEwLHNlcGFyYXRvcjpcIixcIixkZWNpbWFsOlwiLlwiLGVhc2luZ0ZuOnMsZm9ybWF0dGluZ0ZuOm8scHJlZml4OlwiXCIsc3VmZml4OlwiXCIsbnVtZXJhbHM6W119LHImJlwib2JqZWN0XCI9PXR5cGVvZiByKWZvcih2YXIgbSBpbiBsLm9wdGlvbnMpci5oYXNPd25Qcm9wZXJ0eShtKSYmbnVsbCE9PXJbbV0mJihsLm9wdGlvbnNbbV09clttXSk7XCJcIj09PWwub3B0aW9ucy5zZXBhcmF0b3I/bC5vcHRpb25zLnVzZUdyb3VwaW5nPSExOmwub3B0aW9ucy5zZXBhcmF0b3I9XCJcIitsLm9wdGlvbnMuc2VwYXJhdG9yO2Zvcih2YXIgZD0wLGM9W1wid2Via2l0XCIsXCJtb3pcIixcIm1zXCIsXCJvXCJdLGY9MDtmPGMubGVuZ3RoJiYhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsrK2Ypd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3dbY1tmXStcIlJlcXVlc3RBbmltYXRpb25GcmFtZVwiXSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9d2luZG93W2NbZl0rXCJDYW5jZWxBbmltYXRpb25GcmFtZVwiXXx8d2luZG93W2NbZl0rXCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcIl07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSxuKXt2YXIgdD0obmV3IERhdGUpLmdldFRpbWUoKSxlPU1hdGgubWF4KDAsMTYtKHQtZCkpLGk9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXthKHQrZSl9LGUpO3JldHVybiBkPXQrZSxpfSksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHwod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe2NsZWFyVGltZW91dChhKX0pLGwuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3JldHVybiEhbC5pbml0aWFsaXplZHx8KGwuZXJyb3I9XCJcIixsLmQ9XCJzdHJpbmdcIj09dHlwZW9mIGE/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk6YSxsLmQ/KGwuc3RhcnRWYWw9TnVtYmVyKG4pLGwuZW5kVmFsPU51bWJlcih0KSx1KGwuc3RhcnRWYWwpJiZ1KGwuZW5kVmFsKT8obC5kZWNpbWFscz1NYXRoLm1heCgwLGV8fDApLGwuZGVjPU1hdGgucG93KDEwLGwuZGVjaW1hbHMpLGwuZHVyYXRpb249MWUzKk51bWJlcihpKXx8MmUzLGwuY291bnREb3duPWwuc3RhcnRWYWw+bC5lbmRWYWwsbC5mcmFtZVZhbD1sLnN0YXJ0VmFsLGwuaW5pdGlhbGl6ZWQ9ITAsITApOihsLmVycm9yPVwiW0NvdW50VXBdIHN0YXJ0VmFsIChcIituK1wiKSBvciBlbmRWYWwgKFwiK3QrXCIpIGlzIG5vdCBhIG51bWJlclwiLCExKSk6KGwuZXJyb3I9XCJbQ291bnRVcF0gdGFyZ2V0IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIsITEpKX0sbC5wcmludFZhbHVlPWZ1bmN0aW9uKGEpe3ZhciBuPWwub3B0aW9ucy5mb3JtYXR0aW5nRm4oYSk7XCJJTlBVVFwiPT09bC5kLnRhZ05hbWU/dGhpcy5kLnZhbHVlPW46XCJ0ZXh0XCI9PT1sLmQudGFnTmFtZXx8XCJ0c3BhblwiPT09bC5kLnRhZ05hbWU/dGhpcy5kLnRleHRDb250ZW50PW46dGhpcy5kLmlubmVySFRNTD1ufSxsLmNvdW50PWZ1bmN0aW9uKGEpe2wuc3RhcnRUaW1lfHwobC5zdGFydFRpbWU9YSksbC50aW1lc3RhbXA9YTt2YXIgbj1hLWwuc3RhcnRUaW1lO2wucmVtYWluaW5nPWwuZHVyYXRpb24tbixsLm9wdGlvbnMudXNlRWFzaW5nP2wuY291bnREb3duP2wuZnJhbWVWYWw9bC5zdGFydFZhbC1sLm9wdGlvbnMuZWFzaW5nRm4obiwwLGwuc3RhcnRWYWwtbC5lbmRWYWwsbC5kdXJhdGlvbik6bC5mcmFtZVZhbD1sLm9wdGlvbnMuZWFzaW5nRm4obixsLnN0YXJ0VmFsLGwuZW5kVmFsLWwuc3RhcnRWYWwsbC5kdXJhdGlvbik6bC5jb3VudERvd24/bC5mcmFtZVZhbD1sLnN0YXJ0VmFsLShsLnN0YXJ0VmFsLWwuZW5kVmFsKSoobi9sLmR1cmF0aW9uKTpsLmZyYW1lVmFsPWwuc3RhcnRWYWwrKGwuZW5kVmFsLWwuc3RhcnRWYWwpKihuL2wuZHVyYXRpb24pLGwuY291bnREb3duP2wuZnJhbWVWYWw9bC5mcmFtZVZhbDxsLmVuZFZhbD9sLmVuZFZhbDpsLmZyYW1lVmFsOmwuZnJhbWVWYWw9bC5mcmFtZVZhbD5sLmVuZFZhbD9sLmVuZFZhbDpsLmZyYW1lVmFsLGwuZnJhbWVWYWw9TWF0aC5yb3VuZChsLmZyYW1lVmFsKmwuZGVjKS9sLmRlYyxsLnByaW50VmFsdWUobC5mcmFtZVZhbCksbjxsLmR1cmF0aW9uP2wuckFGPXJlcXVlc3RBbmltYXRpb25GcmFtZShsLmNvdW50KTpsLmNhbGxiYWNrJiZsLmNhbGxiYWNrKCl9LGwuc3RhcnQ9ZnVuY3Rpb24oYSl7bC5pbml0aWFsaXplKCkmJihsLmNhbGxiYWNrPWEsbC5yQUY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwuY291bnQpKX0sbC5wYXVzZVJlc3VtZT1mdW5jdGlvbigpe2wucGF1c2VkPyhsLnBhdXNlZD0hMSxkZWxldGUgbC5zdGFydFRpbWUsbC5kdXJhdGlvbj1sLnJlbWFpbmluZyxsLnN0YXJ0VmFsPWwuZnJhbWVWYWwscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwuY291bnQpKToobC5wYXVzZWQ9ITAsY2FuY2VsQW5pbWF0aW9uRnJhbWUobC5yQUYpKX0sbC5yZXNldD1mdW5jdGlvbigpe2wucGF1c2VkPSExLGRlbGV0ZSBsLnN0YXJ0VGltZSxsLmluaXRpYWxpemVkPSExLGwuaW5pdGlhbGl6ZSgpJiYoY2FuY2VsQW5pbWF0aW9uRnJhbWUobC5yQUYpLGwucHJpbnRWYWx1ZShsLnN0YXJ0VmFsKSl9LGwudXBkYXRlPWZ1bmN0aW9uKGEpe2lmKGwuaW5pdGlhbGl6ZSgpKXtpZihhPU51bWJlcihhKSwhdShhKSlyZXR1cm4gdm9pZChsLmVycm9yPVwiW0NvdW50VXBdIHVwZGF0ZSgpIC0gbmV3IGVuZFZhbCBpcyBub3QgYSBudW1iZXI6IFwiK2EpO2wuZXJyb3I9XCJcIixhIT09bC5mcmFtZVZhbCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKGwuckFGKSxsLnBhdXNlZD0hMSxkZWxldGUgbC5zdGFydFRpbWUsbC5zdGFydFZhbD1sLmZyYW1lVmFsLGwuZW5kVmFsPWEsbC5jb3VudERvd249bC5zdGFydFZhbD5sLmVuZFZhbCxsLnJBRj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobC5jb3VudCkpfX0sbC5pbml0aWFsaXplKCkmJmwucHJpbnRWYWx1ZShsLnN0YXJ0VmFsKX07cmV0dXJuIGV9KTsiLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbHRlcjtcbiIsInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iLCJ2YXIgY3JlYXRlQmFzZUZvciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VGb3InKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbnZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3I7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VFYWNoO1xuIiwidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCxcbiAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICFsZW5ndGg7XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgIHZhciBrZXkgPSBkYXRhWzBdLFxuICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSxcbiAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL19lcXVhbE9iamVjdHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWxEZWVwO1xuIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iLCIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlTb21lO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FjaGVIYXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIiwidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKSxcbiAgICBnZXQgPSByZXF1aXJlKCcuL2dldCcpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpLFxuICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSxcbiAgICBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgOiBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXNQcm9wZXJ0eTtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgaGFzRnVuYykge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICB9XG4gIGlmIChyZXN1bHQgfHwgKytpbmRleCAhPSBsZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNQYXRoO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHk7XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VQcm9wZXJ0eWAgd2hpY2ggc3VwcG9ydHMgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiIsInZhciBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hcDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX2lubmVyU2xpZGVyID0gcmVxdWlyZShcIi4vaW5uZXItc2xpZGVyXCIpO1xuXG52YXIgX2pzb24ybXEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJqc29uMm1xXCIpKTtcblxudmFyIF9kZWZhdWx0UHJvcHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZmF1bHQtcHJvcHNcIikpO1xuXG52YXIgX2lubmVyU2xpZGVyVXRpbHMgPSByZXF1aXJlKFwiLi91dGlscy9pbm5lclNsaWRlclV0aWxzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgZW5xdWlyZSA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5jYW5Vc2VET00pKCkgJiYgcmVxdWlyZShcImVucXVpcmUuanNcIik7XG5cbnZhciBTbGlkZXIgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFNsaWRlciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gU2xpZGVyKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNsaWRlcik7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihTbGlkZXIpLmNhbGwodGhpcywgcHJvcHMpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJpbm5lclNsaWRlclJlZkhhbmRsZXJcIiwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgcmV0dXJuIF90aGlzLmlubmVyU2xpZGVyID0gcmVmO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInNsaWNrUHJldlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuaW5uZXJTbGlkZXIuc2xpY2tQcmV2KCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic2xpY2tOZXh0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5pbm5lclNsaWRlci5zbGlja05leHQoKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja0dvVG9cIiwgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICB2YXIgZG9udEFuaW1hdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgICAgcmV0dXJuIF90aGlzLmlubmVyU2xpZGVyLnNsaWNrR29UbyhzbGlkZSwgZG9udEFuaW1hdGUpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInNsaWNrUGF1c2VcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLmlubmVyU2xpZGVyLnBhdXNlKFwicGF1c2VkXCIpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInNsaWNrUGxheVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuaW5uZXJTbGlkZXIuYXV0b1BsYXkoXCJwbGF5XCIpO1xuICAgIH0pO1xuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBicmVha3BvaW50OiBudWxsXG4gICAgfTtcbiAgICBfdGhpcy5fcmVzcG9uc2l2ZU1lZGlhSGFuZGxlcnMgPSBbXTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2xpZGVyLCBbe1xuICAgIGtleTogXCJtZWRpYVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZWRpYShxdWVyeSwgaGFuZGxlcikge1xuICAgICAgLy8gamF2YXNjcmlwdCBoYW5kbGVyIGZvciAgY3NzIG1lZGlhIHF1ZXJ5XG4gICAgICBlbnF1aXJlLnJlZ2lzdGVyKHF1ZXJ5LCBoYW5kbGVyKTtcblxuICAgICAgdGhpcy5fcmVzcG9uc2l2ZU1lZGlhSGFuZGxlcnMucHVzaCh7XG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgaGFuZGxlcjogaGFuZGxlclxuICAgICAgfSk7XG4gICAgfSAvLyBoYW5kbGVzIHJlc3BvbnNpdmUgYnJlYWtwb2ludHNcblxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsTW91bnQoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgLy8gcGVyZm9ybWFuY2UgbW9uaXRvcmluZ1xuICAgICAgLy9pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy9jb25zdCB7IHdoeURpZFlvdVVwZGF0ZSB9ID0gcmVxdWlyZSgnd2h5LWRpZC15b3UtdXBkYXRlJylcbiAgICAgIC8vd2h5RGlkWW91VXBkYXRlKFJlYWN0KVxuICAgICAgLy99XG4gICAgICBpZiAodGhpcy5wcm9wcy5yZXNwb25zaXZlKSB7XG4gICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMucHJvcHMucmVzcG9uc2l2ZS5tYXAoZnVuY3Rpb24gKGJyZWFrcHQpIHtcbiAgICAgICAgICByZXR1cm4gYnJlYWtwdC5icmVha3BvaW50O1xuICAgICAgICB9KTsgLy8gc29ydCB0aGVtIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgdGhlaXIgbnVtZXJpY2FsIHZhbHVlXG5cbiAgICAgICAgYnJlYWtwb2ludHMuc29ydChmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgIHJldHVybiB4IC0geTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGJyZWFrcG9pbnQsIGluZGV4KSB7XG4gICAgICAgICAgLy8gbWVkaWEgcXVlcnkgZm9yIGVhY2ggYnJlYWtwb2ludFxuICAgICAgICAgIHZhciBiUXVlcnk7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIGJRdWVyeSA9ICgwLCBfanNvbjJtcS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgICBtYXhXaWR0aDogYnJlYWtwb2ludFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJRdWVyeSA9ICgwLCBfanNvbjJtcS5kZWZhdWx0KSh7XG4gICAgICAgICAgICAgIG1pbldpZHRoOiBicmVha3BvaW50c1tpbmRleCAtIDFdICsgMSxcbiAgICAgICAgICAgICAgbWF4V2lkdGg6IGJyZWFrcG9pbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gLy8gd2hlbiBub3QgdXNpbmcgc2VydmVyIHNpZGUgcmVuZGVyaW5nXG5cblxuICAgICAgICAgICgwLCBfaW5uZXJTbGlkZXJVdGlscy5jYW5Vc2VET00pKCkgJiYgX3RoaXMyLm1lZGlhKGJRdWVyeSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgYnJlYWtwb2ludDogYnJlYWtwb2ludFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pOyAvLyBSZWdpc3RlciBtZWRpYSBxdWVyeSBmb3IgZnVsbCBzY3JlZW4uIE5lZWQgdG8gc3VwcG9ydCByZXNpemUgZnJvbSBzbWFsbCB0byBsYXJnZVxuICAgICAgICAvLyBjb252ZXJ0IGphdmFzY3JpcHQgb2JqZWN0IHRvIG1lZGlhIHF1ZXJ5IHN0cmluZ1xuXG4gICAgICAgIHZhciBxdWVyeSA9ICgwLCBfanNvbjJtcS5kZWZhdWx0KSh7XG4gICAgICAgICAgbWluV2lkdGg6IGJyZWFrcG9pbnRzLnNsaWNlKC0xKVswXVxuICAgICAgICB9KTtcbiAgICAgICAgKDAsIF9pbm5lclNsaWRlclV0aWxzLmNhblVzZURPTSkoKSAmJiB0aGlzLm1lZGlhKHF1ZXJ5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGJyZWFrcG9pbnQ6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5fcmVzcG9uc2l2ZU1lZGlhSGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIGVucXVpcmUudW5yZWdpc3RlcihvYmoucXVlcnksIG9iai5oYW5kbGVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBzZXR0aW5ncztcbiAgICAgIHZhciBuZXdQcm9wcztcblxuICAgICAgaWYgKHRoaXMuc3RhdGUuYnJlYWtwb2ludCkge1xuICAgICAgICBuZXdQcm9wcyA9IHRoaXMucHJvcHMucmVzcG9uc2l2ZS5maWx0ZXIoZnVuY3Rpb24gKHJlc3ApIHtcbiAgICAgICAgICByZXR1cm4gcmVzcC5icmVha3BvaW50ID09PSBfdGhpczMuc3RhdGUuYnJlYWtwb2ludDtcbiAgICAgICAgfSk7XG4gICAgICAgIHNldHRpbmdzID0gbmV3UHJvcHNbMF0uc2V0dGluZ3MgPT09IFwidW5zbGlja1wiID8gXCJ1bnNsaWNrXCIgOiBfb2JqZWN0U3ByZWFkKHt9LCBfZGVmYXVsdFByb3BzLmRlZmF1bHQsIHRoaXMucHJvcHMsIG5ld1Byb3BzWzBdLnNldHRpbmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldHRpbmdzID0gX29iamVjdFNwcmVhZCh7fSwgX2RlZmF1bHRQcm9wcy5kZWZhdWx0LCB0aGlzLnByb3BzKTtcbiAgICAgIH0gLy8gZm9yY2Ugc2Nyb2xsaW5nIGJ5IG9uZSBpZiBjZW50ZXJNb2RlIGlzIG9uXG5cblxuICAgICAgaWYgKHNldHRpbmdzLmNlbnRlck1vZGUpIHtcbiAgICAgICAgaWYgKHNldHRpbmdzLnNsaWRlc1RvU2Nyb2xsID4gMSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJzbGlkZXNUb1Njcm9sbCBzaG91bGQgYmUgZXF1YWwgdG8gMSBpbiBjZW50ZXJNb2RlLCB5b3UgYXJlIHVzaW5nIFwiLmNvbmNhdChzZXR0aW5ncy5zbGlkZXNUb1Njcm9sbCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3Muc2xpZGVzVG9TY3JvbGwgPSAxO1xuICAgICAgfSAvLyBmb3JjZSBzaG93aW5nIG9uZSBzbGlkZSBhbmQgc2Nyb2xsaW5nIGJ5IG9uZSBpZiB0aGUgZmFkZSBtb2RlIGlzIG9uXG5cblxuICAgICAgaWYgKHNldHRpbmdzLmZhZGUpIHtcbiAgICAgICAgaWYgKHNldHRpbmdzLnNsaWRlc1RvU2hvdyA+IDEgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwic2xpZGVzVG9TaG93IHNob3VsZCBiZSBlcXVhbCB0byAxIHdoZW4gZmFkZSBpcyB0cnVlLCB5b3UncmUgdXNpbmcgXCIuY29uY2F0KHNldHRpbmdzLnNsaWRlc1RvU2hvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNldHRpbmdzLnNsaWRlc1RvU2Nyb2xsID4gMSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJzbGlkZXNUb1Njcm9sbCBzaG91bGQgYmUgZXF1YWwgdG8gMSB3aGVuIGZhZGUgaXMgdHJ1ZSwgeW91J3JlIHVzaW5nIFwiLmNvbmNhdChzZXR0aW5ncy5zbGlkZXNUb1Njcm9sbCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3Muc2xpZGVzVG9TaG93ID0gMTtcbiAgICAgICAgc2V0dGluZ3Muc2xpZGVzVG9TY3JvbGwgPSAxO1xuICAgICAgfSAvLyBtYWtlcyBzdXJlIHRoYXQgY2hpbGRyZW4gaXMgYW4gYXJyYXksIGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IDEgY2hpbGRcblxuXG4gICAgICB2YXIgY2hpbGRyZW4gPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pOyAvLyBDaGlsZHJlbiBtYXkgY29udGFpbiBmYWxzZSBvciBudWxsLCBzbyB3ZSBzaG91bGQgZmlsdGVyIHRoZW1cbiAgICAgIC8vIGNoaWxkcmVuIG1heSBhbHNvIGNvbnRhaW4gc3RyaW5nIGZpbGxlZCB3aXRoIHNwYWNlcyAoaW4gY2VydGFpbiBjYXNlcyB3aGVyZSB3ZSB1c2UganN4IHN0cmluZ3MpXG5cblxuICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2hpbGQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gISFjaGlsZC50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISFjaGlsZDtcbiAgICAgIH0pOyAvLyByb3dzIGFuZCBzbGlkZXNQZXJSb3cgbG9naWMgaXMgaGFuZGxlZCBoZXJlXG5cbiAgICAgIGlmIChzZXR0aW5ncy52YXJpYWJsZVdpZHRoICYmIChzZXR0aW5ncy5yb3dzID4gMSB8fCBzZXR0aW5ncy5zbGlkZXNQZXJSb3cgPiAxKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJ2YXJpYWJsZVdpZHRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY2FzZSBvZiByb3dzID4gMSBvciBzbGlkZXNQZXJSb3cgPiAxXCIpO1xuICAgICAgICBzZXR0aW5ncy52YXJpYWJsZVdpZHRoID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciBuZXdDaGlsZHJlbiA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRXaWR0aCA9IG51bGw7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICs9IHNldHRpbmdzLnJvd3MgKiBzZXR0aW5ncy5zbGlkZXNQZXJSb3cpIHtcbiAgICAgICAgdmFyIG5ld1NsaWRlID0gW107XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBpICsgc2V0dGluZ3Mucm93cyAqIHNldHRpbmdzLnNsaWRlc1BlclJvdzsgaiArPSBzZXR0aW5ncy5zbGlkZXNQZXJSb3cpIHtcbiAgICAgICAgICB2YXIgcm93ID0gW107XG5cbiAgICAgICAgICBmb3IgKHZhciBrID0gajsgayA8IGogKyBzZXR0aW5ncy5zbGlkZXNQZXJSb3c7IGsgKz0gMSkge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLnZhcmlhYmxlV2lkdGggJiYgY2hpbGRyZW5ba10ucHJvcHMuc3R5bGUpIHtcbiAgICAgICAgICAgICAgY3VycmVudFdpZHRoID0gY2hpbGRyZW5ba10ucHJvcHMuc3R5bGUud2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrID49IGNoaWxkcmVuLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgICByb3cucHVzaChfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW5ba10sIHtcbiAgICAgICAgICAgICAga2V5OiAxMDAgKiBpICsgMTAgKiBqICsgayxcbiAgICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBcIlwiLmNvbmNhdCgxMDAgLyBzZXR0aW5ncy5zbGlkZXNQZXJSb3csIFwiJVwiKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXdTbGlkZS5wdXNoKF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgICAga2V5OiAxMCAqIGkgKyBqXG4gICAgICAgICAgfSwgcm93KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2V0dGluZ3MudmFyaWFibGVXaWR0aCkge1xuICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2goX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgICBrZXk6IGksXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICB3aWR0aDogY3VycmVudFdpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbmV3U2xpZGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgICAga2V5OiBpXG4gICAgICAgICAgfSwgbmV3U2xpZGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0dGluZ3MgPT09IFwidW5zbGlja1wiKSB7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBcInJlZ3VsYXIgc2xpZGVyIFwiICsgKHRoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCIpO1xuICAgICAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVcbiAgICAgICAgfSwgbmV3Q2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIGlmIChuZXdDaGlsZHJlbi5sZW5ndGggPD0gc2V0dGluZ3Muc2xpZGVzVG9TaG93KSB7XG4gICAgICAgIHNldHRpbmdzLnVuc2xpY2sgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfaW5uZXJTbGlkZXIuSW5uZXJTbGlkZXIsIF9leHRlbmRzKHtcbiAgICAgICAgcmVmOiB0aGlzLmlubmVyU2xpZGVyUmVmSGFuZGxlclxuICAgICAgfSwgc2V0dGluZ3MpLCBuZXdDaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFNsaWRlcjtcbn0oX3JlYWN0LmRlZmF1bHQuQ29tcG9uZW50KTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gU2xpZGVyOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5Jbm5lclNsaWRlciA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9yZWFjdERvbSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0LWRvbVwiKSk7XG5cbnZhciBfaW5pdGlhbFN0YXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pbml0aWFsLXN0YXRlXCIpKTtcblxudmFyIF9sb2Rhc2ggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2guZGVib3VuY2VcIikpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpKTtcblxudmFyIF9pbm5lclNsaWRlclV0aWxzID0gcmVxdWlyZShcIi4vdXRpbHMvaW5uZXJTbGlkZXJVdGlsc1wiKTtcblxudmFyIF90cmFjayA9IHJlcXVpcmUoXCIuL3RyYWNrXCIpO1xuXG52YXIgX2RvdHMgPSByZXF1aXJlKFwiLi9kb3RzXCIpO1xuXG52YXIgX2Fycm93cyA9IHJlcXVpcmUoXCIuL2Fycm93c1wiKTtcblxudmFyIF9yZXNpemVPYnNlcnZlclBvbHlmaWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBJbm5lclNsaWRlciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoSW5uZXJTbGlkZXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIElubmVyU2xpZGVyKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElubmVyU2xpZGVyKTtcblxuICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKElubmVyU2xpZGVyKS5jYWxsKHRoaXMsIHByb3BzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwibGlzdFJlZkhhbmRsZXJcIiwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgcmV0dXJuIF90aGlzLmxpc3QgPSByZWY7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwidHJhY2tSZWZIYW5kbGVyXCIsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgIHJldHVybiBfdGhpcy50cmFjayA9IHJlZjtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJhZGFwdEhlaWdodFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMuYWRhcHRpdmVIZWlnaHQgJiYgX3RoaXMubGlzdCkge1xuICAgICAgICB2YXIgZWxlbSA9IF90aGlzLmxpc3QucXVlcnlTZWxlY3RvcihcIltkYXRhLWluZGV4PVxcXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlLCBcIlxcXCJdXCIpKTtcblxuICAgICAgICBfdGhpcy5saXN0LnN0eWxlLmhlaWdodCA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRIZWlnaHQpKGVsZW0pICsgXCJweFwiO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImNvbXBvbmVudFdpbGxNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zc3JJbml0KCk7XG5cbiAgICAgIF90aGlzLnByb3BzLm9uSW5pdCAmJiBfdGhpcy5wcm9wcy5vbkluaXQoKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmxhenlMb2FkKSB7XG4gICAgICAgIHZhciBzbGlkZXNUb0xvYWQgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0T25EZW1hbmRMYXp5U2xpZGVzKShfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpKTtcblxuICAgICAgICBpZiAoc2xpZGVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAocHJldlN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBsYXp5TG9hZGVkTGlzdDogcHJldlN0YXRlLmxhenlMb2FkZWRMaXN0LmNvbmNhdChzbGlkZXNUb0xvYWQpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKF90aGlzLnByb3BzLm9uTGF6eUxvYWQpIHtcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uTGF6eUxvYWQoc2xpZGVzVG9Mb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJjb21wb25lbnREaWRNb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBsaXN0UmVmOiBfdGhpcy5saXN0LFxuICAgICAgICB0cmFja1JlZjogX3RoaXMudHJhY2tcbiAgICAgIH0sIF90aGlzLnByb3BzKTtcblxuICAgICAgX3RoaXMudXBkYXRlU3RhdGUoc3BlYywgdHJ1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5hZGFwdEhlaWdodCgpO1xuXG4gICAgICAgIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLmF1dG9QbGF5KFwidXBkYXRlXCIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5sYXp5TG9hZCA9PT0gXCJwcm9ncmVzc2l2ZVwiKSB7XG4gICAgICAgIF90aGlzLmxhenlMb2FkVGltZXIgPSBzZXRJbnRlcnZhbChfdGhpcy5wcm9ncmVzc2l2ZUxhenlMb2FkLCAxMDAwKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMucm8gPSBuZXcgX3Jlc2l6ZU9ic2VydmVyUG9seWZpbGwuZGVmYXVsdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5zdGF0ZS5hbmltYXRpbmcpIHtcbiAgICAgICAgICBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQoZmFsc2UpOyAvLyBkb24ndCBzZXQgdHJhY2tTdHlsZSBoZW5jZSBkb24ndCBicmVhayBhbmltYXRpb25cblxuXG4gICAgICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQoKTtcbiAgICAgICAgICB9LCBfdGhpcy5wcm9wcy5zcGVlZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLm9uV2luZG93UmVzaXplZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX3RoaXMucm8ub2JzZXJ2ZShfdGhpcy5saXN0KTtcblxuICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnNsaWNrLXNsaWRlXCIpLCBmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgc2xpZGUub25mb2N1cyA9IF90aGlzLnByb3BzLnBhdXNlT25Gb2N1cyA/IF90aGlzLm9uU2xpZGVGb2N1cyA6IG51bGw7XG4gICAgICAgIHNsaWRlLm9uYmx1ciA9IF90aGlzLnByb3BzLnBhdXNlT25Gb2N1cyA/IF90aGlzLm9uU2xpZGVCbHVyIDogbnVsbDtcbiAgICAgIH0pOyAvLyBUbyBzdXBwb3J0IHNlcnZlci1zaWRlIHJlbmRlcmluZ1xuXG4gICAgICBpZiAoIXdpbmRvdykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBfdGhpcy5vbldpbmRvd1Jlc2l6ZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmF0dGFjaEV2ZW50KFwib25yZXNpemVcIiwgX3RoaXMub25XaW5kb3dSZXNpemVkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuYW5pbWF0aW9uRW5kQ2FsbGJhY2spIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLmFuaW1hdGlvbkVuZENhbGxiYWNrKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF90aGlzLmxhenlMb2FkVGltZXIpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChfdGhpcy5sYXp5TG9hZFRpbWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF90aGlzLmNhbGxiYWNrVGltZXJzLmxlbmd0aCkge1xuICAgICAgICBfdGhpcy5jYWxsYmFja1RpbWVycy5mb3JFYWNoKGZ1bmN0aW9uICh0aW1lcikge1xuICAgICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpcy5jYWxsYmFja1RpbWVycyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgX3RoaXMub25XaW5kb3dSZXNpemVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5kZXRhY2hFdmVudChcIm9ucmVzaXplXCIsIF90aGlzLm9uV2luZG93UmVzaXplZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfdGhpcy5hdXRvcGxheVRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoX3RoaXMuYXV0b3BsYXlUaW1lcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiLCBmdW5jdGlvbiAobmV4dFByb3BzKSB7XG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBsaXN0UmVmOiBfdGhpcy5saXN0LFxuICAgICAgICB0cmFja1JlZjogX3RoaXMudHJhY2tcbiAgICAgIH0sIG5leHRQcm9wcywgX3RoaXMuc3RhdGUpO1xuXG4gICAgICB2YXIgc2V0VHJhY2tTdHlsZSA9IGZhbHNlO1xuXG4gICAgICB2YXIgX2FyciA9IE9iamVjdC5rZXlzKF90aGlzLnByb3BzKTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IF9hcnIubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBrZXkgPSBfYXJyW19pXTtcblxuICAgICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgc2V0VHJhY2tTdHlsZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3R5cGVvZihuZXh0UHJvcHNba2V5XSkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG5leHRQcm9wc1trZXldID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0UHJvcHNba2V5XSAhPT0gX3RoaXMucHJvcHNba2V5XSkge1xuICAgICAgICAgIHNldFRyYWNrU3R5bGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnVwZGF0ZVN0YXRlKHNwZWMsIHNldFRyYWNrU3R5bGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSA+PSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChuZXh0UHJvcHMuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgX3RoaXMuY2hhbmdlU2xpZGUoe1xuICAgICAgICAgICAgbWVzc2FnZTogXCJpbmRleFwiLFxuICAgICAgICAgICAgaW5kZXg6IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmNvdW50KG5leHRQcm9wcy5jaGlsZHJlbikgLSBuZXh0UHJvcHMuc2xpZGVzVG9TaG93LFxuICAgICAgICAgICAgY3VycmVudFNsaWRlOiBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0UHJvcHMuYXV0b3BsYXkpIHtcbiAgICAgICAgICBfdGhpcy5hdXRvUGxheShcInVwZGF0ZVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5wYXVzZShcInBhdXNlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY29tcG9uZW50RGlkVXBkYXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNoZWNrSW1hZ2VzTG9hZCgpO1xuXG4gICAgICBfdGhpcy5wcm9wcy5vblJlSW5pdCAmJiBfdGhpcy5wcm9wcy5vblJlSW5pdCgpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMubGF6eUxvYWQpIHtcbiAgICAgICAgdmFyIHNsaWRlc1RvTG9hZCA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRPbkRlbWFuZExhenlTbGlkZXMpKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSkpO1xuXG4gICAgICAgIGlmIChzbGlkZXNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGxhenlMb2FkZWRMaXN0OiBwcmV2U3RhdGUubGF6eUxvYWRlZExpc3QuY29uY2F0KHNsaWRlc1RvTG9hZClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoX3RoaXMucHJvcHMub25MYXp5TG9hZCkge1xuICAgICAgICAgICAgX3RoaXMucHJvcHMub25MYXp5TG9hZChzbGlkZXNUb0xvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyBpZiAodGhpcy5wcm9wcy5vbkxhenlMb2FkKSB7XG4gICAgICAvLyAgIHRoaXMucHJvcHMub25MYXp5TG9hZChbbGVmdE1vc3RTbGlkZV0pXG4gICAgICAvLyB9XG5cblxuICAgICAgX3RoaXMuYWRhcHRIZWlnaHQoKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvbldpbmRvd1Jlc2l6ZWRcIiwgZnVuY3Rpb24gKHNldFRyYWNrU3R5bGUpIHtcbiAgICAgIGlmIChfdGhpcy5kZWJvdW5jZWRSZXNpemUpIF90aGlzLmRlYm91bmNlZFJlc2l6ZS5jYW5jZWwoKTtcbiAgICAgIF90aGlzLmRlYm91bmNlZFJlc2l6ZSA9ICgwLCBfbG9kYXNoLmRlZmF1bHQpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnJlc2l6ZVdpbmRvdyhzZXRUcmFja1N0eWxlKTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgX3RoaXMuZGVib3VuY2VkUmVzaXplKCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwicmVzaXplV2luZG93XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZXRUcmFja1N0eWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0cnVlO1xuICAgICAgaWYgKCFfcmVhY3REb20uZGVmYXVsdC5maW5kRE9NTm9kZShfdGhpcy50cmFjaykpIHJldHVybjtcblxuICAgICAgdmFyIHNwZWMgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgbGlzdFJlZjogX3RoaXMubGlzdCxcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrXG4gICAgICB9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpO1xuXG4gICAgICBfdGhpcy51cGRhdGVTdGF0ZShzcGVjLCBzZXRUcmFja1N0eWxlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5hdXRvcGxheSkgX3RoaXMuYXV0b1BsYXkoXCJ1cGRhdGVcIik7ZWxzZSBfdGhpcy5wYXVzZShcInBhdXNlZFwiKTtcbiAgICAgIH0pOyAvLyBhbmltYXRpbmcgc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQgd2hpbGUgcmVzaXppbmcsIG90aGVyd2lzZSBhdXRvcGxheSBzdG9wcyB3b3JraW5nXG5cblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhbmltYXRpbmc6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLmFuaW1hdGlvbkVuZENhbGxiYWNrKTtcbiAgICAgIGRlbGV0ZSBfdGhpcy5hbmltYXRpb25FbmRDYWxsYmFjaztcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJ1cGRhdGVTdGF0ZVwiLCBmdW5jdGlvbiAoc3BlYywgc2V0VHJhY2tTdHlsZSwgY2FsbGJhY2spIHtcbiAgICAgIHZhciB1cGRhdGVkU3RhdGUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuaW5pdGlhbGl6ZWRTdGF0ZSkoc3BlYyk7XG4gICAgICBzcGVjID0gX29iamVjdFNwcmVhZCh7fSwgc3BlYywgdXBkYXRlZFN0YXRlLCB7XG4gICAgICAgIHNsaWRlSW5kZXg6IHVwZGF0ZWRTdGF0ZS5jdXJyZW50U2xpZGVcbiAgICAgIH0pO1xuICAgICAgdmFyIHRhcmdldExlZnQgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0VHJhY2tMZWZ0KShzcGVjKTtcbiAgICAgIHNwZWMgPSBfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgIGxlZnQ6IHRhcmdldExlZnRcbiAgICAgIH0pO1xuICAgICAgdmFyIHRyYWNrU3R5bGUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0VHJhY2tDU1MpKHNwZWMpO1xuXG4gICAgICBpZiAoc2V0VHJhY2tTdHlsZSB8fCBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChfdGhpcy5wcm9wcy5jaGlsZHJlbikgIT09IF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmNvdW50KHNwZWMuY2hpbGRyZW4pKSB7XG4gICAgICAgIHVwZGF0ZWRTdGF0ZVtcInRyYWNrU3R5bGVcIl0gPSB0cmFja1N0eWxlO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh1cGRhdGVkU3RhdGUsIGNhbGxiYWNrKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzc3JJbml0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy52YXJpYWJsZVdpZHRoKSB7XG4gICAgICAgIHZhciBfdHJhY2tXaWR0aCA9IDAsXG4gICAgICAgICAgICBfdHJhY2tMZWZ0ID0gMDtcbiAgICAgICAgdmFyIGNoaWxkcmVuV2lkdGhzID0gW107XG4gICAgICAgIHZhciBwcmVDbG9uZXMgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UHJlQ2xvbmVzKShfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUsIHtcbiAgICAgICAgICBzbGlkZUNvdW50OiBfdGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgfSkpO1xuICAgICAgICB2YXIgcG9zdENsb25lcyA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQb3N0Q2xvbmVzKShfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUsIHtcbiAgICAgICAgICBzbGlkZUNvdW50OiBfdGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIF90aGlzLnByb3BzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgY2hpbGRyZW5XaWR0aHMucHVzaChjaGlsZC5wcm9wcy5zdHlsZS53aWR0aCk7XG4gICAgICAgICAgX3RyYWNrV2lkdGggKz0gY2hpbGQucHJvcHMuc3R5bGUud2lkdGg7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlQ2xvbmVzOyBpKyspIHtcbiAgICAgICAgICBfdHJhY2tMZWZ0ICs9IGNoaWxkcmVuV2lkdGhzW2NoaWxkcmVuV2lkdGhzLmxlbmd0aCAtIDEgLSBpXTtcbiAgICAgICAgICBfdHJhY2tXaWR0aCArPSBjaGlsZHJlbldpZHRoc1tjaGlsZHJlbldpZHRocy5sZW5ndGggLSAxIC0gaV07XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBwb3N0Q2xvbmVzOyBfaTIrKykge1xuICAgICAgICAgIF90cmFja1dpZHRoICs9IGNoaWxkcmVuV2lkdGhzW19pMl07XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGU7IF9pMysrKSB7XG4gICAgICAgICAgX3RyYWNrTGVmdCArPSBjaGlsZHJlbldpZHRoc1tfaTNdO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF90cmFja1N0eWxlID0ge1xuICAgICAgICAgIHdpZHRoOiBfdHJhY2tXaWR0aCArIFwicHhcIixcbiAgICAgICAgICBsZWZ0OiAtX3RyYWNrTGVmdCArIFwicHhcIlxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5jZW50ZXJNb2RlKSB7XG4gICAgICAgICAgdmFyIGN1cnJlbnRXaWR0aCA9IFwiXCIuY29uY2F0KGNoaWxkcmVuV2lkdGhzW190aGlzLnN0YXRlLmN1cnJlbnRTbGlkZV0sIFwicHhcIik7XG4gICAgICAgICAgX3RyYWNrU3R5bGUubGVmdCA9IFwiY2FsYyhcIi5jb25jYXQoX3RyYWNrU3R5bGUubGVmdCwgXCIgKyAoMTAwJSAtIFwiKS5jb25jYXQoY3VycmVudFdpZHRoLCBcIikgLyAyICkgXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHRyYWNrU3R5bGU6IF90cmFja1N0eWxlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNoaWxkcmVuQ291bnQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChfdGhpcy5wcm9wcy5jaGlsZHJlbik7XG5cbiAgICAgIHZhciBzcGVjID0gX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLCB7XG4gICAgICAgIHNsaWRlQ291bnQ6IGNoaWxkcmVuQ291bnRcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgc2xpZGVDb3VudCA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQcmVDbG9uZXMpKHNwZWMpICsgKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFBvc3RDbG9uZXMpKHNwZWMpICsgY2hpbGRyZW5Db3VudDtcbiAgICAgIHZhciB0cmFja1dpZHRoID0gMTAwIC8gX3RoaXMucHJvcHMuc2xpZGVzVG9TaG93ICogc2xpZGVDb3VudDtcbiAgICAgIHZhciBzbGlkZVdpZHRoID0gMTAwIC8gc2xpZGVDb3VudDtcbiAgICAgIHZhciB0cmFja0xlZnQgPSAtc2xpZGVXaWR0aCAqICgoMCwgX2lubmVyU2xpZGVyVXRpbHMuZ2V0UHJlQ2xvbmVzKShzcGVjKSArIF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSkgKiB0cmFja1dpZHRoIC8gMTAwO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMuY2VudGVyTW9kZSkge1xuICAgICAgICB0cmFja0xlZnQgKz0gKDEwMCAtIHNsaWRlV2lkdGggKiB0cmFja1dpZHRoIC8gMTAwKSAvIDI7XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFja1N0eWxlID0ge1xuICAgICAgICB3aWR0aDogdHJhY2tXaWR0aCArIFwiJVwiLFxuICAgICAgICBsZWZ0OiB0cmFja0xlZnQgKyBcIiVcIlxuICAgICAgfTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzbGlkZVdpZHRoOiBzbGlkZVdpZHRoICsgXCIlXCIsXG4gICAgICAgIHRyYWNrU3R5bGU6IHRyYWNrU3R5bGVcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImNoZWNrSW1hZ2VzTG9hZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5zbGljay1zbGlkZSBpbWdcIik7XG4gICAgICB2YXIgaW1hZ2VzQ291bnQgPSBpbWFnZXMubGVuZ3RoLFxuICAgICAgICAgIGxvYWRlZENvdW50ID0gMDtcbiAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoaW1hZ2VzLCBmdW5jdGlvbiAoaW1hZ2UpIHtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICAgIHJldHVybiArK2xvYWRlZENvdW50ICYmIGxvYWRlZENvdW50ID49IGltYWdlc0NvdW50ICYmIF90aGlzLm9uV2luZG93UmVzaXplZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghaW1hZ2Uub25jbGljaykge1xuICAgICAgICAgIGltYWdlLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW1hZ2UucGFyZW50Tm9kZS5mb2N1cygpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHByZXZDbGlja0hhbmRsZXIgPSBpbWFnZS5vbmNsaWNrO1xuXG4gICAgICAgICAgaW1hZ2Uub25jbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHByZXZDbGlja0hhbmRsZXIoKTtcbiAgICAgICAgICAgIGltYWdlLnBhcmVudE5vZGUuZm9jdXMoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpbWFnZS5vbmxvYWQpIHtcbiAgICAgICAgICBpZiAoX3RoaXMucHJvcHMubGF6eUxvYWQpIHtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgX3RoaXMuYWRhcHRIZWlnaHQoKTtcblxuICAgICAgICAgICAgICBfdGhpcy5jYWxsYmFja1RpbWVycy5wdXNoKHNldFRpbWVvdXQoX3RoaXMub25XaW5kb3dSZXNpemVkLCBfdGhpcy5wcm9wcy5zcGVlZCkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gaGFuZGxlcjtcblxuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaGFuZGxlcigpO1xuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkxhenlMb2FkRXJyb3IgJiYgX3RoaXMucHJvcHMub25MYXp5TG9hZEVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwicHJvZ3Jlc3NpdmVMYXp5TG9hZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2xpZGVzVG9Mb2FkID0gW107XG5cbiAgICAgIHZhciBzcGVjID0gX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlKTtcblxuICAgICAgZm9yICh2YXIgaW5kZXggPSBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGU7IGluZGV4IDwgX3RoaXMuc3RhdGUuc2xpZGVDb3VudCArICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQb3N0Q2xvbmVzKShzcGVjKTsgaW5kZXgrKykge1xuICAgICAgICBpZiAoX3RoaXMuc3RhdGUubGF6eUxvYWRlZExpc3QuaW5kZXhPZihpbmRleCkgPCAwKSB7XG4gICAgICAgICAgc2xpZGVzVG9Mb2FkLnB1c2goaW5kZXgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9pbmRleCA9IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSAtIDE7IF9pbmRleCA+PSAtKDAsIF9pbm5lclNsaWRlclV0aWxzLmdldFByZUNsb25lcykoc3BlYyk7IF9pbmRleC0tKSB7XG4gICAgICAgIGlmIChfdGhpcy5zdGF0ZS5sYXp5TG9hZGVkTGlzdC5pbmRleE9mKF9pbmRleCkgPCAwKSB7XG4gICAgICAgICAgc2xpZGVzVG9Mb2FkLnB1c2goX2luZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2xpZGVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhenlMb2FkZWRMaXN0OiBzdGF0ZS5sYXp5TG9hZGVkTGlzdC5jb25jYXQoc2xpZGVzVG9Mb2FkKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkxhenlMb2FkKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25MYXp5TG9hZChzbGlkZXNUb0xvYWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoX3RoaXMubGF6eUxvYWRUaW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX3RoaXMubGF6eUxvYWRUaW1lcik7XG4gICAgICAgICAgZGVsZXRlIF90aGlzLmxhenlMb2FkVGltZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlkZUhhbmRsZXJcIiwgZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICB2YXIgZG9udEFuaW1hdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgYXNOYXZGb3IgPSBfdGhpcyRwcm9wcy5hc05hdkZvcixcbiAgICAgICAgICBiZWZvcmVDaGFuZ2UgPSBfdGhpcyRwcm9wcy5iZWZvcmVDaGFuZ2UsXG4gICAgICAgICAgb25MYXp5TG9hZCA9IF90aGlzJHByb3BzLm9uTGF6eUxvYWQsXG4gICAgICAgICAgc3BlZWQgPSBfdGhpcyRwcm9wcy5zcGVlZCxcbiAgICAgICAgICBhZnRlckNoYW5nZSA9IF90aGlzJHByb3BzLmFmdGVyQ2hhbmdlOyAvLyBjYXB0dXJlIGN1cnJlbnRzbGlkZSBiZWZvcmUgc3RhdGUgaXMgdXBkYXRlZFxuXG4gICAgICB2YXIgY3VycmVudFNsaWRlID0gX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlO1xuXG4gICAgICB2YXIgX3NsaWRlSGFuZGxlciA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5zbGlkZUhhbmRsZXIpKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgIH0sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSwge1xuICAgICAgICB0cmFja1JlZjogX3RoaXMudHJhY2ssXG4gICAgICAgIHVzZUNTUzogX3RoaXMucHJvcHMudXNlQ1NTICYmICFkb250QW5pbWF0ZVxuICAgICAgfSkpLFxuICAgICAgICAgIHN0YXRlID0gX3NsaWRlSGFuZGxlci5zdGF0ZSxcbiAgICAgICAgICBuZXh0U3RhdGUgPSBfc2xpZGVIYW5kbGVyLm5leHRTdGF0ZTtcblxuICAgICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgICAgYmVmb3JlQ2hhbmdlICYmIGJlZm9yZUNoYW5nZShjdXJyZW50U2xpZGUsIHN0YXRlLmN1cnJlbnRTbGlkZSk7XG4gICAgICB2YXIgc2xpZGVzVG9Mb2FkID0gc3RhdGUubGF6eUxvYWRlZExpc3QuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc3RhdGUubGF6eUxvYWRlZExpc3QuaW5kZXhPZih2YWx1ZSkgPCAwO1xuICAgICAgfSk7XG4gICAgICBvbkxhenlMb2FkICYmIHNsaWRlc1RvTG9hZC5sZW5ndGggPiAwICYmIG9uTGF6eUxvYWQoc2xpZGVzVG9Mb2FkKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoc3RhdGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNOYXZGb3IgJiYgYXNOYXZGb3IuaW5uZXJTbGlkZXIuc3RhdGUuY3VycmVudFNsaWRlICE9PSBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGUgJiYgYXNOYXZGb3IuaW5uZXJTbGlkZXIuc2xpZGVIYW5kbGVyKGluZGV4KTtcbiAgICAgICAgaWYgKCFuZXh0U3RhdGUpIHJldHVybjtcbiAgICAgICAgX3RoaXMuYW5pbWF0aW9uRW5kQ2FsbGJhY2sgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgYW5pbWF0aW5nID0gbmV4dFN0YXRlLmFuaW1hdGluZyxcbiAgICAgICAgICAgICAgZmlyc3RCYXRjaCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhuZXh0U3RhdGUsIFtcImFuaW1hdGluZ1wiXSk7XG5cbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZShmaXJzdEJhdGNoLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5jYWxsYmFja1RpbWVycy5wdXNoKHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGFuaW1hdGluZzogYW5pbWF0aW5nXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMTApKTtcblxuICAgICAgICAgICAgYWZ0ZXJDaGFuZ2UgJiYgYWZ0ZXJDaGFuZ2Uoc3RhdGUuY3VycmVudFNsaWRlKTtcbiAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5hbmltYXRpb25FbmRDYWxsYmFjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgc3BlZWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY2hhbmdlU2xpZGVcIiwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBkb250QW5pbWF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG5cbiAgICAgIHZhciBzcGVjID0gX29iamVjdFNwcmVhZCh7fSwgX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlKTtcblxuICAgICAgdmFyIHRhcmdldFNsaWRlID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmNoYW5nZVNsaWRlKShzcGVjLCBvcHRpb25zKTtcbiAgICAgIGlmICh0YXJnZXRTbGlkZSAhPT0gMCAmJiAhdGFyZ2V0U2xpZGUpIHJldHVybjtcblxuICAgICAgaWYgKGRvbnRBbmltYXRlID09PSB0cnVlKSB7XG4gICAgICAgIF90aGlzLnNsaWRlSGFuZGxlcih0YXJnZXRTbGlkZSwgZG9udEFuaW1hdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXMuc2xpZGVIYW5kbGVyKHRhcmdldFNsaWRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJjbGlja0hhbmRsZXJcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChfdGhpcy5jbGlja2FibGUgPT09IGZhbHNlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuY2xpY2thYmxlID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJrZXlIYW5kbGVyXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgZGlyID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmtleUhhbmRsZXIpKGUsIF90aGlzLnByb3BzLmFjY2Vzc2liaWxpdHksIF90aGlzLnByb3BzLnJ0bCk7XG4gICAgICBkaXIgIT09IFwiXCIgJiYgX3RoaXMuY2hhbmdlU2xpZGUoe1xuICAgICAgICBtZXNzYWdlOiBkaXJcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInNlbGVjdEhhbmRsZXJcIiwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIF90aGlzLmNoYW5nZVNsaWRlKG9wdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImRpc2FibGVCb2R5U2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KGUpIHtcbiAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50O1xuICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICB3aW5kb3cub250b3VjaG1vdmUgPSBwcmV2ZW50RGVmYXVsdDtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJlbmFibGVCb2R5U2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5vbnRvdWNobW92ZSA9IG51bGw7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic3dpcGVTdGFydFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLnZlcnRpY2FsU3dpcGluZykge1xuICAgICAgICBfdGhpcy5kaXNhYmxlQm9keVNjcm9sbCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhdGUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuc3dpcGVTdGFydCkoZSwgX3RoaXMucHJvcHMuc3dpcGUsIF90aGlzLnByb3BzLmRyYWdnYWJsZSk7XG4gICAgICBzdGF0ZSAhPT0gXCJcIiAmJiBfdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwic3dpcGVNb3ZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgc3RhdGUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuc3dpcGVNb3ZlKShlLCBfb2JqZWN0U3ByZWFkKHt9LCBfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUsIHtcbiAgICAgICAgdHJhY2tSZWY6IF90aGlzLnRyYWNrLFxuICAgICAgICBsaXN0UmVmOiBfdGhpcy5saXN0LFxuICAgICAgICBzbGlkZUluZGV4OiBfdGhpcy5zdGF0ZS5jdXJyZW50U2xpZGVcbiAgICAgIH0pKTtcbiAgICAgIGlmICghc3RhdGUpIHJldHVybjtcblxuICAgICAgaWYgKHN0YXRlW1wic3dpcGluZ1wiXSkge1xuICAgICAgICBfdGhpcy5jbGlja2FibGUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuc2V0U3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInN3aXBlRW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgc3RhdGUgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuc3dpcGVFbmQpKGUsIF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSwge1xuICAgICAgICB0cmFja1JlZjogX3RoaXMudHJhY2ssXG4gICAgICAgIGxpc3RSZWY6IF90aGlzLmxpc3QsXG4gICAgICAgIHNsaWRlSW5kZXg6IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZVxuICAgICAgfSkpO1xuICAgICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgICAgdmFyIHRyaWdnZXJTbGlkZUhhbmRsZXIgPSBzdGF0ZVtcInRyaWdnZXJTbGlkZUhhbmRsZXJcIl07XG4gICAgICBkZWxldGUgc3RhdGVbXCJ0cmlnZ2VyU2xpZGVIYW5kbGVyXCJdO1xuXG4gICAgICBfdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG5cbiAgICAgIGlmICh0cmlnZ2VyU2xpZGVIYW5kbGVyID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgX3RoaXMuc2xpZGVIYW5kbGVyKHRyaWdnZXJTbGlkZUhhbmRsZXIpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMudmVydGljYWxTd2lwaW5nKSB7XG4gICAgICAgIF90aGlzLmVuYWJsZUJvZHlTY3JvbGwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja1ByZXZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gdGhpcyBhbmQgZmVsbG93IG1ldGhvZHMgYXJlIHdyYXBwZWQgaW4gc2V0VGltZW91dFxuICAgICAgLy8gdG8gbWFrZSBzdXJlIGluaXRpYWxpemUgc2V0U3RhdGUgaGFzIGhhcHBlbmVkIGJlZm9yZVxuICAgICAgLy8gYW55IG9mIHN1Y2ggbWV0aG9kcyBhcmUgY2FsbGVkXG4gICAgICBfdGhpcy5jYWxsYmFja1RpbWVycy5wdXNoKHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuY2hhbmdlU2xpZGUoe1xuICAgICAgICAgIG1lc3NhZ2U6IFwicHJldmlvdXNcIlxuICAgICAgICB9KTtcbiAgICAgIH0sIDApKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja05leHRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbGJhY2tUaW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICBtZXNzYWdlOiBcIm5leHRcIlxuICAgICAgICB9KTtcbiAgICAgIH0sIDApKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzbGlja0dvVG9cIiwgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICB2YXIgZG9udEFuaW1hdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICAgICAgc2xpZGUgPSBOdW1iZXIoc2xpZGUpO1xuICAgICAgaWYgKGlzTmFOKHNsaWRlKSkgcmV0dXJuIFwiXCI7XG5cbiAgICAgIF90aGlzLmNhbGxiYWNrVGltZXJzLnB1c2goc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgbWVzc2FnZTogXCJpbmRleFwiLFxuICAgICAgICAgIGluZGV4OiBzbGlkZSxcbiAgICAgICAgICBjdXJyZW50U2xpZGU6IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZVxuICAgICAgICB9LCBkb250QW5pbWF0ZSk7XG4gICAgICB9LCAwKSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwicGxheVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbmV4dEluZGV4O1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMucnRsKSB7XG4gICAgICAgIG5leHRJbmRleCA9IF90aGlzLnN0YXRlLmN1cnJlbnRTbGlkZSAtIF90aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCgwLCBfaW5uZXJTbGlkZXJVdGlscy5jYW5Hb05leHQpKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSkpKSB7XG4gICAgICAgICAgbmV4dEluZGV4ID0gX3RoaXMuc3RhdGUuY3VycmVudFNsaWRlICsgX3RoaXMucHJvcHMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnNsaWRlSGFuZGxlcihuZXh0SW5kZXgpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImF1dG9QbGF5XCIsIGZ1bmN0aW9uIChwbGF5VHlwZSkge1xuICAgICAgaWYgKF90aGlzLmF1dG9wbGF5VGltZXIpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChfdGhpcy5hdXRvcGxheVRpbWVyKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGF1dG9wbGF5aW5nID0gX3RoaXMuc3RhdGUuYXV0b3BsYXlpbmc7XG5cbiAgICAgIGlmIChwbGF5VHlwZSA9PT0gXCJ1cGRhdGVcIikge1xuICAgICAgICBpZiAoYXV0b3BsYXlpbmcgPT09IFwiaG92ZXJlZFwiIHx8IGF1dG9wbGF5aW5nID09PSBcImZvY3VzZWRcIiB8fCBhdXRvcGxheWluZyA9PT0gXCJwYXVzZWRcIikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwbGF5VHlwZSA9PT0gXCJsZWF2ZVwiKSB7XG4gICAgICAgIGlmIChhdXRvcGxheWluZyA9PT0gXCJwYXVzZWRcIiB8fCBhdXRvcGxheWluZyA9PT0gXCJmb2N1c2VkXCIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGxheVR5cGUgPT09IFwiYmx1clwiKSB7XG4gICAgICAgIGlmIChhdXRvcGxheWluZyA9PT0gXCJwYXVzZWRcIiB8fCBhdXRvcGxheWluZyA9PT0gXCJob3ZlcmVkXCIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgX3RoaXMuYXV0b3BsYXlUaW1lciA9IHNldEludGVydmFsKF90aGlzLnBsYXksIF90aGlzLnByb3BzLmF1dG9wbGF5U3BlZWQgKyA1MCk7XG5cbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgYXV0b3BsYXlpbmc6IFwicGxheWluZ1wiXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJwYXVzZVwiLCBmdW5jdGlvbiAocGF1c2VUeXBlKSB7XG4gICAgICBpZiAoX3RoaXMuYXV0b3BsYXlUaW1lcikge1xuICAgICAgICBjbGVhckludGVydmFsKF90aGlzLmF1dG9wbGF5VGltZXIpO1xuICAgICAgICBfdGhpcy5hdXRvcGxheVRpbWVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGF1dG9wbGF5aW5nID0gX3RoaXMuc3RhdGUuYXV0b3BsYXlpbmc7XG5cbiAgICAgIGlmIChwYXVzZVR5cGUgPT09IFwicGF1c2VkXCIpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGF1dG9wbGF5aW5nOiBcInBhdXNlZFwiXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChwYXVzZVR5cGUgPT09IFwiZm9jdXNlZFwiKSB7XG4gICAgICAgIGlmIChhdXRvcGxheWluZyA9PT0gXCJob3ZlcmVkXCIgfHwgYXV0b3BsYXlpbmcgPT09IFwicGxheWluZ1wiKSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgYXV0b3BsYXlpbmc6IFwiZm9jdXNlZFwiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHBhdXNlVHlwZSAgaXMgJ2hvdmVyZWQnXG4gICAgICAgIGlmIChhdXRvcGxheWluZyA9PT0gXCJwbGF5aW5nXCIpIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBhdXRvcGxheWluZzogXCJob3ZlcmVkXCJcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm9uRG90c092ZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLnBhdXNlKFwiaG92ZXJlZFwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvbkRvdHNMZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMuYXV0b3BsYXkgJiYgX3RoaXMuc3RhdGUuYXV0b3BsYXlpbmcgPT09IFwiaG92ZXJlZFwiICYmIF90aGlzLmF1dG9QbGF5KFwibGVhdmVcIik7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwib25UcmFja092ZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLnBhdXNlKFwiaG92ZXJlZFwiKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJvblRyYWNrTGVhdmVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLmF1dG9wbGF5ICYmIF90aGlzLnN0YXRlLmF1dG9wbGF5aW5nID09PSBcImhvdmVyZWRcIiAmJiBfdGhpcy5hdXRvUGxheShcImxlYXZlXCIpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm9uU2xpZGVGb2N1c1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMuYXV0b3BsYXkgJiYgX3RoaXMucGF1c2UoXCJmb2N1c2VkXCIpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm9uU2xpZGVCbHVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5hdXRvcGxheSAmJiBfdGhpcy5zdGF0ZS5hdXRvcGxheWluZyA9PT0gXCJmb2N1c2VkXCIgJiYgX3RoaXMuYXV0b1BsYXkoXCJibHVyXCIpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcInJlbmRlclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKFwic2xpY2stc2xpZGVyXCIsIF90aGlzLnByb3BzLmNsYXNzTmFtZSwge1xuICAgICAgICBcInNsaWNrLXZlcnRpY2FsXCI6IF90aGlzLnByb3BzLnZlcnRpY2FsLFxuICAgICAgICBcInNsaWNrLWluaXRpYWxpemVkXCI6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgc3BlYyA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZSk7XG5cbiAgICAgIHZhciB0cmFja1Byb3BzID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmV4dHJhY3RPYmplY3QpKHNwZWMsIFtcImZhZGVcIiwgXCJjc3NFYXNlXCIsIFwic3BlZWRcIiwgXCJpbmZpbml0ZVwiLCBcImNlbnRlck1vZGVcIiwgXCJmb2N1c09uU2VsZWN0XCIsIFwiY3VycmVudFNsaWRlXCIsIFwibGF6eUxvYWRcIiwgXCJsYXp5TG9hZGVkTGlzdFwiLCBcInJ0bFwiLCBcInNsaWRlV2lkdGhcIiwgXCJzbGlkZUhlaWdodFwiLCBcImxpc3RIZWlnaHRcIiwgXCJ2ZXJ0aWNhbFwiLCBcInNsaWRlc1RvU2hvd1wiLCBcInNsaWRlc1RvU2Nyb2xsXCIsIFwic2xpZGVDb3VudFwiLCBcInRyYWNrU3R5bGVcIiwgXCJ2YXJpYWJsZVdpZHRoXCIsIFwidW5zbGlja1wiLCBcImNlbnRlclBhZGRpbmdcIl0pO1xuICAgICAgdmFyIHBhdXNlT25Ib3ZlciA9IF90aGlzLnByb3BzLnBhdXNlT25Ib3ZlcjtcbiAgICAgIHRyYWNrUHJvcHMgPSBfb2JqZWN0U3ByZWFkKHt9LCB0cmFja1Byb3BzLCB7XG4gICAgICAgIG9uTW91c2VFbnRlcjogcGF1c2VPbkhvdmVyID8gX3RoaXMub25UcmFja092ZXIgOiBudWxsLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHBhdXNlT25Ib3ZlciA/IF90aGlzLm9uVHJhY2tMZWF2ZSA6IG51bGwsXG4gICAgICAgIG9uTW91c2VPdmVyOiBwYXVzZU9uSG92ZXIgPyBfdGhpcy5vblRyYWNrT3ZlciA6IG51bGwsXG4gICAgICAgIGZvY3VzT25TZWxlY3Q6IF90aGlzLnByb3BzLmZvY3VzT25TZWxlY3QgPyBfdGhpcy5zZWxlY3RIYW5kbGVyIDogbnVsbFxuICAgICAgfSk7XG4gICAgICB2YXIgZG90cztcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmRvdHMgPT09IHRydWUgJiYgX3RoaXMuc3RhdGUuc2xpZGVDb3VudCA+PSBfdGhpcy5wcm9wcy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgdmFyIGRvdFByb3BzID0gKDAsIF9pbm5lclNsaWRlclV0aWxzLmV4dHJhY3RPYmplY3QpKHNwZWMsIFtcImRvdHNDbGFzc1wiLCBcInNsaWRlQ291bnRcIiwgXCJzbGlkZXNUb1Nob3dcIiwgXCJjdXJyZW50U2xpZGVcIiwgXCJzbGlkZXNUb1Njcm9sbFwiLCBcImNsaWNrSGFuZGxlclwiLCBcImNoaWxkcmVuXCIsIFwiY3VzdG9tUGFnaW5nXCIsIFwiaW5maW5pdGVcIiwgXCJhcHBlbmREb3RzXCJdKTtcbiAgICAgICAgdmFyIHBhdXNlT25Eb3RzSG92ZXIgPSBfdGhpcy5wcm9wcy5wYXVzZU9uRG90c0hvdmVyO1xuICAgICAgICBkb3RQcm9wcyA9IF9vYmplY3RTcHJlYWQoe30sIGRvdFByb3BzLCB7XG4gICAgICAgICAgY2xpY2tIYW5kbGVyOiBfdGhpcy5jaGFuZ2VTbGlkZSxcbiAgICAgICAgICBvbk1vdXNlRW50ZXI6IHBhdXNlT25Eb3RzSG92ZXIgPyBfdGhpcy5vbkRvdHNMZWF2ZSA6IG51bGwsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IHBhdXNlT25Eb3RzSG92ZXIgPyBfdGhpcy5vbkRvdHNPdmVyIDogbnVsbCxcbiAgICAgICAgICBvbk1vdXNlTGVhdmU6IHBhdXNlT25Eb3RzSG92ZXIgPyBfdGhpcy5vbkRvdHNMZWF2ZSA6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIGRvdHMgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9kb3RzLkRvdHMsIGRvdFByb3BzKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByZXZBcnJvdywgbmV4dEFycm93O1xuICAgICAgdmFyIGFycm93UHJvcHMgPSAoMCwgX2lubmVyU2xpZGVyVXRpbHMuZXh0cmFjdE9iamVjdCkoc3BlYywgW1wiaW5maW5pdGVcIiwgXCJjZW50ZXJNb2RlXCIsIFwiY3VycmVudFNsaWRlXCIsIFwic2xpZGVDb3VudFwiLCBcInNsaWRlc1RvU2hvd1wiLCBcInByZXZBcnJvd1wiLCBcIm5leHRBcnJvd1wiXSk7XG4gICAgICBhcnJvd1Byb3BzLmNsaWNrSGFuZGxlciA9IF90aGlzLmNoYW5nZVNsaWRlO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMuYXJyb3dzKSB7XG4gICAgICAgIHByZXZBcnJvdyA9IF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2Fycm93cy5QcmV2QXJyb3csIGFycm93UHJvcHMpO1xuICAgICAgICBuZXh0QXJyb3cgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9hcnJvd3MuTmV4dEFycm93LCBhcnJvd1Byb3BzKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHZlcnRpY2FsSGVpZ2h0U3R5bGUgPSBudWxsO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMudmVydGljYWwpIHtcbiAgICAgICAgdmVydGljYWxIZWlnaHRTdHlsZSA9IHtcbiAgICAgICAgICBoZWlnaHQ6IF90aGlzLnN0YXRlLmxpc3RIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNlbnRlclBhZGRpbmdTdHlsZSA9IG51bGw7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICBjZW50ZXJQYWRkaW5nU3R5bGUgPSB7XG4gICAgICAgICAgICBwYWRkaW5nOiBcIjBweCBcIiArIF90aGlzLnByb3BzLmNlbnRlclBhZGRpbmdcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNlbnRlclBhZGRpbmdTdHlsZSA9IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IF90aGlzLnByb3BzLmNlbnRlclBhZGRpbmcgKyBcIiAwcHhcIlxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGxpc3RTdHlsZSA9IF9vYmplY3RTcHJlYWQoe30sIHZlcnRpY2FsSGVpZ2h0U3R5bGUsIGNlbnRlclBhZGRpbmdTdHlsZSk7XG5cbiAgICAgIHZhciB0b3VjaE1vdmUgPSBfdGhpcy5wcm9wcy50b3VjaE1vdmU7XG4gICAgICB2YXIgbGlzdFByb3BzID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwic2xpY2stbGlzdFwiLFxuICAgICAgICBzdHlsZTogbGlzdFN0eWxlLFxuICAgICAgICBvbkNsaWNrOiBfdGhpcy5jbGlja0hhbmRsZXIsXG4gICAgICAgIG9uTW91c2VEb3duOiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZVN0YXJ0IDogbnVsbCxcbiAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzLnN0YXRlLmRyYWdnaW5nICYmIHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlTW92ZSA6IG51bGwsXG4gICAgICAgIG9uTW91c2VVcDogdG91Y2hNb3ZlID8gX3RoaXMuc3dpcGVFbmQgOiBudWxsLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IF90aGlzLnN0YXRlLmRyYWdnaW5nICYmIHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlRW5kIDogbnVsbCxcbiAgICAgICAgb25Ub3VjaFN0YXJ0OiB0b3VjaE1vdmUgPyBfdGhpcy5zd2lwZVN0YXJ0IDogbnVsbCxcbiAgICAgICAgb25Ub3VjaE1vdmU6IF90aGlzLnN0YXRlLmRyYWdnaW5nICYmIHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlTW92ZSA6IG51bGwsXG4gICAgICAgIG9uVG91Y2hFbmQ6IHRvdWNoTW92ZSA/IF90aGlzLnN3aXBlRW5kIDogbnVsbCxcbiAgICAgICAgb25Ub3VjaENhbmNlbDogX3RoaXMuc3RhdGUuZHJhZ2dpbmcgJiYgdG91Y2hNb3ZlID8gX3RoaXMuc3dpcGVFbmQgOiBudWxsLFxuICAgICAgICBvbktleURvd246IF90aGlzLnByb3BzLmFjY2Vzc2liaWxpdHkgPyBfdGhpcy5rZXlIYW5kbGVyIDogbnVsbFxuICAgICAgfTtcbiAgICAgIHZhciBpbm5lclNsaWRlclByb3BzID0ge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgZGlyOiBcImx0clwiXG4gICAgICB9O1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMudW5zbGljaykge1xuICAgICAgICBsaXN0UHJvcHMgPSB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcInNsaWNrLWxpc3RcIlxuICAgICAgICB9O1xuICAgICAgICBpbm5lclNsaWRlclByb3BzID0ge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIGlubmVyU2xpZGVyUHJvcHMsICFfdGhpcy5wcm9wcy51bnNsaWNrID8gcHJldkFycm93IDogXCJcIiwgX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgICAgIHJlZjogX3RoaXMubGlzdFJlZkhhbmRsZXJcbiAgICAgIH0sIGxpc3RQcm9wcyksIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3RyYWNrLlRyYWNrLCBfZXh0ZW5kcyh7XG4gICAgICAgIHJlZjogX3RoaXMudHJhY2tSZWZIYW5kbGVyXG4gICAgICB9LCB0cmFja1Byb3BzKSwgX3RoaXMucHJvcHMuY2hpbGRyZW4pKSwgIV90aGlzLnByb3BzLnVuc2xpY2sgPyBuZXh0QXJyb3cgOiBcIlwiLCAhX3RoaXMucHJvcHMudW5zbGljayA/IGRvdHMgOiBcIlwiKTtcbiAgICB9KTtcblxuICAgIF90aGlzLmxpc3QgPSBudWxsO1xuICAgIF90aGlzLnRyYWNrID0gbnVsbDtcbiAgICBfdGhpcy5zdGF0ZSA9IF9vYmplY3RTcHJlYWQoe30sIF9pbml0aWFsU3RhdGUuZGVmYXVsdCwge1xuICAgICAgY3VycmVudFNsaWRlOiBfdGhpcy5wcm9wcy5pbml0aWFsU2xpZGUsXG4gICAgICBzbGlkZUNvdW50OiBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChfdGhpcy5wcm9wcy5jaGlsZHJlbilcbiAgICB9KTtcbiAgICBfdGhpcy5jYWxsYmFja1RpbWVycyA9IFtdO1xuICAgIF90aGlzLmNsaWNrYWJsZSA9IHRydWU7XG4gICAgX3RoaXMuZGVib3VuY2VkUmVzaXplID0gbnVsbDtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gSW5uZXJTbGlkZXI7XG59KF9yZWFjdC5kZWZhdWx0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHMuSW5uZXJTbGlkZXIgPSBJbm5lclNsaWRlcjsiLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIiksbj1yZXF1aXJlKFwib2JqZWN0LWFzc2lnblwiKSxyPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gdShhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn1pZighYWEpdGhyb3cgRXJyb3IodSgyMjcpKTtcbmZ1bmN0aW9uIGJhKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBkYT0hMSxlYT1udWxsLGZhPSExLGhhPW51bGwsaWE9e29uRXJyb3I6ZnVuY3Rpb24oYSl7ZGE9ITA7ZWE9YX19O2Z1bmN0aW9uIGphKGEsYixjLGQsZSxmLGcsaCxrKXtkYT0hMTtlYT1udWxsO2JhLmFwcGx5KGlhLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga2EoYSxiLGMsZCxlLGYsZyxoLGspe2phLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihkYSl7aWYoZGEpe3ZhciBsPWVhO2RhPSExO2VhPW51bGx9ZWxzZSB0aHJvdyBFcnJvcih1KDE5OCkpO2ZhfHwoZmE9ITAsaGE9bCl9fXZhciBsYT1udWxsLG1hPW51bGwsbmE9bnVsbDtcbmZ1bmN0aW9uIG9hKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1uYShjKTtrYShkLGIsdm9pZCAwLGEpO2EuY3VycmVudFRhcmdldD1udWxsfXZhciBwYT1udWxsLHFhPXt9O1xuZnVuY3Rpb24gcmEoKXtpZihwYSlmb3IodmFyIGEgaW4gcWEpe3ZhciBiPXFhW2FdLGM9cGEuaW5kZXhPZihhKTtpZighKC0xPGMpKXRocm93IEVycm9yKHUoOTYsYSkpO2lmKCFzYVtjXSl7aWYoIWIuZXh0cmFjdEV2ZW50cyl0aHJvdyBFcnJvcih1KDk3LGEpKTtzYVtjXT1iO2M9Yi5ldmVudFR5cGVzO2Zvcih2YXIgZCBpbiBjKXt2YXIgZT12b2lkIDA7dmFyIGY9Y1tkXSxnPWIsaD1kO2lmKHRhLmhhc093blByb3BlcnR5KGgpKXRocm93IEVycm9yKHUoOTksaCkpO3RhW2hdPWY7dmFyIGs9Zi5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihrKXtmb3IoZSBpbiBrKWsuaGFzT3duUHJvcGVydHkoZSkmJnVhKGtbZV0sZyxoKTtlPSEwfWVsc2UgZi5yZWdpc3RyYXRpb25OYW1lPyh1YShmLnJlZ2lzdHJhdGlvbk5hbWUsZyxoKSxlPSEwKTplPSExO2lmKCFlKXRocm93IEVycm9yKHUoOTgsZCxhKSk7fX19fVxuZnVuY3Rpb24gdWEoYSxiLGMpe2lmKHZhW2FdKXRocm93IEVycm9yKHUoMTAwLGEpKTt2YVthXT1iO3dhW2FdPWIuZXZlbnRUeXBlc1tjXS5kZXBlbmRlbmNpZXN9dmFyIHNhPVtdLHRhPXt9LHZhPXt9LHdhPXt9O2Z1bmN0aW9uIHhhKGEpe3ZhciBiPSExLGM7Zm9yKGMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD1hW2NdO2lmKCFxYS5oYXNPd25Qcm9wZXJ0eShjKXx8cWFbY10hPT1kKXtpZihxYVtjXSl0aHJvdyBFcnJvcih1KDEwMixjKSk7cWFbY109ZDtiPSEwfX1iJiZyYSgpfXZhciB5YT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksemE9bnVsbCxBYT1udWxsLEJhPW51bGw7XG5mdW5jdGlvbiBDYShhKXtpZihhPW1hKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgemEpdGhyb3cgRXJyb3IodSgyODApKTt2YXIgYj1hLnN0YXRlTm9kZTtiJiYoYj1sYShiKSx6YShhLnN0YXRlTm9kZSxhLnR5cGUsYikpfX1mdW5jdGlvbiBEYShhKXtBYT9CYT9CYS5wdXNoKGEpOkJhPVthXTpBYT1hfWZ1bmN0aW9uIEVhKCl7aWYoQWEpe3ZhciBhPUFhLGI9QmE7QmE9QWE9bnVsbDtDYShhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspQ2EoYlthXSl9fWZ1bmN0aW9uIEZhKGEsYil7cmV0dXJuIGEoYil9ZnVuY3Rpb24gR2EoYSxiLGMsZCxlKXtyZXR1cm4gYShiLGMsZCxlKX1mdW5jdGlvbiBIYSgpe312YXIgSWE9RmEsSmE9ITEsS2E9ITE7ZnVuY3Rpb24gTGEoKXtpZihudWxsIT09QWF8fG51bGwhPT1CYSlIYSgpLEVhKCl9XG5mdW5jdGlvbiBNYShhLGIsYyl7aWYoS2EpcmV0dXJuIGEoYixjKTtLYT0hMDt0cnl7cmV0dXJuIElhKGEsYixjKX1maW5hbGx5e0thPSExLExhKCl9fXZhciBOYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sT2E9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxQYT17fSxRYT17fTtcbmZ1bmN0aW9uIFJhKGEpe2lmKE9hLmNhbGwoUWEsYSkpcmV0dXJuITA7aWYoT2EuY2FsbChQYSxhKSlyZXR1cm4hMTtpZihOYS50ZXN0KGEpKXJldHVybiBRYVthXT0hMDtQYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiBTYShhLGIsYyxkKXtpZihudWxsIT09YyYmMD09PWMudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlIFwiYm9vbGVhblwiOmlmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpcmV0dXJuIWMuYWNjZXB0c0Jvb2xlYW5zO2E9YS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7cmV0dXJuXCJkYXRhLVwiIT09YSYmXCJhcmlhLVwiIT09YTtkZWZhdWx0OnJldHVybiExfX1cbmZ1bmN0aW9uIFRhKGEsYixjLGQpe2lmKG51bGw9PT1ifHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGJ8fFNhKGEsYixjLGQpKXJldHVybiEwO2lmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpc3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiFiO2Nhc2UgNDpyZXR1cm4hMT09PWI7Y2FzZSA1OnJldHVybiBpc05hTihiKTtjYXNlIDY6cmV0dXJuIGlzTmFOKGIpfHwxPmJ9cmV0dXJuITF9ZnVuY3Rpb24gdihhLGIsYyxkLGUsZil7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWZ9dmFyIEM9e307XG5cImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwwLCExLGEsbnVsbCwhMSl9KTtbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiY2xhc3NOYW1lXCIsXCJjbGFzc1wiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWFbMF07Q1tiXT1uZXcgdihiLDEsITEsYVsxXSxudWxsLCExKX0pO1tcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwyLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pO1xuW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwyLCExLGEsbnVsbCwhMSl9KTtcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSwzLCEwLGEsbnVsbCwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0NbYV09bmV3IHYoYSw0LCExLGEsbnVsbCwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7Q1thXT1uZXcgdihhLDYsITEsYSxudWxsLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7Q1thXT1uZXcgdihhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSk7dmFyIFVhPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24gVmEoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoVWEsXG5WYSk7Q1tiXT1uZXcgdihiLDEsITEsYSxudWxsLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKFVhLFZhKTtDW2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKFVhLFZhKTtDW2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7Q1thXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSk7XG5DLnhsaW5rSHJlZj1uZXcgdihcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITApO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7Q1thXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITApfSk7dmFyIFdhPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1dhLmhhc093blByb3BlcnR5KFwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlclwiKXx8KFdhLlJlYWN0Q3VycmVudERpc3BhdGNoZXI9e2N1cnJlbnQ6bnVsbH0pO1dhLmhhc093blByb3BlcnR5KFwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWdcIil8fChXYS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZz17c3VzcGVuc2U6bnVsbH0pO1xuZnVuY3Rpb24gWGEoYSxiLGMsZCl7dmFyIGU9Qy5oYXNPd25Qcm9wZXJ0eShiKT9DW2JdOm51bGw7dmFyIGY9bnVsbCE9PWU/MD09PWUudHlwZTpkPyExOiEoMjxiLmxlbmd0aCl8fFwib1wiIT09YlswXSYmXCJPXCIhPT1iWzBdfHxcIm5cIiE9PWJbMV0mJlwiTlwiIT09YlsxXT8hMTohMDtmfHwoVGEoYixjLGUsZCkmJihjPW51bGwpLGR8fG51bGw9PT1lP1JhKGIpJiYobnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6YS5zZXRBdHRyaWJ1dGUoYixcIlwiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOlwiXCI6YzooYj1lLmF0dHJpYnV0ZU5hbWUsZD1lLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTooZT1lLnR5cGUsYz0zPT09ZXx8ND09PWUmJiEwPT09Yz9cIlwiOlwiXCIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKSl9XG52YXIgWWE9L14oLiopW1xcXFxcXC9dLyxFPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsWmE9RT9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMywkYT1FP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsYWI9RT9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsYmI9RT9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsY2I9RT9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsZGI9RT9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksZWI9RT9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxmYj1FP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsZ2I9RT9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsaGI9RT9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMsaWI9RT9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTpcbjYwMTIwLGpiPUU/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsa2I9RT9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixsYj1FP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSxtYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gbmIoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPW1iJiZhW21iXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfWZ1bmN0aW9uIG9iKGEpe2lmKC0xPT09YS5fc3RhdHVzKXthLl9zdGF0dXM9MDt2YXIgYj1hLl9jdG9yO2I9YigpO2EuX3Jlc3VsdD1iO2IudGhlbihmdW5jdGlvbihiKXswPT09YS5fc3RhdHVzJiYoYj1iLmRlZmF1bHQsYS5fc3RhdHVzPTEsYS5fcmVzdWx0PWIpfSxmdW5jdGlvbihiKXswPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTIsYS5fcmVzdWx0PWIpfSl9fVxuZnVuY3Rpb24gcGIoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSBhYjpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSAkYTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgY2I6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgYmI6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBoYjpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBpYjpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBlYjpyZXR1cm5cIkNvbnRleHQuQ29uc3VtZXJcIjtjYXNlIGRiOnJldHVyblwiQ29udGV4dC5Qcm92aWRlclwiO2Nhc2UgZ2I6dmFyIGI9YS5yZW5kZXI7Yj1iLmRpc3BsYXlOYW1lfHxiLm5hbWV8fFwiXCI7cmV0dXJuIGEuZGlzcGxheU5hbWV8fChcIlwiIT09Yj9cIkZvcndhcmRSZWYoXCIrYitcIilcIjpcblwiRm9yd2FyZFJlZlwiKTtjYXNlIGpiOnJldHVybiBwYihhLnR5cGUpO2Nhc2UgbGI6cmV0dXJuIHBiKGEucmVuZGVyKTtjYXNlIGtiOmlmKGE9MT09PWEuX3N0YXR1cz9hLl9yZXN1bHQ6bnVsbClyZXR1cm4gcGIoYSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcWIoYSl7dmFyIGI9XCJcIjtkb3thOnN3aXRjaChhLnRhZyl7Y2FzZSAzOmNhc2UgNDpjYXNlIDY6Y2FzZSA3OmNhc2UgMTA6Y2FzZSA5OnZhciBjPVwiXCI7YnJlYWsgYTtkZWZhdWx0OnZhciBkPWEuX2RlYnVnT3duZXIsZT1hLl9kZWJ1Z1NvdXJjZSxmPXBiKGEudHlwZSk7Yz1udWxsO2QmJihjPXBiKGQudHlwZSkpO2Q9ZjtmPVwiXCI7ZT9mPVwiIChhdCBcIitlLmZpbGVOYW1lLnJlcGxhY2UoWWEsXCJcIikrXCI6XCIrZS5saW5lTnVtYmVyK1wiKVwiOmMmJihmPVwiIChjcmVhdGVkIGJ5IFwiK2MrXCIpXCIpO2M9XCJcXG4gICAgaW4gXCIrKGR8fFwiVW5rbm93blwiKStmfWIrPWM7YT1hLnJldHVybn13aGlsZShhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHJiKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSBcImJvb2xlYW5cIjpjYXNlIFwibnVtYmVyXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJzdHJpbmdcIjpjYXNlIFwidW5kZWZpbmVkXCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiBzYihhKXt2YXIgYj1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWEudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWJ8fFwicmFkaW9cIj09PWIpfVxuZnVuY3Rpb24gdGIoYSl7dmFyIGI9c2IoYSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxiKSxkPVwiXCIrYVtiXTtpZighYS5oYXNPd25Qcm9wZXJ0eShiKSYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5nZXQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnNldCl7dmFyIGU9Yy5nZXQsZj1jLnNldDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGEpe2Q9XCJcIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSk7cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe2Q9XCJcIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9XG5udWxsO2RlbGV0ZSBhW2JdfX19fWZ1bmN0aW9uIHhiKGEpe2EuX3ZhbHVlVHJhY2tlcnx8KGEuX3ZhbHVlVHJhY2tlcj10YihhKSl9ZnVuY3Rpb24geWIoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9YS5fdmFsdWVUcmFja2VyO2lmKCFiKXJldHVybiEwO3ZhciBjPWIuZ2V0VmFsdWUoKTt2YXIgZD1cIlwiO2EmJihkPXNiKGEpP2EuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6YS52YWx1ZSk7YT1kO3JldHVybiBhIT09Yz8oYi5zZXRWYWx1ZShhKSwhMCk6ITF9ZnVuY3Rpb24gemIoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIG4oe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfVxuZnVuY3Rpb24gQWIoYSxiKXt2YXIgYz1udWxsPT1iLmRlZmF1bHRWYWx1ZT9cIlwiOmIuZGVmYXVsdFZhbHVlLGQ9bnVsbCE9Yi5jaGVja2VkP2IuY2hlY2tlZDpiLmRlZmF1bHRDaGVja2VkO2M9cmIobnVsbCE9Yi52YWx1ZT9iLnZhbHVlOmMpO2EuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6ZCxpbml0aWFsVmFsdWU6Yyxjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PWIudHlwZXx8XCJyYWRpb1wiPT09Yi50eXBlP251bGwhPWIuY2hlY2tlZDpudWxsIT1iLnZhbHVlfX1mdW5jdGlvbiBCYihhLGIpe2I9Yi5jaGVja2VkO251bGwhPWImJlhhKGEsXCJjaGVja2VkXCIsYiwhMSl9XG5mdW5jdGlvbiBDYihhLGIpe0JiKGEsYik7dmFyIGM9cmIoYi52YWx1ZSksZD1iLnR5cGU7aWYobnVsbCE9YylpZihcIm51bWJlclwiPT09ZCl7aWYoMD09PWMmJlwiXCI9PT1hLnZhbHVlfHxhLnZhbHVlIT1jKWEudmFsdWU9XCJcIitjfWVsc2UgYS52YWx1ZSE9PVwiXCIrYyYmKGEudmFsdWU9XCJcIitjKTtlbHNlIGlmKFwic3VibWl0XCI9PT1kfHxcInJlc2V0XCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO3JldHVybn1iLmhhc093blByb3BlcnR5KFwidmFsdWVcIik/RGIoYSxiLnR5cGUsYyk6Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYmRGIoYSxiLnR5cGUscmIoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9XG5mdW5jdGlvbiBFYihhLGIsYyl7aWYoYi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpfHxiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpKXt2YXIgZD1iLnR5cGU7aWYoIShcInN1Ym1pdFwiIT09ZCYmXCJyZXNldFwiIT09ZHx8dm9pZCAwIT09Yi52YWx1ZSYmbnVsbCE9PWIudmFsdWUpKXJldHVybjtiPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtjfHxiPT09YS52YWx1ZXx8KGEudmFsdWU9Yik7YS5kZWZhdWx0VmFsdWU9Yn1jPWEubmFtZTtcIlwiIT09YyYmKGEubmFtZT1cIlwiKTthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gRGIoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxhLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfWZ1bmN0aW9uIEZiKGEpe3ZhciBiPVwiXCI7YWEuQ2hpbGRyZW4uZm9yRWFjaChhLGZ1bmN0aW9uKGEpe251bGwhPWEmJihiKz1hKX0pO3JldHVybiBifWZ1bmN0aW9uIEdiKGEsYil7YT1uKHtjaGlsZHJlbjp2b2lkIDB9LGIpO2lmKGI9RmIoYi5jaGlsZHJlbikpYS5jaGlsZHJlbj1iO3JldHVybiBhfVxuZnVuY3Rpb24gSGIoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK3JiKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBJYihhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IodSg5MSkpO3JldHVybiBuKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIEpiKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuY2hpbGRyZW47Yj1iLmRlZmF1bHRWYWx1ZTtpZihudWxsIT1jKXtpZihudWxsIT1iKXRocm93IEVycm9yKHUoOTIpKTtpZihBcnJheS5pc0FycmF5KGMpKXtpZighKDE+PWMubGVuZ3RoKSl0aHJvdyBFcnJvcih1KDkzKSk7Yz1jWzBdfWI9Y31udWxsPT1iJiYoYj1cIlwiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6cmIoYyl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1yYihiLnZhbHVlKSxkPXJiKGIuZGVmYXVsdFZhbHVlKTtudWxsIT1jJiYoYz1cIlwiK2MsYyE9PWEudmFsdWUmJihhLnZhbHVlPWMpLG51bGw9PWIuZGVmYXVsdFZhbHVlJiZhLmRlZmF1bHRWYWx1ZSE9PWMmJihhLmRlZmF1bHRWYWx1ZT1jKSk7bnVsbCE9ZCYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrZCl9ZnVuY3Rpb24gTGIoYSl7dmFyIGI9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PWImJm51bGwhPT1iJiYoYS52YWx1ZT1iKX12YXIgTWI9e2h0bWw6XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsbWF0aG1sOlwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiLHN2ZzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9O1xuZnVuY3Rpb24gTmIoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1mdW5jdGlvbiBPYihhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/TmIoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgUGIsUWI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKGEubmFtZXNwYWNlVVJJIT09TWIuc3ZnfHxcImlubmVySFRNTFwiaW4gYSlhLmlubmVySFRNTD1iO2Vsc2V7UGI9UGJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7UGIuaW5uZXJIVE1MPVwiPHN2Zz5cIitiLnZhbHVlT2YoKS50b1N0cmluZygpK1wiPC9zdmc+XCI7Zm9yKGI9UGIuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2IuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpfX0pO1xuZnVuY3Rpb24gUmIoYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9YjtyZXR1cm59fWEudGV4dENvbnRlbnQ9Yn1mdW5jdGlvbiBTYihhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBUYj17YW5pbWF0aW9uZW5kOlNiKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlNiKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6U2IoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6U2IoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxVYj17fSxWYj17fTtcbnlhJiYoVmI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgVGIuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgVGIuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgVGIuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgVGIudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBXYihhKXtpZihVYlthXSlyZXR1cm4gVWJbYV07aWYoIVRiW2FdKXJldHVybiBhO3ZhciBiPVRiW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFZiKXJldHVybiBVYlthXT1iW2NdO3JldHVybiBhfVxudmFyIFhiPVdiKFwiYW5pbWF0aW9uZW5kXCIpLFliPVdiKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLFpiPVdiKFwiYW5pbWF0aW9uc3RhcnRcIiksJGI9V2IoXCJ0cmFuc2l0aW9uZW5kXCIpLGFjPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxiYz1uZXcgKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwKTtmdW5jdGlvbiBjYyhhKXt2YXIgYj1iYy5nZXQoYSk7dm9pZCAwPT09YiYmKGI9bmV3IE1hcCxiYy5zZXQoYSxiKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBkYyhhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZWZmZWN0VGFnJjEwMjYpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBlYyhhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIGZjKGEpe2lmKGRjKGEpIT09YSl0aHJvdyBFcnJvcih1KDE4OCkpO31cbmZ1bmN0aW9uIGdjKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPWRjKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHUoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIGZjKGUpLGE7aWYoZj09PWQpcmV0dXJuIGZjKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IodSgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcih1KDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHUoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcih1KDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gaGMoYSl7YT1nYyhhKTtpZighYSlyZXR1cm4gbnVsbDtmb3IodmFyIGI9YTs7KXtpZig1PT09Yi50YWd8fDY9PT1iLnRhZylyZXR1cm4gYjtpZihiLmNoaWxkKWIuY2hpbGQucmV0dXJuPWIsYj1iLmNoaWxkO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDshYi5zaWJsaW5nOyl7aWYoIWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGljKGEsYil7aWYobnVsbD09Yil0aHJvdyBFcnJvcih1KDMwKSk7aWYobnVsbD09YSlyZXR1cm4gYjtpZihBcnJheS5pc0FycmF5KGEpKXtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBhLnB1c2guYXBwbHkoYSxiKSxhO2EucHVzaChiKTtyZXR1cm4gYX1yZXR1cm4gQXJyYXkuaXNBcnJheShiKT9bYV0uY29uY2F0KGIpOlthLGJdfWZ1bmN0aW9uIGpjKGEsYixjKXtBcnJheS5pc0FycmF5KGEpP2EuZm9yRWFjaChiLGMpOmEmJmIuY2FsbChjLGEpfXZhciBrYz1udWxsO1xuZnVuY3Rpb24gbGMoYSl7aWYoYSl7dmFyIGI9YS5fZGlzcGF0Y2hMaXN0ZW5lcnMsYz1hLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGgmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7ZCsrKW9hKGEsYltkXSxjW2RdKTtlbHNlIGImJm9hKGEsYixjKTthLl9kaXNwYXRjaExpc3RlbmVycz1udWxsO2EuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGw7YS5pc1BlcnNpc3RlbnQoKXx8YS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGEpfX1mdW5jdGlvbiBtYyhhKXtudWxsIT09YSYmKGtjPWljKGtjLGEpKTthPWtjO2tjPW51bGw7aWYoYSl7amMoYSxsYyk7aWYoa2MpdGhyb3cgRXJyb3IodSg5NSkpO2lmKGZhKXRocm93IGE9aGEsZmE9ITEsaGE9bnVsbCxhO319XG5mdW5jdGlvbiBuYyhhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdzthLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KTtyZXR1cm4gMz09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmF9ZnVuY3Rpb24gb2MoYSl7aWYoIXlhKXJldHVybiExO2E9XCJvblwiK2E7dmFyIGI9YSBpbiBkb2N1bWVudDtifHwoYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGIuc2V0QXR0cmlidXRlKGEsXCJyZXR1cm47XCIpLGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIGJbYV0pO3JldHVybiBifXZhciBwYz1bXTtmdW5jdGlvbiBxYyhhKXthLnRvcExldmVsVHlwZT1udWxsO2EubmF0aXZlRXZlbnQ9bnVsbDthLnRhcmdldEluc3Q9bnVsbDthLmFuY2VzdG9ycy5sZW5ndGg9MDsxMD5wYy5sZW5ndGgmJnBjLnB1c2goYSl9XG5mdW5jdGlvbiByYyhhLGIsYyxkKXtpZihwYy5sZW5ndGgpe3ZhciBlPXBjLnBvcCgpO2UudG9wTGV2ZWxUeXBlPWE7ZS5ldmVudFN5c3RlbUZsYWdzPWQ7ZS5uYXRpdmVFdmVudD1iO2UudGFyZ2V0SW5zdD1jO3JldHVybiBlfXJldHVybnt0b3BMZXZlbFR5cGU6YSxldmVudFN5c3RlbUZsYWdzOmQsbmF0aXZlRXZlbnQ6Yix0YXJnZXRJbnN0OmMsYW5jZXN0b3JzOltdfX1cbmZ1bmN0aW9uIHNjKGEpe3ZhciBiPWEudGFyZ2V0SW5zdCxjPWI7ZG97aWYoIWMpe2EuYW5jZXN0b3JzLnB1c2goYyk7YnJlYWt9dmFyIGQ9YztpZigzPT09ZC50YWcpZD1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2Vsc2V7Zm9yKDtkLnJldHVybjspZD1kLnJldHVybjtkPTMhPT1kLnRhZz9udWxsOmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm99aWYoIWQpYnJlYWs7Yj1jLnRhZzs1IT09YiYmNiE9PWJ8fGEuYW5jZXN0b3JzLnB1c2goYyk7Yz10YyhkKX13aGlsZShjKTtmb3IoYz0wO2M8YS5hbmNlc3RvcnMubGVuZ3RoO2MrKyl7Yj1hLmFuY2VzdG9yc1tjXTt2YXIgZT1uYyhhLm5hdGl2ZUV2ZW50KTtkPWEudG9wTGV2ZWxUeXBlO3ZhciBmPWEubmF0aXZlRXZlbnQsZz1hLmV2ZW50U3lzdGVtRmxhZ3M7MD09PWMmJihnfD02NCk7Zm9yKHZhciBoPW51bGwsaz0wO2s8c2EubGVuZ3RoO2srKyl7dmFyIGw9c2Fba107bCYmKGw9bC5leHRyYWN0RXZlbnRzKGQsYixmLGUsZykpJiYoaD1cbmljKGgsbCkpfW1jKGgpfX1mdW5jdGlvbiB1YyhhLGIsYyl7aWYoIWMuaGFzKGEpKXtzd2l0Y2goYSl7Y2FzZSBcInNjcm9sbFwiOnZjKGIsXCJzY3JvbGxcIiwhMCk7YnJlYWs7Y2FzZSBcImZvY3VzXCI6Y2FzZSBcImJsdXJcIjp2YyhiLFwiZm9jdXNcIiwhMCk7dmMoYixcImJsdXJcIiwhMCk7Yy5zZXQoXCJibHVyXCIsbnVsbCk7Yy5zZXQoXCJmb2N1c1wiLG51bGwpO2JyZWFrO2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xvc2VcIjpvYyhhKSYmdmMoYixhLCEwKTticmVhaztjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwicmVzZXRcIjpicmVhaztkZWZhdWx0Oi0xPT09YWMuaW5kZXhPZihhKSYmRihhLGIpfWMuc2V0KGEsbnVsbCl9fVxudmFyIHdjLHhjLHljLHpjPSExLEFjPVtdLEJjPW51bGwsQ2M9bnVsbCxEYz1udWxsLEVjPW5ldyBNYXAsRmM9bmV3IE1hcCxHYz1bXSxIYz1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNsb3NlIGNhbmNlbCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0XCIuc3BsaXQoXCIgXCIpLEljPVwiZm9jdXMgYmx1ciBkcmFnZW50ZXIgZHJhZ2xlYXZlIG1vdXNlb3ZlciBtb3VzZW91dCBwb2ludGVyb3ZlciBwb2ludGVyb3V0IGdvdHBvaW50ZXJjYXB0dXJlIGxvc3Rwb2ludGVyY2FwdHVyZVwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIEpjKGEsYil7dmFyIGM9Y2MoYik7SGMuZm9yRWFjaChmdW5jdGlvbihhKXt1YyhhLGIsYyl9KTtJYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3VjKGEsYixjKX0pfWZ1bmN0aW9uIEtjKGEsYixjLGQsZSl7cmV0dXJue2Jsb2NrZWRPbjphLHRvcExldmVsVHlwZTpiLGV2ZW50U3lzdGVtRmxhZ3M6Y3wzMixuYXRpdmVFdmVudDplLGNvbnRhaW5lcjpkfX1cbmZ1bmN0aW9uIExjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c1wiOmNhc2UgXCJibHVyXCI6QmM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOkNjPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOkRjPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpFYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpGYy5kZWxldGUoYi5wb2ludGVySWQpfX1mdW5jdGlvbiBNYyhhLGIsYyxkLGUsZil7aWYobnVsbD09PWF8fGEubmF0aXZlRXZlbnQhPT1mKXJldHVybiBhPUtjKGIsYyxkLGUsZiksbnVsbCE9PWImJihiPU5jKGIpLG51bGwhPT1iJiZ4YyhiKSksYTthLmV2ZW50U3lzdGVtRmxhZ3N8PWQ7cmV0dXJuIGF9XG5mdW5jdGlvbiBPYyhhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlIFwiZm9jdXNcIjpyZXR1cm4gQmM9TWMoQmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwiZHJhZ2VudGVyXCI6cmV0dXJuIENjPU1jKENjLGEsYixjLGQsZSksITA7Y2FzZSBcIm1vdXNlb3ZlclwiOnJldHVybiBEYz1NYyhEYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJwb2ludGVyb3ZlclwiOnZhciBmPWUucG9pbnRlcklkO0VjLnNldChmLE1jKEVjLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gZj1lLnBvaW50ZXJJZCxGYy5zZXQoZixNYyhGYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9XG5mdW5jdGlvbiBQYyhhKXt2YXIgYj10YyhhLnRhcmdldCk7aWYobnVsbCE9PWIpe3ZhciBjPWRjKGIpO2lmKG51bGwhPT1jKWlmKGI9Yy50YWcsMTM9PT1iKXtpZihiPWVjKGMpLG51bGwhPT1iKXthLmJsb2NrZWRPbj1iO3IudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5KGEucHJpb3JpdHksZnVuY3Rpb24oKXt5YyhjKX0pO3JldHVybn19ZWxzZSBpZigzPT09YiYmYy5zdGF0ZU5vZGUuaHlkcmF0ZSl7YS5ibG9ja2VkT249Mz09PWMudGFnP2Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fWEuYmxvY2tlZE9uPW51bGx9ZnVuY3Rpb24gUWMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO3ZhciBiPVJjKGEudG9wTGV2ZWxUeXBlLGEuZXZlbnRTeXN0ZW1GbGFncyxhLmNvbnRhaW5lcixhLm5hdGl2ZUV2ZW50KTtpZihudWxsIT09Yil7dmFyIGM9TmMoYik7bnVsbCE9PWMmJnhjKGMpO2EuYmxvY2tlZE9uPWI7cmV0dXJuITF9cmV0dXJuITB9XG5mdW5jdGlvbiBTYyhhLGIsYyl7UWMoYSkmJmMuZGVsZXRlKGIpfWZ1bmN0aW9uIFRjKCl7Zm9yKHpjPSExOzA8QWMubGVuZ3RoOyl7dmFyIGE9QWNbMF07aWYobnVsbCE9PWEuYmxvY2tlZE9uKXthPU5jKGEuYmxvY2tlZE9uKTtudWxsIT09YSYmd2MoYSk7YnJlYWt9dmFyIGI9UmMoYS50b3BMZXZlbFR5cGUsYS5ldmVudFN5c3RlbUZsYWdzLGEuY29udGFpbmVyLGEubmF0aXZlRXZlbnQpO251bGwhPT1iP2EuYmxvY2tlZE9uPWI6QWMuc2hpZnQoKX1udWxsIT09QmMmJlFjKEJjKSYmKEJjPW51bGwpO251bGwhPT1DYyYmUWMoQ2MpJiYoQ2M9bnVsbCk7bnVsbCE9PURjJiZRYyhEYykmJihEYz1udWxsKTtFYy5mb3JFYWNoKFNjKTtGYy5mb3JFYWNoKFNjKX1mdW5jdGlvbiBVYyhhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsemN8fCh6Yz0hMCxyLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soci51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxUYykpKX1cbmZ1bmN0aW9uIFZjKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIFVjKGIsYSl9aWYoMDxBYy5sZW5ndGgpe1VjKEFjWzBdLGEpO2Zvcih2YXIgYz0xO2M8QWMubGVuZ3RoO2MrKyl7dmFyIGQ9QWNbY107ZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCl9fW51bGwhPT1CYyYmVWMoQmMsYSk7bnVsbCE9PUNjJiZVYyhDYyxhKTtudWxsIT09RGMmJlVjKERjLGEpO0VjLmZvckVhY2goYik7RmMuZm9yRWFjaChiKTtmb3IoYz0wO2M8R2MubGVuZ3RoO2MrKylkPUdjW2NdLGQuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxHYy5sZW5ndGgmJihjPUdjWzBdLG51bGw9PT1jLmJsb2NrZWRPbik7KVBjKGMpLG51bGw9PT1jLmJsb2NrZWRPbiYmR2Muc2hpZnQoKX1cbnZhciBXYz17fSxZYz1uZXcgTWFwLFpjPW5ldyBNYXAsJGM9W1wiYWJvcnRcIixcImFib3J0XCIsWGIsXCJhbmltYXRpb25FbmRcIixZYixcImFuaW1hdGlvbkl0ZXJhdGlvblwiLFpiLFwiYW5pbWF0aW9uU3RhcnRcIixcImNhbnBsYXlcIixcImNhblBsYXlcIixcImNhbnBsYXl0aHJvdWdoXCIsXCJjYW5QbGF5VGhyb3VnaFwiLFwiZHVyYXRpb25jaGFuZ2VcIixcImR1cmF0aW9uQ2hhbmdlXCIsXCJlbXB0aWVkXCIsXCJlbXB0aWVkXCIsXCJlbmNyeXB0ZWRcIixcImVuY3J5cHRlZFwiLFwiZW5kZWRcIixcImVuZGVkXCIsXCJlcnJvclwiLFwiZXJyb3JcIixcImdvdHBvaW50ZXJjYXB0dXJlXCIsXCJnb3RQb2ludGVyQ2FwdHVyZVwiLFwibG9hZFwiLFwibG9hZFwiLFwibG9hZGVkZGF0YVwiLFwibG9hZGVkRGF0YVwiLFwibG9hZGVkbWV0YWRhdGFcIixcImxvYWRlZE1ldGFkYXRhXCIsXCJsb2Fkc3RhcnRcIixcImxvYWRTdGFydFwiLFwibG9zdHBvaW50ZXJjYXB0dXJlXCIsXCJsb3N0UG9pbnRlckNhcHR1cmVcIixcInBsYXlpbmdcIixcInBsYXlpbmdcIixcInByb2dyZXNzXCIsXCJwcm9ncmVzc1wiLFwic2Vla2luZ1wiLFxuXCJzZWVraW5nXCIsXCJzdGFsbGVkXCIsXCJzdGFsbGVkXCIsXCJzdXNwZW5kXCIsXCJzdXNwZW5kXCIsXCJ0aW1ldXBkYXRlXCIsXCJ0aW1lVXBkYXRlXCIsJGIsXCJ0cmFuc2l0aW9uRW5kXCIsXCJ3YWl0aW5nXCIsXCJ3YWl0aW5nXCJdO2Z1bmN0aW9uIGFkKGEsYil7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKz0yKXt2YXIgZD1hW2NdLGU9YVtjKzFdLGY9XCJvblwiKyhlWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSk7Zj17cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6ZixjYXB0dXJlZDpmK1wiQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6W2RdLGV2ZW50UHJpb3JpdHk6Yn07WmMuc2V0KGQsYik7WWMuc2V0KGQsZik7V2NbZV09Zn19XG5hZChcImJsdXIgYmx1ciBjYW5jZWwgY2FuY2VsIGNsaWNrIGNsaWNrIGNsb3NlIGNsb3NlIGNvbnRleHRtZW51IGNvbnRleHRNZW51IGNvcHkgY29weSBjdXQgY3V0IGF1eGNsaWNrIGF1eENsaWNrIGRibGNsaWNrIGRvdWJsZUNsaWNrIGRyYWdlbmQgZHJhZ0VuZCBkcmFnc3RhcnQgZHJhZ1N0YXJ0IGRyb3AgZHJvcCBmb2N1cyBmb2N1cyBpbnB1dCBpbnB1dCBpbnZhbGlkIGludmFsaWQga2V5ZG93biBrZXlEb3duIGtleXByZXNzIGtleVByZXNzIGtleXVwIGtleVVwIG1vdXNlZG93biBtb3VzZURvd24gbW91c2V1cCBtb3VzZVVwIHBhc3RlIHBhc3RlIHBhdXNlIHBhdXNlIHBsYXkgcGxheSBwb2ludGVyY2FuY2VsIHBvaW50ZXJDYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlckRvd24gcG9pbnRlcnVwIHBvaW50ZXJVcCByYXRlY2hhbmdlIHJhdGVDaGFuZ2UgcmVzZXQgcmVzZXQgc2Vla2VkIHNlZWtlZCBzdWJtaXQgc3VibWl0IHRvdWNoY2FuY2VsIHRvdWNoQ2FuY2VsIHRvdWNoZW5kIHRvdWNoRW5kIHRvdWNoc3RhcnQgdG91Y2hTdGFydCB2b2x1bWVjaGFuZ2Ugdm9sdW1lQ2hhbmdlXCIuc3BsaXQoXCIgXCIpLDApO1xuYWQoXCJkcmFnIGRyYWcgZHJhZ2VudGVyIGRyYWdFbnRlciBkcmFnZXhpdCBkcmFnRXhpdCBkcmFnbGVhdmUgZHJhZ0xlYXZlIGRyYWdvdmVyIGRyYWdPdmVyIG1vdXNlbW92ZSBtb3VzZU1vdmUgbW91c2VvdXQgbW91c2VPdXQgbW91c2VvdmVyIG1vdXNlT3ZlciBwb2ludGVybW92ZSBwb2ludGVyTW92ZSBwb2ludGVyb3V0IHBvaW50ZXJPdXQgcG9pbnRlcm92ZXIgcG9pbnRlck92ZXIgc2Nyb2xsIHNjcm9sbCB0b2dnbGUgdG9nZ2xlIHRvdWNobW92ZSB0b3VjaE1vdmUgd2hlZWwgd2hlZWxcIi5zcGxpdChcIiBcIiksMSk7YWQoJGMsMik7Zm9yKHZhciBiZD1cImNoYW5nZSBzZWxlY3Rpb25jaGFuZ2UgdGV4dElucHV0IGNvbXBvc2l0aW9uc3RhcnQgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb251cGRhdGVcIi5zcGxpdChcIiBcIiksY2Q9MDtjZDxiZC5sZW5ndGg7Y2QrKylaYy5zZXQoYmRbY2RdLDApO1xudmFyIGRkPXIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksZWQ9ci51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHksZmQ9ITA7ZnVuY3Rpb24gRihhLGIpe3ZjKGIsYSwhMSl9ZnVuY3Rpb24gdmMoYSxiLGMpe3ZhciBkPVpjLmdldChiKTtzd2l0Y2godm9pZCAwPT09ZD8yOmQpe2Nhc2UgMDpkPWdkLmJpbmQobnVsbCxiLDEsYSk7YnJlYWs7Y2FzZSAxOmQ9aGQuYmluZChudWxsLGIsMSxhKTticmVhaztkZWZhdWx0OmQ9aWQuYmluZChudWxsLGIsMSxhKX1jP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGQsITApOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGQsITEpfWZ1bmN0aW9uIGdkKGEsYixjLGQpe0phfHxIYSgpO3ZhciBlPWlkLGY9SmE7SmE9ITA7dHJ5e0dhKGUsYSxiLGMsZCl9ZmluYWxseXsoSmE9Zil8fExhKCl9fWZ1bmN0aW9uIGhkKGEsYixjLGQpe2VkKGRkLGlkLmJpbmQobnVsbCxhLGIsYyxkKSl9XG5mdW5jdGlvbiBpZChhLGIsYyxkKXtpZihmZClpZigwPEFjLmxlbmd0aCYmLTE8SGMuaW5kZXhPZihhKSlhPUtjKG51bGwsYSxiLGMsZCksQWMucHVzaChhKTtlbHNle3ZhciBlPVJjKGEsYixjLGQpO2lmKG51bGw9PT1lKUxjKGEsZCk7ZWxzZSBpZigtMTxIYy5pbmRleE9mKGEpKWE9S2MoZSxhLGIsYyxkKSxBYy5wdXNoKGEpO2Vsc2UgaWYoIU9jKGUsYSxiLGMsZCkpe0xjKGEsZCk7YT1yYyhhLGQsbnVsbCxiKTt0cnl7TWEoc2MsYSl9ZmluYWxseXtxYyhhKX19fX1cbmZ1bmN0aW9uIFJjKGEsYixjLGQpe2M9bmMoZCk7Yz10YyhjKTtpZihudWxsIT09Yyl7dmFyIGU9ZGMoYyk7aWYobnVsbD09PWUpYz1udWxsO2Vsc2V7dmFyIGY9ZS50YWc7aWYoMTM9PT1mKXtjPWVjKGUpO2lmKG51bGwhPT1jKXJldHVybiBjO2M9bnVsbH1lbHNlIGlmKDM9PT1mKXtpZihlLnN0YXRlTm9kZS5oeWRyYXRlKXJldHVybiAzPT09ZS50YWc/ZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2M9bnVsbH1lbHNlIGUhPT1jJiYoYz1udWxsKX19YT1yYyhhLGQsYyxiKTt0cnl7TWEoc2MsYSl9ZmluYWxseXtxYyhhKX1yZXR1cm4gbnVsbH1cbnZhciBqZD17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsXG5mbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxrZD1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMoamQpLmZvckVhY2goZnVuY3Rpb24oYSl7a2QuZm9yRWFjaChmdW5jdGlvbihiKXtiPWIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxKTtqZFtiXT1qZFthXX0pfSk7ZnVuY3Rpb24gbGQoYSxiLGMpe3JldHVybiBudWxsPT1ifHxcImJvb2xlYW5cIj09PXR5cGVvZiBifHxcIlwiPT09Yj9cIlwiOmN8fFwibnVtYmVyXCIhPT10eXBlb2YgYnx8MD09PWJ8fGpkLmhhc093blByb3BlcnR5KGEpJiZqZFthXT8oXCJcIitiKS50cmltKCk6YitcInB4XCJ9XG5mdW5jdGlvbiBtZChhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKFwiLS1cIiksZT1sZChjLGJbY10sZCk7XCJmbG9hdFwiPT09YyYmKGM9XCJjc3NGbG9hdFwiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fXZhciBuZD1uKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO1xuZnVuY3Rpb24gb2QoYSxiKXtpZihiKXtpZihuZFthXSYmKG51bGwhPWIuY2hpbGRyZW58fG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHUoMTM3LGEsXCJcIikpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IodSg2MCkpO2lmKCEoXCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IodSg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IodSg2MixcIlwiKSk7fX1cbmZ1bmN0aW9uIHBkKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYi5pcztzd2l0Y2goYSl7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgcWQ9TWIuaHRtbDtmdW5jdGlvbiByZChhLGIpe2E9OT09PWEubm9kZVR5cGV8fDExPT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDt2YXIgYz1jYyhhKTtiPXdhW2JdO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXVjKGJbZF0sYSxjKX1mdW5jdGlvbiBzZCgpe31cbmZ1bmN0aW9uIHRkKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1mdW5jdGlvbiB1ZChhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9ZnVuY3Rpb24gdmQoYSxiKXt2YXIgYz11ZChhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz11ZChjKX19XG5mdW5jdGlvbiB3ZChhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP3dkKGEsYi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiBhP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KTohMTohMX1mdW5jdGlvbiB4ZCgpe2Zvcih2YXIgYT13aW5kb3csYj10ZCgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj10ZChhLmRvY3VtZW50KX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHlkKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYiYmKFwiaW5wdXRcIj09PWImJihcInRleHRcIj09PWEudHlwZXx8XCJzZWFyY2hcIj09PWEudHlwZXx8XCJ0ZWxcIj09PWEudHlwZXx8XCJ1cmxcIj09PWEudHlwZXx8XCJwYXNzd29yZFwiPT09YS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09Ynx8XCJ0cnVlXCI9PT1hLmNvbnRlbnRFZGl0YWJsZSl9dmFyIHpkPVwiJFwiLEFkPVwiLyRcIixCZD1cIiQ/XCIsQ2Q9XCIkIVwiLERkPW51bGwsRWQ9bnVsbDtmdW5jdGlvbiBGZChhLGIpe3N3aXRjaChhKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOnJldHVybiEhYi5hdXRvRm9jdXN9cmV0dXJuITF9XG5mdW5jdGlvbiBHZChhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwib3B0aW9uXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9dmFyIEhkPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLElkPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMDtmdW5jdGlvbiBKZChhKXtmb3IoO251bGwhPWE7YT1hLm5leHRTaWJsaW5nKXt2YXIgYj1hLm5vZGVUeXBlO2lmKDE9PT1ifHwzPT09YilicmVha31yZXR1cm4gYX1cbmZ1bmN0aW9uIEtkKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoYz09PXpkfHxjPT09Q2R8fGM9PT1CZCl7aWYoMD09PWIpcmV0dXJuIGE7Yi0tfWVsc2UgYz09PUFkJiZiKyt9YT1hLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgTGQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksTWQ9XCJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSRcIitMZCxOZD1cIl9fcmVhY3RFdmVudEhhbmRsZXJzJFwiK0xkLE9kPVwiX19yZWFjdENvbnRhaW5lcmUkXCIrTGQ7XG5mdW5jdGlvbiB0YyhhKXt2YXIgYj1hW01kXTtpZihiKXJldHVybiBiO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGI9Y1tPZF18fGNbTWRdKXtjPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1iLmNoaWxkfHxudWxsIT09YyYmbnVsbCE9PWMuY2hpbGQpZm9yKGE9S2QoYSk7bnVsbCE9PWE7KXtpZihjPWFbTWRdKXJldHVybiBjO2E9S2QoYSl9cmV0dXJuIGJ9YT1jO2M9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIE5jKGEpe2E9YVtNZF18fGFbT2RdO3JldHVybiFhfHw1IT09YS50YWcmJjYhPT1hLnRhZyYmMTMhPT1hLnRhZyYmMyE9PWEudGFnP251bGw6YX1mdW5jdGlvbiBQZChhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IodSgzMykpO31mdW5jdGlvbiBRZChhKXtyZXR1cm4gYVtOZF18fG51bGx9XG5mdW5jdGlvbiBSZChhKXtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gU2QoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZighYylyZXR1cm4gbnVsbDt2YXIgZD1sYShjKTtpZighZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGMpdGhyb3cgRXJyb3IodSgyMzEsXG5iLHR5cGVvZiBjKSk7cmV0dXJuIGN9ZnVuY3Rpb24gVGQoYSxiLGMpe2lmKGI9U2QoYSxjLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW2JdKSljLl9kaXNwYXRjaExpc3RlbmVycz1pYyhjLl9kaXNwYXRjaExpc3RlbmVycyxiKSxjLl9kaXNwYXRjaEluc3RhbmNlcz1pYyhjLl9kaXNwYXRjaEluc3RhbmNlcyxhKX1mdW5jdGlvbiBVZChhKXtpZihhJiZhLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXtmb3IodmFyIGI9YS5fdGFyZ2V0SW5zdCxjPVtdO2I7KWMucHVzaChiKSxiPVJkKGIpO2ZvcihiPWMubGVuZ3RoOzA8Yi0tOylUZChjW2JdLFwiY2FwdHVyZWRcIixhKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKVRkKGNbYl0sXCJidWJibGVkXCIsYSl9fVxuZnVuY3Rpb24gVmQoYSxiLGMpe2EmJmMmJmMuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSYmKGI9U2QoYSxjLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpKSYmKGMuX2Rpc3BhdGNoTGlzdGVuZXJzPWljKGMuX2Rpc3BhdGNoTGlzdGVuZXJzLGIpLGMuX2Rpc3BhdGNoSW5zdGFuY2VzPWljKGMuX2Rpc3BhdGNoSW5zdGFuY2VzLGEpKX1mdW5jdGlvbiBXZChhKXthJiZhLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJlZkKGEuX3RhcmdldEluc3QsbnVsbCxhKX1mdW5jdGlvbiBYZChhKXtqYyhhLFVkKX12YXIgWWQ9bnVsbCxaZD1udWxsLCRkPW51bGw7XG5mdW5jdGlvbiBhZSgpe2lmKCRkKXJldHVybiAkZDt2YXIgYSxiPVpkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIFlkP1lkLnZhbHVlOllkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuICRkPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9ZnVuY3Rpb24gYmUoKXtyZXR1cm4hMH1mdW5jdGlvbiBjZSgpe3JldHVybiExfVxuZnVuY3Rpb24gRyhhLGIsYyxkKXt0aGlzLmRpc3BhdGNoQ29uZmlnPWE7dGhpcy5fdGFyZ2V0SW5zdD1iO3RoaXMubmF0aXZlRXZlbnQ9YzthPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVydHkoZSkmJigoYj1hW2VdKT90aGlzW2VdPWIoYyk6XCJ0YXJnZXRcIj09PWU/dGhpcy50YXJnZXQ9ZDp0aGlzW2VdPWNbZV0pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1jLmRlZmF1bHRQcmV2ZW50ZWQ/Yy5kZWZhdWx0UHJldmVudGVkOiExPT09Yy5yZXR1cm5WYWx1ZSk/YmU6Y2U7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1jZTtyZXR1cm4gdGhpc31cbm4oRy5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1iZSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1iZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1iZX0saXNQZXJzaXN0ZW50OmNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSxcbmI7Zm9yKGIgaW4gYSl0aGlzW2JdPW51bGw7dGhpcy5uYXRpdmVFdmVudD10aGlzLl90YXJnZXRJbnN0PXRoaXMuZGlzcGF0Y2hDb25maWc9bnVsbDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWNlO3RoaXMuX2Rpc3BhdGNoSW5zdGFuY2VzPXRoaXMuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGx9fSk7Ry5JbnRlcmZhY2U9e3R5cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07XG5HLmV4dGVuZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIGMoKXtyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGQ9dGhpcztiLnByb3RvdHlwZT1kLnByb3RvdHlwZTt2YXIgZT1uZXcgYjtuKGUsYy5wcm90b3R5cGUpO2MucHJvdG90eXBlPWU7Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9YztjLkludGVyZmFjZT1uKHt9LGQuSW50ZXJmYWNlLGEpO2MuZXh0ZW5kPWQuZXh0ZW5kO2RlKGMpO3JldHVybiBjfTtkZShHKTtmdW5jdGlvbiBlZShhLGIsYyxkKXtpZih0aGlzLmV2ZW50UG9vbC5sZW5ndGgpe3ZhciBlPXRoaXMuZXZlbnRQb29sLnBvcCgpO3RoaXMuY2FsbChlLGEsYixjLGQpO3JldHVybiBlfXJldHVybiBuZXcgdGhpcyhhLGIsYyxkKX1cbmZ1bmN0aW9uIGZlKGEpe2lmKCEoYSBpbnN0YW5jZW9mIHRoaXMpKXRocm93IEVycm9yKHUoMjc5KSk7YS5kZXN0cnVjdG9yKCk7MTA+dGhpcy5ldmVudFBvb2wubGVuZ3RoJiZ0aGlzLmV2ZW50UG9vbC5wdXNoKGEpfWZ1bmN0aW9uIGRlKGEpe2EuZXZlbnRQb29sPVtdO2EuZ2V0UG9vbGVkPWVlO2EucmVsZWFzZT1mZX12YXIgZ2U9Ry5leHRlbmQoe2RhdGE6bnVsbH0pLGhlPUcuZXh0ZW5kKHtkYXRhOm51bGx9KSxpZT1bOSwxMywyNywzMl0samU9eWEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LGtlPW51bGw7eWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGtlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7XG52YXIgbGU9eWEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFrZSxtZT15YSYmKCFqZXx8a2UmJjg8a2UmJjExPj1rZSksbmU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksb2U9e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQmVmb3JlSW5wdXRcIixjYXB0dXJlZDpcIm9uQmVmb3JlSW5wdXRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl19LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25FbmRcIixjYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25FbmRDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb25lbmQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIil9LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25Db21wb3NpdGlvblN0YXJ0XCIsXG5jYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25TdGFydENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9udXBkYXRlIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfX0scGU9ITE7XG5mdW5jdGlvbiBxZShhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PWllLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJibHVyXCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcmUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgc2U9ITE7ZnVuY3Rpb24gdGUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIHJlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtwZT0hMDtyZXR1cm4gbmU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09bmUmJnBlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIHVlKGEsYil7aWYoc2UpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWplJiZxZShhLGIpPyhhPWFlKCksJGQ9WmQ9WWQ9bnVsbCxzZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gbWUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIHZlPXtldmVudFR5cGVzOm9lLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU7aWYoamUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGY9b2UuY29tcG9zaXRpb25TdGFydDticmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmY9b2UuY29tcG9zaXRpb25FbmQ7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpmPW9lLmNvbXBvc2l0aW9uVXBkYXRlO2JyZWFrIGJ9Zj12b2lkIDB9ZWxzZSBzZT9xZShhLGMpJiYoZj1vZS5jb21wb3NpdGlvbkVuZCk6XCJrZXlkb3duXCI9PT1hJiYyMjk9PT1jLmtleUNvZGUmJihmPW9lLmNvbXBvc2l0aW9uU3RhcnQpO2Y/KG1lJiZcImtvXCIhPT1jLmxvY2FsZSYmKHNlfHxmIT09b2UuY29tcG9zaXRpb25TdGFydD9mPT09b2UuY29tcG9zaXRpb25FbmQmJnNlJiYoZT1hZSgpKTooWWQ9ZCxaZD1cInZhbHVlXCJpbiBZZD9ZZC52YWx1ZTpZZC50ZXh0Q29udGVudCxzZT0hMCkpLGY9Z2UuZ2V0UG9vbGVkKGYsXG5iLGMsZCksZT9mLmRhdGE9ZTooZT1yZShjKSxudWxsIT09ZSYmKGYuZGF0YT1lKSksWGQoZiksZT1mKTplPW51bGw7KGE9bGU/dGUoYSxjKTp1ZShhLGMpKT8oYj1oZS5nZXRQb29sZWQob2UuYmVmb3JlSW5wdXQsYixjLGQpLGIuZGF0YT1hLFhkKGIpKTpiPW51bGw7cmV0dXJuIG51bGw9PT1lP2I6bnVsbD09PWI/ZTpbZSxiXX19LHdlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIHhlKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhd2VbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfVxudmFyIHllPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25DaGFuZ2VcIixjYXB0dXJlZDpcIm9uQ2hhbmdlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNoYW5nZSBjbGljayBmb2N1cyBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKX19O2Z1bmN0aW9uIHplKGEsYixjKXthPUcuZ2V0UG9vbGVkKHllLmNoYW5nZSxhLGIsYyk7YS50eXBlPVwiY2hhbmdlXCI7RGEoYyk7WGQoYSk7cmV0dXJuIGF9dmFyIEFlPW51bGwsQmU9bnVsbDtmdW5jdGlvbiBDZShhKXttYyhhKX1mdW5jdGlvbiBEZShhKXt2YXIgYj1QZChhKTtpZih5YihiKSlyZXR1cm4gYX1mdW5jdGlvbiBFZShhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciBGZT0hMTt5YSYmKEZlPW9jKFwiaW5wdXRcIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO1xuZnVuY3Rpb24gR2UoKXtBZSYmKEFlLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEhlKSxCZT1BZT1udWxsKX1mdW5jdGlvbiBIZShhKXtpZihcInZhbHVlXCI9PT1hLnByb3BlcnR5TmFtZSYmRGUoQmUpKWlmKGE9emUoQmUsYSxuYyhhKSksSmEpbWMoYSk7ZWxzZXtKYT0hMDt0cnl7RmEoQ2UsYSl9ZmluYWxseXtKYT0hMSxMYSgpfX19ZnVuY3Rpb24gSWUoYSxiLGMpe1wiZm9jdXNcIj09PWE/KEdlKCksQWU9YixCZT1jLEFlLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEhlKSk6XCJibHVyXCI9PT1hJiZHZSgpfWZ1bmN0aW9uIEplKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIERlKEJlKX1mdW5jdGlvbiBLZShhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIERlKGIpfWZ1bmN0aW9uIExlKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIERlKGIpfVxudmFyIE1lPXtldmVudFR5cGVzOnllLF9pc0lucHV0RXZlbnRTdXBwb3J0ZWQ6RmUsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iP1BkKGIpOndpbmRvdyxmPWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09Znx8XCJpbnB1dFwiPT09ZiYmXCJmaWxlXCI9PT1lLnR5cGUpdmFyIGc9RWU7ZWxzZSBpZih4ZShlKSlpZihGZSlnPUxlO2Vsc2V7Zz1KZTt2YXIgaD1JZX1lbHNlKGY9ZS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWYudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWUudHlwZXx8XCJyYWRpb1wiPT09ZS50eXBlKSYmKGc9S2UpO2lmKGcmJihnPWcoYSxiKSkpcmV0dXJuIHplKGcsYyxkKTtoJiZoKGEsZSxiKTtcImJsdXJcIj09PWEmJihhPWUuX3dyYXBwZXJTdGF0ZSkmJmEuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PWUudHlwZSYmRGIoZSxcIm51bWJlclwiLGUudmFsdWUpfX0sTmU9Ry5leHRlbmQoe3ZpZXc6bnVsbCxkZXRhaWw6bnVsbH0pLFxuT2U9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIFBlKGEpe3ZhciBiPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIGIuZ2V0TW9kaWZpZXJTdGF0ZT9iLmdldE1vZGlmaWVyU3RhdGUoYSk6KGE9T2VbYV0pPyEhYlthXTohMX1mdW5jdGlvbiBRZSgpe3JldHVybiBQZX1cbnZhciBSZT0wLFNlPTAsVGU9ITEsVWU9ITEsVmU9TmUuZXh0ZW5kKHtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwscGFnZVg6bnVsbCxwYWdlWTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOlFlLGJ1dHRvbjpudWxsLGJ1dHRvbnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlbGF0ZWRUYXJnZXR8fChhLmZyb21FbGVtZW50PT09YS5zcmNFbGVtZW50P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQpfSxtb3ZlbWVudFg6ZnVuY3Rpb24oYSl7aWYoXCJtb3ZlbWVudFhcImluIGEpcmV0dXJuIGEubW92ZW1lbnRYO3ZhciBiPVJlO1JlPWEuc2NyZWVuWDtyZXR1cm4gVGU/XCJtb3VzZW1vdmVcIj09PWEudHlwZT9hLnNjcmVlblgtYjowOihUZT0hMCwwKX0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRZXCJpbiBhKXJldHVybiBhLm1vdmVtZW50WTtcbnZhciBiPVNlO1NlPWEuc2NyZWVuWTtyZXR1cm4gVWU/XCJtb3VzZW1vdmVcIj09PWEudHlwZT9hLnNjcmVlblktYjowOihVZT0hMCwwKX19KSxXZT1WZS5leHRlbmQoe3BvaW50ZXJJZDpudWxsLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwscHJlc3N1cmU6bnVsbCx0YW5nZW50aWFsUHJlc3N1cmU6bnVsbCx0aWx0WDpudWxsLHRpbHRZOm51bGwsdHdpc3Q6bnVsbCxwb2ludGVyVHlwZTpudWxsLGlzUHJpbWFyeTpudWxsfSksWGU9e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvbk1vdXNlRW50ZXJcIixkZXBlbmRlbmNpZXM6W1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uTW91c2VMZWF2ZVwiLGRlcGVuZGVuY2llczpbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdfSxwb2ludGVyRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvblBvaW50ZXJFbnRlclwiLGRlcGVuZGVuY2llczpbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXX0scG9pbnRlckxlYXZlOntyZWdpc3RyYXRpb25OYW1lOlwib25Qb2ludGVyTGVhdmVcIixcbmRlcGVuZGVuY2llczpbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXX19LFllPXtldmVudFR5cGVzOlhlLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1cIm1vdXNlb3ZlclwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSxnPVwibW91c2VvdXRcIj09PWF8fFwicG9pbnRlcm91dFwiPT09YTtpZihmJiYwPT09KGUmMzIpJiYoYy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KXx8IWcmJiFmKXJldHVybiBudWxsO2Y9ZC53aW5kb3c9PT1kP2Q6KGY9ZC5vd25lckRvY3VtZW50KT9mLmRlZmF1bHRWaWV3fHxmLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoZyl7aWYoZz1iLGI9KGI9Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCk/dGMoYik6bnVsbCxudWxsIT09Yil7dmFyIGg9ZGMoYik7aWYoYiE9PWh8fDUhPT1iLnRhZyYmNiE9PWIudGFnKWI9bnVsbH19ZWxzZSBnPW51bGw7aWYoZz09PWIpcmV0dXJuIG51bGw7aWYoXCJtb3VzZW91dFwiPT09YXx8XCJtb3VzZW92ZXJcIj09PVxuYSl7dmFyIGs9VmU7dmFyIGw9WGUubW91c2VMZWF2ZTt2YXIgbT1YZS5tb3VzZUVudGVyO3ZhciBwPVwibW91c2VcIn1lbHNlIGlmKFwicG9pbnRlcm91dFwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSlrPVdlLGw9WGUucG9pbnRlckxlYXZlLG09WGUucG9pbnRlckVudGVyLHA9XCJwb2ludGVyXCI7YT1udWxsPT1nP2Y6UGQoZyk7Zj1udWxsPT1iP2Y6UGQoYik7bD1rLmdldFBvb2xlZChsLGcsYyxkKTtsLnR5cGU9cCtcImxlYXZlXCI7bC50YXJnZXQ9YTtsLnJlbGF0ZWRUYXJnZXQ9ZjtjPWsuZ2V0UG9vbGVkKG0sYixjLGQpO2MudHlwZT1wK1wiZW50ZXJcIjtjLnRhcmdldD1mO2MucmVsYXRlZFRhcmdldD1hO2Q9ZztwPWI7aWYoZCYmcClhOntrPWQ7bT1wO2c9MDtmb3IoYT1rO2E7YT1SZChhKSlnKys7YT0wO2ZvcihiPW07YjtiPVJkKGIpKWErKztmb3IoOzA8Zy1hOylrPVJkKGspLGctLTtmb3IoOzA8YS1nOyltPVJkKG0pLGEtLTtmb3IoO2ctLTspe2lmKGs9PT1tfHxrPT09bS5hbHRlcm5hdGUpYnJlYWsgYTtcbms9UmQoayk7bT1SZChtKX1rPW51bGx9ZWxzZSBrPW51bGw7bT1rO2ZvcihrPVtdO2QmJmQhPT1tOyl7Zz1kLmFsdGVybmF0ZTtpZihudWxsIT09ZyYmZz09PW0pYnJlYWs7ay5wdXNoKGQpO2Q9UmQoZCl9Zm9yKGQ9W107cCYmcCE9PW07KXtnPXAuYWx0ZXJuYXRlO2lmKG51bGwhPT1nJiZnPT09bSlicmVhaztkLnB1c2gocCk7cD1SZChwKX1mb3IocD0wO3A8ay5sZW5ndGg7cCsrKVZkKGtbcF0sXCJidWJibGVkXCIsbCk7Zm9yKHA9ZC5sZW5ndGg7MDxwLS07KVZkKGRbcF0sXCJjYXB0dXJlZFwiLGMpO3JldHVybiAwPT09KGUmNjQpP1tsXTpbbCxjXX19O2Z1bmN0aW9uIFplKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn12YXIgJGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6WmUsYWY9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGJmKGEsYil7aWYoJGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKCFhZi5jYWxsKGIsY1tkXSl8fCEkZShhW2NbZF1dLGJbY1tkXV0pKXJldHVybiExO3JldHVybiEwfVxudmFyIGNmPXlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsZGY9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvblNlbGVjdFwiLGNhcHR1cmVkOlwib25TZWxlY3RDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1cyBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKX19LGVmPW51bGwsZmY9bnVsbCxnZj1udWxsLGhmPSExO1xuZnVuY3Rpb24gamYoYSxiKXt2YXIgYz1iLndpbmRvdz09PWI/Yi5kb2N1bWVudDo5PT09Yi5ub2RlVHlwZT9iOmIub3duZXJEb2N1bWVudDtpZihoZnx8bnVsbD09ZWZ8fGVmIT09dGQoYykpcmV0dXJuIG51bGw7Yz1lZjtcInNlbGVjdGlvblN0YXJ0XCJpbiBjJiZ5ZChjKT9jPXtzdGFydDpjLnNlbGVjdGlvblN0YXJ0LGVuZDpjLnNlbGVjdGlvbkVuZH06KGM9KGMub3duZXJEb2N1bWVudCYmYy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGM9e2FuY2hvck5vZGU6Yy5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpjLmFuY2hvck9mZnNldCxmb2N1c05vZGU6Yy5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6Yy5mb2N1c09mZnNldH0pO3JldHVybiBnZiYmYmYoZ2YsYyk/bnVsbDooZ2Y9YyxhPUcuZ2V0UG9vbGVkKGRmLnNlbGVjdCxmZixhLGIpLGEudHlwZT1cInNlbGVjdFwiLGEudGFyZ2V0PWVmLFhkKGEpLGEpfVxudmFyIGtmPXtldmVudFR5cGVzOmRmLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2U9Znx8KGQud2luZG93PT09ZD9kLmRvY3VtZW50Ojk9PT1kLm5vZGVUeXBlP2Q6ZC5vd25lckRvY3VtZW50KTtpZighKGY9IWUpKXthOntlPWNjKGUpO2Y9d2Eub25TZWxlY3Q7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspaWYoIWUuaGFzKGZbZ10pKXtlPSExO2JyZWFrIGF9ZT0hMH1mPSFlfWlmKGYpcmV0dXJuIG51bGw7ZT1iP1BkKGIpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzXCI6aWYoeGUoZSl8fFwidHJ1ZVwiPT09ZS5jb250ZW50RWRpdGFibGUpZWY9ZSxmZj1iLGdmPW51bGw7YnJlYWs7Y2FzZSBcImJsdXJcIjpnZj1mZj1lZj1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpoZj0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6cmV0dXJuIGhmPSExLGpmKGMsZCk7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKGNmKWJyZWFrO1xuY2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpyZXR1cm4gamYoYyxkKX1yZXR1cm4gbnVsbH19LGxmPUcuZXh0ZW5kKHthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9KSxtZj1HLmV4dGVuZCh7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLG5mPU5lLmV4dGVuZCh7cmVsYXRlZFRhcmdldDpudWxsfSk7ZnVuY3Rpb24gb2YoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9XG52YXIgcGY9e0VzYzpcIkVzY2FwZVwiLFNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LHFmPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLFxuMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxyZj1OZS5leHRlbmQoe2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9cGZbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2YoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP3FmW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpRZSxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT9vZihhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT9vZihhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLHNmPVZlLmV4dGVuZCh7ZGF0YVRyYW5zZmVyOm51bGx9KSx0Zj1OZS5leHRlbmQoe3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hhbmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpRZX0pLHVmPUcuZXh0ZW5kKHtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH0pLHZmPVZlLmV4dGVuZCh7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluXG5hPy1hLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfSksd2Y9e2V2ZW50VHlwZXM6V2MsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1ZYy5nZXQoYSk7aWYoIWUpcmV0dXJuIG51bGw7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZihjKSlyZXR1cm4gbnVsbDtjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOmE9cmY7YnJlYWs7Y2FzZSBcImJsdXJcIjpjYXNlIFwiZm9jdXNcIjphPW5mO2JyZWFrO2Nhc2UgXCJjbGlja1wiOmlmKDI9PT1jLmJ1dHRvbilyZXR1cm4gbnVsbDtjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmE9XG5WZTticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjphPXNmO2JyZWFrO2Nhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwidG91Y2hzdGFydFwiOmE9dGY7YnJlYWs7Y2FzZSBYYjpjYXNlIFliOmNhc2UgWmI6YT1sZjticmVhaztjYXNlICRiOmE9dWY7YnJlYWs7Y2FzZSBcInNjcm9sbFwiOmE9TmU7YnJlYWs7Y2FzZSBcIndoZWVsXCI6YT12ZjticmVhaztjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwicGFzdGVcIjphPW1mO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOmE9XG5XZTticmVhaztkZWZhdWx0OmE9R31iPWEuZ2V0UG9vbGVkKGUsYixjLGQpO1hkKGIpO3JldHVybiBifX07aWYocGEpdGhyb3cgRXJyb3IodSgxMDEpKTtwYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChcIlJlc3BvbmRlckV2ZW50UGx1Z2luIFNpbXBsZUV2ZW50UGx1Z2luIEVudGVyTGVhdmVFdmVudFBsdWdpbiBDaGFuZ2VFdmVudFBsdWdpbiBTZWxlY3RFdmVudFBsdWdpbiBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luXCIuc3BsaXQoXCIgXCIpKTtyYSgpO3ZhciB4Zj1OYztsYT1RZDttYT14ZjtuYT1QZDt4YSh7U2ltcGxlRXZlbnRQbHVnaW46d2YsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOlllLENoYW5nZUV2ZW50UGx1Z2luOk1lLFNlbGVjdEV2ZW50UGx1Z2luOmtmLEJlZm9yZUlucHV0RXZlbnRQbHVnaW46dmV9KTt2YXIgeWY9W10semY9LTE7ZnVuY3Rpb24gSChhKXswPnpmfHwoYS5jdXJyZW50PXlmW3pmXSx5Zlt6Zl09bnVsbCx6Zi0tKX1cbmZ1bmN0aW9uIEkoYSxiKXt6ZisrO3lmW3pmXT1hLmN1cnJlbnQ7YS5jdXJyZW50PWJ9dmFyIEFmPXt9LEo9e2N1cnJlbnQ6QWZ9LEs9e2N1cnJlbnQ6ITF9LEJmPUFmO2Z1bmN0aW9uIENmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gQWY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gTChhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfVxuZnVuY3Rpb24gRGYoKXtIKEspO0goSil9ZnVuY3Rpb24gRWYoYSxiLGMpe2lmKEouY3VycmVudCE9PUFmKXRocm93IEVycm9yKHUoMTY4KSk7SShKLGIpO0koSyxjKX1mdW5jdGlvbiBGZihhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7YT1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGEpKXRocm93IEVycm9yKHUoMTA4LHBiKGIpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIG4oe30sYyx7fSxkKX1mdW5jdGlvbiBHZihhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8QWY7QmY9Si5jdXJyZW50O0koSixhKTtJKEssSy5jdXJyZW50KTtyZXR1cm4hMH1cbmZ1bmN0aW9uIEhmKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcih1KDE2OSkpO2M/KGE9RmYoYSxiLEJmKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsSChLKSxIKEopLEkoSixhKSk6SChLKTtJKEssYyl9XG52YXIgSWY9ci51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHksSmY9ci51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLEtmPXIudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssTGY9ci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsTWY9ci51bnN0YWJsZV9ub3csTmY9ci51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxPZj1yLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LFBmPXIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksUWY9ci51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxSZj1yLnVuc3RhYmxlX0xvd1ByaW9yaXR5LFNmPXIudW5zdGFibGVfSWRsZVByaW9yaXR5LFRmPXt9LFVmPXIudW5zdGFibGVfc2hvdWxkWWllbGQsVmY9dm9pZCAwIT09TGY/TGY6ZnVuY3Rpb24oKXt9LFdmPW51bGwsWGY9bnVsbCxZZj0hMSxaZj1NZigpLCRmPTFFND5aZj9NZjpmdW5jdGlvbigpe3JldHVybiBNZigpLVpmfTtcbmZ1bmN0aW9uIGFnKCl7c3dpdGNoKE5mKCkpe2Nhc2UgT2Y6cmV0dXJuIDk5O2Nhc2UgUGY6cmV0dXJuIDk4O2Nhc2UgUWY6cmV0dXJuIDk3O2Nhc2UgUmY6cmV0dXJuIDk2O2Nhc2UgU2Y6cmV0dXJuIDk1O2RlZmF1bHQ6dGhyb3cgRXJyb3IodSgzMzIpKTt9fWZ1bmN0aW9uIGJnKGEpe3N3aXRjaChhKXtjYXNlIDk5OnJldHVybiBPZjtjYXNlIDk4OnJldHVybiBQZjtjYXNlIDk3OnJldHVybiBRZjtjYXNlIDk2OnJldHVybiBSZjtjYXNlIDk1OnJldHVybiBTZjtkZWZhdWx0OnRocm93IEVycm9yKHUoMzMyKSk7fX1mdW5jdGlvbiBjZyhhLGIpe2E9YmcoYSk7cmV0dXJuIElmKGEsYil9ZnVuY3Rpb24gZGcoYSxiLGMpe2E9YmcoYSk7cmV0dXJuIEpmKGEsYixjKX1mdW5jdGlvbiBlZyhhKXtudWxsPT09V2Y/KFdmPVthXSxYZj1KZihPZixmZykpOldmLnB1c2goYSk7cmV0dXJuIFRmfWZ1bmN0aW9uIGdnKCl7aWYobnVsbCE9PVhmKXt2YXIgYT1YZjtYZj1udWxsO0tmKGEpfWZnKCl9XG5mdW5jdGlvbiBmZygpe2lmKCFZZiYmbnVsbCE9PVdmKXtZZj0hMDt2YXIgYT0wO3RyeXt2YXIgYj1XZjtjZyg5OSxmdW5jdGlvbigpe2Zvcig7YTxiLmxlbmd0aDthKyspe3ZhciBjPWJbYV07ZG8gYz1jKCEwKTt3aGlsZShudWxsIT09Yyl9fSk7V2Y9bnVsbH1jYXRjaChjKXt0aHJvdyBudWxsIT09V2YmJihXZj1XZi5zbGljZShhKzEpKSxKZihPZixnZyksYzt9ZmluYWxseXtZZj0hMX19fWZ1bmN0aW9uIGhnKGEsYixjKXtjLz0xMDtyZXR1cm4gMTA3Mzc0MTgyMS0oKCgxMDczNzQxODIxLWErYi8xMCkvY3wwKSsxKSpjfWZ1bmN0aW9uIGlnKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9bih7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pfXJldHVybiBifXZhciBqZz17Y3VycmVudDpudWxsfSxrZz1udWxsLGxnPW51bGwsbWc9bnVsbDtmdW5jdGlvbiBuZygpe21nPWxnPWtnPW51bGx9XG5mdW5jdGlvbiBvZyhhKXt2YXIgYj1qZy5jdXJyZW50O0goamcpO2EudHlwZS5fY29udGV4dC5fY3VycmVudFZhbHVlPWJ9ZnVuY3Rpb24gcGcoYSxiKXtmb3IoO251bGwhPT1hOyl7dmFyIGM9YS5hbHRlcm5hdGU7aWYoYS5jaGlsZEV4cGlyYXRpb25UaW1lPGIpYS5jaGlsZEV4cGlyYXRpb25UaW1lPWIsbnVsbCE9PWMmJmMuY2hpbGRFeHBpcmF0aW9uVGltZTxiJiYoYy5jaGlsZEV4cGlyYXRpb25UaW1lPWIpO2Vsc2UgaWYobnVsbCE9PWMmJmMuY2hpbGRFeHBpcmF0aW9uVGltZTxiKWMuY2hpbGRFeHBpcmF0aW9uVGltZT1iO2Vsc2UgYnJlYWs7YT1hLnJldHVybn19ZnVuY3Rpb24gcWcoYSxiKXtrZz1hO21nPWxnPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoYS5leHBpcmF0aW9uVGltZT49YiYmKHJnPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1cbmZ1bmN0aW9uIHNnKGEsYil7aWYobWchPT1hJiYhMSE9PWImJjAhPT1iKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGJ8fDEwNzM3NDE4MjM9PT1iKW1nPWEsYj0xMDczNzQxODIzO2I9e2NvbnRleHQ6YSxvYnNlcnZlZEJpdHM6YixuZXh0Om51bGx9O2lmKG51bGw9PT1sZyl7aWYobnVsbD09PWtnKXRocm93IEVycm9yKHUoMzA4KSk7bGc9YjtrZy5kZXBlbmRlbmNpZXM9e2V4cGlyYXRpb25UaW1lOjAsZmlyc3RDb250ZXh0OmIscmVzcG9uZGVyczpudWxsfX1lbHNlIGxnPWxnLm5leHQ9Yn1yZXR1cm4gYS5fY3VycmVudFZhbHVlfXZhciB0Zz0hMTtmdW5jdGlvbiB1ZyhhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGJhc2VRdWV1ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gdmcoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsYmFzZVF1ZXVlOmEuYmFzZVF1ZXVlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIHdnKGEsYil7YT17ZXhwaXJhdGlvblRpbWU6YSxzdXNwZW5zZUNvbmZpZzpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH07cmV0dXJuIGEubmV4dD1hfWZ1bmN0aW9uIHhnKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1hKXthPWEuc2hhcmVkO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9fVxuZnVuY3Rpb24geWcoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmdmcoYyxhKTthPWEudXBkYXRlUXVldWU7Yz1hLmJhc2VRdWV1ZTtudWxsPT09Yz8oYS5iYXNlUXVldWU9Yi5uZXh0PWIsYi5uZXh0PWIpOihiLm5leHQ9Yy5uZXh0LGMubmV4dD1iKX1cbmZ1bmN0aW9uIHpnKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7dGc9ITE7dmFyIGY9ZS5iYXNlUXVldWUsZz1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1nKXtpZihudWxsIT09Zil7dmFyIGg9Zi5uZXh0O2YubmV4dD1nLm5leHQ7Zy5uZXh0PWh9Zj1nO2Uuc2hhcmVkLnBlbmRpbmc9bnVsbDtoPWEuYWx0ZXJuYXRlO251bGwhPT1oJiYoaD1oLnVwZGF0ZVF1ZXVlLG51bGwhPT1oJiYoaC5iYXNlUXVldWU9ZykpfWlmKG51bGwhPT1mKXtoPWYubmV4dDt2YXIgaz1lLmJhc2VTdGF0ZSxsPTAsbT1udWxsLHA9bnVsbCx4PW51bGw7aWYobnVsbCE9PWgpe3ZhciB6PWg7ZG97Zz16LmV4cGlyYXRpb25UaW1lO2lmKGc8ZCl7dmFyIGNhPXtleHBpcmF0aW9uVGltZTp6LmV4cGlyYXRpb25UaW1lLHN1c3BlbnNlQ29uZmlnOnouc3VzcGVuc2VDb25maWcsdGFnOnoudGFnLHBheWxvYWQ6ei5wYXlsb2FkLGNhbGxiYWNrOnouY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09eD8ocD14PVxuY2EsbT1rKTp4PXgubmV4dD1jYTtnPmwmJihsPWcpfWVsc2V7bnVsbCE9PXgmJih4PXgubmV4dD17ZXhwaXJhdGlvblRpbWU6MTA3Mzc0MTgyMyxzdXNwZW5zZUNvbmZpZzp6LnN1c3BlbnNlQ29uZmlnLHRhZzp6LnRhZyxwYXlsb2FkOnoucGF5bG9hZCxjYWxsYmFjazp6LmNhbGxiYWNrLG5leHQ6bnVsbH0pO0FnKGcsei5zdXNwZW5zZUNvbmZpZyk7YTp7dmFyIEQ9YSx0PXo7Zz1iO2NhPWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6RD10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEQpe2s9RC5jYWxsKGNhLGssZyk7YnJlYWsgYX1rPUQ7YnJlYWsgYTtjYXNlIDM6RC5lZmZlY3RUYWc9RC5lZmZlY3RUYWcmLTQwOTd8NjQ7Y2FzZSAwOkQ9dC5wYXlsb2FkO2c9XCJmdW5jdGlvblwiPT09dHlwZW9mIEQ/RC5jYWxsKGNhLGssZyk6RDtpZihudWxsPT09Z3x8dm9pZCAwPT09ZylicmVhayBhO2s9bih7fSxrLGcpO2JyZWFrIGE7Y2FzZSAyOnRnPSEwfX1udWxsIT09ei5jYWxsYmFjayYmXG4oYS5lZmZlY3RUYWd8PTMyLGc9ZS5lZmZlY3RzLG51bGw9PT1nP2UuZWZmZWN0cz1bel06Zy5wdXNoKHopKX16PXoubmV4dDtpZihudWxsPT09enx8ej09PWgpaWYoZz1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1nKWJyZWFrO2Vsc2Ugej1mLm5leHQ9Zy5uZXh0LGcubmV4dD1oLGUuYmFzZVF1ZXVlPWY9ZyxlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSl9bnVsbD09PXg/bT1rOngubmV4dD1wO2UuYmFzZVN0YXRlPW07ZS5iYXNlUXVldWU9eDtCZyhsKTthLmV4cGlyYXRpb25UaW1lPWw7YS5tZW1vaXplZFN0YXRlPWt9fVxuZnVuY3Rpb24gQ2coYSxiLGMpe2E9Yi5lZmZlY3RzO2IuZWZmZWN0cz1udWxsO2lmKG51bGwhPT1hKWZvcihiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBkPWFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1lO2U9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZCl0aHJvdyBFcnJvcih1KDE5MSxkKSk7ZC5jYWxsKGUpfX19dmFyIERnPVdhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEVnPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIEZnKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpuKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEuZXhwaXJhdGlvblRpbWUmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBKZz17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxGaWJlcik/ZGMoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciBkPUdnKCksZT1EZy5zdXNwZW5zZTtkPUhnKGQsYSxlKTtlPXdnKGQsZSk7ZS5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihlLmNhbGxiYWNrPWMpO3hnKGEsZSk7SWcoYSxkKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsRmliZXI7dmFyIGQ9R2coKSxlPURnLnN1c3BlbnNlO2Q9SGcoZCxhLGUpO2U9d2coZCxlKTtlLnRhZz0xO2UucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZS5jYWxsYmFjaz1jKTt4ZyhhLGUpO0lnKGEsZCl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciBjPUdnKCksZD1EZy5zdXNwZW5zZTtcbmM9SGcoYyxhLGQpO2Q9d2coYyxkKTtkLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZC5jYWxsYmFjaz1iKTt4ZyhhLGQpO0lnKGEsYyl9fTtmdW5jdGlvbiBLZyhhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFiZihjLGQpfHwhYmYoZSxmKTohMH1cbmZ1bmN0aW9uIExnKGEsYixjKXt2YXIgZD0hMSxlPUFmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPXNnKGYpOihlPUwoYik/QmY6Si5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/Q2YoYSxlKTpBZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPUpnO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbEZpYmVyPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIE1nKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZKZy5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIE5nKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9RWc7dWcoYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1zZyhmKTooZj1MKGIpP0JmOkouY3VycmVudCxlLmNvbnRleHQ9Q2YoYSxmKSk7emcoYSxjLGUsZCk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKEZnKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fFxuKGI9ZS5zdGF0ZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJkpnLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLHpnKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZWZmZWN0VGFnfD00KX12YXIgT2c9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIFBnKGEsYixjKXthPWMucmVmO2lmKG51bGwhPT1hJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmXCJvYmplY3RcIiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgRXJyb3IodSgzMDkpKTt2YXIgZD1jLnN0YXRlTm9kZX1pZighZCl0aHJvdyBFcnJvcih1KDE0NyxhKSk7dmFyIGU9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWUpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZC5yZWZzO2I9PT1FZyYmKGI9ZC5yZWZzPXt9KTtudWxsPT09YT9kZWxldGUgYltlXTpiW2VdPWF9O2IuX3N0cmluZ1JlZj1lO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcih1KDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcih1KDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gUWcoYSxiKXtpZihcInRleHRhcmVhXCIhPT1hLnR5cGUpdGhyb3cgRXJyb3IodSgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmIsXCJcIikpO31cbmZ1bmN0aW9uIFJnKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmxhc3RFZmZlY3Q7bnVsbCE9PWQ/KGQubmV4dEVmZmVjdD1jLGIubGFzdEVmZmVjdD1jKTpiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1jO2MubmV4dEVmZmVjdD1udWxsO2MuZWZmZWN0VGFnPTh9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPVNnKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmVmZmVjdFRhZz1cbjIsYyk6ZDtiLmVmZmVjdFRhZz0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmbnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5lZmZlY3RUYWc9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPVRnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7aWYobnVsbCE9PWImJmIuZWxlbWVudFR5cGU9PT1jLnR5cGUpcmV0dXJuIGQ9ZShiLGMucHJvcHMpLGQucmVmPVBnKGEsYixjKSxkLnJldHVybj1hLGQ7ZD1VZyhjLnR5cGUsYy5rZXksYy5wcm9wcyxudWxsLGEubW9kZSxkKTtkLnJlZj1QZyhhLGIsYyk7ZC5yZXR1cm49YTtyZXR1cm4gZH1mdW5jdGlvbiBsKGEsYixjLGQpe2lmKG51bGw9PT1ifHw0IT09Yi50YWd8fGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09XG5jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPVZnKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjLmNoaWxkcmVufHxbXSk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBtKGEsYixjLGQsZil7aWYobnVsbD09PWJ8fDchPT1iLnRhZylyZXR1cm4gYj1XZyhjLGEubW9kZSxkLGYpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIHAoYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYnx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPVRnKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIFphOnJldHVybiBjPVVnKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLGMucmVmPVBnKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSAkYTpyZXR1cm4gYj1WZyhiLGEubW9kZSxjKSxiLnJldHVybj1hLGJ9aWYoT2coYil8fFxubmIoYikpcmV0dXJuIGI9V2coYixhLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7UWcoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB4KGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIFphOnJldHVybiBjLmtleT09PWU/Yy50eXBlPT09YWI/bShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGUpOmsoYSxiLGMsZCk6bnVsbDtjYXNlICRhOnJldHVybiBjLmtleT09PWU/bChhLGIsYyxkKTpudWxsfWlmKE9nKGMpfHxuYihjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7UWcoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB6KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkfHxcIm51bWJlclwiPT09dHlwZW9mIGQpcmV0dXJuIGE9XG5hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgWmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGQudHlwZT09PWFiP20oYixhLGQucHJvcHMuY2hpbGRyZW4sZSxkLmtleSk6ayhiLGEsZCxlKTtjYXNlICRhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpfWlmKE9nKGQpfHxuYihkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7UWcoYixkKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjYShlLGcsaCxrKXtmb3IodmFyIGw9bnVsbCx0PW51bGwsbT1nLHk9Zz0wLEE9bnVsbDtudWxsIT09bSYmeTxoLmxlbmd0aDt5Kyspe20uaW5kZXg+eT8oQT1tLG09bnVsbCk6QT1tLnNpYmxpbmc7dmFyIHE9eChlLG0saFt5XSxrKTtpZihudWxsPT09cSl7bnVsbD09PW0mJihtPUEpO2JyZWFrfWEmJlxubSYmbnVsbD09PXEuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHEsZyx5KTtudWxsPT09dD9sPXE6dC5zaWJsaW5nPXE7dD1xO209QX1pZih5PT09aC5sZW5ndGgpcmV0dXJuIGMoZSxtKSxsO2lmKG51bGw9PT1tKXtmb3IoO3k8aC5sZW5ndGg7eSsrKW09cChlLGhbeV0sayksbnVsbCE9PW0mJihnPWYobSxnLHkpLG51bGw9PT10P2w9bTp0LnNpYmxpbmc9bSx0PW0pO3JldHVybiBsfWZvcihtPWQoZSxtKTt5PGgubGVuZ3RoO3krKylBPXoobSxlLHksaFt5XSxrKSxudWxsIT09QSYmKGEmJm51bGwhPT1BLmFsdGVybmF0ZSYmbS5kZWxldGUobnVsbD09PUEua2V5P3k6QS5rZXkpLGc9ZihBLGcseSksbnVsbD09PXQ/bD1BOnQuc2libGluZz1BLHQ9QSk7YSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtyZXR1cm4gbH1mdW5jdGlvbiBEKGUsZyxoLGwpe3ZhciBrPW5iKGgpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBrKXRocm93IEVycm9yKHUoMTUwKSk7aD1rLmNhbGwoaCk7XG5pZihudWxsPT1oKXRocm93IEVycm9yKHUoMTUxKSk7Zm9yKHZhciBtPWs9bnVsbCx0PWcseT1nPTAsQT1udWxsLHE9aC5uZXh0KCk7bnVsbCE9PXQmJiFxLmRvbmU7eSsrLHE9aC5uZXh0KCkpe3QuaW5kZXg+eT8oQT10LHQ9bnVsbCk6QT10LnNpYmxpbmc7dmFyIEQ9eChlLHQscS52YWx1ZSxsKTtpZihudWxsPT09RCl7bnVsbD09PXQmJih0PUEpO2JyZWFrfWEmJnQmJm51bGw9PT1ELmFsdGVybmF0ZSYmYihlLHQpO2c9ZihELGcseSk7bnVsbD09PW0/az1EOm0uc2libGluZz1EO209RDt0PUF9aWYocS5kb25lKXJldHVybiBjKGUsdCksaztpZihudWxsPT09dCl7Zm9yKDshcS5kb25lO3krKyxxPWgubmV4dCgpKXE9cChlLHEudmFsdWUsbCksbnVsbCE9PXEmJihnPWYocSxnLHkpLG51bGw9PT1tP2s9cTptLnNpYmxpbmc9cSxtPXEpO3JldHVybiBrfWZvcih0PWQoZSx0KTshcS5kb25lO3krKyxxPWgubmV4dCgpKXE9eih0LGUseSxxLnZhbHVlLGwpLG51bGwhPT1xJiYoYSYmbnVsbCE9PVxucS5hbHRlcm5hdGUmJnQuZGVsZXRlKG51bGw9PT1xLmtleT95OnEua2V5KSxnPWYocSxnLHkpLG51bGw9PT1tP2s9cTptLnNpYmxpbmc9cSxtPXEpO2EmJnQuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIGt9cmV0dXJuIGZ1bmN0aW9uKGEsZCxmLGgpe3ZhciBrPVwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PWFiJiZudWxsPT09Zi5rZXk7ayYmKGY9Zi5wcm9wcy5jaGlsZHJlbik7dmFyIGw9XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZjtpZihsKXN3aXRjaChmLiQkdHlwZW9mKXtjYXNlIFphOmE6e2w9Zi5rZXk7Zm9yKGs9ZDtudWxsIT09azspe2lmKGsua2V5PT09bCl7c3dpdGNoKGsudGFnKXtjYXNlIDc6aWYoZi50eXBlPT09YWIpe2MoYSxrLnNpYmxpbmcpO2Q9ZShrLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9YnJlYWs7ZGVmYXVsdDppZihrLmVsZW1lbnRUeXBlPT09Zi50eXBlKXtjKGEsXG5rLnNpYmxpbmcpO2Q9ZShrLGYucHJvcHMpO2QucmVmPVBnKGEsayxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1jKGEsayk7YnJlYWt9ZWxzZSBiKGEsayk7az1rLnNpYmxpbmd9Zi50eXBlPT09YWI/KGQ9V2coZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPVVnKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPVBnKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSAkYTphOntmb3Ioaz1mLmtleTtudWxsIT09ZDspe2lmKGQua2V5PT09aylpZig0PT09ZC50YWcmJmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1mLmNvbnRhaW5lckluZm8mJmQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09Zi5pbXBsZW1lbnRhdGlvbil7YyhhLGQuc2libGluZyk7ZD1lKGQsZi5jaGlsZHJlbnx8W10pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9ZWxzZXtjKGEsZCk7YnJlYWt9ZWxzZSBiKGEsZCk7ZD1cbmQuc2libGluZ31kPVZnKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpfWlmKFwic3RyaW5nXCI9PT10eXBlb2YgZnx8XCJudW1iZXJcIj09PXR5cGVvZiBmKXJldHVybiBmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6KGMoYSxkKSxkPVRnKGYsYS5tb2RlLGgpLGQucmV0dXJuPWEsYT1kKSxnKGEpO2lmKE9nKGYpKXJldHVybiBjYShhLGQsZixoKTtpZihuYihmKSlyZXR1cm4gRChhLGQsZixoKTtsJiZRZyhhLGYpO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgZiYmIWspc3dpdGNoKGEudGFnKXtjYXNlIDE6Y2FzZSAwOnRocm93IGE9YS50eXBlLEVycm9yKHUoMTUyLGEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJDb21wb25lbnRcIikpO31yZXR1cm4gYyhhLGQpfX12YXIgWGc9UmcoITApLFlnPVJnKCExKSxaZz17fSwkZz17Y3VycmVudDpaZ30sYWg9e2N1cnJlbnQ6Wmd9LGJoPXtjdXJyZW50OlpnfTtcbmZ1bmN0aW9uIGNoKGEpe2lmKGE9PT1aZyl0aHJvdyBFcnJvcih1KDE3NCkpO3JldHVybiBhfWZ1bmN0aW9uIGRoKGEsYil7SShiaCxiKTtJKGFoLGEpO0koJGcsWmcpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6T2IobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPU9iKGIsYSl9SCgkZyk7SSgkZyxiKX1mdW5jdGlvbiBlaCgpe0goJGcpO0goYWgpO0goYmgpfWZ1bmN0aW9uIGZoKGEpe2NoKGJoLmN1cnJlbnQpO3ZhciBiPWNoKCRnLmN1cnJlbnQpO3ZhciBjPU9iKGIsYS50eXBlKTtiIT09YyYmKEkoYWgsYSksSSgkZyxjKSl9ZnVuY3Rpb24gZ2goYSl7YWguY3VycmVudD09PWEmJihIKCRnKSxIKGFoKSl9dmFyIE09e2N1cnJlbnQ6MH07XG5mdW5jdGlvbiBoaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxjLmRhdGE9PT1CZHx8Yy5kYXRhPT09Q2QpKXJldHVybiBifWVsc2UgaWYoMTk9PT1iLnRhZyYmdm9pZCAwIT09Yi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT09KGIuZWZmZWN0VGFnJjY0KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaWgoYSxiKXtyZXR1cm57cmVzcG9uZGVyOmEscHJvcHM6Yn19XG52YXIgamg9V2EuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixraD1XYS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxsaD0wLE49bnVsbCxPPW51bGwsUD1udWxsLG1oPSExO2Z1bmN0aW9uIFEoKXt0aHJvdyBFcnJvcih1KDMyMSkpO31mdW5jdGlvbiBuaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCEkZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gb2goYSxiLGMsZCxlLGYpe2xoPWY7Tj1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmV4cGlyYXRpb25UaW1lPTA7amguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9waDpxaDthPWMoZCxlKTtpZihiLmV4cGlyYXRpb25UaW1lPT09bGgpe2Y9MDtkb3tiLmV4cGlyYXRpb25UaW1lPTA7aWYoISgyNT5mKSl0aHJvdyBFcnJvcih1KDMwMSkpO2YrPTE7UD1PPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2poLmN1cnJlbnQ9cmg7YT1jKGQsZSl9d2hpbGUoYi5leHBpcmF0aW9uVGltZT09PWxoKX1qaC5jdXJyZW50PXNoO2I9bnVsbCE9PU8mJm51bGwhPT1PLm5leHQ7bGg9MDtQPU89Tj1udWxsO21oPSExO2lmKGIpdGhyb3cgRXJyb3IodSgzMDApKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHRoKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hO3JldHVybiBQfWZ1bmN0aW9uIHVoKCl7aWYobnVsbD09PU8pe3ZhciBhPU4uYWx0ZXJuYXRlO2E9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU8ubmV4dDt2YXIgYj1udWxsPT09UD9OLm1lbW9pemVkU3RhdGU6UC5uZXh0O2lmKG51bGwhPT1iKVA9YixPPWE7ZWxzZXtpZihudWxsPT09YSl0aHJvdyBFcnJvcih1KDMxMCkpO089YTthPXttZW1vaXplZFN0YXRlOk8ubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Ty5iYXNlU3RhdGUsYmFzZVF1ZXVlOk8uYmFzZVF1ZXVlLHF1ZXVlOk8ucXVldWUsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWF9cmV0dXJuIFB9XG5mdW5jdGlvbiB2aChhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yn1cbmZ1bmN0aW9uIHdoKGEpe3ZhciBiPXVoKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHUoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9TyxlPWQuYmFzZVF1ZXVlLGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXtpZihudWxsIT09ZSl7dmFyIGc9ZS5uZXh0O2UubmV4dD1mLm5leHQ7Zi5uZXh0PWd9ZC5iYXNlUXVldWU9ZT1mO2MucGVuZGluZz1udWxsfWlmKG51bGwhPT1lKXtlPWUubmV4dDtkPWQuYmFzZVN0YXRlO3ZhciBoPWc9Zj1udWxsLGs9ZTtkb3t2YXIgbD1rLmV4cGlyYXRpb25UaW1lO2lmKGw8bGgpe3ZhciBtPXtleHBpcmF0aW9uVGltZTprLmV4cGlyYXRpb25UaW1lLHN1c3BlbnNlQ29uZmlnOmsuc3VzcGVuc2VDb25maWcsYWN0aW9uOmsuYWN0aW9uLGVhZ2VyUmVkdWNlcjprLmVhZ2VyUmVkdWNlcixlYWdlclN0YXRlOmsuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1oPyhnPWg9bSxmPWQpOmg9aC5uZXh0PW07bD5OLmV4cGlyYXRpb25UaW1lJiZcbihOLmV4cGlyYXRpb25UaW1lPWwsQmcobCkpfWVsc2UgbnVsbCE9PWgmJihoPWgubmV4dD17ZXhwaXJhdGlvblRpbWU6MTA3Mzc0MTgyMyxzdXNwZW5zZUNvbmZpZzprLnN1c3BlbnNlQ29uZmlnLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksQWcobCxrLnN1c3BlbnNlQ29uZmlnKSxkPWsuZWFnZXJSZWR1Y2VyPT09YT9rLmVhZ2VyU3RhdGU6YShkLGsuYWN0aW9uKTtrPWsubmV4dH13aGlsZShudWxsIT09ayYmayE9PWUpO251bGw9PT1oP2Y9ZDpoLm5leHQ9ZzskZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChyZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZjtiLmJhc2VRdWV1ZT1oO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1yZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24geGgoYSl7dmFyIGI9dWgoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IodSgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpOyRlKGYsYi5tZW1vaXplZFN0YXRlKXx8KHJnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19XG5mdW5jdGlvbiB5aChhKXt2YXIgYj10aCgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9Yi5xdWV1ZT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjp2aCxsYXN0UmVuZGVyZWRTdGF0ZTphfTthPWEuZGlzcGF0Y2g9emguYmluZChudWxsLE4sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1mdW5jdGlvbiBBaChhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGx9LE4udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBCaCgpe3JldHVybiB1aCgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gQ2goYSxiLGMsZCl7dmFyIGU9dGgoKTtOLmVmZmVjdFRhZ3w9YTtlLm1lbW9pemVkU3RhdGU9QWgoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1mdW5jdGlvbiBEaChhLGIsYyxkKXt2YXIgZT11aCgpO2Q9dm9pZCAwPT09ZD9udWxsOmQ7dmFyIGY9dm9pZCAwO2lmKG51bGwhPT1PKXt2YXIgZz1PLm1lbW9pemVkU3RhdGU7Zj1nLmRlc3Ryb3k7aWYobnVsbCE9PWQmJm5oKGQsZy5kZXBzKSl7QWgoYixjLGYsZCk7cmV0dXJufX1OLmVmZmVjdFRhZ3w9YTtlLm1lbW9pemVkU3RhdGU9QWgoMXxiLGMsZixkKX1mdW5jdGlvbiBFaChhLGIpe3JldHVybiBDaCg1MTYsNCxhLGIpfWZ1bmN0aW9uIEZoKGEsYil7cmV0dXJuIERoKDUxNiw0LGEsYil9ZnVuY3Rpb24gR2goYSxiKXtyZXR1cm4gRGgoNCwyLGEsYil9XG5mdW5jdGlvbiBIaChhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIEloKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gRGgoNCwyLEhoLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIEpoKCl7fWZ1bmN0aW9uIEtoKGEsYil7dGgoKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX1mdW5jdGlvbiBMaChhLGIpe3ZhciBjPXVoKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZuaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIE1oKGEsYil7dmFyIGM9dWgoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJm5oKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIE5oKGEsYixjKXt2YXIgZD1hZygpO2NnKDk4PmQ/OTg6ZCxmdW5jdGlvbigpe2EoITApfSk7Y2coOTc8ZD85NzpkLGZ1bmN0aW9uKCl7dmFyIGQ9a2guc3VzcGVuc2U7a2guc3VzcGVuc2U9dm9pZCAwPT09Yj9udWxsOmI7dHJ5e2EoITEpLGMoKX1maW5hbGx5e2toLnN1c3BlbnNlPWR9fSl9XG5mdW5jdGlvbiB6aChhLGIsYyl7dmFyIGQ9R2coKSxlPURnLnN1c3BlbnNlO2Q9SGcoZCxhLGUpO2U9e2V4cGlyYXRpb25UaW1lOmQsc3VzcGVuc2VDb25maWc6ZSxhY3Rpb246YyxlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTt2YXIgZj1iLnBlbmRpbmc7bnVsbD09PWY/ZS5uZXh0PWU6KGUubmV4dD1mLm5leHQsZi5uZXh0PWUpO2IucGVuZGluZz1lO2Y9YS5hbHRlcm5hdGU7aWYoYT09PU58fG51bGwhPT1mJiZmPT09TiltaD0hMCxlLmV4cGlyYXRpb25UaW1lPWxoLE4uZXhwaXJhdGlvblRpbWU9bGg7ZWxzZXtpZigwPT09YS5leHBpcmF0aW9uVGltZSYmKG51bGw9PT1mfHwwPT09Zi5leHBpcmF0aW9uVGltZSkmJihmPWIubGFzdFJlbmRlcmVkUmVkdWNlcixudWxsIT09ZikpdHJ5e3ZhciBnPWIubGFzdFJlbmRlcmVkU3RhdGUsaD1mKGcsYyk7ZS5lYWdlclJlZHVjZXI9ZjtlLmVhZ2VyU3RhdGU9aDtpZigkZShoLGcpKXJldHVybn1jYXRjaChrKXt9ZmluYWxseXt9SWcoYSxcbmQpfX1cbnZhciBzaD17cmVhZENvbnRleHQ6c2csdXNlQ2FsbGJhY2s6USx1c2VDb250ZXh0OlEsdXNlRWZmZWN0OlEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpRLHVzZUxheW91dEVmZmVjdDpRLHVzZU1lbW86USx1c2VSZWR1Y2VyOlEsdXNlUmVmOlEsdXNlU3RhdGU6USx1c2VEZWJ1Z1ZhbHVlOlEsdXNlUmVzcG9uZGVyOlEsdXNlRGVmZXJyZWRWYWx1ZTpRLHVzZVRyYW5zaXRpb246UX0scGg9e3JlYWRDb250ZXh0OnNnLHVzZUNhbGxiYWNrOktoLHVzZUNvbnRleHQ6c2csdXNlRWZmZWN0OkVoLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBDaCg0LDIsSGguYmluZChudWxsLGIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiBDaCg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPXRoKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsXG5iXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGgoKTtiPXZvaWQgMCE9PWM/YyhiKTpiO2QubWVtb2l6ZWRTdGF0ZT1kLmJhc2VTdGF0ZT1iO2E9ZC5xdWV1ZT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2E9YS5kaXNwYXRjaD16aC5iaW5kKG51bGwsTixhKTtyZXR1cm5bZC5tZW1vaXplZFN0YXRlLGFdfSx1c2VSZWY6ZnVuY3Rpb24oYSl7dmFyIGI9dGgoKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6eWgsdXNlRGVidWdWYWx1ZTpKaCx1c2VSZXNwb25kZXI6aWgsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXloKGEpLGQ9Y1swXSxlPWNbMV07RWgoZnVuY3Rpb24oKXt2YXIgYz1raC5zdXNwZW5zZTtraC5zdXNwZW5zZT12b2lkIDA9PT1iP251bGw6Yjt0cnl7ZShhKX1maW5hbGx5e2toLnN1c3BlbnNlPVxuY319LFthLGJdKTtyZXR1cm4gZH0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj15aCghMSksYz1iWzBdO2I9YlsxXTtyZXR1cm5bS2goTmguYmluZChudWxsLGIsYSksW2IsYV0pLGNdfX0scWg9e3JlYWRDb250ZXh0OnNnLHVzZUNhbGxiYWNrOkxoLHVzZUNvbnRleHQ6c2csdXNlRWZmZWN0OkZoLHVzZUltcGVyYXRpdmVIYW5kbGU6SWgsdXNlTGF5b3V0RWZmZWN0OkdoLHVzZU1lbW86TWgsdXNlUmVkdWNlcjp3aCx1c2VSZWY6QmgsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gd2godmgpfSx1c2VEZWJ1Z1ZhbHVlOkpoLHVzZVJlc3BvbmRlcjppaCx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9d2godmgpLGQ9Y1swXSxlPWNbMV07RmgoZnVuY3Rpb24oKXt2YXIgYz1raC5zdXNwZW5zZTtraC5zdXNwZW5zZT12b2lkIDA9PT1iP251bGw6Yjt0cnl7ZShhKX1maW5hbGx5e2toLnN1c3BlbnNlPWN9fSxbYSxiXSk7cmV0dXJuIGR9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oYSl7dmFyIGI9XG53aCh2aCksYz1iWzBdO2I9YlsxXTtyZXR1cm5bTGgoTmguYmluZChudWxsLGIsYSksW2IsYV0pLGNdfX0scmg9e3JlYWRDb250ZXh0OnNnLHVzZUNhbGxiYWNrOkxoLHVzZUNvbnRleHQ6c2csdXNlRWZmZWN0OkZoLHVzZUltcGVyYXRpdmVIYW5kbGU6SWgsdXNlTGF5b3V0RWZmZWN0OkdoLHVzZU1lbW86TWgsdXNlUmVkdWNlcjp4aCx1c2VSZWY6QmgsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4geGgodmgpfSx1c2VEZWJ1Z1ZhbHVlOkpoLHVzZVJlc3BvbmRlcjppaCx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9eGgodmgpLGQ9Y1swXSxlPWNbMV07RmgoZnVuY3Rpb24oKXt2YXIgYz1raC5zdXNwZW5zZTtraC5zdXNwZW5zZT12b2lkIDA9PT1iP251bGw6Yjt0cnl7ZShhKX1maW5hbGx5e2toLnN1c3BlbnNlPWN9fSxbYSxiXSk7cmV0dXJuIGR9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oYSl7dmFyIGI9eGgodmgpLGM9YlswXTtiPWJbMV07cmV0dXJuW0xoKE5oLmJpbmQobnVsbCxcbmIsYSksW2IsYV0pLGNdfX0sT2g9bnVsbCxQaD1udWxsLFFoPSExO2Z1bmN0aW9uIFJoKGEsYil7dmFyIGM9U2goNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnR5cGU9XCJERUxFVEVEXCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2MuZWZmZWN0VGFnPTg7bnVsbCE9PWEubGFzdEVmZmVjdD8oYS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9YyxhLmxhc3RFZmZlY3Q9Yyk6YS5maXJzdEVmZmVjdD1hLmxhc3RFZmZlY3Q9Y31cbmZ1bmN0aW9uIFRoKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgMTM6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBVaChhKXtpZihRaCl7dmFyIGI9UGg7aWYoYil7dmFyIGM9YjtpZighVGgoYSxiKSl7Yj1KZChjLm5leHRTaWJsaW5nKTtpZighYnx8IVRoKGEsYikpe2EuZWZmZWN0VGFnPWEuZWZmZWN0VGFnJi0xMDI1fDI7UWg9ITE7T2g9YTtyZXR1cm59UmgoT2gsYyl9T2g9YTtQaD1KZChiLmZpcnN0Q2hpbGQpfWVsc2UgYS5lZmZlY3RUYWc9YS5lZmZlY3RUYWcmLTEwMjV8MixRaD0hMSxPaD1hfX1mdW5jdGlvbiBWaChhKXtmb3IoYT1hLnJldHVybjtudWxsIT09YSYmNSE9PWEudGFnJiYzIT09YS50YWcmJjEzIT09YS50YWc7KWE9YS5yZXR1cm47T2g9YX1cbmZ1bmN0aW9uIFdoKGEpe2lmKGEhPT1PaClyZXR1cm4hMTtpZighUWgpcmV0dXJuIFZoKGEpLFFoPSEwLCExO3ZhciBiPWEudHlwZTtpZig1IT09YS50YWd8fFwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhR2QoYixhLm1lbW9pemVkUHJvcHMpKWZvcihiPVBoO2I7KVJoKGEsYiksYj1KZChiLm5leHRTaWJsaW5nKTtWaChhKTtpZigxMz09PWEudGFnKXthPWEubWVtb2l6ZWRTdGF0ZTthPW51bGwhPT1hP2EuZGVoeWRyYXRlZDpudWxsO2lmKCFhKXRocm93IEVycm9yKHUoMzE3KSk7YTp7YT1hLm5leHRTaWJsaW5nO2ZvcihiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoYz09PUFkKXtpZigwPT09Yil7UGg9SmQoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZSBjIT09emQmJmMhPT1DZCYmYyE9PUJkfHxiKyt9YT1hLm5leHRTaWJsaW5nfVBoPW51bGx9fWVsc2UgUGg9T2g/SmQoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9XG5mdW5jdGlvbiBYaCgpe1BoPU9oPW51bGw7UWg9ITF9dmFyIFloPVdhLlJlYWN0Q3VycmVudE93bmVyLHJnPSExO2Z1bmN0aW9uIFIoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9ZZyhiLG51bGwsYyxkKTpYZyhiLGEuY2hpbGQsYyxkKX1mdW5jdGlvbiBaaChhLGIsYyxkLGUpe2M9Yy5yZW5kZXI7dmFyIGY9Yi5yZWY7cWcoYixlKTtkPW9oKGEsYixjLGQsZixlKTtpZihudWxsIT09YSYmIXJnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5lZmZlY3RUYWcmPS01MTcsYS5leHBpcmF0aW9uVGltZTw9ZSYmKGEuZXhwaXJhdGlvblRpbWU9MCksJGgoYSxiLGUpO2IuZWZmZWN0VGFnfD0xO1IoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBhaShhLGIsYyxkLGUsZil7aWYobnVsbD09PWEpe3ZhciBnPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZyYmIWJpKGcpJiZ2b2lkIDA9PT1nLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1nLGNpKGEsYixnLGQsZSxmKTthPVVnKGMudHlwZSxudWxsLGQsbnVsbCxiLm1vZGUsZik7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWc9YS5jaGlsZDtpZihlPGYmJihlPWcubWVtb2l6ZWRQcm9wcyxjPWMuY29tcGFyZSxjPW51bGwhPT1jP2M6YmYsYyhlLGQpJiZhLnJlZj09PWIucmVmKSlyZXR1cm4gJGgoYSxiLGYpO2IuZWZmZWN0VGFnfD0xO2E9U2coZyxkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBjaShhLGIsYyxkLGUsZil7cmV0dXJuIG51bGwhPT1hJiZiZihhLm1lbW9pemVkUHJvcHMsZCkmJmEucmVmPT09Yi5yZWYmJihyZz0hMSxlPGYpPyhiLmV4cGlyYXRpb25UaW1lPWEuZXhwaXJhdGlvblRpbWUsJGgoYSxiLGYpKTpkaShhLGIsYyxkLGYpfWZ1bmN0aW9uIGVpKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZWZmZWN0VGFnfD0xMjh9ZnVuY3Rpb24gZGkoYSxiLGMsZCxlKXt2YXIgZj1MKGMpP0JmOkouY3VycmVudDtmPUNmKGIsZik7cWcoYixlKTtjPW9oKGEsYixjLGQsZixlKTtpZihudWxsIT09YSYmIXJnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5lZmZlY3RUYWcmPS01MTcsYS5leHBpcmF0aW9uVGltZTw9ZSYmKGEuZXhwaXJhdGlvblRpbWU9MCksJGgoYSxiLGUpO2IuZWZmZWN0VGFnfD0xO1IoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBmaShhLGIsYyxkLGUpe2lmKEwoYykpe3ZhciBmPSEwO0dmKGIpfWVsc2UgZj0hMTtxZyhiLGUpO2lmKG51bGw9PT1iLnN0YXRlTm9kZSludWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9MiksTGcoYixjLGQpLE5nKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPXNnKGwpOihsPUwoYyk/QmY6Si5jdXJyZW50LGw9Q2YoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cHx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1kfHxrIT09bCkmJk1nKGIsZyxkLGwpO3RnPSExO3ZhciB4PWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXg7emcoYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHghPT1rfHxLLmN1cnJlbnR8fHRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgbSYmKEZnKGIsYyxtLGQpLGs9Yi5tZW1vaXplZFN0YXRlKSwoaD10Z3x8S2coYixjLGgsZCx4LGssbCkpPyhwfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnR8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnQmJmcuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09PVxudHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmVmZmVjdFRhZ3w9NCkpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZWZmZWN0VGFnfD00KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZWZmZWN0VGFnfD00KSxkPSExKX1lbHNlIGc9Yi5zdGF0ZU5vZGUsdmcoYSxiKSxoPWIubWVtb2l6ZWRQcm9wcyxnLnByb3BzPWIudHlwZT09PWIuZWxlbWVudFR5cGU/aDppZyhiLnR5cGUsaCksaz1nLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlLFwib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1zZyhsKToobD1MKGMpP0JmOkouY3VycmVudCxsPUNmKGIsbCkpLG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsKHA9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PVxudHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1kfHxrIT09bCkmJk1nKGIsZyxkLGwpLHRnPSExLGs9Yi5tZW1vaXplZFN0YXRlLGcuc3RhdGU9ayx6ZyhiLGQsZyxlKSx4PWIubWVtb2l6ZWRTdGF0ZSxoIT09ZHx8ayE9PXh8fEsuY3VycmVudHx8dGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoRmcoYixjLG0sZCkseD1iLm1lbW9pemVkU3RhdGUpLChtPXRnfHxLZyhiLGMsaCxkLGsseCxsKSk/KHB8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsXG54LGwpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQseCxsKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5lZmZlY3RUYWd8PTI1NikpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJms9PT1hLm1lbW9pemVkU3RhdGV8fChiLmVmZmVjdFRhZ3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJms9PT1hLm1lbW9pemVkU3RhdGV8fChiLmVmZmVjdFRhZ3w9MjU2KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9eCksZy5wcm9wcz1kLGcuc3RhdGU9eCxnLmNvbnRleHQ9bCxkPW0pOlxuKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmaz09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmaz09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZWZmZWN0VGFnfD0yNTYpLGQ9ITEpO3JldHVybiBnaShhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBnaShhLGIsYyxkLGUsZil7ZWkoYSxiKTt2YXIgZz0wIT09KGIuZWZmZWN0VGFnJjY0KTtpZighZCYmIWcpcmV0dXJuIGUmJkhmKGIsYywhMSksJGgoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7WWguY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5lZmZlY3RUYWd8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9WGcoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1YZyhiLG51bGwsaCxmKSk6UihhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZIZihiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGhpKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/RWYoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmRWYoYSxiLmNvbnRleHQsITEpO2RoKGEsYi5jb250YWluZXJJbmZvKX1cbnZhciBpaT17ZGVoeWRyYXRlZDpudWxsLHJldHJ5VGltZTowfTtcbmZ1bmN0aW9uIGppKGEsYixjKXt2YXIgZD1iLm1vZGUsZT1iLnBlbmRpbmdQcm9wcyxmPU0uY3VycmVudCxnPSExLGg7KGg9MCE9PShiLmVmZmVjdFRhZyY2NCkpfHwoaD0wIT09KGYmMikmJihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSkpO2g/KGc9ITAsYi5lZmZlY3RUYWcmPS02NSk6bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGV8fHZvaWQgMD09PWUuZmFsbGJhY2t8fCEwPT09ZS51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8KGZ8PTEpO0koTSxmJjEpO2lmKG51bGw9PT1hKXt2b2lkIDAhPT1lLmZhbGxiYWNrJiZVaChiKTtpZihnKXtnPWUuZmFsbGJhY2s7ZT1XZyhudWxsLGQsMCxudWxsKTtlLnJldHVybj1iO2lmKDA9PT0oYi5tb2RlJjIpKWZvcihhPW51bGwhPT1iLm1lbW9pemVkU3RhdGU/Yi5jaGlsZC5jaGlsZDpiLmNoaWxkLGUuY2hpbGQ9YTtudWxsIT09YTspYS5yZXR1cm49ZSxhPWEuc2libGluZztjPVdnKGcsZCxjLG51bGwpO2MucmV0dXJuPVxuYjtlLnNpYmxpbmc9YztiLm1lbW9pemVkU3RhdGU9aWk7Yi5jaGlsZD1lO3JldHVybiBjfWQ9ZS5jaGlsZHJlbjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYi5jaGlsZD1ZZyhiLG51bGwsZCxjKX1pZihudWxsIT09YS5tZW1vaXplZFN0YXRlKXthPWEuY2hpbGQ7ZD1hLnNpYmxpbmc7aWYoZyl7ZT1lLmZhbGxiYWNrO2M9U2coYSxhLnBlbmRpbmdQcm9wcyk7Yy5yZXR1cm49YjtpZigwPT09KGIubW9kZSYyKSYmKGc9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZT9iLmNoaWxkLmNoaWxkOmIuY2hpbGQsZyE9PWEuY2hpbGQpKWZvcihjLmNoaWxkPWc7bnVsbCE9PWc7KWcucmV0dXJuPWMsZz1nLnNpYmxpbmc7ZD1TZyhkLGUpO2QucmV0dXJuPWI7Yy5zaWJsaW5nPWQ7Yy5jaGlsZEV4cGlyYXRpb25UaW1lPTA7Yi5tZW1vaXplZFN0YXRlPWlpO2IuY2hpbGQ9YztyZXR1cm4gZH1jPVhnKGIsYS5jaGlsZCxlLmNoaWxkcmVuLGMpO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBiLmNoaWxkPVxuY31hPWEuY2hpbGQ7aWYoZyl7Zz1lLmZhbGxiYWNrO2U9V2cobnVsbCxkLDAsbnVsbCk7ZS5yZXR1cm49YjtlLmNoaWxkPWE7bnVsbCE9PWEmJihhLnJldHVybj1lKTtpZigwPT09KGIubW9kZSYyKSlmb3IoYT1udWxsIT09Yi5tZW1vaXplZFN0YXRlP2IuY2hpbGQuY2hpbGQ6Yi5jaGlsZCxlLmNoaWxkPWE7bnVsbCE9PWE7KWEucmV0dXJuPWUsYT1hLnNpYmxpbmc7Yz1XZyhnLGQsYyxudWxsKTtjLnJldHVybj1iO2Uuc2libGluZz1jO2MuZWZmZWN0VGFnfD0yO2UuY2hpbGRFeHBpcmF0aW9uVGltZT0wO2IubWVtb2l6ZWRTdGF0ZT1paTtiLmNoaWxkPWU7cmV0dXJuIGN9Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGIuY2hpbGQ9WGcoYixhLGUuY2hpbGRyZW4sYyl9XG5mdW5jdGlvbiBraShhLGIpe2EuZXhwaXJhdGlvblRpbWU8YiYmKGEuZXhwaXJhdGlvblRpbWU9Yik7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJmMuZXhwaXJhdGlvblRpbWU8YiYmKGMuZXhwaXJhdGlvblRpbWU9Yik7cGcoYS5yZXR1cm4sYil9ZnVuY3Rpb24gbGkoYSxiLGMsZCxlLGYpe3ZhciBnPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zz9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsRXhwaXJhdGlvbjowLHRhaWxNb2RlOmUsbGFzdEVmZmVjdDpmfTooZy5pc0JhY2t3YXJkcz1iLGcucmVuZGVyaW5nPW51bGwsZy5yZW5kZXJpbmdTdGFydFRpbWU9MCxnLmxhc3Q9ZCxnLnRhaWw9YyxnLnRhaWxFeHBpcmF0aW9uPTAsZy50YWlsTW9kZT1lLGcubGFzdEVmZmVjdD1mKX1cbmZ1bmN0aW9uIG1pKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7UihhLGIsZC5jaGlsZHJlbixjKTtkPU0uY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmVmZmVjdFRhZ3w9NjQ7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmVmZmVjdFRhZyY2NCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZraShhLGMpO2Vsc2UgaWYoMTk9PT1hLnRhZylraShhLGMpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1JKE0sZCk7aWYoMD09PShiLm1vZGUmMikpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PWhoKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7bGkoYiwhMSxlLGMsZixiLmxhc3RFZmZlY3QpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09aGgoYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfWxpKGIsITAsYyxudWxsLGYsYi5sYXN0RWZmZWN0KTticmVhaztjYXNlIFwidG9nZXRoZXJcIjpsaShiLCExLG51bGwsbnVsbCx2b2lkIDAsYi5sYXN0RWZmZWN0KTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gJGgoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO3ZhciBkPWIuZXhwaXJhdGlvblRpbWU7MCE9PWQmJkJnKGQpO2lmKGIuY2hpbGRFeHBpcmF0aW9uVGltZTxjKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcih1KDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz1TZyhhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9U2coYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH12YXIgbmksb2kscGkscWk7XG5uaT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07b2k9ZnVuY3Rpb24oKXt9O1xucGk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoZiE9PWQpe3ZhciBnPWIuc3RhdGVOb2RlO2NoKCRnLmN1cnJlbnQpO2E9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6Zj16YihnLGYpO2Q9emIoZyxkKTthPVtdO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpmPUdiKGcsZik7ZD1HYihnLGQpO2E9W107YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmY9bih7fSxmLHt2YWx1ZTp2b2lkIDB9KTtkPW4oe30sZCx7dmFsdWU6dm9pZCAwfSk7YT1bXTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpmPUliKGcsZik7ZD1JYihnLGQpO2E9W107YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCIhPT10eXBlb2YgZi5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5vbkNsaWNrJiYoZy5vbmNsaWNrPXNkKX1vZChjLGQpO3ZhciBoLGs7Yz1udWxsO2ZvcihoIGluIGYpaWYoIWQuaGFzT3duUHJvcGVydHkoaCkmJmYuaGFzT3duUHJvcGVydHkoaCkmJm51bGwhPWZbaF0paWYoXCJzdHlsZVwiPT09XG5oKWZvcihrIGluIGc9ZltoXSxnKWcuaGFzT3duUHJvcGVydHkoaykmJihjfHwoYz17fSksY1trXT1cIlwiKTtlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09aCYmXCJjaGlsZHJlblwiIT09aCYmXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWgmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1oJiZcImF1dG9Gb2N1c1wiIT09aCYmKHZhLmhhc093blByb3BlcnR5KGgpP2F8fChhPVtdKTooYT1hfHxbXSkucHVzaChoLG51bGwpKTtmb3IoaCBpbiBkKXt2YXIgbD1kW2hdO2c9bnVsbCE9Zj9mW2hdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGgpJiZsIT09ZyYmKG51bGwhPWx8fG51bGwhPWcpKWlmKFwic3R5bGVcIj09PWgpaWYoZyl7Zm9yKGsgaW4gZykhZy5oYXNPd25Qcm9wZXJ0eShrKXx8bCYmbC5oYXNPd25Qcm9wZXJ0eShrKXx8KGN8fChjPXt9KSxjW2tdPVwiXCIpO2ZvcihrIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShrKSYmZ1trXSE9PWxba10mJihjfHwoYz17fSksXG5jW2tdPWxba10pfWVsc2UgY3x8KGF8fChhPVtdKSxhLnB1c2goaCxjKSksYz1sO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1oPyhsPWw/bC5fX2h0bWw6dm9pZCAwLGc9Zz9nLl9faHRtbDp2b2lkIDAsbnVsbCE9bCYmZyE9PWwmJihhPWF8fFtdKS5wdXNoKGgsbCkpOlwiY2hpbGRyZW5cIj09PWg/Zz09PWx8fFwic3RyaW5nXCIhPT10eXBlb2YgbCYmXCJudW1iZXJcIiE9PXR5cGVvZiBsfHwoYT1hfHxbXSkucHVzaChoLFwiXCIrbCk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWgmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1oJiYodmEuaGFzT3duUHJvcGVydHkoaCk/KG51bGwhPWwmJnJkKGUsaCksYXx8Zz09PWx8fChhPVtdKSk6KGE9YXx8W10pLnB1c2goaCxsKSl9YyYmKGE9YXx8W10pLnB1c2goXCJzdHlsZVwiLGMpO2U9YTtpZihiLnVwZGF0ZVF1ZXVlPWUpYi5lZmZlY3RUYWd8PTR9fTtcbnFpPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5lZmZlY3RUYWd8PTQpfTtmdW5jdGlvbiByaShhLGIpe3N3aXRjaChhLnRhaWxNb2RlKXtjYXNlIFwiaGlkZGVuXCI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSBcImNvbGxhcHNlZFwiOmM9YS50YWlsO2Zvcih2YXIgZD1udWxsO251bGwhPT1jOyludWxsIT09Yy5hbHRlcm5hdGUmJihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19XG5mdW5jdGlvbiBzaShhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gbnVsbDtjYXNlIDE6cmV0dXJuIEwoYi50eXBlKSYmRGYoKSxudWxsO2Nhc2UgMzpyZXR1cm4gZWgoKSxIKEspLEgoSiksYz1iLnN0YXRlTm9kZSxjLnBlbmRpbmdDb250ZXh0JiYoYy5jb250ZXh0PWMucGVuZGluZ0NvbnRleHQsYy5wZW5kaW5nQ29udGV4dD1udWxsKSxudWxsIT09YSYmbnVsbCE9PWEuY2hpbGR8fCFXaChiKXx8KGIuZWZmZWN0VGFnfD00KSxvaShiKSxudWxsO2Nhc2UgNTpnaChiKTtjPWNoKGJoLmN1cnJlbnQpO3ZhciBlPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpcGkoYSxiLGUsZCxjKSxhLnJlZiE9PWIucmVmJiYoYi5lZmZlY3RUYWd8PTEyOCk7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHUoMTY2KSk7XG5yZXR1cm4gbnVsbH1hPWNoKCRnLmN1cnJlbnQpO2lmKFdoKGIpKXtkPWIuc3RhdGVOb2RlO2U9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW01kXT1iO2RbTmRdPWY7c3dpdGNoKGUpe2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RihcImxvYWRcIixkKTticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoYT0wO2E8YWMubGVuZ3RoO2ErKylGKGFjW2FdLGQpO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpGKFwiZXJyb3JcIixkKTticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpGKFwiZXJyb3JcIixkKTtGKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJmb3JtXCI6RihcInJlc2V0XCIsZCk7RihcInN1Ym1pdFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RihcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOkFiKGQsZik7RihcImludmFsaWRcIixkKTtyZChjLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT1cbnt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0YoXCJpbnZhbGlkXCIsZCk7cmQoYyxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOkpiKGQsZiksRihcImludmFsaWRcIixkKSxyZChjLFwib25DaGFuZ2VcIil9b2QoZSxmKTthPW51bGw7Zm9yKHZhciBnIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9ZltnXTtcImNoaWxkcmVuXCI9PT1nP1wic3RyaW5nXCI9PT10eXBlb2YgaD9kLnRleHRDb250ZW50IT09aCYmKGE9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoYT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOnZhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZyZChjLGcpfXN3aXRjaChlKXtjYXNlIFwiaW5wdXRcIjp4YihkKTtFYihkLGYsITApO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOnhiKGQpO0xiKGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpjYXNlIFwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5vbkNsaWNrJiZcbihkLm9uY2xpY2s9c2QpfWM9YTtiLnVwZGF0ZVF1ZXVlPWM7bnVsbCE9PWMmJihiLmVmZmVjdFRhZ3w9NCl9ZWxzZXtnPTk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50O2E9PT1xZCYmKGE9TmIoZSkpO2E9PT1xZD9cInNjcmlwdFwiPT09ZT8oYT1nLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksYS5pbm5lckhUTUw9XCI8c2NyaXB0PlxceDNjL3NjcmlwdD5cIixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6XCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGUse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoZSksXCJzZWxlY3RcIj09PWUmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGUpO2FbTWRdPWI7YVtOZF09ZDtuaShhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7Zz1wZChlLGQpO3N3aXRjaChlKXtjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkYoXCJsb2FkXCIsXG5hKTtoPWQ7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGg9MDtoPGFjLmxlbmd0aDtoKyspRihhY1toXSxhKTtoPWQ7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkYoXCJlcnJvclwiLGEpO2g9ZDticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpGKFwiZXJyb3JcIixhKTtGKFwibG9hZFwiLGEpO2g9ZDticmVhaztjYXNlIFwiZm9ybVwiOkYoXCJyZXNldFwiLGEpO0YoXCJzdWJtaXRcIixhKTtoPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpGKFwidG9nZ2xlXCIsYSk7aD1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOkFiKGEsZCk7aD16YihhLGQpO0YoXCJpbnZhbGlkXCIsYSk7cmQoYyxcIm9uQ2hhbmdlXCIpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpoPUdiKGEsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtoPW4oe30sZCx7dmFsdWU6dm9pZCAwfSk7RihcImludmFsaWRcIixhKTtyZChjLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6SmIoYSxcbmQpO2g9SWIoYSxkKTtGKFwiaW52YWxpZFwiLGEpO3JkKGMsXCJvbkNoYW5nZVwiKTticmVhaztkZWZhdWx0Omg9ZH1vZChlLGgpO3ZhciBrPWg7Zm9yKGYgaW4gaylpZihrLmhhc093blByb3BlcnR5KGYpKXt2YXIgbD1rW2ZdO1wic3R5bGVcIj09PWY/bWQoYSxsKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhsPWw/bC5fX2h0bWw6dm9pZCAwLG51bGwhPWwmJlFiKGEsbCkpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBsPyhcInRleHRhcmVhXCIhPT1lfHxcIlwiIT09bCkmJlJiKGEsbCk6XCJudW1iZXJcIj09PXR5cGVvZiBsJiZSYihhLFwiXCIrbCk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWYmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1mJiZcImF1dG9Gb2N1c1wiIT09ZiYmKHZhLmhhc093blByb3BlcnR5KGYpP251bGwhPWwmJnJkKGMsZik6bnVsbCE9bCYmWGEoYSxmLGwsZykpfXN3aXRjaChlKXtjYXNlIFwiaW5wdXRcIjp4YihhKTtFYihhLGQsITEpO1xuYnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6eGIoYSk7TGIoYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOm51bGwhPWQudmFsdWUmJmEuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiK3JiKGQudmFsdWUpKTticmVhaztjYXNlIFwic2VsZWN0XCI6YS5tdWx0aXBsZT0hIWQubXVsdGlwbGU7Yz1kLnZhbHVlO251bGwhPWM/SGIoYSwhIWQubXVsdGlwbGUsYywhMSk6bnVsbCE9ZC5kZWZhdWx0VmFsdWUmJkhiKGEsISFkLm11bHRpcGxlLGQuZGVmYXVsdFZhbHVlLCEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLm9uQ2xpY2smJihhLm9uY2xpY2s9c2QpfUZkKGUsZCkmJihiLmVmZmVjdFRhZ3w9NCl9bnVsbCE9PWIucmVmJiYoYi5lZmZlY3RUYWd8PTEyOCl9cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKXFpKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcih1KDE2NikpO1xuYz1jaChiaC5jdXJyZW50KTtjaCgkZy5jdXJyZW50KTtXaChiKT8oYz1iLnN0YXRlTm9kZSxkPWIubWVtb2l6ZWRQcm9wcyxjW01kXT1iLGMubm9kZVZhbHVlIT09ZCYmKGIuZWZmZWN0VGFnfD00KSk6KGM9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxjW01kXT1iLGIuc3RhdGVOb2RlPWMpfXJldHVybiBudWxsO2Nhc2UgMTM6SChNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZigwIT09KGIuZWZmZWN0VGFnJjY0KSlyZXR1cm4gYi5leHBpcmF0aW9uVGltZT1jLGI7Yz1udWxsIT09ZDtkPSExO251bGw9PT1hP3ZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5mYWxsYmFjayYmV2goYik6KGU9YS5tZW1vaXplZFN0YXRlLGQ9bnVsbCE9PWUsY3x8bnVsbD09PWV8fChlPWEuY2hpbGQuc2libGluZyxudWxsIT09ZSYmKGY9Yi5maXJzdEVmZmVjdCxudWxsIT09Zj8oYi5maXJzdEVmZmVjdD1lLGUubmV4dEVmZmVjdD1mKTooYi5maXJzdEVmZmVjdD1iLmxhc3RFZmZlY3Q9XG5lLGUubmV4dEVmZmVjdD1udWxsKSxlLmVmZmVjdFRhZz04KSkpO2lmKGMmJiFkJiYwIT09KGIubW9kZSYyKSlpZihudWxsPT09YSYmITAhPT1iLm1lbW9pemVkUHJvcHMudW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2t8fDAhPT0oTS5jdXJyZW50JjEpKVM9PT10aSYmKFM9dWkpO2Vsc2V7aWYoUz09PXRpfHxTPT09dWkpUz12aTswIT09d2kmJm51bGwhPT1UJiYoeGkoVCxVKSx5aShULHdpKSl9aWYoY3x8ZCliLmVmZmVjdFRhZ3w9NDtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIGVoKCksb2koYiksbnVsbDtjYXNlIDEwOnJldHVybiBvZyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIEwoYi50eXBlKSYmRGYoKSxudWxsO2Nhc2UgMTk6SChNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtlPTAhPT0oYi5lZmZlY3RUYWcmNjQpO2Y9ZC5yZW5kZXJpbmc7aWYobnVsbD09PWYpaWYoZSlyaShkLCExKTtlbHNle2lmKFMhPT10aXx8bnVsbCE9PWEmJjAhPT0oYS5lZmZlY3RUYWcmXG42NCkpZm9yKGY9Yi5jaGlsZDtudWxsIT09Zjspe2E9aGgoZik7aWYobnVsbCE9PWEpe2IuZWZmZWN0VGFnfD02NDtyaShkLCExKTtlPWEudXBkYXRlUXVldWU7bnVsbCE9PWUmJihiLnVwZGF0ZVF1ZXVlPWUsYi5lZmZlY3RUYWd8PTQpO251bGw9PT1kLmxhc3RFZmZlY3QmJihiLmZpcnN0RWZmZWN0PW51bGwpO2IubGFzdEVmZmVjdD1kLmxhc3RFZmZlY3Q7Zm9yKGQ9Yi5jaGlsZDtudWxsIT09ZDspZT1kLGY9YyxlLmVmZmVjdFRhZyY9MixlLm5leHRFZmZlY3Q9bnVsbCxlLmZpcnN0RWZmZWN0PW51bGwsZS5sYXN0RWZmZWN0PW51bGwsYT1lLmFsdGVybmF0ZSxudWxsPT09YT8oZS5jaGlsZEV4cGlyYXRpb25UaW1lPTAsZS5leHBpcmF0aW9uVGltZT1mLGUuY2hpbGQ9bnVsbCxlLm1lbW9pemVkUHJvcHM9bnVsbCxlLm1lbW9pemVkU3RhdGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGwsZS5kZXBlbmRlbmNpZXM9bnVsbCk6KGUuY2hpbGRFeHBpcmF0aW9uVGltZT1hLmNoaWxkRXhwaXJhdGlvblRpbWUsXG5lLmV4cGlyYXRpb25UaW1lPWEuZXhwaXJhdGlvblRpbWUsZS5jaGlsZD1hLmNoaWxkLGUubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHMsZS5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZSxlLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsZj1hLmRlcGVuZGVuY2llcyxlLmRlcGVuZGVuY2llcz1udWxsPT09Zj9udWxsOntleHBpcmF0aW9uVGltZTpmLmV4cGlyYXRpb25UaW1lLGZpcnN0Q29udGV4dDpmLmZpcnN0Q29udGV4dCxyZXNwb25kZXJzOmYucmVzcG9uZGVyc30pLGQ9ZC5zaWJsaW5nO0koTSxNLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1mPWYuc2libGluZ319ZWxzZXtpZighZSlpZihhPWhoKGYpLG51bGwhPT1hKXtpZihiLmVmZmVjdFRhZ3w9NjQsZT0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5lZmZlY3RUYWd8PTQpLHJpKGQsITApLG51bGw9PT1kLnRhaWwmJlwiaGlkZGVuXCI9PT1kLnRhaWxNb2RlJiYhZi5hbHRlcm5hdGUpcmV0dXJuIGI9XG5iLmxhc3RFZmZlY3Q9ZC5sYXN0RWZmZWN0LG51bGwhPT1iJiYoYi5uZXh0RWZmZWN0PW51bGwpLG51bGx9ZWxzZSAyKiRmKCktZC5yZW5kZXJpbmdTdGFydFRpbWU+ZC50YWlsRXhwaXJhdGlvbiYmMTxjJiYoYi5lZmZlY3RUYWd8PTY0LGU9ITAscmkoZCwhMSksYi5leHBpcmF0aW9uVGltZT1iLmNoaWxkRXhwaXJhdGlvblRpbWU9Yy0xKTtkLmlzQmFja3dhcmRzPyhmLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWYpOihjPWQubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZjpiLmNoaWxkPWYsZC5sYXN0PWYpfXJldHVybiBudWxsIT09ZC50YWlsPygwPT09ZC50YWlsRXhwaXJhdGlvbiYmKGQudGFpbEV4cGlyYXRpb249JGYoKSs1MDApLGM9ZC50YWlsLGQucmVuZGVyaW5nPWMsZC50YWlsPWMuc2libGluZyxkLmxhc3RFZmZlY3Q9Yi5sYXN0RWZmZWN0LGQucmVuZGVyaW5nU3RhcnRUaW1lPSRmKCksYy5zaWJsaW5nPW51bGwsYj1NLmN1cnJlbnQsSShNLGU/YiYxfDI6YiYxKSxjKTpudWxsfXRocm93IEVycm9yKHUoMTU2LFxuYi50YWcpKTt9ZnVuY3Rpb24gemkoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDE6TChhLnR5cGUpJiZEZigpO3ZhciBiPWEuZWZmZWN0VGFnO3JldHVybiBiJjQwOTY/KGEuZWZmZWN0VGFnPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDM6ZWgoKTtIKEspO0goSik7Yj1hLmVmZmVjdFRhZztpZigwIT09KGImNjQpKXRocm93IEVycm9yKHUoMjg1KSk7YS5lZmZlY3RUYWc9YiYtNDA5N3w2NDtyZXR1cm4gYTtjYXNlIDU6cmV0dXJuIGdoKGEpLG51bGw7Y2FzZSAxMzpyZXR1cm4gSChNKSxiPWEuZWZmZWN0VGFnLGImNDA5Nj8oYS5lZmZlY3RUYWc9YiYtNDA5N3w2NCxhKTpudWxsO2Nhc2UgMTk6cmV0dXJuIEgoTSksbnVsbDtjYXNlIDQ6cmV0dXJuIGVoKCksbnVsbDtjYXNlIDEwOnJldHVybiBvZyhhKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIEFpKGEsYil7cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6cWIoYil9fVxudmFyIEJpPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0O2Z1bmN0aW9uIENpKGEsYil7dmFyIGM9Yi5zb3VyY2UsZD1iLnN0YWNrO251bGw9PT1kJiZudWxsIT09YyYmKGQ9cWIoYykpO251bGwhPT1jJiZwYihjLnR5cGUpO2I9Yi52YWx1ZTtudWxsIT09YSYmMT09PWEudGFnJiZwYihhLnR5cGUpO3RyeXtjb25zb2xlLmVycm9yKGIpfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlO30pfX1mdW5jdGlvbiBEaShhLGIpe3RyeXtiLnByb3BzPWEubWVtb2l6ZWRQcm9wcyxiLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSxiLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goYyl7RWkoYSxjKX19ZnVuY3Rpb24gRmkoYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpdHJ5e2IobnVsbCl9Y2F0Y2goYyl7RWkoYSxjKX1lbHNlIGIuY3VycmVudD1udWxsfVxuZnVuY3Rpb24gR2koYSxiKXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSAyMjpyZXR1cm47Y2FzZSAxOmlmKGIuZWZmZWN0VGFnJjI1NiYmbnVsbCE9PWEpe3ZhciBjPWEubWVtb2l6ZWRQcm9wcyxkPWEubWVtb2l6ZWRTdGF0ZTthPWIuc3RhdGVOb2RlO2I9YS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP2M6aWcoYi50eXBlLGMpLGQpO2EuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9Yn1yZXR1cm47Y2FzZSAzOmNhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6cmV0dXJufXRocm93IEVycm9yKHUoMTYzKSk7fVxuZnVuY3Rpb24gSGkoYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5kZXN0cm95O2MuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZCYmZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gSWkoYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fVxuZnVuY3Rpb24gSmkoYSxiLGMpe3N3aXRjaChjLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpjYXNlIDIyOklpKDMsYyk7cmV0dXJuO2Nhc2UgMTphPWMuc3RhdGVOb2RlO2lmKGMuZWZmZWN0VGFnJjQpaWYobnVsbD09PWIpYS5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIGQ9Yy5lbGVtZW50VHlwZT09PWMudHlwZT9iLm1lbW9pemVkUHJvcHM6aWcoYy50eXBlLGIubWVtb2l6ZWRQcm9wcyk7YS5jb21wb25lbnREaWRVcGRhdGUoZCxiLm1lbW9pemVkU3RhdGUsYS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9Yj1jLnVwZGF0ZVF1ZXVlO251bGwhPT1iJiZDZyhjLGIsYSk7cmV0dXJuO2Nhc2UgMzpiPWMudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2E9bnVsbDtpZihudWxsIT09Yy5jaGlsZClzd2l0Y2goYy5jaGlsZC50YWcpe2Nhc2UgNTphPWMuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTphPWMuY2hpbGQuc3RhdGVOb2RlfUNnKGMsYixhKX1yZXR1cm47XG5jYXNlIDU6YT1jLnN0YXRlTm9kZTtudWxsPT09YiYmYy5lZmZlY3RUYWcmNCYmRmQoYy50eXBlLGMubWVtb2l6ZWRQcm9wcykmJmEuZm9jdXMoKTtyZXR1cm47Y2FzZSA2OnJldHVybjtjYXNlIDQ6cmV0dXJuO2Nhc2UgMTI6cmV0dXJuO2Nhc2UgMTM6bnVsbD09PWMubWVtb2l6ZWRTdGF0ZSYmKGM9Yy5hbHRlcm5hdGUsbnVsbCE9PWMmJihjPWMubWVtb2l6ZWRTdGF0ZSxudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGwhPT1jJiZWYyhjKSkpKTtyZXR1cm47Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjA6Y2FzZSAyMTpyZXR1cm59dGhyb3cgRXJyb3IodSgxNjMpKTt9XG5mdW5jdGlvbiBLaShhLGIsYyl7XCJmdW5jdGlvblwiPT09dHlwZW9mIExpJiZMaShiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDIyOmE9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YSYmKGE9YS5sYXN0RWZmZWN0LG51bGwhPT1hKSl7dmFyIGQ9YS5uZXh0O2NnKDk3PGM/OTc6YyxmdW5jdGlvbigpe3ZhciBhPWQ7ZG97dmFyIGM9YS5kZXN0cm95O2lmKHZvaWQgMCE9PWMpe3ZhciBnPWI7dHJ5e2MoKX1jYXRjaChoKXtFaShnLGgpfX1hPWEubmV4dH13aGlsZShhIT09ZCl9KX1icmVhaztjYXNlIDE6RmkoYik7Yz1iLnN0YXRlTm9kZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5jb21wb25lbnRXaWxsVW5tb3VudCYmRGkoYixjKTticmVhaztjYXNlIDU6RmkoYik7YnJlYWs7Y2FzZSA0Ok1pKGEsYixjKX19XG5mdW5jdGlvbiBOaShhKXt2YXIgYj1hLmFsdGVybmF0ZTthLnJldHVybj1udWxsO2EuY2hpbGQ9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLmFsdGVybmF0ZT1udWxsO2EuZmlyc3RFZmZlY3Q9bnVsbDthLmxhc3RFZmZlY3Q9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7bnVsbCE9PWImJk5pKGIpfWZ1bmN0aW9uIE9pKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gUGkoYSl7YTp7Zm9yKHZhciBiPWEucmV0dXJuO251bGwhPT1iOyl7aWYoT2koYikpe3ZhciBjPWI7YnJlYWsgYX1iPWIucmV0dXJufXRocm93IEVycm9yKHUoMTYwKSk7fWI9Yy5zdGF0ZU5vZGU7c3dpdGNoKGMudGFnKXtjYXNlIDU6dmFyIGQ9ITE7YnJlYWs7Y2FzZSAzOmI9Yi5jb250YWluZXJJbmZvO2Q9ITA7YnJlYWs7Y2FzZSA0OmI9Yi5jb250YWluZXJJbmZvO2Q9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcih1KDE2MSkpO31jLmVmZmVjdFRhZyYxNiYmKFJiKGIsXCJcIiksYy5lZmZlY3RUYWcmPS0xNyk7YTpiOmZvcihjPWE7Oyl7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxPaShjLnJldHVybikpe2M9bnVsbDticmVhayBhfWM9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtmb3IoYz1jLnNpYmxpbmc7NSE9PWMudGFnJiY2IT09Yy50YWcmJjE4IT09Yy50YWc7KXtpZihjLmVmZmVjdFRhZyYyKWNvbnRpbnVlIGI7XG5pZihudWxsPT09Yy5jaGlsZHx8ND09PWMudGFnKWNvbnRpbnVlIGI7ZWxzZSBjLmNoaWxkLnJldHVybj1jLGM9Yy5jaGlsZH1pZighKGMuZWZmZWN0VGFnJjIpKXtjPWMuc3RhdGVOb2RlO2JyZWFrIGF9fWQ/UWkoYSxjLGIpOlJpKGEsYyxiKX1cbmZ1bmN0aW9uIFFpKGEsYixjKXt2YXIgZD1hLnRhZyxlPTU9PT1kfHw2PT09ZDtpZihlKWE9ZT9hLnN0YXRlTm9kZTphLnN0YXRlTm9kZS5pbnN0YW5jZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1zZCkpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihRaShhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVFpKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFJpKGEsYixjKXt2YXIgZD1hLnRhZyxlPTU9PT1kfHw2PT09ZDtpZihlKWE9ZT9hLnN0YXRlTm9kZTphLnN0YXRlTm9kZS5pbnN0YW5jZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoUmkoYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylSaShhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBNaShhLGIsYyl7Zm9yKHZhciBkPWIsZT0hMSxmLGc7Oyl7aWYoIWUpe2U9ZC5yZXR1cm47YTpmb3IoOzspe2lmKG51bGw9PT1lKXRocm93IEVycm9yKHUoMTYwKSk7Zj1lLnN0YXRlTm9kZTtzd2l0Y2goZS50YWcpe2Nhc2UgNTpnPSExO2JyZWFrIGE7Y2FzZSAzOmY9Zi5jb250YWluZXJJbmZvO2c9ITA7YnJlYWsgYTtjYXNlIDQ6Zj1mLmNvbnRhaW5lckluZm87Zz0hMDticmVhayBhfWU9ZS5yZXR1cm59ZT0hMH1pZig1PT09ZC50YWd8fDY9PT1kLnRhZyl7YTpmb3IodmFyIGg9YSxrPWQsbD1jLG09azs7KWlmKEtpKGgsbSxsKSxudWxsIT09bS5jaGlsZCYmNCE9PW0udGFnKW0uY2hpbGQucmV0dXJuPW0sbT1tLmNoaWxkO2Vsc2V7aWYobT09PWspYnJlYWsgYTtmb3IoO251bGw9PT1tLnNpYmxpbmc7KXtpZihudWxsPT09bS5yZXR1cm58fG0ucmV0dXJuPT09aylicmVhayBhO209bS5yZXR1cm59bS5zaWJsaW5nLnJldHVybj1tLnJldHVybjttPW0uc2libGluZ31nPyhoPVxuZixrPWQuc3RhdGVOb2RlLDg9PT1oLm5vZGVUeXBlP2gucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKTpoLnJlbW92ZUNoaWxkKGspKTpmLnJlbW92ZUNoaWxkKGQuc3RhdGVOb2RlKX1lbHNlIGlmKDQ9PT1kLnRhZyl7aWYobnVsbCE9PWQuY2hpbGQpe2Y9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztnPSEwO2QuY2hpbGQucmV0dXJuPWQ7ZD1kLmNoaWxkO2NvbnRpbnVlfX1lbHNlIGlmKEtpKGEsZCxjKSxudWxsIT09ZC5jaGlsZCl7ZC5jaGlsZC5yZXR1cm49ZDtkPWQuY2hpbGQ7Y29udGludWV9aWYoZD09PWIpYnJlYWs7Zm9yKDtudWxsPT09ZC5zaWJsaW5nOyl7aWYobnVsbD09PWQucmV0dXJufHxkLnJldHVybj09PWIpcmV0dXJuO2Q9ZC5yZXR1cm47ND09PWQudGFnJiYoZT0hMSl9ZC5zaWJsaW5nLnJldHVybj1kLnJldHVybjtkPWQuc2libGluZ319XG5mdW5jdGlvbiBTaShhLGIpe3N3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMjI6SGkoMyxiKTtyZXR1cm47Y2FzZSAxOnJldHVybjtjYXNlIDU6dmFyIGM9Yi5zdGF0ZU5vZGU7aWYobnVsbCE9Yyl7dmFyIGQ9Yi5tZW1vaXplZFByb3BzLGU9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOmQ7YT1iLnR5cGU7dmFyIGY9Yi51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPW51bGw7aWYobnVsbCE9PWYpe2NbTmRdPWQ7XCJpbnB1dFwiPT09YSYmXCJyYWRpb1wiPT09ZC50eXBlJiZudWxsIT1kLm5hbWUmJkJiKGMsZCk7cGQoYSxlKTtiPXBkKGEsZCk7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrPTIpe3ZhciBnPWZbZV0saD1mW2UrMV07XCJzdHlsZVwiPT09Zz9tZChjLGgpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWc/UWIoYyxoKTpcImNoaWxkcmVuXCI9PT1nP1JiKGMsaCk6WGEoYyxnLGgsYil9c3dpdGNoKGEpe2Nhc2UgXCJpbnB1dFwiOkNiKGMsZCk7YnJlYWs7XG5jYXNlIFwidGV4dGFyZWFcIjpLYihjLGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSxjLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFkLm11bHRpcGxlLGE9ZC52YWx1ZSxudWxsIT1hP0hiKGMsISFkLm11bHRpcGxlLGEsITEpOmIhPT0hIWQubXVsdGlwbGUmJihudWxsIT1kLmRlZmF1bHRWYWx1ZT9IYihjLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSwhMCk6SGIoYywhIWQubXVsdGlwbGUsZC5tdWx0aXBsZT9bXTpcIlwiLCExKSl9fX1yZXR1cm47Y2FzZSA2OmlmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcih1KDE2MikpO2Iuc3RhdGVOb2RlLm5vZGVWYWx1ZT1iLm1lbW9pemVkUHJvcHM7cmV0dXJuO2Nhc2UgMzpiPWIuc3RhdGVOb2RlO2IuaHlkcmF0ZSYmKGIuaHlkcmF0ZT0hMSxWYyhiLmNvbnRhaW5lckluZm8pKTtyZXR1cm47Y2FzZSAxMjpyZXR1cm47Y2FzZSAxMzpjPWI7bnVsbD09PWIubWVtb2l6ZWRTdGF0ZT9cbmQ9ITE6KGQ9ITAsYz1iLmNoaWxkLFRpPSRmKCkpO2lmKG51bGwhPT1jKWE6Zm9yKGE9Yzs7KXtpZig1PT09YS50YWcpZj1hLnN0YXRlTm9kZSxkPyhmPWYuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihmPWEuc3RhdGVOb2RlLGU9YS5tZW1vaXplZFByb3BzLnN0eWxlLGU9dm9pZCAwIT09ZSYmbnVsbCE9PWUmJmUuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2UuZGlzcGxheTpudWxsLGYuc3R5bGUuZGlzcGxheT1sZChcImRpc3BsYXlcIixlKSk7ZWxzZSBpZig2PT09YS50YWcpYS5zdGF0ZU5vZGUubm9kZVZhbHVlPWQ/XCJcIjphLm1lbW9pemVkUHJvcHM7ZWxzZSBpZigxMz09PWEudGFnJiZudWxsIT09YS5tZW1vaXplZFN0YXRlJiZudWxsPT09YS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2Y9YS5jaGlsZC5zaWJsaW5nO2YucmV0dXJuPWE7YT1cbmY7Y29udGludWV9ZWxzZSBpZihudWxsIT09YS5jaGlsZCl7YS5jaGlsZC5yZXR1cm49YTthPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWMpYnJlYWs7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWMpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9VWkoYik7cmV0dXJuO2Nhc2UgMTk6VWkoYik7cmV0dXJuO2Nhc2UgMTc6cmV0dXJufXRocm93IEVycm9yKHUoMTYzKSk7fWZ1bmN0aW9uIFVpKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IEJpKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9VmkuYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG52YXIgV2k9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gWGkoYSxiLGMpe2M9d2coYyxudWxsKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtZaXx8KFlpPSEwLFppPWQpO0NpKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gJGkoYSxiLGMpe2M9d2coYyxudWxsKTtjLnRhZz0zO3ZhciBkPWEudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7Q2koYSxiKTtyZXR1cm4gZChlKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PWFqP2FqPW5ldyBTZXQoW3RoaXNdKTphai5hZGQodGhpcyksQ2koYSxiKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG52YXIgYmo9TWF0aC5jZWlsLGNqPVdhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZGo9V2EuUmVhY3RDdXJyZW50T3duZXIsVj0wLGVqPTgsZmo9MTYsZ2o9MzIsdGk9MCxoaj0xLGlqPTIsdWk9Myx2aT00LGpqPTUsVz1WLFQ9bnVsbCxYPW51bGwsVT0wLFM9dGksa2o9bnVsbCxsaj0xMDczNzQxODIzLG1qPTEwNzM3NDE4MjMsbmo9bnVsbCx3aT0wLG9qPSExLFRpPTAscGo9NTAwLFk9bnVsbCxZaT0hMSxaaT1udWxsLGFqPW51bGwscWo9ITEscmo9bnVsbCxzaj05MCx0aj1udWxsLHVqPTAsdmo9bnVsbCx3aj0wO2Z1bmN0aW9uIEdnKCl7cmV0dXJuKFcmKGZqfGdqKSkhPT1WPzEwNzM3NDE4MjEtKCRmKCkvMTB8MCk6MCE9PXdqP3dqOndqPTEwNzM3NDE4MjEtKCRmKCkvMTB8MCl9XG5mdW5jdGlvbiBIZyhhLGIsYyl7Yj1iLm1vZGU7aWYoMD09PShiJjIpKXJldHVybiAxMDczNzQxODIzO3ZhciBkPWFnKCk7aWYoMD09PShiJjQpKXJldHVybiA5OT09PWQ/MTA3Mzc0MTgyMzoxMDczNzQxODIyO2lmKChXJmZqKSE9PVYpcmV0dXJuIFU7aWYobnVsbCE9PWMpYT1oZyhhLGMudGltZW91dE1zfDB8fDVFMywyNTApO2Vsc2Ugc3dpdGNoKGQpe2Nhc2UgOTk6YT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgOTg6YT1oZyhhLDE1MCwxMDApO2JyZWFrO2Nhc2UgOTc6Y2FzZSA5NjphPWhnKGEsNUUzLDI1MCk7YnJlYWs7Y2FzZSA5NTphPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcih1KDMyNikpO31udWxsIT09VCYmYT09PVUmJi0tYTtyZXR1cm4gYX1cbmZ1bmN0aW9uIElnKGEsYil7aWYoNTA8dWopdGhyb3cgdWo9MCx2aj1udWxsLEVycm9yKHUoMTg1KSk7YT14aihhLGIpO2lmKG51bGwhPT1hKXt2YXIgYz1hZygpOzEwNzM3NDE4MjM9PT1iPyhXJmVqKSE9PVYmJihXJihmanxnaikpPT09Vj95aihhKTooWihhKSxXPT09ViYmZ2coKSk6WihhKTsoVyY0KT09PVZ8fDk4IT09YyYmOTkhPT1jfHwobnVsbD09PXRqP3RqPW5ldyBNYXAoW1thLGJdXSk6KGM9dGouZ2V0KGEpLCh2b2lkIDA9PT1jfHxjPmIpJiZ0ai5zZXQoYSxiKSkpfX1cbmZ1bmN0aW9uIHhqKGEsYil7YS5leHBpcmF0aW9uVGltZTxiJiYoYS5leHBpcmF0aW9uVGltZT1iKTt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmYy5leHBpcmF0aW9uVGltZTxiJiYoYy5leHBpcmF0aW9uVGltZT1iKTt2YXIgZD1hLnJldHVybixlPW51bGw7aWYobnVsbD09PWQmJjM9PT1hLnRhZyllPWEuc3RhdGVOb2RlO2Vsc2UgZm9yKDtudWxsIT09ZDspe2M9ZC5hbHRlcm5hdGU7ZC5jaGlsZEV4cGlyYXRpb25UaW1lPGImJihkLmNoaWxkRXhwaXJhdGlvblRpbWU9Yik7bnVsbCE9PWMmJmMuY2hpbGRFeHBpcmF0aW9uVGltZTxiJiYoYy5jaGlsZEV4cGlyYXRpb25UaW1lPWIpO2lmKG51bGw9PT1kLnJldHVybiYmMz09PWQudGFnKXtlPWQuc3RhdGVOb2RlO2JyZWFrfWQ9ZC5yZXR1cm59bnVsbCE9PWUmJihUPT09ZSYmKEJnKGIpLFM9PT12aSYmeGkoZSxVKSkseWkoZSxiKSk7cmV0dXJuIGV9XG5mdW5jdGlvbiB6aihhKXt2YXIgYj1hLmxhc3RFeHBpcmVkVGltZTtpZigwIT09YilyZXR1cm4gYjtiPWEuZmlyc3RQZW5kaW5nVGltZTtpZighQWooYSxiKSlyZXR1cm4gYjt2YXIgYz1hLmxhc3RQaW5nZWRUaW1lO2E9YS5uZXh0S25vd25QZW5kaW5nTGV2ZWw7YT1jPmE/YzphO3JldHVybiAyPj1hJiZiIT09YT8wOmF9XG5mdW5jdGlvbiBaKGEpe2lmKDAhPT1hLmxhc3RFeHBpcmVkVGltZSlhLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU9MTA3Mzc0MTgyMyxhLmNhbGxiYWNrUHJpb3JpdHk9OTksYS5jYWxsYmFja05vZGU9ZWcoeWouYmluZChudWxsLGEpKTtlbHNle3ZhciBiPXpqKGEpLGM9YS5jYWxsYmFja05vZGU7aWYoMD09PWIpbnVsbCE9PWMmJihhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT0wLGEuY2FsbGJhY2tQcmlvcml0eT05MCk7ZWxzZXt2YXIgZD1HZygpOzEwNzM3NDE4MjM9PT1iP2Q9OTk6MT09PWJ8fDI9PT1iP2Q9OTU6KGQ9MTAqKDEwNzM3NDE4MjEtYiktMTAqKDEwNzM3NDE4MjEtZCksZD0wPj1kPzk5OjI1MD49ZD85ODo1MjUwPj1kPzk3Ojk1KTtpZihudWxsIT09Yyl7dmFyIGU9YS5jYWxsYmFja1ByaW9yaXR5O2lmKGEuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT09PWImJmU+PWQpcmV0dXJuO2MhPT1UZiYmS2YoYyl9YS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPVxuYjthLmNhbGxiYWNrUHJpb3JpdHk9ZDtiPTEwNzM3NDE4MjM9PT1iP2VnKHlqLmJpbmQobnVsbCxhKSk6ZGcoZCxCai5iaW5kKG51bGwsYSkse3RpbWVvdXQ6MTAqKDEwNzM3NDE4MjEtYiktJGYoKX0pO2EuY2FsbGJhY2tOb2RlPWJ9fX1cbmZ1bmN0aW9uIEJqKGEsYil7d2o9MDtpZihiKXJldHVybiBiPUdnKCksQ2ooYSxiKSxaKGEpLG51bGw7dmFyIGM9emooYSk7aWYoMCE9PWMpe2I9YS5jYWxsYmFja05vZGU7aWYoKFcmKGZqfGdqKSkhPT1WKXRocm93IEVycm9yKHUoMzI3KSk7RGooKTthPT09VCYmYz09PVV8fEVqKGEsYyk7aWYobnVsbCE9PVgpe3ZhciBkPVc7V3w9Zmo7dmFyIGU9RmooKTtkbyB0cnl7R2ooKTticmVha31jYXRjaChoKXtIaihhLGgpfXdoaWxlKDEpO25nKCk7Vz1kO2NqLmN1cnJlbnQ9ZTtpZihTPT09aGopdGhyb3cgYj1raixFaihhLGMpLHhpKGEsYyksWihhKSxiO2lmKG51bGw9PT1YKXN3aXRjaChlPWEuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGUsYS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPWMsZD1TLFQ9bnVsbCxkKXtjYXNlIHRpOmNhc2UgaGo6dGhyb3cgRXJyb3IodSgzNDUpKTtjYXNlIGlqOkNqKGEsMjxjPzI6Yyk7YnJlYWs7Y2FzZSB1aTp4aShhLGMpO2Q9YS5sYXN0U3VzcGVuZGVkVGltZTtcbmM9PT1kJiYoYS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9SWooZSkpO2lmKDEwNzM3NDE4MjM9PT1saiYmKGU9VGkrcGotJGYoKSwxMDxlKSl7aWYob2ope3ZhciBmPWEubGFzdFBpbmdlZFRpbWU7aWYoMD09PWZ8fGY+PWMpe2EubGFzdFBpbmdlZFRpbWU9YztFaihhLGMpO2JyZWFrfX1mPXpqKGEpO2lmKDAhPT1mJiZmIT09YylicmVhaztpZigwIT09ZCYmZCE9PWMpe2EubGFzdFBpbmdlZFRpbWU9ZDticmVha31hLnRpbWVvdXRIYW5kbGU9SGQoSmouYmluZChudWxsLGEpLGUpO2JyZWFrfUpqKGEpO2JyZWFrO2Nhc2Ugdmk6eGkoYSxjKTtkPWEubGFzdFN1c3BlbmRlZFRpbWU7Yz09PWQmJihhLm5leHRLbm93blBlbmRpbmdMZXZlbD1JaihlKSk7aWYob2omJihlPWEubGFzdFBpbmdlZFRpbWUsMD09PWV8fGU+PWMpKXthLmxhc3RQaW5nZWRUaW1lPWM7RWooYSxjKTticmVha31lPXpqKGEpO2lmKDAhPT1lJiZlIT09YylicmVhaztpZigwIT09ZCYmZCE9PWMpe2EubGFzdFBpbmdlZFRpbWU9XG5kO2JyZWFrfTEwNzM3NDE4MjMhPT1taj9kPTEwKigxMDczNzQxODIxLW1qKS0kZigpOjEwNzM3NDE4MjM9PT1saj9kPTA6KGQ9MTAqKDEwNzM3NDE4MjEtbGopLTVFMyxlPSRmKCksYz0xMCooMTA3Mzc0MTgyMS1jKS1lLGQ9ZS1kLDA+ZCYmKGQ9MCksZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCpiaihkLzE5NjApKS1kLGM8ZCYmKGQ9YykpO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1IZChKai5iaW5kKG51bGwsYSksZCk7YnJlYWt9SmooYSk7YnJlYWs7Y2FzZSBqajppZigxMDczNzQxODIzIT09bGomJm51bGwhPT1uail7Zj1sajt2YXIgZz1uajtkPWcuYnVzeU1pbkR1cmF0aW9uTXN8MDswPj1kP2Q9MDooZT1nLmJ1c3lEZWxheU1zfDAsZj0kZigpLSgxMCooMTA3Mzc0MTgyMS1mKS0oZy50aW1lb3V0TXN8MHx8NUUzKSksZD1mPD1lPzA6ZStkLWYpO2lmKDEwPGQpe3hpKGEsYyk7YS50aW1lb3V0SGFuZGxlPVxuSGQoSmouYmluZChudWxsLGEpLGQpO2JyZWFrfX1KaihhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHUoMzI5KSk7fVooYSk7aWYoYS5jYWxsYmFja05vZGU9PT1iKXJldHVybiBCai5iaW5kKG51bGwsYSl9fXJldHVybiBudWxsfVxuZnVuY3Rpb24geWooYSl7dmFyIGI9YS5sYXN0RXhwaXJlZFRpbWU7Yj0wIT09Yj9iOjEwNzM3NDE4MjM7aWYoKFcmKGZqfGdqKSkhPT1WKXRocm93IEVycm9yKHUoMzI3KSk7RGooKTthPT09VCYmYj09PVV8fEVqKGEsYik7aWYobnVsbCE9PVgpe3ZhciBjPVc7V3w9Zmo7dmFyIGQ9RmooKTtkbyB0cnl7S2ooKTticmVha31jYXRjaChlKXtIaihhLGUpfXdoaWxlKDEpO25nKCk7Vz1jO2NqLmN1cnJlbnQ9ZDtpZihTPT09aGopdGhyb3cgYz1raixFaihhLGIpLHhpKGEsYiksWihhKSxjO2lmKG51bGwhPT1YKXRocm93IEVycm9yKHUoMjYxKSk7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9YjtUPW51bGw7SmooYSk7WihhKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBMaigpe2lmKG51bGwhPT10ail7dmFyIGE9dGo7dGo9bnVsbDthLmZvckVhY2goZnVuY3Rpb24oYSxjKXtDaihjLGEpO1ooYyl9KTtnZygpfX1cbmZ1bmN0aW9uIE1qKGEsYil7dmFyIGM9VztXfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e1c9YyxXPT09ViYmZ2coKX19ZnVuY3Rpb24gTmooYSxiKXt2YXIgYz1XO1cmPS0yO1d8PWVqO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e1c9YyxXPT09ViYmZ2coKX19XG5mdW5jdGlvbiBFaihhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxJZChjKSk7aWYobnVsbCE9PVgpZm9yKGM9WC5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiZEZigpO2JyZWFrO2Nhc2UgMzplaCgpO0goSyk7SChKKTticmVhaztjYXNlIDU6Z2goZCk7YnJlYWs7Y2FzZSA0OmVoKCk7YnJlYWs7Y2FzZSAxMzpIKE0pO2JyZWFrO2Nhc2UgMTk6SChNKTticmVhaztjYXNlIDEwOm9nKGQpfWM9Yy5yZXR1cm59VD1hO1g9U2coYS5jdXJyZW50LG51bGwpO1U9YjtTPXRpO2tqPW51bGw7bWo9bGo9MTA3Mzc0MTgyMztuaj1udWxsO3dpPTA7b2o9ITF9XG5mdW5jdGlvbiBIaihhLGIpe2Rve3RyeXtuZygpO2poLmN1cnJlbnQ9c2g7aWYobWgpZm9yKHZhciBjPU4ubWVtb2l6ZWRTdGF0ZTtudWxsIT09Yzspe3ZhciBkPWMucXVldWU7bnVsbCE9PWQmJihkLnBlbmRpbmc9bnVsbCk7Yz1jLm5leHR9bGg9MDtQPU89Tj1udWxsO21oPSExO2lmKG51bGw9PT1YfHxudWxsPT09WC5yZXR1cm4pcmV0dXJuIFM9aGosa2o9YixYPW51bGw7YTp7dmFyIGU9YSxmPVgucmV0dXJuLGc9WCxoPWI7Yj1VO2cuZWZmZWN0VGFnfD0yMDQ4O2cuZmlyc3RFZmZlY3Q9Zy5sYXN0RWZmZWN0PW51bGw7aWYobnVsbCE9PWgmJlwib2JqZWN0XCI9PT10eXBlb2YgaCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGgudGhlbil7dmFyIGs9aDtpZigwPT09KGcubW9kZSYyKSl7dmFyIGw9Zy5hbHRlcm5hdGU7bD8oZy51cGRhdGVRdWV1ZT1sLnVwZGF0ZVF1ZXVlLGcubWVtb2l6ZWRTdGF0ZT1sLm1lbW9pemVkU3RhdGUsZy5leHBpcmF0aW9uVGltZT1sLmV4cGlyYXRpb25UaW1lKTooZy51cGRhdGVRdWV1ZT1cbm51bGwsZy5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBtPTAhPT0oTS5jdXJyZW50JjEpLHA9Zjtkb3t2YXIgeDtpZih4PTEzPT09cC50YWcpe3ZhciB6PXAubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09eil4PW51bGwhPT16LmRlaHlkcmF0ZWQ/ITA6ITE7ZWxzZXt2YXIgY2E9cC5tZW1vaXplZFByb3BzO3g9dm9pZCAwPT09Y2EuZmFsbGJhY2s/ITE6ITAhPT1jYS51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjaz8hMDptPyExOiEwfX1pZih4KXt2YXIgRD1wLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1EKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO3AudXBkYXRlUXVldWU9dH1lbHNlIEQuYWRkKGspO2lmKDA9PT0ocC5tb2RlJjIpKXtwLmVmZmVjdFRhZ3w9NjQ7Zy5lZmZlY3RUYWcmPS0yOTgxO2lmKDE9PT1nLnRhZylpZihudWxsPT09Zy5hbHRlcm5hdGUpZy50YWc9MTc7ZWxzZXt2YXIgeT13ZygxMDczNzQxODIzLG51bGwpO3kudGFnPTI7eGcoZyx5KX1nLmV4cGlyYXRpb25UaW1lPTEwNzM3NDE4MjM7XG5icmVhayBhfWg9dm9pZCAwO2c9Yjt2YXIgQT1lLnBpbmdDYWNoZTtudWxsPT09QT8oQT1lLnBpbmdDYWNoZT1uZXcgV2ksaD1uZXcgU2V0LEEuc2V0KGssaCkpOihoPUEuZ2V0KGspLHZvaWQgMD09PWgmJihoPW5ldyBTZXQsQS5zZXQoayxoKSkpO2lmKCFoLmhhcyhnKSl7aC5hZGQoZyk7dmFyIHE9T2ouYmluZChudWxsLGUsayxnKTtrLnRoZW4ocSxxKX1wLmVmZmVjdFRhZ3w9NDA5NjtwLmV4cGlyYXRpb25UaW1lPWI7YnJlYWsgYX1wPXAucmV0dXJufXdoaWxlKG51bGwhPT1wKTtoPUVycm9yKChwYihnLnR5cGUpfHxcIkEgUmVhY3QgY29tcG9uZW50XCIpK1wiIHN1c3BlbmRlZCB3aGlsZSByZW5kZXJpbmcsIGJ1dCBubyBmYWxsYmFjayBVSSB3YXMgc3BlY2lmaWVkLlxcblxcbkFkZCBhIDxTdXNwZW5zZSBmYWxsYmFjaz0uLi4+IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIHRyZWUgdG8gcHJvdmlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yIG9yIHBsYWNlaG9sZGVyIHRvIGRpc3BsYXkuXCIrcWIoZykpfVMhPT1cbmpqJiYoUz1paik7aD1BaShoLGcpO3A9Zjtkb3tzd2l0Y2gocC50YWcpe2Nhc2UgMzprPWg7cC5lZmZlY3RUYWd8PTQwOTY7cC5leHBpcmF0aW9uVGltZT1iO3ZhciBCPVhpKHAsayxiKTt5ZyhwLEIpO2JyZWFrIGE7Y2FzZSAxOms9aDt2YXIgdz1wLnR5cGUsdWI9cC5zdGF0ZU5vZGU7aWYoMD09PShwLmVmZmVjdFRhZyY2NCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11YiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHViLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PWFqfHwhYWouaGFzKHViKSkpKXtwLmVmZmVjdFRhZ3w9NDA5NjtwLmV4cGlyYXRpb25UaW1lPWI7dmFyIHZiPSRpKHAsayxiKTt5ZyhwLHZiKTticmVhayBhfX1wPXAucmV0dXJufXdoaWxlKG51bGwhPT1wKX1YPVBqKFgpfWNhdGNoKFhjKXtiPVhjO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfVxuZnVuY3Rpb24gRmooKXt2YXIgYT1jai5jdXJyZW50O2NqLmN1cnJlbnQ9c2g7cmV0dXJuIG51bGw9PT1hP3NoOmF9ZnVuY3Rpb24gQWcoYSxiKXthPGxqJiYyPGEmJihsaj1hKTtudWxsIT09YiYmYTxtaiYmMjxhJiYobWo9YSxuaj1iKX1mdW5jdGlvbiBCZyhhKXthPndpJiYod2k9YSl9ZnVuY3Rpb24gS2ooKXtmb3IoO251bGwhPT1YOylYPVFqKFgpfWZ1bmN0aW9uIEdqKCl7Zm9yKDtudWxsIT09WCYmIVVmKCk7KVg9UWooWCl9ZnVuY3Rpb24gUWooYSl7dmFyIGI9UmooYS5hbHRlcm5hdGUsYSxVKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWImJihiPVBqKGEpKTtkai5jdXJyZW50PW51bGw7cmV0dXJuIGJ9XG5mdW5jdGlvbiBQaihhKXtYPWE7ZG97dmFyIGI9WC5hbHRlcm5hdGU7YT1YLnJldHVybjtpZigwPT09KFguZWZmZWN0VGFnJjIwNDgpKXtiPXNpKGIsWCxVKTtpZigxPT09VXx8MSE9PVguY2hpbGRFeHBpcmF0aW9uVGltZSl7Zm9yKHZhciBjPTAsZD1YLmNoaWxkO251bGwhPT1kOyl7dmFyIGU9ZC5leHBpcmF0aW9uVGltZSxmPWQuY2hpbGRFeHBpcmF0aW9uVGltZTtlPmMmJihjPWUpO2Y+YyYmKGM9Zik7ZD1kLnNpYmxpbmd9WC5jaGlsZEV4cGlyYXRpb25UaW1lPWN9aWYobnVsbCE9PWIpcmV0dXJuIGI7bnVsbCE9PWEmJjA9PT0oYS5lZmZlY3RUYWcmMjA0OCkmJihudWxsPT09YS5maXJzdEVmZmVjdCYmKGEuZmlyc3RFZmZlY3Q9WC5maXJzdEVmZmVjdCksbnVsbCE9PVgubGFzdEVmZmVjdCYmKG51bGwhPT1hLmxhc3RFZmZlY3QmJihhLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1YLmZpcnN0RWZmZWN0KSxhLmxhc3RFZmZlY3Q9WC5sYXN0RWZmZWN0KSwxPFguZWZmZWN0VGFnJiYobnVsbCE9PVxuYS5sYXN0RWZmZWN0P2EubGFzdEVmZmVjdC5uZXh0RWZmZWN0PVg6YS5maXJzdEVmZmVjdD1YLGEubGFzdEVmZmVjdD1YKSl9ZWxzZXtiPXppKFgpO2lmKG51bGwhPT1iKXJldHVybiBiLmVmZmVjdFRhZyY9MjA0NyxiO251bGwhPT1hJiYoYS5maXJzdEVmZmVjdD1hLmxhc3RFZmZlY3Q9bnVsbCxhLmVmZmVjdFRhZ3w9MjA0OCl9Yj1YLnNpYmxpbmc7aWYobnVsbCE9PWIpcmV0dXJuIGI7WD1hfXdoaWxlKG51bGwhPT1YKTtTPT09dGkmJihTPWpqKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBJaihhKXt2YXIgYj1hLmV4cGlyYXRpb25UaW1lO2E9YS5jaGlsZEV4cGlyYXRpb25UaW1lO3JldHVybiBiPmE/YjphfWZ1bmN0aW9uIEpqKGEpe3ZhciBiPWFnKCk7Y2coOTksU2ouYmluZChudWxsLGEsYikpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gU2ooYSxiKXtkbyBEaigpO3doaWxlKG51bGwhPT1yaik7aWYoKFcmKGZqfGdqKSkhPT1WKXRocm93IEVycm9yKHUoMzI3KSk7dmFyIGM9YS5maW5pc2hlZFdvcmssZD1hLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9MDtpZihjPT09YS5jdXJyZW50KXRocm93IEVycm9yKHUoMTc3KSk7YS5jYWxsYmFja05vZGU9bnVsbDthLmNhbGxiYWNrRXhwaXJhdGlvblRpbWU9MDthLmNhbGxiYWNrUHJpb3JpdHk9OTA7YS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9MDt2YXIgZT1JaihjKTthLmZpcnN0UGVuZGluZ1RpbWU9ZTtkPD1hLmxhc3RTdXNwZW5kZWRUaW1lP2EuZmlyc3RTdXNwZW5kZWRUaW1lPWEubGFzdFN1c3BlbmRlZFRpbWU9YS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9MDpkPD1hLmZpcnN0U3VzcGVuZGVkVGltZSYmKGEuZmlyc3RTdXNwZW5kZWRUaW1lPVxuZC0xKTtkPD1hLmxhc3RQaW5nZWRUaW1lJiYoYS5sYXN0UGluZ2VkVGltZT0wKTtkPD1hLmxhc3RFeHBpcmVkVGltZSYmKGEubGFzdEV4cGlyZWRUaW1lPTApO2E9PT1UJiYoWD1UPW51bGwsVT0wKTsxPGMuZWZmZWN0VGFnP251bGwhPT1jLmxhc3RFZmZlY3Q/KGMubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWMsZT1jLmZpcnN0RWZmZWN0KTplPWM6ZT1jLmZpcnN0RWZmZWN0O2lmKG51bGwhPT1lKXt2YXIgZj1XO1d8PWdqO2RqLmN1cnJlbnQ9bnVsbDtEZD1mZDt2YXIgZz14ZCgpO2lmKHlkKGcpKXtpZihcInNlbGVjdGlvblN0YXJ0XCJpbiBnKXZhciBoPXtzdGFydDpnLnNlbGVjdGlvblN0YXJ0LGVuZDpnLnNlbGVjdGlvbkVuZH07ZWxzZSBhOntoPShoPWcub3duZXJEb2N1bWVudCkmJmguZGVmYXVsdFZpZXd8fHdpbmRvdzt2YXIgaz1oLmdldFNlbGVjdGlvbiYmaC5nZXRTZWxlY3Rpb24oKTtpZihrJiYwIT09ay5yYW5nZUNvdW50KXtoPWsuYW5jaG9yTm9kZTt2YXIgbD1rLmFuY2hvck9mZnNldCxcbm09ay5mb2N1c05vZGU7az1rLmZvY3VzT2Zmc2V0O3RyeXtoLm5vZGVUeXBlLG0ubm9kZVR5cGV9Y2F0Y2god2Ipe2g9bnVsbDticmVhayBhfXZhciBwPTAseD0tMSx6PS0xLGNhPTAsRD0wLHQ9Zyx5PW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgQTs7KXt0IT09aHx8MCE9PWwmJjMhPT10Lm5vZGVUeXBlfHwoeD1wK2wpO3QhPT1tfHwwIT09ayYmMyE9PXQubm9kZVR5cGV8fCh6PXArayk7Mz09PXQubm9kZVR5cGUmJihwKz10Lm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oQT10LmZpcnN0Q2hpbGQpKWJyZWFrO3k9dDt0PUF9Zm9yKDs7KXtpZih0PT09ZylicmVhayBiO3k9PT1oJiYrK2NhPT09bCYmKHg9cCk7eT09PW0mJisrRD09PWsmJih6PXApO2lmKG51bGwhPT0oQT10Lm5leHRTaWJsaW5nKSlicmVhazt0PXk7eT10LnBhcmVudE5vZGV9dD1BfWg9LTE9PT14fHwtMT09PXo/bnVsbDp7c3RhcnQ6eCxlbmQ6en19ZWxzZSBoPW51bGx9aD1ofHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBoPVxubnVsbDtFZD17YWN0aXZlRWxlbWVudERldGFjaGVkOm51bGwsZm9jdXNlZEVsZW06ZyxzZWxlY3Rpb25SYW5nZTpofTtmZD0hMTtZPWU7ZG8gdHJ5e1RqKCl9Y2F0Y2god2Ipe2lmKG51bGw9PT1ZKXRocm93IEVycm9yKHUoMzMwKSk7RWkoWSx3Yik7WT1ZLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PVkpO1k9ZTtkbyB0cnl7Zm9yKGc9YSxoPWI7bnVsbCE9PVk7KXt2YXIgcT1ZLmVmZmVjdFRhZztxJjE2JiZSYihZLnN0YXRlTm9kZSxcIlwiKTtpZihxJjEyOCl7dmFyIEI9WS5hbHRlcm5hdGU7aWYobnVsbCE9PUIpe3ZhciB3PUIucmVmO251bGwhPT13JiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHc/dyhudWxsKTp3LmN1cnJlbnQ9bnVsbCl9fXN3aXRjaChxJjEwMzgpe2Nhc2UgMjpQaShZKTtZLmVmZmVjdFRhZyY9LTM7YnJlYWs7Y2FzZSA2OlBpKFkpO1kuZWZmZWN0VGFnJj0tMztTaShZLmFsdGVybmF0ZSxZKTticmVhaztjYXNlIDEwMjQ6WS5lZmZlY3RUYWcmPS0xMDI1O2JyZWFrO2Nhc2UgMTAyODpZLmVmZmVjdFRhZyY9XG4tMTAyNTtTaShZLmFsdGVybmF0ZSxZKTticmVhaztjYXNlIDQ6U2koWS5hbHRlcm5hdGUsWSk7YnJlYWs7Y2FzZSA4Omw9WSxNaShnLGwsaCksTmkobCl9WT1ZLm5leHRFZmZlY3R9fWNhdGNoKHdiKXtpZihudWxsPT09WSl0aHJvdyBFcnJvcih1KDMzMCkpO0VpKFksd2IpO1k9WS5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1ZKTt3PUVkO0I9eGQoKTtxPXcuZm9jdXNlZEVsZW07aD13LnNlbGVjdGlvblJhbmdlO2lmKEIhPT1xJiZxJiZxLm93bmVyRG9jdW1lbnQmJndkKHEub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscSkpe251bGwhPT1oJiZ5ZChxKSYmKEI9aC5zdGFydCx3PWguZW5kLHZvaWQgMD09PXcmJih3PUIpLFwic2VsZWN0aW9uU3RhcnRcImluIHE/KHEuc2VsZWN0aW9uU3RhcnQ9QixxLnNlbGVjdGlvbkVuZD1NYXRoLm1pbih3LHEudmFsdWUubGVuZ3RoKSk6KHc9KEI9cS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJkIuZGVmYXVsdFZpZXd8fHdpbmRvdyx3LmdldFNlbGVjdGlvbiYmXG4odz13LmdldFNlbGVjdGlvbigpLGw9cS50ZXh0Q29udGVudC5sZW5ndGgsZz1NYXRoLm1pbihoLnN0YXJ0LGwpLGg9dm9pZCAwPT09aC5lbmQ/ZzpNYXRoLm1pbihoLmVuZCxsKSwhdy5leHRlbmQmJmc+aCYmKGw9aCxoPWcsZz1sKSxsPXZkKHEsZyksbT12ZChxLGgpLGwmJm0mJigxIT09dy5yYW5nZUNvdW50fHx3LmFuY2hvck5vZGUhPT1sLm5vZGV8fHcuYW5jaG9yT2Zmc2V0IT09bC5vZmZzZXR8fHcuZm9jdXNOb2RlIT09bS5ub2RlfHx3LmZvY3VzT2Zmc2V0IT09bS5vZmZzZXQpJiYoQj1CLmNyZWF0ZVJhbmdlKCksQi5zZXRTdGFydChsLm5vZGUsbC5vZmZzZXQpLHcucmVtb3ZlQWxsUmFuZ2VzKCksZz5oPyh3LmFkZFJhbmdlKEIpLHcuZXh0ZW5kKG0ubm9kZSxtLm9mZnNldCkpOihCLnNldEVuZChtLm5vZGUsbS5vZmZzZXQpLHcuYWRkUmFuZ2UoQikpKSkpKTtCPVtdO2Zvcih3PXE7dz13LnBhcmVudE5vZGU7KTE9PT13Lm5vZGVUeXBlJiZCLnB1c2goe2VsZW1lbnQ6dyxsZWZ0Oncuc2Nyb2xsTGVmdCxcbnRvcDp3LnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBxLmZvY3VzJiZxLmZvY3VzKCk7Zm9yKHE9MDtxPEIubGVuZ3RoO3ErKyl3PUJbcV0sdy5lbGVtZW50LnNjcm9sbExlZnQ9dy5sZWZ0LHcuZWxlbWVudC5zY3JvbGxUb3A9dy50b3B9ZmQ9ISFEZDtFZD1EZD1udWxsO2EuY3VycmVudD1jO1k9ZTtkbyB0cnl7Zm9yKHE9YTtudWxsIT09WTspe3ZhciB1Yj1ZLmVmZmVjdFRhZzt1YiYzNiYmSmkocSxZLmFsdGVybmF0ZSxZKTtpZih1YiYxMjgpe0I9dm9pZCAwO3ZhciB2Yj1ZLnJlZjtpZihudWxsIT09dmIpe3ZhciBYYz1ZLnN0YXRlTm9kZTtzd2l0Y2goWS50YWcpe2Nhc2UgNTpCPVhjO2JyZWFrO2RlZmF1bHQ6Qj1YY31cImZ1bmN0aW9uXCI9PT10eXBlb2YgdmI/dmIoQik6dmIuY3VycmVudD1CfX1ZPVkubmV4dEVmZmVjdH19Y2F0Y2god2Ipe2lmKG51bGw9PT1ZKXRocm93IEVycm9yKHUoMzMwKSk7RWkoWSx3Yik7WT1ZLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PVkpO1k9XG5udWxsO1ZmKCk7Vz1mfWVsc2UgYS5jdXJyZW50PWM7aWYocWopcWo9ITEscmo9YSxzaj1iO2Vsc2UgZm9yKFk9ZTtudWxsIT09WTspYj1ZLm5leHRFZmZlY3QsWS5uZXh0RWZmZWN0PW51bGwsWT1iO2I9YS5maXJzdFBlbmRpbmdUaW1lOzA9PT1iJiYoYWo9bnVsbCk7MTA3Mzc0MTgyMz09PWI/YT09PXZqP3VqKys6KHVqPTAsdmo9YSk6dWo9MDtcImZ1bmN0aW9uXCI9PT10eXBlb2YgVWomJlVqKGMuc3RhdGVOb2RlLGQpO1ooYSk7aWYoWWkpdGhyb3cgWWk9ITEsYT1aaSxaaT1udWxsLGE7aWYoKFcmZWopIT09VilyZXR1cm4gbnVsbDtnZygpO3JldHVybiBudWxsfWZ1bmN0aW9uIFRqKCl7Zm9yKDtudWxsIT09WTspe3ZhciBhPVkuZWZmZWN0VGFnOzAhPT0oYSYyNTYpJiZHaShZLmFsdGVybmF0ZSxZKTswPT09KGEmNTEyKXx8cWp8fChxaj0hMCxkZyg5NyxmdW5jdGlvbigpe0RqKCk7cmV0dXJuIG51bGx9KSk7WT1ZLm5leHRFZmZlY3R9fVxuZnVuY3Rpb24gRGooKXtpZig5MCE9PXNqKXt2YXIgYT05Nzxzaj85Nzpzajtzaj05MDtyZXR1cm4gY2coYSxWail9fWZ1bmN0aW9uIFZqKCl7aWYobnVsbD09PXJqKXJldHVybiExO3ZhciBhPXJqO3JqPW51bGw7aWYoKFcmKGZqfGdqKSkhPT1WKXRocm93IEVycm9yKHUoMzMxKSk7dmFyIGI9VztXfD1najtmb3IoYT1hLmN1cnJlbnQuZmlyc3RFZmZlY3Q7bnVsbCE9PWE7KXt0cnl7dmFyIGM9YTtpZigwIT09KGMuZWZmZWN0VGFnJjUxMikpc3dpdGNoKGMudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6SGkoNSxjKSxJaSg1LGMpfX1jYXRjaChkKXtpZihudWxsPT09YSl0aHJvdyBFcnJvcih1KDMzMCkpO0VpKGEsZCl9Yz1hLm5leHRFZmZlY3Q7YS5uZXh0RWZmZWN0PW51bGw7YT1jfVc9YjtnZygpO3JldHVybiEwfVxuZnVuY3Rpb24gV2ooYSxiLGMpe2I9QWkoYyxiKTtiPVhpKGEsYiwxMDczNzQxODIzKTt4ZyhhLGIpO2E9eGooYSwxMDczNzQxODIzKTtudWxsIT09YSYmWihhKX1mdW5jdGlvbiBFaShhLGIpe2lmKDM9PT1hLnRhZylXaihhLGEsYik7ZWxzZSBmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZigzPT09Yy50YWcpe1dqKGMsYSxiKTticmVha31lbHNlIGlmKDE9PT1jLnRhZyl7dmFyIGQ9Yy5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PWFqfHwhYWouaGFzKGQpKSl7YT1BaShiLGEpO2E9JGkoYyxhLDEwNzM3NDE4MjMpO3hnKGMsYSk7Yz14aihjLDEwNzM3NDE4MjMpO251bGwhPT1jJiZaKGMpO2JyZWFrfX1jPWMucmV0dXJufX1cbmZ1bmN0aW9uIE9qKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtudWxsIT09ZCYmZC5kZWxldGUoYik7VD09PWEmJlU9PT1jP1M9PT12aXx8Uz09PXVpJiYxMDczNzQxODIzPT09bGomJiRmKCktVGk8cGo/RWooYSxVKTpvaj0hMDpBaihhLGMpJiYoYj1hLmxhc3RQaW5nZWRUaW1lLDAhPT1iJiZiPGN8fChhLmxhc3RQaW5nZWRUaW1lPWMsWihhKSkpfWZ1bmN0aW9uIFZpKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbCE9PWMmJmMuZGVsZXRlKGIpO2I9MDswPT09YiYmKGI9R2coKSxiPUhnKGIsYSxudWxsKSk7YT14aihhLGIpO251bGwhPT1hJiZaKGEpfXZhciBSajtcblJqPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLmV4cGlyYXRpb25UaW1lO2lmKG51bGwhPT1hKXt2YXIgZT1iLnBlbmRpbmdQcm9wcztpZihhLm1lbW9pemVkUHJvcHMhPT1lfHxLLmN1cnJlbnQpcmc9ITA7ZWxzZXtpZihkPGMpe3JnPSExO3N3aXRjaChiLnRhZyl7Y2FzZSAzOmhpKGIpO1hoKCk7YnJlYWs7Y2FzZSA1OmZoKGIpO2lmKGIubW9kZSY0JiYxIT09YyYmZS5oaWRkZW4pcmV0dXJuIGIuZXhwaXJhdGlvblRpbWU9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPTEsbnVsbDticmVhaztjYXNlIDE6TChiLnR5cGUpJiZHZihiKTticmVhaztjYXNlIDQ6ZGgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOmQ9Yi5tZW1vaXplZFByb3BzLnZhbHVlO2U9Yi50eXBlLl9jb250ZXh0O0koamcsZS5fY3VycmVudFZhbHVlKTtlLl9jdXJyZW50VmFsdWU9ZDticmVhaztjYXNlIDEzOmlmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpe2Q9Yi5jaGlsZC5jaGlsZEV4cGlyYXRpb25UaW1lO1xuaWYoMCE9PWQmJmQ+PWMpcmV0dXJuIGppKGEsYixjKTtJKE0sTS5jdXJyZW50JjEpO2I9JGgoYSxiLGMpO3JldHVybiBudWxsIT09Yj9iLnNpYmxpbmc6bnVsbH1JKE0sTS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD1iLmNoaWxkRXhwaXJhdGlvblRpbWU+PWM7aWYoMCE9PShhLmVmZmVjdFRhZyY2NCkpe2lmKGQpcmV0dXJuIG1pKGEsYixjKTtiLmVmZmVjdFRhZ3w9NjR9ZT1iLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihlLnJlbmRlcmluZz1udWxsLGUudGFpbD1udWxsKTtJKE0sTS5jdXJyZW50KTtpZighZClyZXR1cm4gbnVsbH1yZXR1cm4gJGgoYSxiLGMpfXJnPSExfX1lbHNlIHJnPSExO2IuZXhwaXJhdGlvblRpbWU9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjpkPWIudHlwZTtudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9Mik7YT1iLnBlbmRpbmdQcm9wcztlPUNmKGIsSi5jdXJyZW50KTtxZyhiLGMpO2U9b2gobnVsbCxcbmIsZCxhLGUsYyk7Yi5lZmZlY3RUYWd8PTE7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mKXtiLnRhZz0xO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtpZihMKGQpKXt2YXIgZj0hMDtHZihiKX1lbHNlIGY9ITE7Yi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbDt1ZyhiKTt2YXIgZz1kLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZyYmRmcoYixkLGcsYSk7ZS51cGRhdGVyPUpnO2Iuc3RhdGVOb2RlPWU7ZS5fcmVhY3RJbnRlcm5hbEZpYmVyPWI7TmcoYixkLGEsYyk7Yj1naShudWxsLGIsZCwhMCxmLGMpfWVsc2UgYi50YWc9MCxSKG51bGwsYixlLGMpLGI9Yi5jaGlsZDtyZXR1cm4gYjtjYXNlIDE2OmE6e2U9Yi5lbGVtZW50VHlwZTtudWxsIT09YSYmKGEuYWx0ZXJuYXRlPVxubnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZWZmZWN0VGFnfD0yKTthPWIucGVuZGluZ1Byb3BzO29iKGUpO2lmKDEhPT1lLl9zdGF0dXMpdGhyb3cgZS5fcmVzdWx0O2U9ZS5fcmVzdWx0O2IudHlwZT1lO2Y9Yi50YWc9WGooZSk7YT1pZyhlLGEpO3N3aXRjaChmKXtjYXNlIDA6Yj1kaShudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9ZmkobnVsbCxiLGUsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj1aaChudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPWFpKG51bGwsYixlLGlnKGUudHlwZSxhKSxkLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IodSgzMDYsZSxcIlwiKSk7fXJldHVybiBiO2Nhc2UgMDpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6aWcoZCxlKSxkaShhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6aWcoZCxlKSxmaShhLGIsZCxlLGMpO1xuY2FzZSAzOmhpKGIpO2Q9Yi51cGRhdGVRdWV1ZTtpZihudWxsPT09YXx8bnVsbD09PWQpdGhyb3cgRXJyb3IodSgyODIpKTtkPWIucGVuZGluZ1Byb3BzO2U9Yi5tZW1vaXplZFN0YXRlO2U9bnVsbCE9PWU/ZS5lbGVtZW50Om51bGw7dmcoYSxiKTt6ZyhiLGQsbnVsbCxjKTtkPWIubWVtb2l6ZWRTdGF0ZS5lbGVtZW50O2lmKGQ9PT1lKVhoKCksYj0kaChhLGIsYyk7ZWxzZXtpZihlPWIuc3RhdGVOb2RlLmh5ZHJhdGUpUGg9SmQoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSxPaD1iLGU9UWg9ITA7aWYoZSlmb3IoYz1ZZyhiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5lZmZlY3RUYWc9Yy5lZmZlY3RUYWcmLTN8MTAyNCxjPWMuc2libGluZztlbHNlIFIoYSxiLGQsYyksWGgoKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA1OnJldHVybiBmaChiKSxudWxsPT09YSYmVWgoYiksZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxmPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpcbm51bGwsZz1lLmNoaWxkcmVuLEdkKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZHZChkLGYpJiYoYi5lZmZlY3RUYWd8PTE2KSxlaShhLGIpLGIubW9kZSY0JiYxIT09YyYmZS5oaWRkZW4/KGIuZXhwaXJhdGlvblRpbWU9Yi5jaGlsZEV4cGlyYXRpb25UaW1lPTEsYj1udWxsKTooUihhLGIsZyxjKSxiPWIuY2hpbGQpLGI7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmVWgoYiksbnVsbDtjYXNlIDEzOnJldHVybiBqaShhLGIsYyk7Y2FzZSA0OnJldHVybiBkaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1YZyhiLG51bGwsZCxjKTpSKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6aWcoZCxlKSxaaChhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gUihhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFIoYSxcbmIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEyOnJldHVybiBSKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztnPWIubWVtb2l6ZWRQcm9wcztmPWUudmFsdWU7dmFyIGg9Yi50eXBlLl9jb250ZXh0O0koamcsaC5fY3VycmVudFZhbHVlKTtoLl9jdXJyZW50VmFsdWU9ZjtpZihudWxsIT09ZylpZihoPWcudmFsdWUsZj0kZShoLGYpPzA6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLl9jYWxjdWxhdGVDaGFuZ2VkQml0cz9kLl9jYWxjdWxhdGVDaGFuZ2VkQml0cyhoLGYpOjEwNzM3NDE4MjMpfDAsMD09PWYpe2lmKGcuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhSy5jdXJyZW50KXtiPSRoKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihoPWIuY2hpbGQsbnVsbCE9PWgmJihoLnJldHVybj1iKTtudWxsIT09aDspe3ZhciBrPWguZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1cbmspe2c9aC5jaGlsZDtmb3IodmFyIGw9ay5maXJzdENvbnRleHQ7bnVsbCE9PWw7KXtpZihsLmNvbnRleHQ9PT1kJiYwIT09KGwub2JzZXJ2ZWRCaXRzJmYpKXsxPT09aC50YWcmJihsPXdnKGMsbnVsbCksbC50YWc9Mix4ZyhoLGwpKTtoLmV4cGlyYXRpb25UaW1lPGMmJihoLmV4cGlyYXRpb25UaW1lPWMpO2w9aC5hbHRlcm5hdGU7bnVsbCE9PWwmJmwuZXhwaXJhdGlvblRpbWU8YyYmKGwuZXhwaXJhdGlvblRpbWU9Yyk7cGcoaC5yZXR1cm4sYyk7ay5leHBpcmF0aW9uVGltZTxjJiYoay5leHBpcmF0aW9uVGltZT1jKTticmVha31sPWwubmV4dH19ZWxzZSBnPTEwPT09aC50YWc/aC50eXBlPT09Yi50eXBlP251bGw6aC5jaGlsZDpoLmNoaWxkO2lmKG51bGwhPT1nKWcucmV0dXJuPWg7ZWxzZSBmb3IoZz1oO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31oPWcuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Zy5yZXR1cm47Zz1oO2JyZWFrfWc9Zy5yZXR1cm59aD1cbmd9UihhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxmPWIucGVuZGluZ1Byb3BzLGQ9Zi5jaGlsZHJlbixxZyhiLGMpLGU9c2coZSxmLnVuc3RhYmxlX29ic2VydmVkQml0cyksZD1kKGUpLGIuZWZmZWN0VGFnfD0xLFIoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDE0OnJldHVybiBlPWIudHlwZSxmPWlnKGUsYi5wZW5kaW5nUHJvcHMpLGY9aWcoZS50eXBlLGYpLGFpKGEsYixlLGYsZCxjKTtjYXNlIDE1OnJldHVybiBjaShhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGQsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6aWcoZCxlKSxudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmVmZmVjdFRhZ3w9MiksYi50YWc9MSxMKGQpPyhhPSEwLEdmKGIpKTphPSExLHFnKGIsYyksTGcoYixkLGUpLE5nKGIsZCxlLGMpLGdpKG51bGwsXG5iLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiBtaShhLGIsYyl9dGhyb3cgRXJyb3IodSgxNTYsYi50YWcpKTt9O3ZhciBVaj1udWxsLExpPW51bGw7ZnVuY3Rpb24gWWooYSl7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pcmV0dXJuITE7dmFyIGI9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKGIuaXNEaXNhYmxlZHx8IWIuc3VwcG9ydHNGaWJlcilyZXR1cm4hMDt0cnl7dmFyIGM9Yi5pbmplY3QoYSk7VWo9ZnVuY3Rpb24oYSl7dHJ5e2Iub25Db21taXRGaWJlclJvb3QoYyxhLHZvaWQgMCw2ND09PShhLmN1cnJlbnQuZWZmZWN0VGFnJjY0KSl9Y2F0Y2goZSl7fX07TGk9ZnVuY3Rpb24oYSl7dHJ5e2Iub25Db21taXRGaWJlclVubW91bnQoYyxhKX1jYXRjaChlKXt9fX1jYXRjaChkKXt9cmV0dXJuITB9XG5mdW5jdGlvbiBaaihhLGIsYyxkKXt0aGlzLnRhZz1hO3RoaXMua2V5PWM7dGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbDt0aGlzLmluZGV4PTA7dGhpcy5yZWY9bnVsbDt0aGlzLnBlbmRpbmdQcm9wcz1iO3RoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsO3RoaXMubW9kZT1kO3RoaXMuZWZmZWN0VGFnPTA7dGhpcy5sYXN0RWZmZWN0PXRoaXMuZmlyc3RFZmZlY3Q9dGhpcy5uZXh0RWZmZWN0PW51bGw7dGhpcy5jaGlsZEV4cGlyYXRpb25UaW1lPXRoaXMuZXhwaXJhdGlvblRpbWU9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIFNoKGEsYixjLGQpe3JldHVybiBuZXcgWmooYSxiLGMsZCl9XG5mdW5jdGlvbiBiaShhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIFhqKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBiaShhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09Z2IpcmV0dXJuIDExO2lmKGE9PT1qYilyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiBTZyhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPVNoKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMuZWZmZWN0VGFnPTAsYy5uZXh0RWZmZWN0PW51bGwsYy5maXJzdEVmZmVjdD1udWxsLGMubGFzdEVmZmVjdD1udWxsKTtjLmNoaWxkRXhwaXJhdGlvblRpbWU9YS5jaGlsZEV4cGlyYXRpb25UaW1lO2MuZXhwaXJhdGlvblRpbWU9YS5leHBpcmF0aW9uVGltZTtjLmNoaWxkPWEuY2hpbGQ7Yy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcztjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlO2MudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2V4cGlyYXRpb25UaW1lOmIuZXhwaXJhdGlvblRpbWUsXG5maXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHQscmVzcG9uZGVyczpiLnJlc3BvbmRlcnN9O2Muc2libGluZz1hLnNpYmxpbmc7Yy5pbmRleD1hLmluZGV4O2MucmVmPWEucmVmO3JldHVybiBjfVxuZnVuY3Rpb24gVWcoYSxiLGMsZCxlLGYpe3ZhciBnPTI7ZD1hO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKWJpKGEpJiYoZz0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlnPTU7ZWxzZSBhOnN3aXRjaChhKXtjYXNlIGFiOnJldHVybiBXZyhjLmNoaWxkcmVuLGUsZixiKTtjYXNlIGZiOmc9ODtlfD03O2JyZWFrO2Nhc2UgYmI6Zz04O2V8PTE7YnJlYWs7Y2FzZSBjYjpyZXR1cm4gYT1TaCgxMixjLGIsZXw4KSxhLmVsZW1lbnRUeXBlPWNiLGEudHlwZT1jYixhLmV4cGlyYXRpb25UaW1lPWYsYTtjYXNlIGhiOnJldHVybiBhPVNoKDEzLGMsYixlKSxhLnR5cGU9aGIsYS5lbGVtZW50VHlwZT1oYixhLmV4cGlyYXRpb25UaW1lPWYsYTtjYXNlIGliOnJldHVybiBhPVNoKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPWliLGEuZXhwaXJhdGlvblRpbWU9ZixhO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBkYjpnPVxuMTA7YnJlYWsgYTtjYXNlIGViOmc9OTticmVhayBhO2Nhc2UgZ2I6Zz0xMTticmVhayBhO2Nhc2UgamI6Zz0xNDticmVhayBhO2Nhc2Uga2I6Zz0xNjtkPW51bGw7YnJlYWsgYTtjYXNlIGxiOmc9MjI7YnJlYWsgYX10aHJvdyBFcnJvcih1KDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPVNoKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmV4cGlyYXRpb25UaW1lPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gV2coYSxiLGMsZCl7YT1TaCg3LGEsZCxiKTthLmV4cGlyYXRpb25UaW1lPWM7cmV0dXJuIGF9ZnVuY3Rpb24gVGcoYSxiLGMpe2E9U2goNixhLG51bGwsYik7YS5leHBpcmF0aW9uVGltZT1jO3JldHVybiBhfVxuZnVuY3Rpb24gVmcoYSxiLGMpe2I9U2goNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IuZXhwaXJhdGlvblRpbWU9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBhayhhLGIsYyl7dGhpcy50YWc9Yjt0aGlzLmN1cnJlbnQ9bnVsbDt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLnBpbmdDYWNoZT10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsO3RoaXMuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wO3RoaXMuZmluaXNoZWRXb3JrPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5oeWRyYXRlPWM7dGhpcy5jYWxsYmFja05vZGU9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9OTA7dGhpcy5sYXN0RXhwaXJlZFRpbWU9dGhpcy5sYXN0UGluZ2VkVGltZT10aGlzLm5leHRLbm93blBlbmRpbmdMZXZlbD10aGlzLmxhc3RTdXNwZW5kZWRUaW1lPXRoaXMuZmlyc3RTdXNwZW5kZWRUaW1lPXRoaXMuZmlyc3RQZW5kaW5nVGltZT0wfVxuZnVuY3Rpb24gQWooYSxiKXt2YXIgYz1hLmZpcnN0U3VzcGVuZGVkVGltZTthPWEubGFzdFN1c3BlbmRlZFRpbWU7cmV0dXJuIDAhPT1jJiZjPj1iJiZhPD1ifWZ1bmN0aW9uIHhpKGEsYil7dmFyIGM9YS5maXJzdFN1c3BlbmRlZFRpbWUsZD1hLmxhc3RTdXNwZW5kZWRUaW1lO2M8YiYmKGEuZmlyc3RTdXNwZW5kZWRUaW1lPWIpO2lmKGQ+Ynx8MD09PWMpYS5sYXN0U3VzcGVuZGVkVGltZT1iO2I8PWEubGFzdFBpbmdlZFRpbWUmJihhLmxhc3RQaW5nZWRUaW1lPTApO2I8PWEubGFzdEV4cGlyZWRUaW1lJiYoYS5sYXN0RXhwaXJlZFRpbWU9MCl9XG5mdW5jdGlvbiB5aShhLGIpe2I+YS5maXJzdFBlbmRpbmdUaW1lJiYoYS5maXJzdFBlbmRpbmdUaW1lPWIpO3ZhciBjPWEuZmlyc3RTdXNwZW5kZWRUaW1lOzAhPT1jJiYoYj49Yz9hLmZpcnN0U3VzcGVuZGVkVGltZT1hLmxhc3RTdXNwZW5kZWRUaW1lPWEubmV4dEtub3duUGVuZGluZ0xldmVsPTA6Yj49YS5sYXN0U3VzcGVuZGVkVGltZSYmKGEubGFzdFN1c3BlbmRlZFRpbWU9YisxKSxiPmEubmV4dEtub3duUGVuZGluZ0xldmVsJiYoYS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9YikpfWZ1bmN0aW9uIENqKGEsYil7dmFyIGM9YS5sYXN0RXhwaXJlZFRpbWU7aWYoMD09PWN8fGM+YilhLmxhc3RFeHBpcmVkVGltZT1ifVxuZnVuY3Rpb24gYmsoYSxiLGMsZCl7dmFyIGU9Yi5jdXJyZW50LGY9R2coKSxnPURnLnN1c3BlbnNlO2Y9SGcoZixlLGcpO2E6aWYoYyl7Yz1jLl9yZWFjdEludGVybmFsRmliZXI7Yjp7aWYoZGMoYykhPT1jfHwxIT09Yy50YWcpdGhyb3cgRXJyb3IodSgxNzApKTt2YXIgaD1jO2Rve3N3aXRjaChoLnRhZyl7Y2FzZSAzOmg9aC5zdGF0ZU5vZGUuY29udGV4dDticmVhayBiO2Nhc2UgMTppZihMKGgudHlwZSkpe2g9aC5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYn19aD1oLnJldHVybn13aGlsZShudWxsIT09aCk7dGhyb3cgRXJyb3IodSgxNzEpKTt9aWYoMT09PWMudGFnKXt2YXIgaz1jLnR5cGU7aWYoTChrKSl7Yz1GZihjLGssaCk7YnJlYWsgYX19Yz1ofWVsc2UgYz1BZjtudWxsPT09Yi5jb250ZXh0P2IuY29udGV4dD1jOmIucGVuZGluZ0NvbnRleHQ9YztiPXdnKGYsZyk7Yi5wYXlsb2FkPXtlbGVtZW50OmF9O2Q9dm9pZCAwPT09XG5kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7eGcoZSxiKTtJZyhlLGYpO3JldHVybiBmfWZ1bmN0aW9uIGNrKGEpe2E9YS5jdXJyZW50O2lmKCFhLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChhLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gZGsoYSxiKXthPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCYmYS5yZXRyeVRpbWU8YiYmKGEucmV0cnlUaW1lPWIpfWZ1bmN0aW9uIGVrKGEsYil7ZGsoYSxiKTsoYT1hLmFsdGVybmF0ZSkmJmRrKGEsYil9XG5mdW5jdGlvbiBmayhhLGIsYyl7Yz1udWxsIT1jJiYhMD09PWMuaHlkcmF0ZTt2YXIgZD1uZXcgYWsoYSxiLGMpLGU9U2goMyxudWxsLG51bGwsMj09PWI/NzoxPT09Yj8zOjApO2QuY3VycmVudD1lO2Uuc3RhdGVOb2RlPWQ7dWcoZSk7YVtPZF09ZC5jdXJyZW50O2MmJjAhPT1iJiZKYyhhLDk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50KTt0aGlzLl9pbnRlcm5hbFJvb3Q9ZH1may5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEpe2JrKGEsdGhpcy5faW50ZXJuYWxSb290LG51bGwsbnVsbCl9O2ZrLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290LGI9YS5jb250YWluZXJJbmZvO2JrKG51bGwsYSxudWxsLGZ1bmN0aW9uKCl7YltPZF09bnVsbH0pfTtcbmZ1bmN0aW9uIGdrKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBoayhhLGIpe2J8fChiPWE/OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YS5maXJzdENoaWxkOm51bGwsYj0hKCFifHwxIT09Yi5ub2RlVHlwZXx8IWIuaGFzQXR0cmlidXRlKFwiZGF0YS1yZWFjdHJvb3RcIikpKTtpZighYilmb3IodmFyIGM7Yz1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChjKTtyZXR1cm4gbmV3IGZrKGEsMCxiP3toeWRyYXRlOiEwfTp2b2lkIDApfVxuZnVuY3Rpb24gaWsoYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9Zi5faW50ZXJuYWxSb290O2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlKXt2YXIgaD1lO2U9ZnVuY3Rpb24oKXt2YXIgYT1jayhnKTtoLmNhbGwoYSl9fWJrKGIsZyxhLGUpfWVsc2V7Zj1jLl9yZWFjdFJvb3RDb250YWluZXI9aGsoYyxkKTtnPWYuX2ludGVybmFsUm9vdDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGs9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9Y2soZyk7ay5jYWxsKGEpfX1OaihmdW5jdGlvbigpe2JrKGIsZyxhLGUpfSl9cmV0dXJuIGNrKGcpfWZ1bmN0aW9uIGprKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6JGEsa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG53Yz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1oZyhHZygpLDE1MCwxMDApO0lnKGEsYik7ZWsoYSxiKX19O3hjPWZ1bmN0aW9uKGEpezEzPT09YS50YWcmJihJZyhhLDMpLGVrKGEsMykpfTt5Yz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1HZygpO2I9SGcoYixhLG51bGwpO0lnKGEsYik7ZWsoYSxiKX19O1xuemE9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpDYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9UWQoZCk7aWYoIWUpdGhyb3cgRXJyb3IodSg5MCkpO3liKGQpO0NiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjpLYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmSGIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtGYT1NajtcbkdhPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9VztXfD00O3RyeXtyZXR1cm4gY2coOTgsYS5iaW5kKG51bGwsYixjLGQsZSkpfWZpbmFsbHl7Vz1mLFc9PT1WJiZnZygpfX07SGE9ZnVuY3Rpb24oKXsoVyYoMXxmanxnaikpPT09ViYmKExqKCksRGooKSl9O0lhPWZ1bmN0aW9uKGEsYil7dmFyIGM9VztXfD0yO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e1c9YyxXPT09ViYmZ2coKX19O2Z1bmN0aW9uIGtrKGEsYil7dmFyIGM9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIWdrKGIpKXRocm93IEVycm9yKHUoMjAwKSk7cmV0dXJuIGprKGEsYixudWxsLGMpfXZhciBsaz17RXZlbnRzOltOYyxQZCxRZCx4YSx0YSxYZCxmdW5jdGlvbihhKXtqYyhhLFdkKX0sRGEsRWEsaWQsbWMsRGose2N1cnJlbnQ6ITF9XX07XG4oZnVuY3Rpb24oYSl7dmFyIGI9YS5maW5kRmliZXJCeUhvc3RJbnN0YW5jZTtyZXR1cm4gWWoobih7fSxhLHtvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOldhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oYSl7YT1oYyhhKTtyZXR1cm4gbnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGI/YihhKTpudWxsfSxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsfSkpfSkoe2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnRjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTYuMTMuMVwiLFxucmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifSk7ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1saztleHBvcnRzLmNyZWF0ZVBvcnRhbD1raztleHBvcnRzLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoMT09PWEubm9kZVR5cGUpcmV0dXJuIGE7dmFyIGI9YS5fcmVhY3RJbnRlcm5hbEZpYmVyO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcih1KDE4OCkpO3Rocm93IEVycm9yKHUoMjY4LE9iamVjdC5rZXlzKGEpKSk7fWE9aGMoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtcbmV4cG9ydHMuZmx1c2hTeW5jPWZ1bmN0aW9uKGEsYil7aWYoKFcmKGZqfGdqKSkhPT1WKXRocm93IEVycm9yKHUoMTg3KSk7dmFyIGM9VztXfD0xO3RyeXtyZXR1cm4gY2coOTksYS5iaW5kKG51bGwsYikpfWZpbmFsbHl7Vz1jLGdnKCl9fTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFnayhiKSl0aHJvdyBFcnJvcih1KDIwMCkpO3JldHVybiBpayhudWxsLGEsYiwhMCxjKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFnayhiKSl0aHJvdyBFcnJvcih1KDIwMCkpO3JldHVybiBpayhudWxsLGEsYiwhMSxjKX07XG5leHBvcnRzLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIWdrKGEpKXRocm93IEVycm9yKHUoNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhOaihmdW5jdGlvbigpe2lrKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVtPZF09bnVsbH0pfSksITApOiExfTtleHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPU1qO2V4cG9ydHMudW5zdGFibGVfY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGtrKGEsYiwyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCl9O1xuZXhwb3J0cy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighZ2soYykpdGhyb3cgRXJyb3IodSgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFsRmliZXIpdGhyb3cgRXJyb3IodSgzOCkpO3JldHVybiBpayhhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTYuMTMuMVwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MC4xOS4xXG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGYsZyxoLGssbDtcbmlmKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBwPW51bGwscT1udWxsLHQ9ZnVuY3Rpb24oKXtpZihudWxsIT09cCl0cnl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtwKCEwLGEpO3A9bnVsbH1jYXRjaChiKXt0aHJvdyBzZXRUaW1lb3V0KHQsMCksYjt9fSx1PURhdGUubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS11fTtmPWZ1bmN0aW9uKGEpe251bGwhPT1wP3NldFRpbWVvdXQoZiwwLGEpOihwPWEsc2V0VGltZW91dCh0LDApKX07Zz1mdW5jdGlvbihhLGIpe3E9c2V0VGltZW91dChhLGIpfTtoPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHEpfTtrPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2w9ZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbigpe319ZWxzZXt2YXIgdz13aW5kb3cucGVyZm9ybWFuY2UseD13aW5kb3cuRGF0ZSxcbnk9d2luZG93LnNldFRpbWVvdXQsej13aW5kb3cuY2xlYXJUaW1lb3V0O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgY29uc29sZSl7dmFyIEE9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuIE1ha2Ugc3VyZSB0aGF0IHlvdSBsb2FkIGEgcG9seWZpbGwgaW4gb2xkZXIgYnJvd3NlcnMuIGh0dHBzOi8vZmIubWUvcmVhY3QtcG9seWZpbGxzXCIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBBJiZjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBjYW5jZWxBbmltYXRpb25GcmFtZS4gTWFrZSBzdXJlIHRoYXQgeW91IGxvYWQgYSBwb2x5ZmlsbCBpbiBvbGRlciBicm93c2Vycy4gaHR0cHM6Ly9mYi5tZS9yZWFjdC1wb2x5ZmlsbHNcIil9aWYoXCJvYmplY3RcIj09PVxudHlwZW9mIHcmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB3Lm5vdylleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiB3Lm5vdygpfTtlbHNle3ZhciBCPXgubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4geC5ub3coKS1CfX12YXIgQz0hMSxEPW51bGwsRT0tMSxGPTUsRz0wO2s9ZnVuY3Rpb24oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKT49R307bD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZXJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHVuc3VwcG9ydGVkXCIpOkY9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O3ZhciBIPW5ldyBNZXNzYWdlQ2hhbm5lbCxJPUgucG9ydDI7SC5wb3J0MS5vbm1lc3NhZ2U9XG5mdW5jdGlvbigpe2lmKG51bGwhPT1EKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO0c9YStGO3RyeXtEKCEwLGEpP0kucG9zdE1lc3NhZ2UobnVsbCk6KEM9ITEsRD1udWxsKX1jYXRjaChiKXt0aHJvdyBJLnBvc3RNZXNzYWdlKG51bGwpLGI7fX1lbHNlIEM9ITF9O2Y9ZnVuY3Rpb24oYSl7RD1hO0N8fChDPSEwLEkucG9zdE1lc3NhZ2UobnVsbCkpfTtnPWZ1bmN0aW9uKGEsYil7RT15KGZ1bmN0aW9uKCl7YShleHBvcnRzLnVuc3RhYmxlX25vdygpKX0sYil9O2g9ZnVuY3Rpb24oKXt6KEUpO0U9LTF9fWZ1bmN0aW9uIEooYSxiKXt2YXIgYz1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzspe3ZhciBkPWMtMT4+PjEsZT1hW2RdO2lmKHZvaWQgMCE9PWUmJjA8SyhlLGIpKWFbZF09YixhW2NdPWUsYz1kO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gTChhKXthPWFbMF07cmV0dXJuIHZvaWQgMD09PWE/bnVsbDphfVxuZnVuY3Rpb24gTShhKXt2YXIgYj1hWzBdO2lmKHZvaWQgMCE9PWIpe3ZhciBjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGg7ZDxlOyl7dmFyIG09MiooZCsxKS0xLG49YVttXSx2PW0rMSxyPWFbdl07aWYodm9pZCAwIT09biYmMD5LKG4sYykpdm9pZCAwIT09ciYmMD5LKHIsbik/KGFbZF09cixhW3ZdPWMsZD12KTooYVtkXT1uLGFbbV09YyxkPW0pO2Vsc2UgaWYodm9pZCAwIT09ciYmMD5LKHIsYykpYVtkXT1yLGFbdl09YyxkPXY7ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBLKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfXZhciBOPVtdLE89W10sUD0xLFE9bnVsbCxSPTMsUz0hMSxUPSExLFU9ITE7XG5mdW5jdGlvbiBWKGEpe2Zvcih2YXIgYj1MKE8pO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spTShPKTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKU0oTyksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxKKE4sYik7ZWxzZSBicmVhaztiPUwoTyl9fWZ1bmN0aW9uIFcoYSl7VT0hMTtWKGEpO2lmKCFUKWlmKG51bGwhPT1MKE4pKVQ9ITAsZihYKTtlbHNle3ZhciBiPUwoTyk7bnVsbCE9PWImJmcoVyxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBYKGEsYil7VD0hMTtVJiYoVT0hMSxoKCkpO1M9ITA7dmFyIGM9Ujt0cnl7VihiKTtmb3IoUT1MKE4pO251bGwhPT1RJiYoIShRLmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhaygpKTspe3ZhciBkPVEuY2FsbGJhY2s7aWYobnVsbCE9PWQpe1EuY2FsbGJhY2s9bnVsbDtSPVEucHJpb3JpdHlMZXZlbDt2YXIgZT1kKFEuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT9RLmNhbGxiYWNrPWU6UT09PUwoTikmJk0oTik7VihiKX1lbHNlIE0oTik7UT1MKE4pfWlmKG51bGwhPT1RKXZhciBtPSEwO2Vsc2V7dmFyIG49TChPKTtudWxsIT09biYmZyhXLG4uc3RhcnRUaW1lLWIpO209ITF9cmV0dXJuIG19ZmluYWxseXtRPW51bGwsUj1jLFM9ITF9fVxuZnVuY3Rpb24gWShhKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybi0xO2Nhc2UgMjpyZXR1cm4gMjUwO2Nhc2UgNTpyZXR1cm4gMTA3Mzc0MTgyMztjYXNlIDQ6cmV0dXJuIDFFNDtkZWZhdWx0OnJldHVybiA1RTN9fXZhciBaPWw7ZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe1R8fFN8fChUPSEwLGYoWCkpfTtcbmV4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gUn07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBMKE4pfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKFIpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPVJ9dmFyIGM9UjtSPWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXtSPWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1aO2V4cG9ydHMudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPTN9dmFyIGM9UjtSPWE7dHJ5e3JldHVybiBiKCl9ZmluYWxseXtSPWN9fTtcbmV4cG9ydHMudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXt2YXIgZT1jLmRlbGF5O2U9XCJudW1iZXJcIj09PXR5cGVvZiBlJiYwPGU/ZCtlOmQ7Yz1cIm51bWJlclwiPT09dHlwZW9mIGMudGltZW91dD9jLnRpbWVvdXQ6WShhKX1lbHNlIGM9WShhKSxlPWQ7Yz1lK2M7YT17aWQ6UCsrLGNhbGxiYWNrOmIscHJpb3JpdHlMZXZlbDphLHN0YXJ0VGltZTplLGV4cGlyYXRpb25UaW1lOmMsc29ydEluZGV4Oi0xfTtlPmQ/KGEuc29ydEluZGV4PWUsSihPLGEpLG51bGw9PT1MKE4pJiZhPT09TChPKSYmKFU/aCgpOlU9ITAsZyhXLGUtZCkpKTooYS5zb3J0SW5kZXg9YyxKKE4sYSksVHx8U3x8KFQ9ITAsZihYKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9ZnVuY3Rpb24oKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1YoYSk7dmFyIGI9TChOKTtyZXR1cm4gYiE9PVEmJm51bGwhPT1RJiZudWxsIT09YiYmbnVsbCE9PWIuY2FsbGJhY2smJmIuc3RhcnRUaW1lPD1hJiZiLmV4cGlyYXRpb25UaW1lPFEuZXhwaXJhdGlvblRpbWV8fGsoKX07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9UjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1SO1I9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7Uj1jfX19O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgaW5pdGlhbFN0YXRlID0ge1xuICBhbmltYXRpbmc6IGZhbHNlLFxuICBhdXRvcGxheWluZzogbnVsbCxcbiAgY3VycmVudERpcmVjdGlvbjogMCxcbiAgY3VycmVudExlZnQ6IG51bGwsXG4gIGN1cnJlbnRTbGlkZTogMCxcbiAgZGlyZWN0aW9uOiAxLFxuICBkcmFnZ2luZzogZmFsc2UsXG4gIGVkZ2VEcmFnZ2VkOiBmYWxzZSxcbiAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICBsYXp5TG9hZGVkTGlzdDogW10sXG4gIGxpc3RIZWlnaHQ6IG51bGwsXG4gIGxpc3RXaWR0aDogbnVsbCxcbiAgc2Nyb2xsaW5nOiBmYWxzZSxcbiAgc2xpZGVDb3VudDogbnVsbCxcbiAgc2xpZGVIZWlnaHQ6IG51bGwsXG4gIHNsaWRlV2lkdGg6IG51bGwsXG4gIHN3aXBlTGVmdDogbnVsbCxcbiAgc3dpcGVkOiBmYWxzZSxcbiAgLy8gdXNlZCBieSBzd2lwZUV2ZW50LiBkaWZmZXJlbnRpdGVzIGJldHdlZW4gdG91Y2ggYW5kIHN3aXBlLlxuICBzd2lwaW5nOiBmYWxzZSxcbiAgdG91Y2hPYmplY3Q6IHtcbiAgICBzdGFydFg6IDAsXG4gICAgc3RhcnRZOiAwLFxuICAgIGN1clg6IDAsXG4gICAgY3VyWTogMFxuICB9LFxuICB0cmFja1N0eWxlOiB7fSxcbiAgdHJhY2tXaWR0aDogMFxufTtcbnZhciBfZGVmYXVsdCA9IGluaXRpYWxTdGF0ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyB0aGUgYFR5cGVFcnJvcmAgbWVzc2FnZSBmb3IgXCJGdW5jdGlvbnNcIiBtZXRob2RzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICogaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gKlxuICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAqIH0pKTtcbiAqXG4gKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsYXN0QXJncyxcbiAgICAgIGxhc3RUaGlzLFxuICAgICAgbWF4V2FpdCxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHRpbWVySWQsXG4gICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgcmVzdWx0ID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgcmV0dXJuIG1heGluZyA/IG5hdGl2ZU1pbihyZXN1bHQsIG1heFdhaXQgLSB0aW1lU2luY2VMYXN0SW52b2tlKSA6IHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZEludm9rZSh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgIC8vIEVpdGhlciB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsLCBhY3Rpdml0eSBoYXMgc3RvcHBlZCBhbmQgd2UncmUgYXQgdGhlXG4gICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgcmV0dXJuIChsYXN0Q2FsbFRpbWUgPT09IHVuZGVmaW5lZCB8fCAodGltZVNpbmNlTGFzdENhbGwgPj0gd2FpdCkgfHxcbiAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gIH1cblxuICBmdW5jdGlvbiB0aW1lckV4cGlyZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICByZXR1cm4gdHJhaWxpbmdFZGdlKHRpbWUpO1xuICAgIH1cbiAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHJlbWFpbmluZ1dhaXQodGltZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICB0aW1lcklkID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgIGlmICh0cmFpbGluZyAmJiBsYXN0QXJncykge1xuICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgfVxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgfVxuICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgIGlzSW52b2tpbmcgPSBzaG91bGRJbnZva2UodGltZSk7XG5cbiAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgbGFzdENhbGxUaW1lID0gdGltZTtcblxuICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAvLyBIYW5kbGUgaW52b2NhdGlvbnMgaW4gYSB0aWdodCBsb29wLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVHJpbSwgJycpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5UcmFjayA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbnZhciBfaW5uZXJTbGlkZXJVdGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzL2lubmVyU2xpZGVyVXRpbHNcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbi8vIGdpdmVuIHNwZWNpZmljYXRpb25zL3Byb3BzIGZvciBhIHNsaWRlLCBmZXRjaCBhbGwgdGhlIGNsYXNzZXMgdGhhdCBuZWVkIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNsaWRlXG52YXIgZ2V0U2xpZGVDbGFzc2VzID0gZnVuY3Rpb24gZ2V0U2xpZGVDbGFzc2VzKHNwZWMpIHtcbiAgdmFyIHNsaWNrQWN0aXZlLCBzbGlja0NlbnRlciwgc2xpY2tDbG9uZWQ7XG4gIHZhciBjZW50ZXJPZmZzZXQsIGluZGV4O1xuXG4gIGlmIChzcGVjLnJ0bCkge1xuICAgIGluZGV4ID0gc3BlYy5zbGlkZUNvdW50IC0gMSAtIHNwZWMuaW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXggPSBzcGVjLmluZGV4O1xuICB9XG5cbiAgc2xpY2tDbG9uZWQgPSBpbmRleCA8IDAgfHwgaW5kZXggPj0gc3BlYy5zbGlkZUNvdW50O1xuXG4gIGlmIChzcGVjLmNlbnRlck1vZGUpIHtcbiAgICBjZW50ZXJPZmZzZXQgPSBNYXRoLmZsb29yKHNwZWMuc2xpZGVzVG9TaG93IC8gMik7XG4gICAgc2xpY2tDZW50ZXIgPSAoaW5kZXggLSBzcGVjLmN1cnJlbnRTbGlkZSkgJSBzcGVjLnNsaWRlQ291bnQgPT09IDA7XG5cbiAgICBpZiAoaW5kZXggPiBzcGVjLmN1cnJlbnRTbGlkZSAtIGNlbnRlck9mZnNldCAtIDEgJiYgaW5kZXggPD0gc3BlYy5jdXJyZW50U2xpZGUgKyBjZW50ZXJPZmZzZXQpIHtcbiAgICAgIHNsaWNrQWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2xpY2tBY3RpdmUgPSBzcGVjLmN1cnJlbnRTbGlkZSA8PSBpbmRleCAmJiBpbmRleCA8IHNwZWMuY3VycmVudFNsaWRlICsgc3BlYy5zbGlkZXNUb1Nob3c7XG4gIH1cblxuICB2YXIgc2xpY2tDdXJyZW50ID0gaW5kZXggPT09IHNwZWMuY3VycmVudFNsaWRlO1xuICByZXR1cm4ge1xuICAgIFwic2xpY2stc2xpZGVcIjogdHJ1ZSxcbiAgICBcInNsaWNrLWFjdGl2ZVwiOiBzbGlja0FjdGl2ZSxcbiAgICBcInNsaWNrLWNlbnRlclwiOiBzbGlja0NlbnRlcixcbiAgICBcInNsaWNrLWNsb25lZFwiOiBzbGlja0Nsb25lZCxcbiAgICBcInNsaWNrLWN1cnJlbnRcIjogc2xpY2tDdXJyZW50IC8vIGR1YmlvdXMgaW4gY2FzZSBvZiBSVExcblxuICB9O1xufTtcblxudmFyIGdldFNsaWRlU3R5bGUgPSBmdW5jdGlvbiBnZXRTbGlkZVN0eWxlKHNwZWMpIHtcbiAgdmFyIHN0eWxlID0ge307XG5cbiAgaWYgKHNwZWMudmFyaWFibGVXaWR0aCA9PT0gdW5kZWZpbmVkIHx8IHNwZWMudmFyaWFibGVXaWR0aCA9PT0gZmFsc2UpIHtcbiAgICBzdHlsZS53aWR0aCA9IHNwZWMuc2xpZGVXaWR0aDtcbiAgfVxuXG4gIGlmIChzcGVjLmZhZGUpIHtcbiAgICBzdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcblxuICAgIGlmIChzcGVjLnZlcnRpY2FsKSB7XG4gICAgICBzdHlsZS50b3AgPSAtc3BlYy5pbmRleCAqIHBhcnNlSW50KHNwZWMuc2xpZGVIZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5sZWZ0ID0gLXNwZWMuaW5kZXggKiBwYXJzZUludChzcGVjLnNsaWRlV2lkdGgpO1xuICAgIH1cblxuICAgIHN0eWxlLm9wYWNpdHkgPSBzcGVjLmN1cnJlbnRTbGlkZSA9PT0gc3BlYy5pbmRleCA/IDEgOiAwO1xuICAgIHN0eWxlLnRyYW5zaXRpb24gPSBcIm9wYWNpdHkgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZSArIFwiLCBcIiArIFwidmlzaWJpbGl0eSBcIiArIHNwZWMuc3BlZWQgKyBcIm1zIFwiICsgc3BlYy5jc3NFYXNlO1xuICAgIHN0eWxlLldlYmtpdFRyYW5zaXRpb24gPSBcIm9wYWNpdHkgXCIgKyBzcGVjLnNwZWVkICsgXCJtcyBcIiArIHNwZWMuY3NzRWFzZSArIFwiLCBcIiArIFwidmlzaWJpbGl0eSBcIiArIHNwZWMuc3BlZWQgKyBcIm1zIFwiICsgc3BlYy5jc3NFYXNlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufTtcblxudmFyIGdldEtleSA9IGZ1bmN0aW9uIGdldEtleShjaGlsZCwgZmFsbGJhY2tLZXkpIHtcbiAgcmV0dXJuIGNoaWxkLmtleSB8fCBmYWxsYmFja0tleTtcbn07XG5cbnZhciByZW5kZXJTbGlkZXMgPSBmdW5jdGlvbiByZW5kZXJTbGlkZXMoc3BlYykge1xuICB2YXIga2V5O1xuICB2YXIgc2xpZGVzID0gW107XG4gIHZhciBwcmVDbG9uZVNsaWRlcyA9IFtdO1xuICB2YXIgcG9zdENsb25lU2xpZGVzID0gW107XG5cbiAgdmFyIGNoaWxkcmVuQ291bnQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5jb3VudChzcGVjLmNoaWxkcmVuKTtcblxuICB2YXIgc3RhcnRJbmRleCA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5sYXp5U3RhcnRJbmRleCkoc3BlYyk7XG4gIHZhciBlbmRJbmRleCA9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5sYXp5RW5kSW5kZXgpKHNwZWMpO1xuXG4gIF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLmZvckVhY2goc3BlYy5jaGlsZHJlbiwgZnVuY3Rpb24gKGVsZW0sIGluZGV4KSB7XG4gICAgdmFyIGNoaWxkO1xuICAgIHZhciBjaGlsZE9uQ2xpY2tPcHRpb25zID0ge1xuICAgICAgbWVzc2FnZTogXCJjaGlsZHJlblwiLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgc2xpZGVzVG9TY3JvbGw6IHNwZWMuc2xpZGVzVG9TY3JvbGwsXG4gICAgICBjdXJyZW50U2xpZGU6IHNwZWMuY3VycmVudFNsaWRlXG4gICAgfTsgLy8gaW4gY2FzZSBvZiBsYXp5TG9hZCwgd2hldGhlciBvciBub3Qgd2Ugd2FudCB0byBmZXRjaCB0aGUgc2xpZGVcblxuICAgIGlmICghc3BlYy5sYXp5TG9hZCB8fCBzcGVjLmxhenlMb2FkICYmIHNwZWMubGF6eUxvYWRlZExpc3QuaW5kZXhPZihpbmRleCkgPj0gMCkge1xuICAgICAgY2hpbGQgPSBlbGVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZCA9IF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCk7XG4gICAgfVxuXG4gICAgdmFyIGNoaWxkU3R5bGUgPSBnZXRTbGlkZVN0eWxlKF9vYmplY3RTcHJlYWQoe30sIHNwZWMsIHtcbiAgICAgIGluZGV4OiBpbmRleFxuICAgIH0pKTtcbiAgICB2YXIgc2xpZGVDbGFzcyA9IGNoaWxkLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwiO1xuICAgIHZhciBzbGlkZUNsYXNzZXMgPSBnZXRTbGlkZUNsYXNzZXMoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgaW5kZXg6IGluZGV4XG4gICAgfSkpOyAvLyBwdXNoIGEgY2xvbmVkIGVsZW1lbnQgb2YgdGhlIGRlc2lyZWQgc2xpZGVcblxuICAgIHNsaWRlcy5wdXNoKF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAga2V5OiBcIm9yaWdpbmFsXCIgKyBnZXRLZXkoY2hpbGQsIGluZGV4KSxcbiAgICAgIFwiZGF0YS1pbmRleFwiOiBpbmRleCxcbiAgICAgIGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzLmRlZmF1bHQpKHNsaWRlQ2xhc3Nlcywgc2xpZGVDbGFzcyksXG4gICAgICB0YWJJbmRleDogXCItMVwiLFxuICAgICAgXCJhcmlhLWhpZGRlblwiOiAhc2xpZGVDbGFzc2VzW1wic2xpY2stYWN0aXZlXCJdLFxuICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBvdXRsaW5lOiBcIm5vbmVcIlxuICAgICAgfSwgY2hpbGQucHJvcHMuc3R5bGUgfHwge30sIGNoaWxkU3R5bGUpLFxuICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgICAgIGNoaWxkLnByb3BzICYmIGNoaWxkLnByb3BzLm9uQ2xpY2sgJiYgY2hpbGQucHJvcHMub25DbGljayhlKTtcblxuICAgICAgICBpZiAoc3BlYy5mb2N1c09uU2VsZWN0KSB7XG4gICAgICAgICAgc3BlYy5mb2N1c09uU2VsZWN0KGNoaWxkT25DbGlja09wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpOyAvLyBpZiBzbGlkZSBuZWVkcyB0byBiZSBwcmVjbG9uZWQgb3IgcG9zdGNsb25lZFxuXG4gICAgaWYgKHNwZWMuaW5maW5pdGUgJiYgc3BlYy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgdmFyIHByZUNsb25lTm8gPSBjaGlsZHJlbkNvdW50IC0gaW5kZXg7XG5cbiAgICAgIGlmIChwcmVDbG9uZU5vIDw9ICgwLCBfaW5uZXJTbGlkZXJVdGlscy5nZXRQcmVDbG9uZXMpKHNwZWMpICYmIGNoaWxkcmVuQ291bnQgIT09IHNwZWMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgIGtleSA9IC1wcmVDbG9uZU5vO1xuXG4gICAgICAgIGlmIChrZXkgPj0gc3RhcnRJbmRleCkge1xuICAgICAgICAgIGNoaWxkID0gZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlQ2xhc3NlcyA9IGdldFNsaWRlQ2xhc3Nlcyhfb2JqZWN0U3ByZWFkKHt9LCBzcGVjLCB7XG4gICAgICAgICAgaW5kZXg6IGtleVxuICAgICAgICB9KSk7XG4gICAgICAgIHByZUNsb25lU2xpZGVzLnB1c2goX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgICAga2V5OiBcInByZWNsb25lZFwiICsgZ2V0S2V5KGNoaWxkLCBrZXkpLFxuICAgICAgICAgIFwiZGF0YS1pbmRleFwiOiBrZXksXG4gICAgICAgICAgdGFiSW5kZXg6IFwiLTFcIixcbiAgICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShzbGlkZUNsYXNzZXMsIHNsaWRlQ2xhc3MpLFxuICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogIXNsaWRlQ2xhc3Nlc1tcInNsaWNrLWFjdGl2ZVwiXSxcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7fSwgY2hpbGQucHJvcHMuc3R5bGUgfHwge30sIGNoaWxkU3R5bGUpLFxuICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICAgICAgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMub25DbGljayAmJiBjaGlsZC5wcm9wcy5vbkNsaWNrKGUpO1xuXG4gICAgICAgICAgICBpZiAoc3BlYy5mb2N1c09uU2VsZWN0KSB7XG4gICAgICAgICAgICAgIHNwZWMuZm9jdXNPblNlbGVjdChjaGlsZE9uQ2xpY2tPcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkcmVuQ291bnQgIT09IHNwZWMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgIGtleSA9IGNoaWxkcmVuQ291bnQgKyBpbmRleDtcblxuICAgICAgICBpZiAoa2V5IDwgZW5kSW5kZXgpIHtcbiAgICAgICAgICBjaGlsZCA9IGVsZW07XG4gICAgICAgIH1cblxuICAgICAgICBzbGlkZUNsYXNzZXMgPSBnZXRTbGlkZUNsYXNzZXMoX29iamVjdFNwcmVhZCh7fSwgc3BlYywge1xuICAgICAgICAgIGluZGV4OiBrZXlcbiAgICAgICAgfSkpO1xuICAgICAgICBwb3N0Q2xvbmVTbGlkZXMucHVzaChfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgICBrZXk6IFwicG9zdGNsb25lZFwiICsgZ2V0S2V5KGNoaWxkLCBrZXkpLFxuICAgICAgICAgIFwiZGF0YS1pbmRleFwiOiBrZXksXG4gICAgICAgICAgdGFiSW5kZXg6IFwiLTFcIixcbiAgICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShzbGlkZUNsYXNzZXMsIHNsaWRlQ2xhc3MpLFxuICAgICAgICAgIFwiYXJpYS1oaWRkZW5cIjogIXNsaWRlQ2xhc3Nlc1tcInNsaWNrLWFjdGl2ZVwiXSxcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7fSwgY2hpbGQucHJvcHMuc3R5bGUgfHwge30sIGNoaWxkU3R5bGUpLFxuICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICAgICAgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMub25DbGljayAmJiBjaGlsZC5wcm9wcy5vbkNsaWNrKGUpO1xuXG4gICAgICAgICAgICBpZiAoc3BlYy5mb2N1c09uU2VsZWN0KSB7XG4gICAgICAgICAgICAgIHNwZWMuZm9jdXNPblNlbGVjdChjaGlsZE9uQ2xpY2tPcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGlmIChzcGVjLnJ0bCkge1xuICAgIHJldHVybiBwcmVDbG9uZVNsaWRlcy5jb25jYXQoc2xpZGVzLCBwb3N0Q2xvbmVTbGlkZXMpLnJldmVyc2UoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcHJlQ2xvbmVTbGlkZXMuY29uY2F0KHNsaWRlcywgcG9zdENsb25lU2xpZGVzKTtcbiAgfVxufTtcblxudmFyIFRyYWNrID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVHJhY2ssIF9SZWFjdCRQdXJlQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUcmFjaygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhY2spO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihUcmFjaykuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVHJhY2ssIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgc2xpZGVzID0gcmVuZGVyU2xpZGVzKHRoaXMucHJvcHMpO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBvbk1vdXNlRW50ZXIgPSBfdGhpcyRwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXIgPSBfdGhpcyRwcm9wcy5vbk1vdXNlT3ZlcixcbiAgICAgICAgICBvbk1vdXNlTGVhdmUgPSBfdGhpcyRwcm9wcy5vbk1vdXNlTGVhdmU7XG4gICAgICB2YXIgbW91c2VFdmVudHMgPSB7XG4gICAgICAgIG9uTW91c2VFbnRlcjogb25Nb3VzZUVudGVyLFxuICAgICAgICBvbk1vdXNlT3Zlcjogb25Nb3VzZU92ZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogb25Nb3VzZUxlYXZlXG4gICAgICB9O1xuICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBjbGFzc05hbWU6IFwic2xpY2stdHJhY2tcIixcbiAgICAgICAgc3R5bGU6IHRoaXMucHJvcHMudHJhY2tTdHlsZVxuICAgICAgfSwgbW91c2VFdmVudHMpLCBzbGlkZXMpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFjaztcbn0oX3JlYWN0LmRlZmF1bHQuUHVyZUNvbXBvbmVudCk7XG5cbmV4cG9ydHMuVHJhY2sgPSBUcmFjazsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuRG90cyA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF9jbGFzc25hbWVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY2xhc3NuYW1lc1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gJ2Z1bmN0aW9uJykgeyBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlOyB9KSk7IH0gb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbnZhciBnZXREb3RDb3VudCA9IGZ1bmN0aW9uIGdldERvdENvdW50KHNwZWMpIHtcbiAgdmFyIGRvdHM7XG5cbiAgaWYgKHNwZWMuaW5maW5pdGUpIHtcbiAgICBkb3RzID0gTWF0aC5jZWlsKHNwZWMuc2xpZGVDb3VudCAvIHNwZWMuc2xpZGVzVG9TY3JvbGwpO1xuICB9IGVsc2Uge1xuICAgIGRvdHMgPSBNYXRoLmNlaWwoKHNwZWMuc2xpZGVDb3VudCAtIHNwZWMuc2xpZGVzVG9TaG93KSAvIHNwZWMuc2xpZGVzVG9TY3JvbGwpICsgMTtcbiAgfVxuXG4gIHJldHVybiBkb3RzO1xufTtcblxudmFyIERvdHMgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9SZWFjdCRQdXJlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhEb3RzLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gRG90cygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRG90cyk7XG5cbiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKERvdHMpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKERvdHMsIFt7XG4gICAga2V5OiBcImNsaWNrSGFuZGxlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGlja0hhbmRsZXIob3B0aW9ucywgZSkge1xuICAgICAgLy8gSW4gQXV0b3BsYXkgdGhlIGZvY3VzIHN0YXlzIG9uIGNsaWNrZWQgYnV0dG9uIGV2ZW4gYWZ0ZXIgdHJhbnNpdGlvblxuICAgICAgLy8gdG8gbmV4dCBzbGlkZS4gVGhhdCBvbmx5IGdvZXMgYXdheSBieSBjbGljayBzb21ld2hlcmUgb3V0c2lkZVxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5wcm9wcy5jbGlja0hhbmRsZXIob3B0aW9ucyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgZG90Q291bnQgPSBnZXREb3RDb3VudCh7XG4gICAgICAgIHNsaWRlQ291bnQ6IHRoaXMucHJvcHMuc2xpZGVDb3VudCxcbiAgICAgICAgc2xpZGVzVG9TY3JvbGw6IHRoaXMucHJvcHMuc2xpZGVzVG9TY3JvbGwsXG4gICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5wcm9wcy5zbGlkZXNUb1Nob3csXG4gICAgICAgIGluZmluaXRlOiB0aGlzLnByb3BzLmluZmluaXRlXG4gICAgICB9KTsgLy8gQXBwbHkgam9pbiAmIHNwbGl0IHRvIEFycmF5IHRvIHByZS1maWxsIGl0IGZvciBJRThcbiAgICAgIC8vXG4gICAgICAvLyBDcmVkaXQ6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzEzNzM1NDI1LzE4NDk0NThcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBvbk1vdXNlRW50ZXIgPSBfdGhpcyRwcm9wcy5vbk1vdXNlRW50ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXIgPSBfdGhpcyRwcm9wcy5vbk1vdXNlT3ZlcixcbiAgICAgICAgICBvbk1vdXNlTGVhdmUgPSBfdGhpcyRwcm9wcy5vbk1vdXNlTGVhdmU7XG4gICAgICB2YXIgbW91c2VFdmVudHMgPSB7XG4gICAgICAgIG9uTW91c2VFbnRlcjogb25Nb3VzZUVudGVyLFxuICAgICAgICBvbk1vdXNlT3Zlcjogb25Nb3VzZU92ZXIsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogb25Nb3VzZUxlYXZlXG4gICAgICB9O1xuICAgICAgdmFyIGRvdHMgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShkb3RDb3VudCArIDEpLmpvaW4oXCIwXCIpLnNwbGl0KFwiXCIpKS5tYXAoZnVuY3Rpb24gKHgsIGkpIHtcbiAgICAgICAgdmFyIGxlZnRCb3VuZCA9IGkgKiBfdGhpcy5wcm9wcy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgdmFyIHJpZ2h0Qm91bmQgPSBpICogX3RoaXMucHJvcHMuc2xpZGVzVG9TY3JvbGwgKyAoX3RoaXMucHJvcHMuc2xpZGVzVG9TY3JvbGwgLSAxKTtcbiAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KSh7XG4gICAgICAgICAgXCJzbGljay1hY3RpdmVcIjogX3RoaXMucHJvcHMuY3VycmVudFNsaWRlID49IGxlZnRCb3VuZCAmJiBfdGhpcy5wcm9wcy5jdXJyZW50U2xpZGUgPD0gcmlnaHRCb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGRvdE9wdGlvbnMgPSB7XG4gICAgICAgICAgbWVzc2FnZTogXCJkb3RzXCIsXG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IF90aGlzLnByb3BzLnNsaWRlc1RvU2Nyb2xsLFxuICAgICAgICAgIGN1cnJlbnRTbGlkZTogX3RoaXMucHJvcHMuY3VycmVudFNsaWRlXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG9uQ2xpY2sgPSBfdGhpcy5jbGlja0hhbmRsZXIuYmluZChfdGhpcywgZG90T3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7XG4gICAgICAgICAga2V5OiBpLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lXG4gICAgICAgIH0sIF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudChfdGhpcy5wcm9wcy5jdXN0b21QYWdpbmcoaSksIHtcbiAgICAgICAgICBvbkNsaWNrOiBvbkNsaWNrXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNsb25lRWxlbWVudCh0aGlzLnByb3BzLmFwcGVuZERvdHMoZG90cyksIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBjbGFzc05hbWU6IHRoaXMucHJvcHMuZG90c0NsYXNzXG4gICAgICB9LCBtb3VzZUV2ZW50cykpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEb3RzO1xufShfcmVhY3QuZGVmYXVsdC5QdXJlQ29tcG9uZW50KTtcblxuZXhwb3J0cy5Eb3RzID0gRG90czsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuTmV4dEFycm93ID0gZXhwb3J0cy5QcmV2QXJyb3cgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImNsYXNzbmFtZXNcIikpO1xuXG52YXIgX2lubmVyU2xpZGVyVXRpbHMgPSByZXF1aXJlKFwiLi91dGlscy9pbm5lclNsaWRlclV0aWxzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG52YXIgUHJldkFycm93ID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUHJldkFycm93LCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUHJldkFycm93KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQcmV2QXJyb3cpO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihQcmV2QXJyb3cpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFByZXZBcnJvdywgW3tcbiAgICBrZXk6IFwiY2xpY2tIYW5kbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsaWNrSGFuZGxlcihvcHRpb25zLCBlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvcHMuY2xpY2tIYW5kbGVyKG9wdGlvbnMsIGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIHByZXZDbGFzc2VzID0ge1xuICAgICAgICBcInNsaWNrLWFycm93XCI6IHRydWUsXG4gICAgICAgIFwic2xpY2stcHJldlwiOiB0cnVlXG4gICAgICB9O1xuICAgICAgdmFyIHByZXZIYW5kbGVyID0gdGhpcy5jbGlja0hhbmRsZXIuYmluZCh0aGlzLCB7XG4gICAgICAgIG1lc3NhZ2U6IFwicHJldmlvdXNcIlxuICAgICAgfSk7XG5cbiAgICAgIGlmICghdGhpcy5wcm9wcy5pbmZpbml0ZSAmJiAodGhpcy5wcm9wcy5jdXJyZW50U2xpZGUgPT09IDAgfHwgdGhpcy5wcm9wcy5zbGlkZUNvdW50IDw9IHRoaXMucHJvcHMuc2xpZGVzVG9TaG93KSkge1xuICAgICAgICBwcmV2Q2xhc3Nlc1tcInNsaWNrLWRpc2FibGVkXCJdID0gdHJ1ZTtcbiAgICAgICAgcHJldkhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJldkFycm93UHJvcHMgPSB7XG4gICAgICAgIGtleTogXCIwXCIsXG4gICAgICAgIFwiZGF0YS1yb2xlXCI6IFwibm9uZVwiLFxuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShwcmV2Q2xhc3NlcyksXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiXG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2xpY2s6IHByZXZIYW5kbGVyXG4gICAgICB9O1xuICAgICAgdmFyIGN1c3RvbVByb3BzID0ge1xuICAgICAgICBjdXJyZW50U2xpZGU6IHRoaXMucHJvcHMuY3VycmVudFNsaWRlLFxuICAgICAgICBzbGlkZUNvdW50OiB0aGlzLnByb3BzLnNsaWRlQ291bnRcbiAgICAgIH07XG4gICAgICB2YXIgcHJldkFycm93O1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5wcmV2QXJyb3cpIHtcbiAgICAgICAgcHJldkFycm93ID0gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMucHJldkFycm93LCBfb2JqZWN0U3ByZWFkKHt9LCBwcmV2QXJyb3dQcm9wcywgY3VzdG9tUHJvcHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZBcnJvdyA9IF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGtleTogXCIwXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgICAgICB9LCBwcmV2QXJyb3dQcm9wcyksIFwiIFwiLCBcIlByZXZpb3VzXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldkFycm93O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQcmV2QXJyb3c7XG59KF9yZWFjdC5kZWZhdWx0LlB1cmVDb21wb25lbnQpO1xuXG5leHBvcnRzLlByZXZBcnJvdyA9IFByZXZBcnJvdztcblxudmFyIE5leHRBcnJvdyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQyKSB7XG4gIF9pbmhlcml0cyhOZXh0QXJyb3csIF9SZWFjdCRQdXJlQ29tcG9uZW50Mik7XG5cbiAgZnVuY3Rpb24gTmV4dEFycm93KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOZXh0QXJyb3cpO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihOZXh0QXJyb3cpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE5leHRBcnJvdywgW3tcbiAgICBrZXk6IFwiY2xpY2tIYW5kbGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsaWNrSGFuZGxlcihvcHRpb25zLCBlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvcHMuY2xpY2tIYW5kbGVyKG9wdGlvbnMsIGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIG5leHRDbGFzc2VzID0ge1xuICAgICAgICBcInNsaWNrLWFycm93XCI6IHRydWUsXG4gICAgICAgIFwic2xpY2stbmV4dFwiOiB0cnVlXG4gICAgICB9O1xuICAgICAgdmFyIG5leHRIYW5kbGVyID0gdGhpcy5jbGlja0hhbmRsZXIuYmluZCh0aGlzLCB7XG4gICAgICAgIG1lc3NhZ2U6IFwibmV4dFwiXG4gICAgICB9KTtcblxuICAgICAgaWYgKCEoMCwgX2lubmVyU2xpZGVyVXRpbHMuY2FuR29OZXh0KSh0aGlzLnByb3BzKSkge1xuICAgICAgICBuZXh0Q2xhc3Nlc1tcInNsaWNrLWRpc2FibGVkXCJdID0gdHJ1ZTtcbiAgICAgICAgbmV4dEhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV4dEFycm93UHJvcHMgPSB7XG4gICAgICAgIGtleTogXCIxXCIsXG4gICAgICAgIFwiZGF0YS1yb2xlXCI6IFwibm9uZVwiLFxuICAgICAgICBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lcy5kZWZhdWx0KShuZXh0Q2xhc3NlcyksXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiXG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2xpY2s6IG5leHRIYW5kbGVyXG4gICAgICB9O1xuICAgICAgdmFyIGN1c3RvbVByb3BzID0ge1xuICAgICAgICBjdXJyZW50U2xpZGU6IHRoaXMucHJvcHMuY3VycmVudFNsaWRlLFxuICAgICAgICBzbGlkZUNvdW50OiB0aGlzLnByb3BzLnNsaWRlQ291bnRcbiAgICAgIH07XG4gICAgICB2YXIgbmV4dEFycm93O1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5uZXh0QXJyb3cpIHtcbiAgICAgICAgbmV4dEFycm93ID0gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KHRoaXMucHJvcHMubmV4dEFycm93LCBfb2JqZWN0U3ByZWFkKHt9LCBuZXh0QXJyb3dQcm9wcywgY3VzdG9tUHJvcHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRBcnJvdyA9IF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGtleTogXCIxXCIsXG4gICAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgICAgICB9LCBuZXh0QXJyb3dQcm9wcyksIFwiIFwiLCBcIk5leHRcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXh0QXJyb3c7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5leHRBcnJvdztcbn0oX3JlYWN0LmRlZmF1bHQuUHVyZUNvbXBvbmVudCk7XG5cbmV4cG9ydHMuTmV4dEFycm93ID0gTmV4dEFycm93OyIsIi8qKlxyXG4gKiBBIGNvbGxlY3Rpb24gb2Ygc2hpbXMgdGhhdCBwcm92aWRlIG1pbmltYWwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRVM2IGNvbGxlY3Rpb25zLlxyXG4gKlxyXG4gKiBUaGVzZSBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBtZWFudCB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIFJlc2l6ZU9ic2VydmVyXHJcbiAqIG1vZHVsZXMgYXMgdGhleSBjb3ZlciBvbmx5IGEgbGltaXRlZCByYW5nZSBvZiB1c2UgY2FzZXMuXHJcbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWpzZG9jLCB2YWxpZC1qc2RvYyAqL1xyXG52YXIgTWFwU2hpbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAodHlwZW9mIE1hcCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm4gTWFwO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGluZGV4IGluIHByb3ZpZGVkIGFycmF5IHRoYXQgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGtleS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PEFycmF5Pn0gYXJyXHJcbiAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICogQHJldHVybnMge251bWJlcn1cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZ2V0SW5kZXgoYXJyLCBrZXkpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgYXJyLnNvbWUoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xyXG4gICAgICAgICAgICBpZiAoZW50cnlbMF0gPT09IGtleSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gY2xhc3NfMSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fX2VudHJpZXNfXyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2xhc3NfMS5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19lbnRyaWVzX18ubGVuZ3RoO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICAgICAqIEByZXR1cm5zIHsqfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXgodGhpcy5fX2VudHJpZXNfXywga2V5KTtcclxuICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fX2VudHJpZXNfX1tpbmRleF07XHJcbiAgICAgICAgICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeVsxXTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZVxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRleCA9IGdldEluZGV4KHRoaXMuX19lbnRyaWVzX18sIGtleSk7XHJcbiAgICAgICAgICAgIGlmICh+aW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX19lbnRyaWVzX19baW5kZXhdWzFdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9fZW50cmllc19fLnB1c2goW2tleSwgdmFsdWVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgIHZhciBlbnRyaWVzID0gdGhpcy5fX2VudHJpZXNfXztcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXgoZW50cmllcywga2V5KTtcclxuICAgICAgICAgICAgaWYgKH5pbmRleCkge1xyXG4gICAgICAgICAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhfmdldEluZGV4KHRoaXMuX19lbnRyaWVzX18sIGtleSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAgICAgKi9cclxuICAgICAgICBjbGFzc18xLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5fX2VudHJpZXNfXy5zcGxpY2UoMCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0gW2N0eD1udWxsXVxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGN0eCkge1xyXG4gICAgICAgICAgICBpZiAoY3R4ID09PSB2b2lkIDApIHsgY3R4ID0gbnVsbDsgfVxyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gdGhpcy5fX2VudHJpZXNfXzsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IF9hW19pXTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoY3R4LCBlbnRyeVsxXSwgZW50cnlbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY2xhc3NfMTtcclxuICAgIH0oKSk7XHJcbn0pKCk7XG5cbi8qKlxyXG4gKiBEZXRlY3RzIHdoZXRoZXIgd2luZG93IGFuZCBkb2N1bWVudCBvYmplY3RzIGFyZSBhdmFpbGFibGUgaW4gY3VycmVudCBlbnZpcm9ubWVudC5cclxuICovXHJcbnZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCA9PT0gZG9jdW1lbnQ7XG5cbi8vIFJldHVybnMgZ2xvYmFsIG9iamVjdCBvZiBhIGN1cnJlbnQgZW52aXJvbm1lbnQuXHJcbnZhciBnbG9iYWwkMSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsLk1hdGggPT09IE1hdGgpIHtcclxuICAgICAgICByZXR1cm4gZ2xvYmFsO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT09IE1hdGgpIHtcclxuICAgICAgICByZXR1cm4gc2VsZjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PT0gTWF0aCkge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3c7XHJcbiAgICB9XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcclxuICAgIHJldHVybiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xyXG59KSgpO1xuXG4vKipcclxuICogQSBzaGltIGZvciB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdoaWNoIGZhbGxzIGJhY2sgdG8gdGhlIHNldFRpbWVvdXQgaWZcclxuICogZmlyc3Qgb25lIGlzIG5vdCBzdXBwb3J0ZWQuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJlcXVlc3RzJyBpZGVudGlmaWVyLlxyXG4gKi9cclxudmFyIHJlcXVlc3RBbmltYXRpb25GcmFtZSQxID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gSXQncyByZXF1aXJlZCB0byB1c2UgYSBib3VuZGVkIGZ1bmN0aW9uIGJlY2F1c2UgSUUgc29tZXRpbWVzIHRocm93c1xyXG4gICAgICAgIC8vIGFuIFwiSW52YWxpZCBjYWxsaW5nIG9iamVjdFwiIGVycm9yIGlmIHJBRiBpcyBpbnZva2VkIHdpdGhvdXQgdGhlIGdsb2JhbFxyXG4gICAgICAgIC8vIG9iamVjdCBvbiB0aGUgbGVmdCBoYW5kIHNpZGUuXHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKGdsb2JhbCQxKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGJhY2spIHsgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FsbGJhY2soRGF0ZS5ub3coKSk7IH0sIDEwMDAgLyA2MCk7IH07XHJcbn0pKCk7XG5cbi8vIERlZmluZXMgbWluaW11bSB0aW1lb3V0IGJlZm9yZSBhZGRpbmcgYSB0cmFpbGluZyBjYWxsLlxyXG52YXIgdHJhaWxpbmdUaW1lb3V0ID0gMjtcclxuLyoqXHJcbiAqIENyZWF0ZXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHdoaWNoIGVuc3VyZXMgdGhhdCBwcm92aWRlZCBjYWxsYmFjayB3aWxsIGJlXHJcbiAqIGludm9rZWQgb25seSBvbmNlIGR1cmluZyB0aGUgc3BlY2lmaWVkIGRlbGF5IHBlcmlvZC5cclxuICpcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBkZWxheSBwZXJpb2QuXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBkZWxheSAtIERlbGF5IGFmdGVyIHdoaWNoIHRvIGludm9rZSBjYWxsYmFjay5cclxuICogQHJldHVybnMge0Z1bmN0aW9ufVxyXG4gKi9cclxuZnVuY3Rpb24gdGhyb3R0bGUgKGNhbGxiYWNrLCBkZWxheSkge1xyXG4gICAgdmFyIGxlYWRpbmdDYWxsID0gZmFsc2UsIHRyYWlsaW5nQ2FsbCA9IGZhbHNlLCBsYXN0Q2FsbFRpbWUgPSAwO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2VzIHRoZSBvcmlnaW5hbCBjYWxsYmFjayBmdW5jdGlvbiBhbmQgc2NoZWR1bGVzIG5ldyBpbnZvY2F0aW9uIGlmXHJcbiAgICAgKiB0aGUgXCJwcm94eVwiIHdhcyBjYWxsZWQgZHVyaW5nIGN1cnJlbnQgcmVxdWVzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcmVzb2x2ZVBlbmRpbmcoKSB7XHJcbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XHJcbiAgICAgICAgICAgIGxlYWRpbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0cmFpbGluZ0NhbGwpIHtcclxuICAgICAgICAgICAgcHJveHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGludm9rZWQgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkZWxheS4gSXQgd2lsbCBmdXJ0aGVyIHBvc3Rwb25lXHJcbiAgICAgKiBpbnZvY2F0aW9uIG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBkZWxlZ2F0aW5nIGl0IHRvIHRoZVxyXG4gICAgICogcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB0aW1lb3V0Q2FsbGJhY2soKSB7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEocmVzb2x2ZVBlbmRpbmcpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBTY2hlZHVsZXMgaW52b2NhdGlvbiBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHByb3h5KCkge1xyXG4gICAgICAgIHZhciB0aW1lU3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGlmIChsZWFkaW5nQ2FsbCkge1xyXG4gICAgICAgICAgICAvLyBSZWplY3QgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGNhbGxzLlxyXG4gICAgICAgICAgICBpZiAodGltZVN0YW1wIC0gbGFzdENhbGxUaW1lIDwgdHJhaWxpbmdUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gU2NoZWR1bGUgbmV3IGNhbGwgdG8gYmUgaW4gaW52b2tlZCB3aGVuIHRoZSBwZW5kaW5nIG9uZSBpcyByZXNvbHZlZC5cclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIFwidHJhbnNpdGlvbnNcIiB3aGljaCBuZXZlciBhY3R1YWxseSBzdGFydFxyXG4gICAgICAgICAgICAvLyBpbW1lZGlhdGVseSBzbyB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHdlIG1pZ2h0IG1pc3Mgb25lIGlmIGNoYW5nZVxyXG4gICAgICAgICAgICAvLyBoYXBwZW5zIGFtaWRzIHRoZSBwZW5kaW5nIGludm9jYXRpb24uXHJcbiAgICAgICAgICAgIHRyYWlsaW5nQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWFkaW5nQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRyYWlsaW5nQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRpbWVvdXRDYWxsYmFjaywgZGVsYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lU3RhbXA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJveHk7XHJcbn1cblxuLy8gTWluaW11bSBkZWxheSBiZWZvcmUgaW52b2tpbmcgdGhlIHVwZGF0ZSBvZiBvYnNlcnZlcnMuXHJcbnZhciBSRUZSRVNIX0RFTEFZID0gMjA7XHJcbi8vIEEgbGlzdCBvZiBzdWJzdHJpbmdzIG9mIENTUyBwcm9wZXJ0aWVzIHVzZWQgdG8gZmluZCB0cmFuc2l0aW9uIGV2ZW50cyB0aGF0XHJcbi8vIG1pZ2h0IGFmZmVjdCBkaW1lbnNpb25zIG9mIG9ic2VydmVkIGVsZW1lbnRzLlxyXG52YXIgdHJhbnNpdGlvbktleXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCcsICd3aWR0aCcsICdoZWlnaHQnLCAnc2l6ZScsICd3ZWlnaHQnXTtcclxuLy8gQ2hlY2sgaWYgTXV0YXRpb25PYnNlcnZlciBpcyBhdmFpbGFibGUuXHJcbnZhciBtdXRhdGlvbk9ic2VydmVyU3VwcG9ydGVkID0gdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnO1xyXG4vKipcclxuICogU2luZ2xldG9uIGNvbnRyb2xsZXIgY2xhc3Mgd2hpY2ggaGFuZGxlcyB1cGRhdGVzIG9mIFJlc2l6ZU9ic2VydmVyIGluc3RhbmNlcy5cclxuICovXHJcbnZhciBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlcigpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciBET00gbGlzdGVuZXJzIGhhdmUgYmVlbiBhZGRlZC5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtib29sZWFufVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkXyA9IGZhbHNlO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRlbGxzIHRoYXQgY29udHJvbGxlciBoYXMgc3Vic2NyaWJlZCBmb3IgTXV0YXRpb24gRXZlbnRzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge2Jvb2xlYW59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXyA9IGZhbHNlO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEtlZXBzIHJlZmVyZW5jZSB0byB0aGUgaW5zdGFuY2Ugb2YgTXV0YXRpb25PYnNlcnZlci5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtNdXRhdGlvbk9ic2VydmVyfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfID0gbnVsbDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBIGxpc3Qgb2YgY29ubmVjdGVkIG9ic2VydmVycy5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwcml2YXRlIHtBcnJheTxSZXNpemVPYnNlcnZlclNQST59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5vYnNlcnZlcnNfID0gW107XHJcbiAgICAgICAgdGhpcy5vblRyYW5zaXRpb25FbmRfID0gdGhpcy5vblRyYW5zaXRpb25FbmRfLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoID0gdGhyb3R0bGUodGhpcy5yZWZyZXNoLmJpbmQodGhpcyksIFJFRlJFU0hfREVMQVkpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIG9ic2VydmVyIHRvIG9ic2VydmVycyBsaXN0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJTUEl9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgdG8gYmUgYWRkZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hZGRPYnNlcnZlciA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgIGlmICghfnRoaXMub2JzZXJ2ZXJzXy5pbmRleE9mKG9ic2VydmVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyc18ucHVzaChvYnNlcnZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFkZCBsaXN0ZW5lcnMgaWYgdGhleSBoYXZlbid0IGJlZW4gYWRkZWQgeWV0LlxyXG4gICAgICAgIGlmICghdGhpcy5jb25uZWN0ZWRfKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdF8oKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIG9ic2VydmVyIGZyb20gb2JzZXJ2ZXJzIGxpc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlclNQSX0gb2JzZXJ2ZXIgLSBPYnNlcnZlciB0byBiZSByZW1vdmVkLlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlT2JzZXJ2ZXIgPSBmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcclxuICAgICAgICB2YXIgb2JzZXJ2ZXJzID0gdGhpcy5vYnNlcnZlcnNfO1xyXG4gICAgICAgIHZhciBpbmRleCA9IG9ic2VydmVycy5pbmRleE9mKG9ic2VydmVyKTtcclxuICAgICAgICAvLyBSZW1vdmUgb2JzZXJ2ZXIgaWYgaXQncyBwcmVzZW50IGluIHJlZ2lzdHJ5LlxyXG4gICAgICAgIGlmICh+aW5kZXgpIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFJlbW92ZSBsaXN0ZW5lcnMgaWYgY29udHJvbGxlciBoYXMgbm8gY29ubmVjdGVkIG9ic2VydmVycy5cclxuICAgICAgICBpZiAoIW9ic2VydmVycy5sZW5ndGggJiYgdGhpcy5jb25uZWN0ZWRfKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdF8oKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2VzIHRoZSB1cGRhdGUgb2Ygb2JzZXJ2ZXJzLiBJdCB3aWxsIGNvbnRpbnVlIHJ1bm5pbmcgdXBkYXRlcyBpbnNvZmFyXHJcbiAgICAgKiBpdCBkZXRlY3RzIGNoYW5nZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgY2hhbmdlc0RldGVjdGVkID0gdGhpcy51cGRhdGVPYnNlcnZlcnNfKCk7XHJcbiAgICAgICAgLy8gQ29udGludWUgcnVubmluZyB1cGRhdGVzIGlmIGNoYW5nZXMgaGF2ZSBiZWVuIGRldGVjdGVkIGFzIHRoZXJlIG1pZ2h0XHJcbiAgICAgICAgLy8gYmUgZnV0dXJlIG9uZXMgY2F1c2VkIGJ5IENTUyB0cmFuc2l0aW9ucy5cclxuICAgICAgICBpZiAoY2hhbmdlc0RldGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgZXZlcnkgb2JzZXJ2ZXIgZnJvbSBvYnNlcnZlcnMgbGlzdCBhbmQgbm90aWZpZXMgdGhlbSBvZiBxdWV1ZWRcclxuICAgICAqIGVudHJpZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIFwidHJ1ZVwiIGlmIGFueSBvYnNlcnZlciBoYXMgZGV0ZWN0ZWQgY2hhbmdlcyBpblxyXG4gICAgICogICAgICBkaW1lbnNpb25zIG9mIGl0J3MgZWxlbWVudHMuXHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlT2JzZXJ2ZXJzXyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBDb2xsZWN0IG9ic2VydmVycyB0aGF0IGhhdmUgYWN0aXZlIG9ic2VydmF0aW9ucy5cclxuICAgICAgICB2YXIgYWN0aXZlT2JzZXJ2ZXJzID0gdGhpcy5vYnNlcnZlcnNfLmZpbHRlcihmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmdhdGhlckFjdGl2ZSgpLCBvYnNlcnZlci5oYXNBY3RpdmUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBEZWxpdmVyIG5vdGlmaWNhdGlvbnMgaW4gYSBzZXBhcmF0ZSBjeWNsZSBpbiBvcmRlciB0byBhdm9pZCBhbnlcclxuICAgICAgICAvLyBjb2xsaXNpb25zIGJldHdlZW4gb2JzZXJ2ZXJzLCBlLmcuIHdoZW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mXHJcbiAgICAgICAgLy8gUmVzaXplT2JzZXJ2ZXIgYXJlIHRyYWNraW5nIHRoZSBzYW1lIGVsZW1lbnQgYW5kIHRoZSBjYWxsYmFjayBvZiBvbmVcclxuICAgICAgICAvLyBvZiB0aGVtIGNoYW5nZXMgY29udGVudCBkaW1lbnNpb25zIG9mIHRoZSBvYnNlcnZlZCB0YXJnZXQuIFNvbWV0aW1lc1xyXG4gICAgICAgIC8vIHRoaXMgbWF5IHJlc3VsdCBpbiBub3RpZmljYXRpb25zIGJlaW5nIGJsb2NrZWQgZm9yIHRoZSByZXN0IG9mIG9ic2VydmVycy5cclxuICAgICAgICBhY3RpdmVPYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzZXJ2ZXIpIHsgcmV0dXJuIG9ic2VydmVyLmJyb2FkY2FzdEFjdGl2ZSgpOyB9KTtcclxuICAgICAgICByZXR1cm4gYWN0aXZlT2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBET00gbGlzdGVuZXJzLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5jb25uZWN0XyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHJ1bm5pbmcgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudCBvciBpZiBsaXN0ZW5lcnNcclxuICAgICAgICAvLyBoYXZlIGJlZW4gYWxyZWFkeSBhZGRlZC5cclxuICAgICAgICBpZiAoIWlzQnJvd3NlciB8fCB0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTdWJzY3JpcHRpb24gdG8gdGhlIFwiVHJhbnNpdGlvbmVuZFwiIGV2ZW50IGlzIHVzZWQgYXMgYSB3b3JrYXJvdW5kIGZvclxyXG4gICAgICAgIC8vIGRlbGF5ZWQgdHJhbnNpdGlvbnMuIFRoaXMgd2F5IGl0J3MgcG9zc2libGUgdG8gY2FwdHVyZSBhdCBsZWFzdCB0aGVcclxuICAgICAgICAvLyBmaW5hbCBzdGF0ZSBvZiBhbiBlbGVtZW50LlxyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLm9uVHJhbnNpdGlvbkVuZF8pO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgIGlmIChtdXRhdGlvbk9ic2VydmVyU3VwcG9ydGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5yZWZyZXNoKTtcclxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8ub2JzZXJ2ZShkb2N1bWVudCwge1xyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgdGhpcy5yZWZyZXNoKTtcclxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkXyA9IHRydWU7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIERPTSBsaXN0ZW5lcnMuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLmRpc2Nvbm5lY3RfID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgcnVubmluZyBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50IG9yIGlmIGxpc3RlbmVyc1xyXG4gICAgICAgIC8vIGhhdmUgYmVlbiBhbHJlYWR5IHJlbW92ZWQuXHJcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXIgfHwgIXRoaXMuY29ubmVjdGVkXykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0aGlzLm9uVHJhbnNpdGlvbkVuZF8pO1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgIGlmICh0aGlzLm11dGF0aW9uc09ic2VydmVyXykge1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXy5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfID0gbnVsbDtcclxuICAgICAgICB0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRfID0gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBcIlRyYW5zaXRpb25lbmRcIiBldmVudCBoYW5kbGVyLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0ge1RyYW5zaXRpb25FdmVudH0gZXZlbnRcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLm9uVHJhbnNpdGlvbkVuZF8gPSBmdW5jdGlvbiAoX2EpIHtcclxuICAgICAgICB2YXIgX2IgPSBfYS5wcm9wZXJ0eU5hbWUsIHByb3BlcnR5TmFtZSA9IF9iID09PSB2b2lkIDAgPyAnJyA6IF9iO1xyXG4gICAgICAgIC8vIERldGVjdCB3aGV0aGVyIHRyYW5zaXRpb24gbWF5IGFmZmVjdCBkaW1lbnNpb25zIG9mIGFuIGVsZW1lbnQuXHJcbiAgICAgICAgdmFyIGlzUmVmbG93UHJvcGVydHkgPSB0cmFuc2l0aW9uS2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuICEhfnByb3BlcnR5TmFtZS5pbmRleE9mKGtleSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGlzUmVmbG93UHJvcGVydHkpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiB0aGUgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtSZXNpemVPYnNlcnZlckNvbnRyb2xsZXJ9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2VfKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VfID0gbmV3IFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZV87XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBIb2xkcyByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xsZXIncyBpbnN0YW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZSB7UmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuaW5zdGFuY2VfID0gbnVsbDtcclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXI7XHJcbn0oKSk7XG5cbi8qKlxyXG4gKiBEZWZpbmVzIG5vbi13cml0YWJsZS9lbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHByb3ZpZGVkIHRhcmdldCBvYmplY3QuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXQgLSBPYmplY3QgZm9yIHdoaWNoIHRvIGRlZmluZSBwcm9wZXJ0aWVzLlxyXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBQcm9wZXJ0aWVzIHRvIGJlIGRlZmluZWQuXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRhcmdldCBvYmplY3QuXHJcbiAqL1xyXG52YXIgZGVmaW5lQ29uZmlndXJhYmxlID0gKGZ1bmN0aW9uICh0YXJnZXQsIHByb3BzKSB7XHJcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gT2JqZWN0LmtleXMocHJvcHMpOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgIHZhciBrZXkgPSBfYVtfaV07XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBwcm9wc1trZXldLFxyXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbn0pO1xuXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggcHJvdmlkZWQgZWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHRhcmdldFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gKi9cclxudmFyIGdldFdpbmRvd09mID0gKGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGFuIGluc3RhbmNlIG9mIE5vZGUsIHdoaWNoIG1lYW5zIHRoYXQgaXRcclxuICAgIC8vIGhhcyB0aGUgXCJvd25lckRvY3VtZW50XCIgcHJvcGVydHkgZnJvbSB3aGljaCB3ZSBjYW4gcmV0cmlldmUgYVxyXG4gICAgLy8gY29ycmVzcG9uZGluZyBnbG9iYWwgb2JqZWN0LlxyXG4gICAgdmFyIG93bmVyR2xvYmFsID0gdGFyZ2V0ICYmIHRhcmdldC5vd25lckRvY3VtZW50ICYmIHRhcmdldC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xyXG4gICAgLy8gUmV0dXJuIHRoZSBsb2NhbCBnbG9iYWwgb2JqZWN0IGlmIGl0J3Mgbm90IHBvc3NpYmxlIGV4dHJhY3Qgb25lIGZyb21cclxuICAgIC8vIHByb3ZpZGVkIGVsZW1lbnQuXHJcbiAgICByZXR1cm4gb3duZXJHbG9iYWwgfHwgZ2xvYmFsJDE7XHJcbn0pO1xuXG4vLyBQbGFjZWhvbGRlciBvZiBhbiBlbXB0eSBjb250ZW50IHJlY3RhbmdsZS5cclxudmFyIGVtcHR5UmVjdCA9IGNyZWF0ZVJlY3RJbml0KDAsIDAsIDAsIDApO1xyXG4vKipcclxuICogQ29udmVydHMgcHJvdmlkZWQgc3RyaW5nIHRvIGEgbnVtYmVyLlxyXG4gKlxyXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHZhbHVlXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAqL1xyXG5mdW5jdGlvbiB0b0Zsb2F0KHZhbHVlKSB7XHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcclxufVxyXG4vKipcclxuICogRXh0cmFjdHMgYm9yZGVycyBzaXplIGZyb20gcHJvdmlkZWQgc3R5bGVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0NTU1N0eWxlRGVjbGFyYXRpb259IHN0eWxlc1xyXG4gKiBAcGFyYW0gey4uLnN0cmluZ30gcG9zaXRpb25zIC0gQm9yZGVycyBwb3NpdGlvbnMgKHRvcCwgcmlnaHQsIC4uLilcclxuICogQHJldHVybnMge251bWJlcn1cclxuICovXHJcbmZ1bmN0aW9uIGdldEJvcmRlcnNTaXplKHN0eWxlcykge1xyXG4gICAgdmFyIHBvc2l0aW9ucyA9IFtdO1xyXG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICBwb3NpdGlvbnNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcG9zaXRpb25zLnJlZHVjZShmdW5jdGlvbiAoc2l6ZSwgcG9zaXRpb24pIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNbJ2JvcmRlci0nICsgcG9zaXRpb24gKyAnLXdpZHRoJ107XHJcbiAgICAgICAgcmV0dXJuIHNpemUgKyB0b0Zsb2F0KHZhbHVlKTtcclxuICAgIH0sIDApO1xyXG59XHJcbi8qKlxyXG4gKiBFeHRyYWN0cyBwYWRkaW5ncyBzaXplcyBmcm9tIHByb3ZpZGVkIHN0eWxlcy5cclxuICpcclxuICogQHBhcmFtIHtDU1NTdHlsZURlY2xhcmF0aW9ufSBzdHlsZXNcclxuICogQHJldHVybnMge09iamVjdH0gUGFkZGluZ3MgYm94LlxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGFkZGluZ3Moc3R5bGVzKSB7XHJcbiAgICB2YXIgcG9zaXRpb25zID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcclxuICAgIHZhciBwYWRkaW5ncyA9IHt9O1xyXG4gICAgZm9yICh2YXIgX2kgPSAwLCBwb3NpdGlvbnNfMSA9IHBvc2l0aW9uczsgX2kgPCBwb3NpdGlvbnNfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICB2YXIgcG9zaXRpb24gPSBwb3NpdGlvbnNfMVtfaV07XHJcbiAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVzWydwYWRkaW5nLScgKyBwb3NpdGlvbl07XHJcbiAgICAgICAgcGFkZGluZ3NbcG9zaXRpb25dID0gdG9GbG9hdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFkZGluZ3M7XHJcbn1cclxuLyoqXHJcbiAqIENhbGN1bGF0ZXMgY29udGVudCByZWN0YW5nbGUgb2YgcHJvdmlkZWQgU1ZHIGVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U1ZHR3JhcGhpY3NFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IGNvbnRlbnQgcmVjdGFuZ2xlIG9mIHdoaWNoIG5lZWRzXHJcbiAqICAgICAgdG8gYmUgY2FsY3VsYXRlZC5cclxuICogQHJldHVybnMge0RPTVJlY3RJbml0fVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0U1ZHQ29udGVudFJlY3QodGFyZ2V0KSB7XHJcbiAgICB2YXIgYmJveCA9IHRhcmdldC5nZXRCQm94KCk7XHJcbiAgICByZXR1cm4gY3JlYXRlUmVjdEluaXQoMCwgMCwgYmJveC53aWR0aCwgYmJveC5oZWlnaHQpO1xyXG59XHJcbi8qKlxyXG4gKiBDYWxjdWxhdGVzIGNvbnRlbnQgcmVjdGFuZ2xlIG9mIHByb3ZpZGVkIEhUTUxFbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGhlIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRIVE1MRWxlbWVudENvbnRlbnRSZWN0KHRhcmdldCkge1xyXG4gICAgLy8gQ2xpZW50IHdpZHRoICYgaGVpZ2h0IHByb3BlcnRpZXMgY2FuJ3QgYmVcclxuICAgIC8vIHVzZWQgZXhjbHVzaXZlbHkgYXMgdGhleSBwcm92aWRlIHJvdW5kZWQgdmFsdWVzLlxyXG4gICAgdmFyIGNsaWVudFdpZHRoID0gdGFyZ2V0LmNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgPSB0YXJnZXQuY2xpZW50SGVpZ2h0O1xyXG4gICAgLy8gQnkgdGhpcyBjb25kaXRpb24gd2UgY2FuIGNhdGNoIGFsbCBub24tcmVwbGFjZWQgaW5saW5lLCBoaWRkZW4gYW5kXHJcbiAgICAvLyBkZXRhY2hlZCBlbGVtZW50cy4gVGhvdWdoIGVsZW1lbnRzIHdpdGggd2lkdGggJiBoZWlnaHQgcHJvcGVydGllcyBsZXNzXHJcbiAgICAvLyB0aGFuIDAuNSB3aWxsIGJlIGRpc2NhcmRlZCBhcyB3ZWxsLlxyXG4gICAgLy9cclxuICAgIC8vIFdpdGhvdXQgaXQgd2Ugd291bGQgbmVlZCB0byBpbXBsZW1lbnQgc2VwYXJhdGUgbWV0aG9kcyBmb3IgZWFjaCBvZlxyXG4gICAgLy8gdGhvc2UgY2FzZXMgYW5kIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHBlcmZvcm0gYSBwcmVjaXNlIGFuZCBwZXJmb3JtYW5jZVxyXG4gICAgLy8gZWZmZWN0aXZlIHRlc3QgZm9yIGhpZGRlbiBlbGVtZW50cy4gRS5nLiBldmVuIGpRdWVyeSdzICc6dmlzaWJsZScgZmlsdGVyXHJcbiAgICAvLyBnaXZlcyB3cm9uZyByZXN1bHRzIGZvciBlbGVtZW50cyB3aXRoIHdpZHRoICYgaGVpZ2h0IGxlc3MgdGhhbiAwLjUuXHJcbiAgICBpZiAoIWNsaWVudFdpZHRoICYmICFjbGllbnRIZWlnaHQpIHtcclxuICAgICAgICByZXR1cm4gZW1wdHlSZWN0O1xyXG4gICAgfVxyXG4gICAgdmFyIHN0eWxlcyA9IGdldFdpbmRvd09mKHRhcmdldCkuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpO1xyXG4gICAgdmFyIHBhZGRpbmdzID0gZ2V0UGFkZGluZ3Moc3R5bGVzKTtcclxuICAgIHZhciBob3JpelBhZCA9IHBhZGRpbmdzLmxlZnQgKyBwYWRkaW5ncy5yaWdodDtcclxuICAgIHZhciB2ZXJ0UGFkID0gcGFkZGluZ3MudG9wICsgcGFkZGluZ3MuYm90dG9tO1xyXG4gICAgLy8gQ29tcHV0ZWQgc3R5bGVzIG9mIHdpZHRoICYgaGVpZ2h0IGFyZSBiZWluZyB1c2VkIGJlY2F1c2UgdGhleSBhcmUgdGhlXHJcbiAgICAvLyBvbmx5IGRpbWVuc2lvbnMgYXZhaWxhYmxlIHRvIEpTIHRoYXQgY29udGFpbiBub24tcm91bmRlZCB2YWx1ZXMuIEl0IGNvdWxkXHJcbiAgICAvLyBiZSBwb3NzaWJsZSB0byB1dGlsaXplIHRoZSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgaWYgb25seSBpdCdzIGRhdGEgd2Fzbid0XHJcbiAgICAvLyBhZmZlY3RlZCBieSBDU1MgdHJhbnNmb3JtYXRpb25zIGxldCBhbG9uZSBwYWRkaW5ncywgYm9yZGVycyBhbmQgc2Nyb2xsIGJhcnMuXHJcbiAgICB2YXIgd2lkdGggPSB0b0Zsb2F0KHN0eWxlcy53aWR0aCksIGhlaWdodCA9IHRvRmxvYXQoc3R5bGVzLmhlaWdodCk7XHJcbiAgICAvLyBXaWR0aCAmIGhlaWdodCBpbmNsdWRlIHBhZGRpbmdzIGFuZCBib3JkZXJzIHdoZW4gdGhlICdib3JkZXItYm94JyBib3hcclxuICAgIC8vIG1vZGVsIGlzIGFwcGxpZWQgKGV4Y2VwdCBmb3IgSUUpLlxyXG4gICAgaWYgKHN0eWxlcy5ib3hTaXppbmcgPT09ICdib3JkZXItYm94Jykge1xyXG4gICAgICAgIC8vIEZvbGxvd2luZyBjb25kaXRpb25zIGFyZSByZXF1aXJlZCB0byBoYW5kbGUgSW50ZXJuZXQgRXhwbG9yZXIgd2hpY2hcclxuICAgICAgICAvLyBkb2Vzbid0IGluY2x1ZGUgcGFkZGluZ3MgYW5kIGJvcmRlcnMgdG8gY29tcHV0ZWQgQ1NTIGRpbWVuc2lvbnMuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBXZSBjYW4gc2F5IHRoYXQgaWYgQ1NTIGRpbWVuc2lvbnMgKyBwYWRkaW5ncyBhcmUgZXF1YWwgdG8gdGhlIFwiY2xpZW50XCJcclxuICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoZW4gaXQncyBlaXRoZXIgSUUsIGFuZCB0aHVzIHdlIGRvbid0IG5lZWQgdG8gc3VidHJhY3RcclxuICAgICAgICAvLyBhbnl0aGluZywgb3IgYW4gZWxlbWVudCBtZXJlbHkgZG9lc24ndCBoYXZlIHBhZGRpbmdzL2JvcmRlcnMgc3R5bGVzLlxyXG4gICAgICAgIGlmIChNYXRoLnJvdW5kKHdpZHRoICsgaG9yaXpQYWQpICE9PSBjbGllbnRXaWR0aCkge1xyXG4gICAgICAgICAgICB3aWR0aCAtPSBnZXRCb3JkZXJzU2l6ZShzdHlsZXMsICdsZWZ0JywgJ3JpZ2h0JykgKyBob3JpelBhZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE1hdGgucm91bmQoaGVpZ2h0ICsgdmVydFBhZCkgIT09IGNsaWVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBoZWlnaHQgLT0gZ2V0Qm9yZGVyc1NpemUoc3R5bGVzLCAndG9wJywgJ2JvdHRvbScpICsgdmVydFBhZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBGb2xsb3dpbmcgc3RlcHMgY2FuJ3QgYmUgYXBwbGllZCB0byB0aGUgZG9jdW1lbnQncyByb290IGVsZW1lbnQgYXMgaXRzXHJcbiAgICAvLyBjbGllbnRbV2lkdGgvSGVpZ2h0XSBwcm9wZXJ0aWVzIHJlcHJlc2VudCB2aWV3cG9ydCBhcmVhIG9mIHRoZSB3aW5kb3cuXHJcbiAgICAvLyBCZXNpZGVzLCBpdCdzIGFzIHdlbGwgbm90IG5lY2Vzc2FyeSBhcyB0aGUgPGh0bWw+IGl0c2VsZiBuZWl0aGVyIGhhc1xyXG4gICAgLy8gcmVuZGVyZWQgc2Nyb2xsIGJhcnMgbm9yIGl0IGNhbiBiZSBjbGlwcGVkLlxyXG4gICAgaWYgKCFpc0RvY3VtZW50RWxlbWVudCh0YXJnZXQpKSB7XHJcbiAgICAgICAgLy8gSW4gc29tZSBicm93c2VycyAob25seSBpbiBGaXJlZm94LCBhY3R1YWxseSkgQ1NTIHdpZHRoICYgaGVpZ2h0XHJcbiAgICAgICAgLy8gaW5jbHVkZSBzY3JvbGwgYmFycyBzaXplIHdoaWNoIGNhbiBiZSByZW1vdmVkIGF0IHRoaXMgc3RlcCBhcyBzY3JvbGxcclxuICAgICAgICAvLyBiYXJzIGFyZSB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gcm91bmRlZCBkaW1lbnNpb25zICsgcGFkZGluZ3NcclxuICAgICAgICAvLyBhbmQgXCJjbGllbnRcIiBwcm9wZXJ0aWVzLCB0aG91Z2ggdGhhdCBpcyBub3QgYWx3YXlzIHRydWUgaW4gQ2hyb21lLlxyXG4gICAgICAgIHZhciB2ZXJ0U2Nyb2xsYmFyID0gTWF0aC5yb3VuZCh3aWR0aCArIGhvcml6UGFkKSAtIGNsaWVudFdpZHRoO1xyXG4gICAgICAgIHZhciBob3JpelNjcm9sbGJhciA9IE1hdGgucm91bmQoaGVpZ2h0ICsgdmVydFBhZCkgLSBjbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgLy8gQ2hyb21lIGhhcyBhIHJhdGhlciB3ZWlyZCByb3VuZGluZyBvZiBcImNsaWVudFwiIHByb3BlcnRpZXMuXHJcbiAgICAgICAgLy8gRS5nLiBmb3IgYW4gZWxlbWVudCB3aXRoIGNvbnRlbnQgd2lkdGggb2YgMzE0LjJweCBpdCBzb21ldGltZXMgZ2l2ZXNcclxuICAgICAgICAvLyB0aGUgY2xpZW50IHdpZHRoIG9mIDMxNXB4IGFuZCBmb3IgdGhlIHdpZHRoIG9mIDMxNC43cHggaXQgbWF5IGdpdmVcclxuICAgICAgICAvLyAzMTRweC4gQW5kIGl0IGRvZXNuJ3QgaGFwcGVuIGFsbCB0aGUgdGltZS4gU28ganVzdCBpZ25vcmUgdGhpcyBkZWx0YVxyXG4gICAgICAgIC8vIGFzIGEgbm9uLXJlbGV2YW50LlxyXG4gICAgICAgIGlmIChNYXRoLmFicyh2ZXJ0U2Nyb2xsYmFyKSAhPT0gMSkge1xyXG4gICAgICAgICAgICB3aWR0aCAtPSB2ZXJ0U2Nyb2xsYmFyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTWF0aC5hYnMoaG9yaXpTY3JvbGxiYXIpICE9PSAxKSB7XHJcbiAgICAgICAgICAgIGhlaWdodCAtPSBob3JpelNjcm9sbGJhcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3JlYXRlUmVjdEluaXQocGFkZGluZ3MubGVmdCwgcGFkZGluZ3MudG9wLCB3aWR0aCwgaGVpZ2h0KTtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgcHJvdmlkZWQgZWxlbWVudCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU1ZHR3JhcGhpY3NFbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG52YXIgaXNTVkdHcmFwaGljc0VsZW1lbnQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gU29tZSBicm93c2VycywgbmFtZWx5IElFIGFuZCBFZGdlLCBkb24ndCBoYXZlIHRoZSBTVkdHcmFwaGljc0VsZW1lbnRcclxuICAgIC8vIGludGVyZmFjZS5cclxuICAgIGlmICh0eXBlb2YgU1ZHR3JhcGhpY3NFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0KSB7IHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBnZXRXaW5kb3dPZih0YXJnZXQpLlNWR0dyYXBoaWNzRWxlbWVudDsgfTtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3Mgc28sIHRoZW4gY2hlY2sgdGhhdCBlbGVtZW50IGlzIGF0IGxlYXN0IGFuIGluc3RhbmNlIG9mIHRoZVxyXG4gICAgLy8gU1ZHRWxlbWVudCBhbmQgdGhhdCBpdCBoYXMgdGhlIFwiZ2V0QkJveFwiIG1ldGhvZC5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1wYXJlbnNcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0KSB7IHJldHVybiAodGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5TVkdFbGVtZW50ICYmXHJcbiAgICAgICAgdHlwZW9mIHRhcmdldC5nZXRCQm94ID09PSAnZnVuY3Rpb24nKTsgfTtcclxufSkoKTtcclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIHByb3ZpZGVkIGVsZW1lbnQgaXMgYSBkb2N1bWVudCBlbGVtZW50ICg8aHRtbD4pLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgY2hlY2tlZC5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5mdW5jdGlvbiBpc0RvY3VtZW50RWxlbWVudCh0YXJnZXQpIHtcclxuICAgIHJldHVybiB0YXJnZXQgPT09IGdldFdpbmRvd09mKHRhcmdldCkuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG59XHJcbi8qKlxyXG4gKiBDYWxjdWxhdGVzIGFuIGFwcHJvcHJpYXRlIGNvbnRlbnQgcmVjdGFuZ2xlIGZvciBwcm92aWRlZCBodG1sIG9yIHN2ZyBlbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgY29udGVudCByZWN0YW5nbGUgb2Ygd2hpY2ggbmVlZHMgdG8gYmUgY2FsY3VsYXRlZC5cclxuICogQHJldHVybnMge0RPTVJlY3RJbml0fVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0Q29udGVudFJlY3QodGFyZ2V0KSB7XHJcbiAgICBpZiAoIWlzQnJvd3Nlcikge1xyXG4gICAgICAgIHJldHVybiBlbXB0eVJlY3Q7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNTVkdHcmFwaGljc0VsZW1lbnQodGFyZ2V0KSkge1xyXG4gICAgICAgIHJldHVybiBnZXRTVkdDb250ZW50UmVjdCh0YXJnZXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldEhUTUxFbGVtZW50Q29udGVudFJlY3QodGFyZ2V0KTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlcyByZWN0YW5nbGUgd2l0aCBhbiBpbnRlcmZhY2Ugb2YgdGhlIERPTVJlY3RSZWFkT25seS5cclxuICogU3BlYzogaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbXJlY3RyZWFkb25seVxyXG4gKlxyXG4gKiBAcGFyYW0ge0RPTVJlY3RJbml0fSByZWN0SW5pdCAtIE9iamVjdCB3aXRoIHJlY3RhbmdsZSdzIHgveSBjb29yZGluYXRlcyBhbmQgZGltZW5zaW9ucy5cclxuICogQHJldHVybnMge0RPTVJlY3RSZWFkT25seX1cclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlYWRPbmx5UmVjdChfYSkge1xyXG4gICAgdmFyIHggPSBfYS54LCB5ID0gX2EueSwgd2lkdGggPSBfYS53aWR0aCwgaGVpZ2h0ID0gX2EuaGVpZ2h0O1xyXG4gICAgLy8gSWYgRE9NUmVjdFJlYWRPbmx5IGlzIGF2YWlsYWJsZSB1c2UgaXQgYXMgYSBwcm90b3R5cGUgZm9yIHRoZSByZWN0YW5nbGUuXHJcbiAgICB2YXIgQ29uc3RyID0gdHlwZW9mIERPTVJlY3RSZWFkT25seSAhPT0gJ3VuZGVmaW5lZCcgPyBET01SZWN0UmVhZE9ubHkgOiBPYmplY3Q7XHJcbiAgICB2YXIgcmVjdCA9IE9iamVjdC5jcmVhdGUoQ29uc3RyLnByb3RvdHlwZSk7XHJcbiAgICAvLyBSZWN0YW5nbGUncyBwcm9wZXJ0aWVzIGFyZSBub3Qgd3JpdGFibGUgYW5kIG5vbi1lbnVtZXJhYmxlLlxyXG4gICAgZGVmaW5lQ29uZmlndXJhYmxlKHJlY3QsIHtcclxuICAgICAgICB4OiB4LCB5OiB5LCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgIHRvcDogeSxcclxuICAgICAgICByaWdodDogeCArIHdpZHRoLFxyXG4gICAgICAgIGJvdHRvbTogaGVpZ2h0ICsgeSxcclxuICAgICAgICBsZWZ0OiB4XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZWN0O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIERPTVJlY3RJbml0IG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGltZW5zaW9ucyBhbmQgdGhlIHgveSBjb29yZGluYXRlcy5cclxuICogU3BlYzogaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RpY3RkZWYtZG9tcmVjdGluaXRcclxuICpcclxuICogQHBhcmFtIHtudW1iZXJ9IHggLSBYIGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gWSBjb29yZGluYXRlLlxyXG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGggLSBSZWN0YW5nbGUncyB3aWR0aC5cclxuICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAtIFJlY3RhbmdsZSdzIGhlaWdodC5cclxuICogQHJldHVybnMge0RPTVJlY3RJbml0fVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUmVjdEluaXQoeCwgeSwgd2lkdGgsIGhlaWdodCkge1xyXG4gICAgcmV0dXJuIHsgeDogeCwgeTogeSwgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9O1xyXG59XG5cbi8qKlxyXG4gKiBDbGFzcyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBjb21wdXRhdGlvbnMgb2YgdGhlIGNvbnRlbnQgcmVjdGFuZ2xlIG9mXHJcbiAqIHByb3ZpZGVkIERPTSBlbGVtZW50IGFuZCBmb3Iga2VlcGluZyB0cmFjayBvZiBpdCdzIGNoYW5nZXMuXHJcbiAqL1xyXG52YXIgUmVzaXplT2JzZXJ2YXRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUmVzaXplT2JzZXJ2YXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIGJlIG9ic2VydmVkLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZhdGlvbih0YXJnZXQpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBCcm9hZGNhc3RlZCB3aWR0aCBvZiBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5icm9hZGNhc3RXaWR0aCA9IDA7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQnJvYWRjYXN0ZWQgaGVpZ2h0IG9mIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJyb2FkY2FzdEhlaWdodCA9IDA7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogUmVmZXJlbmNlIHRvIHRoZSBsYXN0IG9ic2VydmVkIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge0RPTVJlY3RJbml0fVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuY29udGVudFJlY3RfID0gY3JlYXRlUmVjdEluaXQoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgY29udGVudCByZWN0YW5nbGUgYW5kIHRlbGxzIHdoZXRoZXIgaXQncyB3aWR0aCBvciBoZWlnaHQgcHJvcGVydGllc1xyXG4gICAgICogaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IGJyb2FkY2FzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2YXRpb24ucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciByZWN0ID0gZ2V0Q29udGVudFJlY3QodGhpcy50YXJnZXQpO1xyXG4gICAgICAgIHRoaXMuY29udGVudFJlY3RfID0gcmVjdDtcclxuICAgICAgICByZXR1cm4gKHJlY3Qud2lkdGggIT09IHRoaXMuYnJvYWRjYXN0V2lkdGggfHxcclxuICAgICAgICAgICAgcmVjdC5oZWlnaHQgIT09IHRoaXMuYnJvYWRjYXN0SGVpZ2h0KTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgJ2Jyb2FkY2FzdFdpZHRoJyBhbmQgJ2Jyb2FkY2FzdEhlaWdodCcgcHJvcGVydGllcyB3aXRoIGEgZGF0YVxyXG4gICAgICogZnJvbSB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBsYXN0IG9ic2VydmVkIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtET01SZWN0SW5pdH0gTGFzdCBvYnNlcnZlZCBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2YXRpb24ucHJvdG90eXBlLmJyb2FkY2FzdFJlY3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlY3QgPSB0aGlzLmNvbnRlbnRSZWN0XztcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFdpZHRoID0gcmVjdC53aWR0aDtcclxuICAgICAgICB0aGlzLmJyb2FkY2FzdEhlaWdodCA9IHJlY3QuaGVpZ2h0O1xyXG4gICAgICAgIHJldHVybiByZWN0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZhdGlvbjtcclxufSgpKTtcblxudmFyIFJlc2l6ZU9ic2VydmVyRW50cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgUmVzaXplT2JzZXJ2ZXJFbnRyeS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdGhhdCBpcyBiZWluZyBvYnNlcnZlZC5cclxuICAgICAqIEBwYXJhbSB7RE9NUmVjdEluaXR9IHJlY3RJbml0IC0gRGF0YSBvZiB0aGUgZWxlbWVudCdzIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlckVudHJ5KHRhcmdldCwgcmVjdEluaXQpIHtcclxuICAgICAgICB2YXIgY29udGVudFJlY3QgPSBjcmVhdGVSZWFkT25seVJlY3QocmVjdEluaXQpO1xyXG4gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgbm90IHdyaXRhYmxlXHJcbiAgICAgICAgLy8gYW5kIGFyZSBhbHNvIG5vdCBlbnVtZXJhYmxlIGluIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24uXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBQcm9wZXJ0eSBhY2Nlc3NvcnMgYXJlIG5vdCBiZWluZyB1c2VkIGFzIHRoZXknZCByZXF1aXJlIHRvIGRlZmluZSBhXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBXZWFrTWFwIHN0b3JhZ2Ugd2hpY2ggbWF5IGNhdXNlIG1lbW9yeSBsZWFrcyBpbiBicm93c2VycyB0aGF0XHJcbiAgICAgICAgLy8gZG9uJ3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgY29sbGVjdGlvbnMuXHJcbiAgICAgICAgZGVmaW5lQ29uZmlndXJhYmxlKHRoaXMsIHsgdGFyZ2V0OiB0YXJnZXQsIGNvbnRlbnRSZWN0OiBjb250ZW50UmVjdCB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZlckVudHJ5O1xyXG59KCkpO1xuXG52YXIgUmVzaXplT2JzZXJ2ZXJTUEkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgUmVzaXplT2JzZXJ2ZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlckNhbGxiYWNrfSBjYWxsYmFjayAtIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgaW52b2tlZFxyXG4gICAgICogICAgICB3aGVuIG9uZSBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudHMgY2hhbmdlcyBpdCdzIGNvbnRlbnQgZGltZW5zaW9ucy5cclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyfSBjb250cm9sbGVyIC0gQ29udHJvbGxlciBpbnN0YW5jZSB3aGljaFxyXG4gICAgICogICAgICBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHVwZGF0ZXMgb2Ygb2JzZXJ2ZXIuXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyfSBjYWxsYmFja0N0eCAtIFJlZmVyZW5jZSB0byB0aGUgcHVibGljXHJcbiAgICAgKiAgICAgIFJlc2l6ZU9ic2VydmVyIGluc3RhbmNlIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIGNhbGxiYWNrIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlclNQSShjYWxsYmFjaywgY29udHJvbGxlciwgY2FsbGJhY2tDdHgpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBDb2xsZWN0aW9uIG9mIHJlc2l6ZSBvYnNlcnZhdGlvbnMgdGhhdCBoYXZlIGRldGVjdGVkIGNoYW5nZXMgaW4gZGltZW5zaW9uc1xyXG4gICAgICAgICAqIG9mIGVsZW1lbnRzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge0FycmF5PFJlc2l6ZU9ic2VydmF0aW9uPn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18gPSBbXTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBSZWdpc3RyeSBvZiB0aGUgUmVzaXplT2JzZXJ2YXRpb24gaW5zdGFuY2VzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge01hcDxFbGVtZW50LCBSZXNpemVPYnNlcnZhdGlvbj59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5vYnNlcnZhdGlvbnNfID0gbmV3IE1hcFNoaW0oKTtcclxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBjYWxsYmFjayBwcm92aWRlZCBhcyBwYXJhbWV0ZXIgMSBpcyBub3QgYSBmdW5jdGlvbi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsYmFja18gPSBjYWxsYmFjaztcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfID0gY29udHJvbGxlcjtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrQ3R4XyA9IGNhbGxiYWNrQ3R4O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBTdGFydHMgb2JzZXJ2aW5nIHByb3ZpZGVkIGVsZW1lbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIGJlIG9ic2VydmVkLlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5vYnNlcnZlID0gZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAwIHByZXNlbnQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgY3VycmVudCBlbnZpcm9ubWVudCBkb2Vzbid0IGhhdmUgdGhlIEVsZW1lbnQgaW50ZXJmYWNlLlxyXG4gICAgICAgIGlmICh0eXBlb2YgRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgIShFbGVtZW50IGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIGdldFdpbmRvd09mKHRhcmdldCkuRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgXCJFbGVtZW50XCIuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBvYnNlcnZhdGlvbnMgPSB0aGlzLm9ic2VydmF0aW9uc187XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBlbGVtZW50IGlzIGFscmVhZHkgYmVpbmcgb2JzZXJ2ZWQuXHJcbiAgICAgICAgaWYgKG9ic2VydmF0aW9ucy5oYXModGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9ic2VydmF0aW9ucy5zZXQodGFyZ2V0LCBuZXcgUmVzaXplT2JzZXJ2YXRpb24odGFyZ2V0KSk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyXy5hZGRPYnNlcnZlcih0aGlzKTtcclxuICAgICAgICAvLyBGb3JjZSB0aGUgdXBkYXRlIG9mIG9ic2VydmF0aW9ucy5cclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfLnJlZnJlc2goKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFN0b3BzIG9ic2VydmluZyBwcm92aWRlZCBlbGVtZW50LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBzdG9wIG9ic2VydmluZy5cclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUudW5vYnNlcnZlID0gZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAwIHByZXNlbnQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgY3VycmVudCBlbnZpcm9ubWVudCBkb2Vzbid0IGhhdmUgdGhlIEVsZW1lbnQgaW50ZXJmYWNlLlxyXG4gICAgICAgIGlmICh0eXBlb2YgRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgIShFbGVtZW50IGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIGdldFdpbmRvd09mKHRhcmdldCkuRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgXCJFbGVtZW50XCIuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBvYnNlcnZhdGlvbnMgPSB0aGlzLm9ic2VydmF0aW9uc187XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBlbGVtZW50IGlzIG5vdCBiZWluZyBvYnNlcnZlZC5cclxuICAgICAgICBpZiAoIW9ic2VydmF0aW9ucy5oYXModGFyZ2V0KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9ic2VydmF0aW9ucy5kZWxldGUodGFyZ2V0KTtcclxuICAgICAgICBpZiAoIW9ic2VydmF0aW9ucy5zaXplKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlcl8ucmVtb3ZlT2JzZXJ2ZXIodGhpcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogU3RvcHMgb2JzZXJ2aW5nIGFsbCBlbGVtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YXRpb25zXy5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8ucmVtb3ZlT2JzZXJ2ZXIodGhpcyk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb2xsZWN0cyBvYnNlcnZhdGlvbiBpbnN0YW5jZXMgdGhlIGFzc29jaWF0ZWQgZWxlbWVudCBvZiB3aGljaCBoYXMgY2hhbmdlZFxyXG4gICAgICogaXQncyBjb250ZW50IHJlY3RhbmdsZS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmdhdGhlckFjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgICAgICB0aGlzLm9ic2VydmF0aW9uc18uZm9yRWFjaChmdW5jdGlvbiAob2JzZXJ2YXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKG9ic2VydmF0aW9uLmlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18ucHVzaChvYnNlcnZhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEludm9rZXMgaW5pdGlhbCBjYWxsYmFjayBmdW5jdGlvbiB3aXRoIGEgbGlzdCBvZiBSZXNpemVPYnNlcnZlckVudHJ5XHJcbiAgICAgKiBpbnN0YW5jZXMgY29sbGVjdGVkIGZyb20gYWN0aXZlIHJlc2l6ZSBvYnNlcnZhdGlvbnMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5icm9hZGNhc3RBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBvYnNlcnZlciBkb2Vzbid0IGhhdmUgYWN0aXZlIG9ic2VydmF0aW9ucy5cclxuICAgICAgICBpZiAoIXRoaXMuaGFzQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY3R4ID0gdGhpcy5jYWxsYmFja0N0eF87XHJcbiAgICAgICAgLy8gQ3JlYXRlIFJlc2l6ZU9ic2VydmVyRW50cnkgaW5zdGFuY2UgZm9yIGV2ZXJ5IGFjdGl2ZSBvYnNlcnZhdGlvbi5cclxuICAgICAgICB2YXIgZW50cmllcyA9IHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5tYXAoZnVuY3Rpb24gKG9ic2VydmF0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVzaXplT2JzZXJ2ZXJFbnRyeShvYnNlcnZhdGlvbi50YXJnZXQsIG9ic2VydmF0aW9uLmJyb2FkY2FzdFJlY3QoKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFja18uY2FsbChjdHgsIGVudHJpZXMsIGN0eCk7XHJcbiAgICAgICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ2xlYXJzIHRoZSBjb2xsZWN0aW9uIG9mIGFjdGl2ZSBvYnNlcnZhdGlvbnMuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS5jbGVhckFjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18uc3BsaWNlKDApO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgd2hldGhlciBvYnNlcnZlciBoYXMgYWN0aXZlIG9ic2VydmF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmhhc0FjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLmxlbmd0aCA+IDA7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyU1BJO1xyXG59KCkpO1xuXG4vLyBSZWdpc3RyeSBvZiBpbnRlcm5hbCBvYnNlcnZlcnMuIElmIFdlYWtNYXAgaXMgbm90IGF2YWlsYWJsZSB1c2UgY3VycmVudCBzaGltXHJcbi8vIGZvciB0aGUgTWFwIGNvbGxlY3Rpb24gYXMgaXQgaGFzIGFsbCByZXF1aXJlZCBtZXRob2RzIGFuZCBiZWNhdXNlIFdlYWtNYXBcclxuLy8gY2FuJ3QgYmUgZnVsbHkgcG9seWZpbGxlZCBhbnl3YXkuXHJcbnZhciBvYnNlcnZlcnMgPSB0eXBlb2YgV2Vha01hcCAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgV2Vha01hcCgpIDogbmV3IE1hcFNoaW0oKTtcclxuLyoqXHJcbiAqIFJlc2l6ZU9ic2VydmVyIEFQSS4gRW5jYXBzdWxhdGVzIHRoZSBSZXNpemVPYnNlcnZlciBTUEkgaW1wbGVtZW50YXRpb25cclxuICogZXhwb3Npbmcgb25seSB0aG9zZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhlIHNwZWMuXHJcbiAqL1xyXG52YXIgUmVzaXplT2JzZXJ2ZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgUmVzaXplT2JzZXJ2ZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlckNhbGxiYWNrfSBjYWxsYmFjayAtIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuXHJcbiAgICAgKiAgICAgIGRpbWVuc2lvbnMgb2YgdGhlIG9ic2VydmVkIGVsZW1lbnRzIGNoYW5nZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzaXplT2JzZXJ2ZXIpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcclxuICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXJTUEkoY2FsbGJhY2ssIGNvbnRyb2xsZXIsIHRoaXMpO1xyXG4gICAgICAgIG9ic2VydmVycy5zZXQodGhpcywgb2JzZXJ2ZXIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyO1xyXG59KCkpO1xyXG4vLyBFeHBvc2UgcHVibGljIG1ldGhvZHMgb2YgUmVzaXplT2JzZXJ2ZXIuXHJcbltcclxuICAgICdvYnNlcnZlJyxcclxuICAgICd1bm9ic2VydmUnLFxyXG4gICAgJ2Rpc2Nvbm5lY3QnXHJcbl0uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XHJcbiAgICBSZXNpemVPYnNlcnZlci5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgcmV0dXJuIChfYSA9IG9ic2VydmVycy5nZXQodGhpcykpW21ldGhvZF0uYXBwbHkoX2EsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG59KTtcblxudmFyIGluZGV4ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8vIEV4cG9ydCBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUuXHJcbiAgICBpZiAodHlwZW9mIGdsb2JhbCQxLlJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybiBnbG9iYWwkMS5SZXNpemVPYnNlcnZlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBSZXNpemVPYnNlcnZlcjtcclxufSkoKTtcblxuZXhwb3J0IGRlZmF1bHQgaW5kZXg7XG4iLCJ2YXIgY2FtZWwyaHlwaGVuID0gcmVxdWlyZSgnc3RyaW5nLWNvbnZlcnQvY2FtZWwyaHlwaGVuJyk7XG5cbnZhciBpc0RpbWVuc2lvbiA9IGZ1bmN0aW9uIChmZWF0dXJlKSB7XG4gIHZhciByZSA9IC9baGVpZ2h0fHdpZHRoXSQvO1xuICByZXR1cm4gcmUudGVzdChmZWF0dXJlKTtcbn07XG5cbnZhciBvYmoybXEgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBtcSA9ICcnO1xuICB2YXIgZmVhdHVyZXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBmZWF0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChmZWF0dXJlLCBpbmRleCkge1xuICAgIHZhciB2YWx1ZSA9IG9ialtmZWF0dXJlXTtcbiAgICBmZWF0dXJlID0gY2FtZWwyaHlwaGVuKGZlYXR1cmUpO1xuICAgIC8vIEFkZCBweCB0byBkaW1lbnNpb24gZmVhdHVyZXNcbiAgICBpZiAoaXNEaW1lbnNpb24oZmVhdHVyZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZSArICdweCc7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgbXEgKz0gZmVhdHVyZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgbXEgKz0gJ25vdCAnICsgZmVhdHVyZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbXEgKz0gJygnICsgZmVhdHVyZSArICc6ICcgKyB2YWx1ZSArICcpJztcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoLTEpIHtcbiAgICAgIG1xICs9ICcgYW5kICdcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbXE7XG59O1xuXG52YXIganNvbjJtcSA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICB2YXIgbXEgPSAnJztcbiAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbiAgLy8gSGFuZGxpbmcgYXJyYXkgb2YgbWVkaWEgcXVlcmllc1xuICBpZiAocXVlcnkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHF1ZXJ5LmZvckVhY2goZnVuY3Rpb24gKHEsIGluZGV4KSB7XG4gICAgICBtcSArPSBvYmoybXEocSk7XG4gICAgICBpZiAoaW5kZXggPCBxdWVyeS5sZW5ndGgtMSkge1xuICAgICAgICBtcSArPSAnLCAnXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1xO1xuICB9XG4gIC8vIEhhbmRsaW5nIHNpbmdsZSBtZWRpYSBxdWVyeVxuICByZXR1cm4gb2JqMm1xKHF1ZXJ5KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ganNvbjJtcTsiLCJ2YXIgY2FtZWwyaHlwaGVuID0gZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyXG4gICAgICAgICAgLnJlcGxhY2UoL1tBLVpdL2csIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuICctJyArIG1hdGNoLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWwyaHlwaGVuOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZGVmYXVsdFByb3BzID0ge1xuICBhY2Nlc3NpYmlsaXR5OiB0cnVlLFxuICBhZGFwdGl2ZUhlaWdodDogZmFsc2UsXG4gIGFmdGVyQ2hhbmdlOiBudWxsLFxuICBhcHBlbmREb3RzOiBmdW5jdGlvbiBhcHBlbmREb3RzKGRvdHMpIHtcbiAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcInVsXCIsIHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6IFwiYmxvY2tcIlxuICAgICAgfVxuICAgIH0sIGRvdHMpO1xuICB9LFxuICBhcnJvd3M6IHRydWUsXG4gIGF1dG9wbGF5OiBmYWxzZSxcbiAgYXV0b3BsYXlTcGVlZDogMzAwMCxcbiAgYmVmb3JlQ2hhbmdlOiBudWxsLFxuICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgY2VudGVyUGFkZGluZzogXCI1MHB4XCIsXG4gIGNsYXNzTmFtZTogXCJcIixcbiAgY3NzRWFzZTogXCJlYXNlXCIsXG4gIGN1c3RvbVBhZ2luZzogZnVuY3Rpb24gY3VzdG9tUGFnaW5nKGkpIHtcbiAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBudWxsLCBpICsgMSk7XG4gIH0sXG4gIGRvdHM6IGZhbHNlLFxuICBkb3RzQ2xhc3M6IFwic2xpY2stZG90c1wiLFxuICBkcmFnZ2FibGU6IHRydWUsXG4gIGVhc2luZzogXCJsaW5lYXJcIixcbiAgZWRnZUZyaWN0aW9uOiAwLjM1LFxuICBmYWRlOiBmYWxzZSxcbiAgZm9jdXNPblNlbGVjdDogZmFsc2UsXG4gIGluZmluaXRlOiB0cnVlLFxuICBpbml0aWFsU2xpZGU6IDAsXG4gIGxhenlMb2FkOiBudWxsLFxuICBuZXh0QXJyb3c6IG51bGwsXG4gIG9uRWRnZTogbnVsbCxcbiAgb25Jbml0OiBudWxsLFxuICBvbkxhenlMb2FkRXJyb3I6IG51bGwsXG4gIG9uUmVJbml0OiBudWxsLFxuICBwYXVzZU9uRG90c0hvdmVyOiBmYWxzZSxcbiAgcGF1c2VPbkZvY3VzOiBmYWxzZSxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwcmV2QXJyb3c6IG51bGwsXG4gIHJlc3BvbnNpdmU6IG51bGwsXG4gIHJvd3M6IDEsXG4gIHJ0bDogZmFsc2UsXG4gIHNsaWRlOiBcImRpdlwiLFxuICBzbGlkZXNQZXJSb3c6IDEsXG4gIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICBzbGlkZXNUb1Nob3c6IDEsXG4gIHNwZWVkOiA1MDAsXG4gIHN3aXBlOiB0cnVlLFxuICBzd2lwZUV2ZW50OiBudWxsLFxuICBzd2lwZVRvU2xpZGU6IGZhbHNlLFxuICB0b3VjaE1vdmU6IHRydWUsXG4gIHRvdWNoVGhyZXNob2xkOiA1LFxuICB1c2VDU1M6IHRydWUsXG4gIHVzZVRyYW5zZm9ybTogdHJ1ZSxcbiAgdmFyaWFibGVXaWR0aDogZmFsc2UsXG4gIHZlcnRpY2FsOiBmYWxzZSxcbiAgd2FpdEZvckFuaW1hdGU6IHRydWVcbn07XG52YXIgX2RlZmF1bHQgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJ2YXIgTWVkaWFRdWVyeURpc3BhdGNoID0gcmVxdWlyZSgnLi9NZWRpYVF1ZXJ5RGlzcGF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gbmV3IE1lZGlhUXVlcnlEaXNwYXRjaCgpO1xuIiwidmFyIE1lZGlhUXVlcnkgPSByZXF1aXJlKCcuL01lZGlhUXVlcnknKTtcbnZhciBVdGlsID0gcmVxdWlyZSgnLi9VdGlsJyk7XG52YXIgZWFjaCA9IFV0aWwuZWFjaDtcbnZhciBpc0Z1bmN0aW9uID0gVXRpbC5pc0Z1bmN0aW9uO1xudmFyIGlzQXJyYXkgPSBVdGlsLmlzQXJyYXk7XG5cbi8qKlxuICogQWxsb3dzIGZvciByZWdpc3RyYXRpb24gb2YgcXVlcnkgaGFuZGxlcnMuXG4gKiBNYW5hZ2VzIHRoZSBxdWVyeSBoYW5kbGVyJ3Mgc3RhdGUgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciB3aXJpbmcgdXAgYnJvd3NlciBldmVudHNcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gTWVkaWFRdWVyeURpc3BhdGNoICgpIHtcbiAgICBpZighd2luZG93Lm1hdGNoTWVkaWEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYXRjaE1lZGlhIG5vdCBwcmVzZW50LCBsZWdhY3kgYnJvd3NlcnMgcmVxdWlyZSBhIHBvbHlmaWxsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5xdWVyaWVzID0ge307XG4gICAgdGhpcy5icm93c2VySXNJbmNhcGFibGUgPSAhd2luZG93Lm1hdGNoTWVkaWEoJ29ubHkgYWxsJykubWF0Y2hlcztcbn1cblxuTWVkaWFRdWVyeURpc3BhdGNoLnByb3RvdHlwZSA9IHtcblxuICAgIGNvbnN0cnVjdG9yIDogTWVkaWFRdWVyeURpc3BhdGNoLFxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgdGhlIGdpdmVuIG1lZGlhIHF1ZXJ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcSB0aGUgbWVkaWEgcXVlcnlcbiAgICAgKiBAcGFyYW0ge29iamVjdCB8fCBBcnJheSB8fCBGdW5jdGlvbn0gb3B0aW9ucyBlaXRoZXIgYSBzaW5nbGUgcXVlcnkgaGFuZGxlciBvYmplY3QsIGEgZnVuY3Rpb24sIG9yIGFuIGFycmF5IG9mIHF1ZXJ5IGhhbmRsZXJzXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5tYXRjaCBmaXJlZCB3aGVuIHF1ZXJ5IG1hdGNoZWRcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbb3B0aW9ucy51bm1hdGNoXSBmaXJlZCB3aGVuIGEgcXVlcnkgaXMgbm8gbG9uZ2VyIG1hdGNoZWRcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbb3B0aW9ucy5zZXR1cF0gZmlyZWQgd2hlbiBoYW5kbGVyIGZpcnN0IHRyaWdnZXJlZFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGVmZXJTZXR1cD1mYWxzZV0gd2hldGhlciBzZXR1cCBzaG91bGQgYmUgcnVuIGltbWVkaWF0ZWx5IG9yIGRlZmVycmVkIHVudGlsIHF1ZXJ5IGlzIGZpcnN0IG1hdGNoZWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzaG91bGREZWdyYWRlPWZhbHNlXSB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBtZWRpYSBxdWVyeSBzaG91bGQgYWx3YXlzIHJ1biBvbiBpbmNhcGFibGUgYnJvd3NlcnNcbiAgICAgKi9cbiAgICByZWdpc3RlciA6IGZ1bmN0aW9uKHEsIG9wdGlvbnMsIHNob3VsZERlZ3JhZGUpIHtcbiAgICAgICAgdmFyIHF1ZXJpZXMgICAgICAgICA9IHRoaXMucXVlcmllcyxcbiAgICAgICAgICAgIGlzVW5jb25kaXRpb25hbCA9IHNob3VsZERlZ3JhZGUgJiYgdGhpcy5icm93c2VySXNJbmNhcGFibGU7XG5cbiAgICAgICAgaWYoIXF1ZXJpZXNbcV0pIHtcbiAgICAgICAgICAgIHF1ZXJpZXNbcV0gPSBuZXcgTWVkaWFRdWVyeShxLCBpc1VuY29uZGl0aW9uYWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9ub3JtYWxpc2UgdG8gb2JqZWN0IGluIGFuIGFycmF5XG4gICAgICAgIGlmKGlzRnVuY3Rpb24ob3B0aW9ucykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IG1hdGNoIDogb3B0aW9ucyB9O1xuICAgICAgICB9XG4gICAgICAgIGlmKCFpc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdO1xuICAgICAgICB9XG4gICAgICAgIGVhY2gob3B0aW9ucywgZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0geyBtYXRjaCA6IGhhbmRsZXIgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXJpZXNbcV0uYWRkSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIHVucmVnaXN0ZXJzIGEgcXVlcnkgYW5kIGFsbCBpdCdzIGhhbmRsZXJzLCBvciBhIHNwZWNpZmljIGhhbmRsZXIgZm9yIGEgcXVlcnlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBxIHRoZSBtZWRpYSBxdWVyeSB0byB0YXJnZXRcbiAgICAgKiBAcGFyYW0ge29iamVjdCB8fCBmdW5jdGlvbn0gW2hhbmRsZXJdIHNwZWNpZmljIGhhbmRsZXIgdG8gdW5yZWdpc3RlclxuICAgICAqL1xuICAgIHVucmVnaXN0ZXIgOiBmdW5jdGlvbihxLCBoYW5kbGVyKSB7XG4gICAgICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcmllc1txXTtcblxuICAgICAgICBpZihxdWVyeSkge1xuICAgICAgICAgICAgaWYoaGFuZGxlcikge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnJlbW92ZUhhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBxdWVyeS5jbGVhcigpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnF1ZXJpZXNbcV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lZGlhUXVlcnlEaXNwYXRjaDtcbiIsInZhciBRdWVyeUhhbmRsZXIgPSByZXF1aXJlKCcuL1F1ZXJ5SGFuZGxlcicpO1xudmFyIGVhY2ggPSByZXF1aXJlKCcuL1V0aWwnKS5lYWNoO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgbWVkaWEgcXVlcnksIG1hbmFnZXMgaXQncyBzdGF0ZSBhbmQgcmVnaXN0ZXJlZCBoYW5kbGVycyBmb3IgdGhpcyBxdWVyeVxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IHRoZSBtZWRpYSBxdWVyeSBzdHJpbmdcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzVW5jb25kaXRpb25hbD1mYWxzZV0gd2hldGhlciB0aGUgbWVkaWEgcXVlcnkgc2hvdWxkIHJ1biByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGNvbmRpdGlvbnMgYXJlIG1ldC4gUHJpbWFyaWx5IGZvciBoZWxwaW5nIG9sZGVyIGJyb3dzZXJzIGRlYWwgd2l0aCBtb2JpbGUtZmlyc3QgZGVzaWduXG4gKi9cbmZ1bmN0aW9uIE1lZGlhUXVlcnkocXVlcnksIGlzVW5jb25kaXRpb25hbCkge1xuICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICB0aGlzLmlzVW5jb25kaXRpb25hbCA9IGlzVW5jb25kaXRpb25hbDtcbiAgICB0aGlzLmhhbmRsZXJzID0gW107XG4gICAgdGhpcy5tcWwgPSB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5saXN0ZW5lciA9IGZ1bmN0aW9uKG1xbCkge1xuICAgICAgICAvLyBDaHJvbWUgcGFzc2VzIGFuIE1lZGlhUXVlcnlMaXN0RXZlbnQgb2JqZWN0LCB3aGlsZSBvdGhlciBicm93c2VycyBwYXNzIE1lZGlhUXVlcnlMaXN0IGRpcmVjdGx5XG4gICAgICAgIHNlbGYubXFsID0gbXFsLmN1cnJlbnRUYXJnZXQgfHwgbXFsO1xuICAgICAgICBzZWxmLmFzc2VzcygpO1xuICAgIH07XG4gICAgdGhpcy5tcWwuYWRkTGlzdGVuZXIodGhpcy5saXN0ZW5lcik7XG59XG5cbk1lZGlhUXVlcnkucHJvdG90eXBlID0ge1xuXG4gICAgY29uc3R1Y3RvciA6IE1lZGlhUXVlcnksXG5cbiAgICAvKipcbiAgICAgKiBhZGQgYSBoYW5kbGVyIGZvciB0aGlzIHF1ZXJ5LCB0cmlnZ2VyaW5nIGlmIGFscmVhZHkgYWN0aXZlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaGFuZGxlclxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGhhbmRsZXIubWF0Y2ggY2FsbGJhY2sgZm9yIHdoZW4gcXVlcnkgaXMgYWN0aXZhdGVkXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2hhbmRsZXIudW5tYXRjaF0gY2FsbGJhY2sgZm9yIHdoZW4gcXVlcnkgaXMgZGVhY3RpdmF0ZWRcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBbaGFuZGxlci5zZXR1cF0gY2FsbGJhY2sgZm9yIGltbWVkaWF0ZSBleGVjdXRpb24gd2hlbiBhIHF1ZXJ5IGhhbmRsZXIgaXMgcmVnaXN0ZXJlZFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hhbmRsZXIuZGVmZXJTZXR1cD1mYWxzZV0gc2hvdWxkIHRoZSBzZXR1cCBjYWxsYmFjayBiZSBkZWZlcnJlZCB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGUgaGFuZGxlciBpcyBtYXRjaGVkP1xuICAgICAqL1xuICAgIGFkZEhhbmRsZXIgOiBmdW5jdGlvbihoYW5kbGVyKSB7XG4gICAgICAgIHZhciBxaCA9IG5ldyBRdWVyeUhhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMucHVzaChxaCk7XG5cbiAgICAgICAgdGhpcy5tYXRjaGVzKCkgJiYgcWgub24oKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogcmVtb3ZlcyB0aGUgZ2l2ZW4gaGFuZGxlciBmcm9tIHRoZSBjb2xsZWN0aW9uLCBhbmQgY2FsbHMgaXQncyBkZXN0cm95IG1ldGhvZHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0IHx8IGZ1bmN0aW9ufSBoYW5kbGVyIHRoZSBoYW5kbGVyIHRvIHJlbW92ZVxuICAgICAqL1xuICAgIHJlbW92ZUhhbmRsZXIgOiBmdW5jdGlvbihoYW5kbGVyKSB7XG4gICAgICAgIHZhciBoYW5kbGVycyA9IHRoaXMuaGFuZGxlcnM7XG4gICAgICAgIGVhY2goaGFuZGxlcnMsIGZ1bmN0aW9uKGgsIGkpIHtcbiAgICAgICAgICAgIGlmKGguZXF1YWxzKGhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgaC5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFoYW5kbGVycy5zcGxpY2UoaSwxKTsgLy9yZW1vdmUgZnJvbSBhcnJheSBhbmQgZXhpdCBlYWNoIGVhcmx5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgbWVkaWEgcXVlcnkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBtYXRjaFxuICAgICAqXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBtZWRpYSBxdWVyeSBjYW4gYmUgY29uc2lkZXJlZCBhIG1hdGNoLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBtYXRjaGVzIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1xbC5tYXRjaGVzIHx8IHRoaXMuaXNVbmNvbmRpdGlvbmFsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgYWxsIGhhbmRsZXJzIGFuZCB1bmJpbmRzIGV2ZW50c1xuICAgICAqL1xuICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICAgICAgaGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1xbC5yZW1vdmVMaXN0ZW5lcih0aGlzLmxpc3RlbmVyKTtcbiAgICAgICAgdGhpcy5oYW5kbGVycy5sZW5ndGggPSAwOyAvL2NsZWFyIGFycmF5XG4gICAgfSxcblxuICAgIC8qXG4gICAgICAgICogQXNzZXNzZXMgdGhlIHF1ZXJ5LCB0dXJuaW5nIG9uIGFsbCBoYW5kbGVycyBpZiBpdCBtYXRjaGVzLCB0dXJuaW5nIHRoZW0gb2ZmIGlmIGl0IGRvZXNuJ3QgbWF0Y2hcbiAgICAgICAgKi9cbiAgICBhc3Nlc3MgOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFjdGlvbiA9IHRoaXMubWF0Y2hlcygpID8gJ29uJyA6ICdvZmYnO1xuXG4gICAgICAgIGVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24oaGFuZGxlcikge1xuICAgICAgICAgICAgaGFuZGxlclthY3Rpb25dKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWVkaWFRdWVyeTtcbiIsIi8qKlxuICogRGVsZWdhdGUgdG8gaGFuZGxlIGEgbWVkaWEgcXVlcnkgYmVpbmcgbWF0Y2hlZCBhbmQgdW5tYXRjaGVkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLm1hdGNoIGNhbGxiYWNrIGZvciB3aGVuIHRoZSBtZWRpYSBxdWVyeSBpcyBtYXRjaGVkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbb3B0aW9ucy51bm1hdGNoXSBjYWxsYmFjayBmb3Igd2hlbiB0aGUgbWVkaWEgcXVlcnkgaXMgdW5tYXRjaGVkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbb3B0aW9ucy5zZXR1cF0gb25lLXRpbWUgY2FsbGJhY2sgdHJpZ2dlcmVkIHRoZSBmaXJzdCB0aW1lIGEgcXVlcnkgaXMgbWF0Y2hlZFxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kZWZlclNldHVwPWZhbHNlXSBzaG91bGQgdGhlIHNldHVwIGNhbGxiYWNrIGJlIHJ1biBpbW1lZGlhdGVseSwgcmF0aGVyIHRoYW4gZmlyc3QgdGltZSBxdWVyeSBpcyBtYXRjaGVkP1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIFF1ZXJ5SGFuZGxlcihvcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAhb3B0aW9ucy5kZWZlclNldHVwICYmIHRoaXMuc2V0dXAoKTtcbn1cblxuUXVlcnlIYW5kbGVyLnByb3RvdHlwZSA9IHtcblxuICAgIGNvbnN0cnVjdG9yIDogUXVlcnlIYW5kbGVyLFxuXG4gICAgLyoqXG4gICAgICogY29vcmRpbmF0ZXMgc2V0dXAgb2YgdGhlIGhhbmRsZXJcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHNldHVwIDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmKHRoaXMub3B0aW9ucy5zZXR1cCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNldHVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGNvb3JkaW5hdGVzIHNldHVwIGFuZCB0cmlnZ2VyaW5nIG9mIHRoZSBoYW5kbGVyXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBvbiA6IGZ1bmN0aW9uKCkge1xuICAgICAgICAhdGhpcy5pbml0aWFsaXNlZCAmJiB0aGlzLnNldHVwKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5tYXRjaCAmJiB0aGlzLm9wdGlvbnMubWF0Y2goKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogY29vcmRpbmF0ZXMgdGhlIHVubWF0Y2ggZXZlbnQgZm9yIHRoZSBoYW5kbGVyXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBvZmYgOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnVubWF0Y2ggJiYgdGhpcy5vcHRpb25zLnVubWF0Y2goKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogY2FsbGVkIHdoZW4gYSBoYW5kbGVyIGlzIHRvIGJlIGRlc3Ryb3llZC5cbiAgICAgKiBkZWxlZ2F0ZXMgdG8gdGhlIGRlc3Ryb3kgb3IgdW5tYXRjaCBjYWxsYmFja3MsIGRlcGVuZGluZyBvbiBhdmFpbGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBkZXN0cm95IDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kZXN0cm95ID8gdGhpcy5vcHRpb25zLmRlc3Ryb3koKSA6IHRoaXMub2ZmKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIGRldGVybWluZXMgZXF1YWxpdHkgYnkgcmVmZXJlbmNlLlxuICAgICAqIGlmIG9iamVjdCBpcyBzdXBwbGllZCBjb21wYXJlIG9wdGlvbnMsIGlmIGZ1bmN0aW9uLCBjb21wYXJlIG1hdGNoIGNhbGxiYWNrXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge29iamVjdCB8fCBmdW5jdGlvbn0gW3RhcmdldF0gdGhlIHRhcmdldCBmb3IgY29tcGFyaXNvblxuICAgICAqL1xuICAgIGVxdWFscyA6IGZ1bmN0aW9uKHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zID09PSB0YXJnZXQgfHwgdGhpcy5vcHRpb25zLm1hdGNoID09PSB0YXJnZXQ7XG4gICAgfVxuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFF1ZXJ5SGFuZGxlcjtcbiIsInZhciBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaW5kSW5kZXg7XG4iLCJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTIuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvRmluaXRlKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9GaW5pdGUoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gIH1cbiAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgfVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRmluaXRlO1xuIiwidmFyIG1hcCA9IHtcblx0XCIuL2FmXCI6IDEyNixcblx0XCIuL2FmLmpzXCI6IDEyNixcblx0XCIuL2FyXCI6IDEyNyxcblx0XCIuL2FyLWR6XCI6IDEyOCxcblx0XCIuL2FyLWR6LmpzXCI6IDEyOCxcblx0XCIuL2FyLWt3XCI6IDEyOSxcblx0XCIuL2FyLWt3LmpzXCI6IDEyOSxcblx0XCIuL2FyLWx5XCI6IDEzMCxcblx0XCIuL2FyLWx5LmpzXCI6IDEzMCxcblx0XCIuL2FyLW1hXCI6IDEzMSxcblx0XCIuL2FyLW1hLmpzXCI6IDEzMSxcblx0XCIuL2FyLXNhXCI6IDEzMixcblx0XCIuL2FyLXNhLmpzXCI6IDEzMixcblx0XCIuL2FyLXRuXCI6IDEzMyxcblx0XCIuL2FyLXRuLmpzXCI6IDEzMyxcblx0XCIuL2FyLmpzXCI6IDEyNyxcblx0XCIuL2F6XCI6IDEzNCxcblx0XCIuL2F6LmpzXCI6IDEzNCxcblx0XCIuL2JlXCI6IDEzNSxcblx0XCIuL2JlLmpzXCI6IDEzNSxcblx0XCIuL2JnXCI6IDEzNixcblx0XCIuL2JnLmpzXCI6IDEzNixcblx0XCIuL2JtXCI6IDEzNyxcblx0XCIuL2JtLmpzXCI6IDEzNyxcblx0XCIuL2JuXCI6IDEzOCxcblx0XCIuL2JuLmpzXCI6IDEzOCxcblx0XCIuL2JvXCI6IDEzOSxcblx0XCIuL2JvLmpzXCI6IDEzOSxcblx0XCIuL2JyXCI6IDE0MCxcblx0XCIuL2JyLmpzXCI6IDE0MCxcblx0XCIuL2JzXCI6IDE0MSxcblx0XCIuL2JzLmpzXCI6IDE0MSxcblx0XCIuL2NhXCI6IDE0Mixcblx0XCIuL2NhLmpzXCI6IDE0Mixcblx0XCIuL2NzXCI6IDE0Myxcblx0XCIuL2NzLmpzXCI6IDE0Myxcblx0XCIuL2N2XCI6IDE0NCxcblx0XCIuL2N2LmpzXCI6IDE0NCxcblx0XCIuL2N5XCI6IDE0NSxcblx0XCIuL2N5LmpzXCI6IDE0NSxcblx0XCIuL2RhXCI6IDE0Nixcblx0XCIuL2RhLmpzXCI6IDE0Nixcblx0XCIuL2RlXCI6IDE0Nyxcblx0XCIuL2RlLWF0XCI6IDE0OCxcblx0XCIuL2RlLWF0LmpzXCI6IDE0OCxcblx0XCIuL2RlLWNoXCI6IDE0OSxcblx0XCIuL2RlLWNoLmpzXCI6IDE0OSxcblx0XCIuL2RlLmpzXCI6IDE0Nyxcblx0XCIuL2R2XCI6IDE1MCxcblx0XCIuL2R2LmpzXCI6IDE1MCxcblx0XCIuL2VsXCI6IDE1MSxcblx0XCIuL2VsLmpzXCI6IDE1MSxcblx0XCIuL2VuLVNHXCI6IDE1Mixcblx0XCIuL2VuLVNHLmpzXCI6IDE1Mixcblx0XCIuL2VuLWF1XCI6IDE1Myxcblx0XCIuL2VuLWF1LmpzXCI6IDE1Myxcblx0XCIuL2VuLWNhXCI6IDE1NCxcblx0XCIuL2VuLWNhLmpzXCI6IDE1NCxcblx0XCIuL2VuLWdiXCI6IDE1NSxcblx0XCIuL2VuLWdiLmpzXCI6IDE1NSxcblx0XCIuL2VuLWllXCI6IDE1Nixcblx0XCIuL2VuLWllLmpzXCI6IDE1Nixcblx0XCIuL2VuLWlsXCI6IDE1Nyxcblx0XCIuL2VuLWlsLmpzXCI6IDE1Nyxcblx0XCIuL2VuLW56XCI6IDE1OCxcblx0XCIuL2VuLW56LmpzXCI6IDE1OCxcblx0XCIuL2VvXCI6IDE1OSxcblx0XCIuL2VvLmpzXCI6IDE1OSxcblx0XCIuL2VzXCI6IDE2MCxcblx0XCIuL2VzLWRvXCI6IDE2MSxcblx0XCIuL2VzLWRvLmpzXCI6IDE2MSxcblx0XCIuL2VzLXVzXCI6IDE2Mixcblx0XCIuL2VzLXVzLmpzXCI6IDE2Mixcblx0XCIuL2VzLmpzXCI6IDE2MCxcblx0XCIuL2V0XCI6IDE2Myxcblx0XCIuL2V0LmpzXCI6IDE2Myxcblx0XCIuL2V1XCI6IDE2NCxcblx0XCIuL2V1LmpzXCI6IDE2NCxcblx0XCIuL2ZhXCI6IDE2NSxcblx0XCIuL2ZhLmpzXCI6IDE2NSxcblx0XCIuL2ZpXCI6IDE2Nixcblx0XCIuL2ZpLmpzXCI6IDE2Nixcblx0XCIuL2ZvXCI6IDE2Nyxcblx0XCIuL2ZvLmpzXCI6IDE2Nyxcblx0XCIuL2ZyXCI6IDE2OCxcblx0XCIuL2ZyLWNhXCI6IDE2OSxcblx0XCIuL2ZyLWNhLmpzXCI6IDE2OSxcblx0XCIuL2ZyLWNoXCI6IDE3MCxcblx0XCIuL2ZyLWNoLmpzXCI6IDE3MCxcblx0XCIuL2ZyLmpzXCI6IDE2OCxcblx0XCIuL2Z5XCI6IDE3MSxcblx0XCIuL2Z5LmpzXCI6IDE3MSxcblx0XCIuL2dhXCI6IDE3Mixcblx0XCIuL2dhLmpzXCI6IDE3Mixcblx0XCIuL2dkXCI6IDE3Myxcblx0XCIuL2dkLmpzXCI6IDE3Myxcblx0XCIuL2dsXCI6IDE3NCxcblx0XCIuL2dsLmpzXCI6IDE3NCxcblx0XCIuL2dvbS1sYXRuXCI6IDE3NSxcblx0XCIuL2dvbS1sYXRuLmpzXCI6IDE3NSxcblx0XCIuL2d1XCI6IDE3Nixcblx0XCIuL2d1LmpzXCI6IDE3Nixcblx0XCIuL2hlXCI6IDE3Nyxcblx0XCIuL2hlLmpzXCI6IDE3Nyxcblx0XCIuL2hpXCI6IDE3OCxcblx0XCIuL2hpLmpzXCI6IDE3OCxcblx0XCIuL2hyXCI6IDE3OSxcblx0XCIuL2hyLmpzXCI6IDE3OSxcblx0XCIuL2h1XCI6IDE4MCxcblx0XCIuL2h1LmpzXCI6IDE4MCxcblx0XCIuL2h5LWFtXCI6IDE4MSxcblx0XCIuL2h5LWFtLmpzXCI6IDE4MSxcblx0XCIuL2lkXCI6IDE4Mixcblx0XCIuL2lkLmpzXCI6IDE4Mixcblx0XCIuL2lzXCI6IDE4Myxcblx0XCIuL2lzLmpzXCI6IDE4Myxcblx0XCIuL2l0XCI6IDE4NCxcblx0XCIuL2l0LWNoXCI6IDE4NSxcblx0XCIuL2l0LWNoLmpzXCI6IDE4NSxcblx0XCIuL2l0LmpzXCI6IDE4NCxcblx0XCIuL2phXCI6IDE4Nixcblx0XCIuL2phLmpzXCI6IDE4Nixcblx0XCIuL2p2XCI6IDE4Nyxcblx0XCIuL2p2LmpzXCI6IDE4Nyxcblx0XCIuL2thXCI6IDE4OCxcblx0XCIuL2thLmpzXCI6IDE4OCxcblx0XCIuL2trXCI6IDE4OSxcblx0XCIuL2trLmpzXCI6IDE4OSxcblx0XCIuL2ttXCI6IDE5MCxcblx0XCIuL2ttLmpzXCI6IDE5MCxcblx0XCIuL2tuXCI6IDE5MSxcblx0XCIuL2tuLmpzXCI6IDE5MSxcblx0XCIuL2tvXCI6IDE5Mixcblx0XCIuL2tvLmpzXCI6IDE5Mixcblx0XCIuL2t1XCI6IDE5Myxcblx0XCIuL2t1LmpzXCI6IDE5Myxcblx0XCIuL2t5XCI6IDE5NCxcblx0XCIuL2t5LmpzXCI6IDE5NCxcblx0XCIuL2xiXCI6IDE5NSxcblx0XCIuL2xiLmpzXCI6IDE5NSxcblx0XCIuL2xvXCI6IDE5Nixcblx0XCIuL2xvLmpzXCI6IDE5Nixcblx0XCIuL2x0XCI6IDE5Nyxcblx0XCIuL2x0LmpzXCI6IDE5Nyxcblx0XCIuL2x2XCI6IDE5OCxcblx0XCIuL2x2LmpzXCI6IDE5OCxcblx0XCIuL21lXCI6IDE5OSxcblx0XCIuL21lLmpzXCI6IDE5OSxcblx0XCIuL21pXCI6IDIwMCxcblx0XCIuL21pLmpzXCI6IDIwMCxcblx0XCIuL21rXCI6IDIwMSxcblx0XCIuL21rLmpzXCI6IDIwMSxcblx0XCIuL21sXCI6IDIwMixcblx0XCIuL21sLmpzXCI6IDIwMixcblx0XCIuL21uXCI6IDIwMyxcblx0XCIuL21uLmpzXCI6IDIwMyxcblx0XCIuL21yXCI6IDIwNCxcblx0XCIuL21yLmpzXCI6IDIwNCxcblx0XCIuL21zXCI6IDIwNSxcblx0XCIuL21zLW15XCI6IDIwNixcblx0XCIuL21zLW15LmpzXCI6IDIwNixcblx0XCIuL21zLmpzXCI6IDIwNSxcblx0XCIuL210XCI6IDIwNyxcblx0XCIuL210LmpzXCI6IDIwNyxcblx0XCIuL215XCI6IDIwOCxcblx0XCIuL215LmpzXCI6IDIwOCxcblx0XCIuL25iXCI6IDIwOSxcblx0XCIuL25iLmpzXCI6IDIwOSxcblx0XCIuL25lXCI6IDIxMCxcblx0XCIuL25lLmpzXCI6IDIxMCxcblx0XCIuL25sXCI6IDIxMSxcblx0XCIuL25sLWJlXCI6IDIxMixcblx0XCIuL25sLWJlLmpzXCI6IDIxMixcblx0XCIuL25sLmpzXCI6IDIxMSxcblx0XCIuL25uXCI6IDIxMyxcblx0XCIuL25uLmpzXCI6IDIxMyxcblx0XCIuL3BhLWluXCI6IDIxNCxcblx0XCIuL3BhLWluLmpzXCI6IDIxNCxcblx0XCIuL3BsXCI6IDIxNSxcblx0XCIuL3BsLmpzXCI6IDIxNSxcblx0XCIuL3B0XCI6IDIxNixcblx0XCIuL3B0LWJyXCI6IDIxNyxcblx0XCIuL3B0LWJyLmpzXCI6IDIxNyxcblx0XCIuL3B0LmpzXCI6IDIxNixcblx0XCIuL3JvXCI6IDIxOCxcblx0XCIuL3JvLmpzXCI6IDIxOCxcblx0XCIuL3J1XCI6IDIxOSxcblx0XCIuL3J1LmpzXCI6IDIxOSxcblx0XCIuL3NkXCI6IDIyMCxcblx0XCIuL3NkLmpzXCI6IDIyMCxcblx0XCIuL3NlXCI6IDIyMSxcblx0XCIuL3NlLmpzXCI6IDIyMSxcblx0XCIuL3NpXCI6IDIyMixcblx0XCIuL3NpLmpzXCI6IDIyMixcblx0XCIuL3NrXCI6IDIyMyxcblx0XCIuL3NrLmpzXCI6IDIyMyxcblx0XCIuL3NsXCI6IDIyNCxcblx0XCIuL3NsLmpzXCI6IDIyNCxcblx0XCIuL3NxXCI6IDIyNSxcblx0XCIuL3NxLmpzXCI6IDIyNSxcblx0XCIuL3NyXCI6IDIyNixcblx0XCIuL3NyLWN5cmxcIjogMjI3LFxuXHRcIi4vc3ItY3lybC5qc1wiOiAyMjcsXG5cdFwiLi9zci5qc1wiOiAyMjYsXG5cdFwiLi9zc1wiOiAyMjgsXG5cdFwiLi9zcy5qc1wiOiAyMjgsXG5cdFwiLi9zdlwiOiAyMjksXG5cdFwiLi9zdi5qc1wiOiAyMjksXG5cdFwiLi9zd1wiOiAyMzAsXG5cdFwiLi9zdy5qc1wiOiAyMzAsXG5cdFwiLi90YVwiOiAyMzEsXG5cdFwiLi90YS5qc1wiOiAyMzEsXG5cdFwiLi90ZVwiOiAyMzIsXG5cdFwiLi90ZS5qc1wiOiAyMzIsXG5cdFwiLi90ZXRcIjogMjMzLFxuXHRcIi4vdGV0LmpzXCI6IDIzMyxcblx0XCIuL3RnXCI6IDIzNCxcblx0XCIuL3RnLmpzXCI6IDIzNCxcblx0XCIuL3RoXCI6IDIzNSxcblx0XCIuL3RoLmpzXCI6IDIzNSxcblx0XCIuL3RsLXBoXCI6IDIzNixcblx0XCIuL3RsLXBoLmpzXCI6IDIzNixcblx0XCIuL3RsaFwiOiAyMzcsXG5cdFwiLi90bGguanNcIjogMjM3LFxuXHRcIi4vdHJcIjogMjM4LFxuXHRcIi4vdHIuanNcIjogMjM4LFxuXHRcIi4vdHpsXCI6IDIzOSxcblx0XCIuL3R6bC5qc1wiOiAyMzksXG5cdFwiLi90em1cIjogMjQwLFxuXHRcIi4vdHptLWxhdG5cIjogMjQxLFxuXHRcIi4vdHptLWxhdG4uanNcIjogMjQxLFxuXHRcIi4vdHptLmpzXCI6IDI0MCxcblx0XCIuL3VnLWNuXCI6IDI0Mixcblx0XCIuL3VnLWNuLmpzXCI6IDI0Mixcblx0XCIuL3VrXCI6IDI0Myxcblx0XCIuL3VrLmpzXCI6IDI0Myxcblx0XCIuL3VyXCI6IDI0NCxcblx0XCIuL3VyLmpzXCI6IDI0NCxcblx0XCIuL3V6XCI6IDI0NSxcblx0XCIuL3V6LWxhdG5cIjogMjQ2LFxuXHRcIi4vdXotbGF0bi5qc1wiOiAyNDYsXG5cdFwiLi91ei5qc1wiOiAyNDUsXG5cdFwiLi92aVwiOiAyNDcsXG5cdFwiLi92aS5qc1wiOiAyNDcsXG5cdFwiLi94LXBzZXVkb1wiOiAyNDgsXG5cdFwiLi94LXBzZXVkby5qc1wiOiAyNDgsXG5cdFwiLi95b1wiOiAyNDksXG5cdFwiLi95by5qc1wiOiAyNDksXG5cdFwiLi96aC1jblwiOiAyNTAsXG5cdFwiLi96aC1jbi5qc1wiOiAyNTAsXG5cdFwiLi96aC1oa1wiOiAyNTEsXG5cdFwiLi96aC1oay5qc1wiOiAyNTEsXG5cdFwiLi96aC10d1wiOiAyNTIsXG5cdFwiLi96aC10dy5qc1wiOiAyNTJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSAzOTI7IiwiLyohXG4gKiBNYXNvbnJ5IHY0LjIuMlxuICogQ2FzY2FkaW5nIGdyaWQgbGF5b3V0IGxpYnJhcnlcbiAqIGh0dHBzOi8vbWFzb25yeS5kZXNhbmRyby5jb21cbiAqIE1JVCBMaWNlbnNlXG4gKiBieSBEYXZpZCBEZVNhbmRyb1xuICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgLy8gdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uXG4gIC8qIGpzaGludCBzdHJpY3Q6IGZhbHNlICovIC8qZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSwgcmVxdWlyZSAqL1xuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRFxuICAgIGRlZmluZSggW1xuICAgICAgICAnb3V0bGF5ZXIvb3V0bGF5ZXInLFxuICAgICAgICAnZ2V0LXNpemUvZ2V0LXNpemUnXG4gICAgICBdLFxuICAgICAgZmFjdG9yeSApO1xuICB9IGVsc2UgaWYgKCB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzICkge1xuICAgIC8vIENvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KFxuICAgICAgcmVxdWlyZSgnb3V0bGF5ZXInKSxcbiAgICAgIHJlcXVpcmUoJ2dldC1zaXplJylcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIGJyb3dzZXIgZ2xvYmFsXG4gICAgd2luZG93Lk1hc29ucnkgPSBmYWN0b3J5KFxuICAgICAgd2luZG93Lk91dGxheWVyLFxuICAgICAgd2luZG93LmdldFNpemVcbiAgICApO1xuICB9XG5cbn0oIHdpbmRvdywgZnVuY3Rpb24gZmFjdG9yeSggT3V0bGF5ZXIsIGdldFNpemUgKSB7XG5cbid1c2Ugc3RyaWN0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWFzb25yeURlZmluaXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAvLyBjcmVhdGUgYW4gT3V0bGF5ZXIgbGF5b3V0IGNsYXNzXG4gIHZhciBNYXNvbnJ5ID0gT3V0bGF5ZXIuY3JlYXRlKCdtYXNvbnJ5Jyk7XG4gIC8vIGlzRml0V2lkdGggLT4gZml0V2lkdGhcbiAgTWFzb25yeS5jb21wYXRPcHRpb25zLmZpdFdpZHRoID0gJ2lzRml0V2lkdGgnO1xuXG4gIHZhciBwcm90byA9IE1hc29ucnkucHJvdG90eXBlO1xuXG4gIHByb3RvLl9yZXNldExheW91dCA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZ2V0U2l6ZSgpO1xuICAgIHRoaXMuX2dldE1lYXN1cmVtZW50KCAnY29sdW1uV2lkdGgnLCAnb3V0ZXJXaWR0aCcgKTtcbiAgICB0aGlzLl9nZXRNZWFzdXJlbWVudCggJ2d1dHRlcicsICdvdXRlcldpZHRoJyApO1xuICAgIHRoaXMubWVhc3VyZUNvbHVtbnMoKTtcblxuICAgIC8vIHJlc2V0IGNvbHVtbiBZXG4gICAgdGhpcy5jb2xZcyA9IFtdO1xuICAgIGZvciAoIHZhciBpPTA7IGkgPCB0aGlzLmNvbHM7IGkrKyApIHtcbiAgICAgIHRoaXMuY29sWXMucHVzaCggMCApO1xuICAgIH1cblxuICAgIHRoaXMubWF4WSA9IDA7XG4gICAgdGhpcy5ob3Jpem9udGFsQ29sSW5kZXggPSAwO1xuICB9O1xuXG4gIHByb3RvLm1lYXN1cmVDb2x1bW5zID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5nZXRDb250YWluZXJXaWR0aCgpO1xuICAgIC8vIGlmIGNvbHVtbldpZHRoIGlzIDAsIGRlZmF1bHQgdG8gb3V0ZXJXaWR0aCBvZiBmaXJzdCBpdGVtXG4gICAgaWYgKCAhdGhpcy5jb2x1bW5XaWR0aCApIHtcbiAgICAgIHZhciBmaXJzdEl0ZW0gPSB0aGlzLml0ZW1zWzBdO1xuICAgICAgdmFyIGZpcnN0SXRlbUVsZW0gPSBmaXJzdEl0ZW0gJiYgZmlyc3RJdGVtLmVsZW1lbnQ7XG4gICAgICAvLyBjb2x1bW5XaWR0aCBmYWxsIGJhY2sgdG8gaXRlbSBvZiBmaXJzdCBlbGVtZW50XG4gICAgICB0aGlzLmNvbHVtbldpZHRoID0gZmlyc3RJdGVtRWxlbSAmJiBnZXRTaXplKCBmaXJzdEl0ZW1FbGVtICkub3V0ZXJXaWR0aCB8fFxuICAgICAgICAvLyBpZiBmaXJzdCBlbGVtIGhhcyBubyB3aWR0aCwgZGVmYXVsdCB0byBzaXplIG9mIGNvbnRhaW5lclxuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICAgIH1cblxuICAgIHZhciBjb2x1bW5XaWR0aCA9IHRoaXMuY29sdW1uV2lkdGggKz0gdGhpcy5ndXR0ZXI7XG5cbiAgICAvLyBjYWxjdWxhdGUgY29sdW1uc1xuICAgIHZhciBjb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyV2lkdGggKyB0aGlzLmd1dHRlcjtcbiAgICB2YXIgY29scyA9IGNvbnRhaW5lcldpZHRoIC8gY29sdW1uV2lkdGg7XG4gICAgLy8gZml4IHJvdW5kaW5nIGVycm9ycywgdHlwaWNhbGx5IHdpdGggZ3V0dGVyc1xuICAgIHZhciBleGNlc3MgPSBjb2x1bW5XaWR0aCAtIGNvbnRhaW5lcldpZHRoICUgY29sdW1uV2lkdGg7XG4gICAgLy8gaWYgb3ZlcnNob290IGlzIGxlc3MgdGhhbiBhIHBpeGVsLCByb3VuZCB1cCwgb3RoZXJ3aXNlIGZsb29yIGl0XG4gICAgdmFyIG1hdGhNZXRob2QgPSBleGNlc3MgJiYgZXhjZXNzIDwgMSA/ICdyb3VuZCcgOiAnZmxvb3InO1xuICAgIGNvbHMgPSBNYXRoWyBtYXRoTWV0aG9kIF0oIGNvbHMgKTtcbiAgICB0aGlzLmNvbHMgPSBNYXRoLm1heCggY29scywgMSApO1xuICB9O1xuXG4gIHByb3RvLmdldENvbnRhaW5lcldpZHRoID0gZnVuY3Rpb24oKSB7XG4gICAgLy8gY29udGFpbmVyIGlzIHBhcmVudCBpZiBmaXQgd2lkdGhcbiAgICB2YXIgaXNGaXRXaWR0aCA9IHRoaXMuX2dldE9wdGlvbignZml0V2lkdGgnKTtcbiAgICB2YXIgY29udGFpbmVyID0gaXNGaXRXaWR0aCA/IHRoaXMuZWxlbWVudC5wYXJlbnROb2RlIDogdGhpcy5lbGVtZW50O1xuICAgIC8vIGNoZWNrIHRoYXQgdGhpcy5zaXplIGFuZCBzaXplIGFyZSB0aGVyZVxuICAgIC8vIElFOCB0cmlnZ2VycyByZXNpemUgb24gYm9keSBzaXplIGNoYW5nZSwgc28gdGhleSBtaWdodCBub3QgYmVcbiAgICB2YXIgc2l6ZSA9IGdldFNpemUoIGNvbnRhaW5lciApO1xuICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSBzaXplICYmIHNpemUuaW5uZXJXaWR0aDtcbiAgfTtcblxuICBwcm90by5fZ2V0SXRlbUxheW91dFBvc2l0aW9uID0gZnVuY3Rpb24oIGl0ZW0gKSB7XG4gICAgaXRlbS5nZXRTaXplKCk7XG4gICAgLy8gaG93IG1hbnkgY29sdW1ucyBkb2VzIHRoaXMgYnJpY2sgc3BhblxuICAgIHZhciByZW1haW5kZXIgPSBpdGVtLnNpemUub3V0ZXJXaWR0aCAlIHRoaXMuY29sdW1uV2lkdGg7XG4gICAgdmFyIG1hdGhNZXRob2QgPSByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgMSA/ICdyb3VuZCcgOiAnY2VpbCc7XG4gICAgLy8gcm91bmQgaWYgb2ZmIGJ5IDEgcGl4ZWwsIG90aGVyd2lzZSB1c2UgY2VpbFxuICAgIHZhciBjb2xTcGFuID0gTWF0aFsgbWF0aE1ldGhvZCBdKCBpdGVtLnNpemUub3V0ZXJXaWR0aCAvIHRoaXMuY29sdW1uV2lkdGggKTtcbiAgICBjb2xTcGFuID0gTWF0aC5taW4oIGNvbFNwYW4sIHRoaXMuY29scyApO1xuICAgIC8vIHVzZSBob3Jpem9udGFsIG9yIHRvcCBjb2x1bW4gcG9zaXRpb25cbiAgICB2YXIgY29sUG9zTWV0aG9kID0gdGhpcy5vcHRpb25zLmhvcml6b250YWxPcmRlciA/XG4gICAgICAnX2dldEhvcml6b250YWxDb2xQb3NpdGlvbicgOiAnX2dldFRvcENvbFBvc2l0aW9uJztcbiAgICB2YXIgY29sUG9zaXRpb24gPSB0aGlzWyBjb2xQb3NNZXRob2QgXSggY29sU3BhbiwgaXRlbSApO1xuICAgIC8vIHBvc2l0aW9uIHRoZSBicmlja1xuICAgIHZhciBwb3NpdGlvbiA9IHtcbiAgICAgIHg6IHRoaXMuY29sdW1uV2lkdGggKiBjb2xQb3NpdGlvbi5jb2wsXG4gICAgICB5OiBjb2xQb3NpdGlvbi55XG4gICAgfTtcbiAgICAvLyBhcHBseSBzZXRIZWlnaHQgdG8gbmVjZXNzYXJ5IGNvbHVtbnNcbiAgICB2YXIgc2V0SGVpZ2h0ID0gY29sUG9zaXRpb24ueSArIGl0ZW0uc2l6ZS5vdXRlckhlaWdodDtcbiAgICB2YXIgc2V0TWF4ID0gY29sU3BhbiArIGNvbFBvc2l0aW9uLmNvbDtcbiAgICBmb3IgKCB2YXIgaSA9IGNvbFBvc2l0aW9uLmNvbDsgaSA8IHNldE1heDsgaSsrICkge1xuICAgICAgdGhpcy5jb2xZc1tpXSA9IHNldEhlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH07XG5cbiAgcHJvdG8uX2dldFRvcENvbFBvc2l0aW9uID0gZnVuY3Rpb24oIGNvbFNwYW4gKSB7XG4gICAgdmFyIGNvbEdyb3VwID0gdGhpcy5fZ2V0VG9wQ29sR3JvdXAoIGNvbFNwYW4gKTtcbiAgICAvLyBnZXQgdGhlIG1pbmltdW0gWSB2YWx1ZSBmcm9tIHRoZSBjb2x1bW5zXG4gICAgdmFyIG1pbmltdW1ZID0gTWF0aC5taW4uYXBwbHkoIE1hdGgsIGNvbEdyb3VwICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sOiBjb2xHcm91cC5pbmRleE9mKCBtaW5pbXVtWSApLFxuICAgICAgeTogbWluaW11bVksXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGNvbFNwYW4gLSBudW1iZXIgb2YgY29sdW1ucyB0aGUgZWxlbWVudCBzcGFuc1xuICAgKiBAcmV0dXJucyB7QXJyYXl9IGNvbEdyb3VwXG4gICAqL1xuICBwcm90by5fZ2V0VG9wQ29sR3JvdXAgPSBmdW5jdGlvbiggY29sU3BhbiApIHtcbiAgICBpZiAoIGNvbFNwYW4gPCAyICkge1xuICAgICAgLy8gaWYgYnJpY2sgc3BhbnMgb25seSBvbmUgY29sdW1uLCB1c2UgYWxsIHRoZSBjb2x1bW4gWXNcbiAgICAgIHJldHVybiB0aGlzLmNvbFlzO1xuICAgIH1cblxuICAgIHZhciBjb2xHcm91cCA9IFtdO1xuICAgIC8vIGhvdyBtYW55IGRpZmZlcmVudCBwbGFjZXMgY291bGQgdGhpcyBicmljayBmaXQgaG9yaXpvbnRhbGx5XG4gICAgdmFyIGdyb3VwQ291bnQgPSB0aGlzLmNvbHMgKyAxIC0gY29sU3BhbjtcbiAgICAvLyBmb3IgZWFjaCBncm91cCBwb3RlbnRpYWwgaG9yaXpvbnRhbCBwb3NpdGlvblxuICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGdyb3VwQ291bnQ7IGkrKyApIHtcbiAgICAgIGNvbEdyb3VwW2ldID0gdGhpcy5fZ2V0Q29sR3JvdXBZKCBpLCBjb2xTcGFuICk7XG4gICAgfVxuICAgIHJldHVybiBjb2xHcm91cDtcbiAgfTtcblxuICBwcm90by5fZ2V0Q29sR3JvdXBZID0gZnVuY3Rpb24oIGNvbCwgY29sU3BhbiApIHtcbiAgICBpZiAoIGNvbFNwYW4gPCAyICkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sWXNbIGNvbCBdO1xuICAgIH1cbiAgICAvLyBtYWtlIGFuIGFycmF5IG9mIGNvbFkgdmFsdWVzIGZvciB0aGF0IG9uZSBncm91cFxuICAgIHZhciBncm91cENvbFlzID0gdGhpcy5jb2xZcy5zbGljZSggY29sLCBjb2wgKyBjb2xTcGFuICk7XG4gICAgLy8gYW5kIGdldCB0aGUgbWF4IHZhbHVlIG9mIHRoZSBhcnJheVxuICAgIHJldHVybiBNYXRoLm1heC5hcHBseSggTWF0aCwgZ3JvdXBDb2xZcyApO1xuICB9O1xuXG4gIC8vIGdldCBjb2x1bW4gcG9zaXRpb24gYmFzZWQgb24gaG9yaXpvbnRhbCBpbmRleC4gIzg3M1xuICBwcm90by5fZ2V0SG9yaXpvbnRhbENvbFBvc2l0aW9uID0gZnVuY3Rpb24oIGNvbFNwYW4sIGl0ZW0gKSB7XG4gICAgdmFyIGNvbCA9IHRoaXMuaG9yaXpvbnRhbENvbEluZGV4ICUgdGhpcy5jb2xzO1xuICAgIHZhciBpc092ZXIgPSBjb2xTcGFuID4gMSAmJiBjb2wgKyBjb2xTcGFuID4gdGhpcy5jb2xzO1xuICAgIC8vIHNoaWZ0IHRvIG5leHQgcm93IGlmIGl0ZW0gY2FuJ3QgZml0IG9uIGN1cnJlbnQgcm93XG4gICAgY29sID0gaXNPdmVyID8gMCA6IGNvbDtcbiAgICAvLyBkb24ndCBsZXQgemVyby1zaXplIGl0ZW1zIHRha2UgdXAgc3BhY2VcbiAgICB2YXIgaGFzU2l6ZSA9IGl0ZW0uc2l6ZS5vdXRlcldpZHRoICYmIGl0ZW0uc2l6ZS5vdXRlckhlaWdodDtcbiAgICB0aGlzLmhvcml6b250YWxDb2xJbmRleCA9IGhhc1NpemUgPyBjb2wgKyBjb2xTcGFuIDogdGhpcy5ob3Jpem9udGFsQ29sSW5kZXg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sOiBjb2wsXG4gICAgICB5OiB0aGlzLl9nZXRDb2xHcm91cFkoIGNvbCwgY29sU3BhbiApLFxuICAgIH07XG4gIH07XG5cbiAgcHJvdG8uX21hbmFnZVN0YW1wID0gZnVuY3Rpb24oIHN0YW1wICkge1xuICAgIHZhciBzdGFtcFNpemUgPSBnZXRTaXplKCBzdGFtcCApO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLl9nZXRFbGVtZW50T2Zmc2V0KCBzdGFtcCApO1xuICAgIC8vIGdldCB0aGUgY29sdW1ucyB0aGF0IHRoaXMgc3RhbXAgYWZmZWN0c1xuICAgIHZhciBpc09yaWdpbkxlZnQgPSB0aGlzLl9nZXRPcHRpb24oJ29yaWdpbkxlZnQnKTtcbiAgICB2YXIgZmlyc3RYID0gaXNPcmlnaW5MZWZ0ID8gb2Zmc2V0LmxlZnQgOiBvZmZzZXQucmlnaHQ7XG4gICAgdmFyIGxhc3RYID0gZmlyc3RYICsgc3RhbXBTaXplLm91dGVyV2lkdGg7XG4gICAgdmFyIGZpcnN0Q29sID0gTWF0aC5mbG9vciggZmlyc3RYIC8gdGhpcy5jb2x1bW5XaWR0aCApO1xuICAgIGZpcnN0Q29sID0gTWF0aC5tYXgoIDAsIGZpcnN0Q29sICk7XG4gICAgdmFyIGxhc3RDb2wgPSBNYXRoLmZsb29yKCBsYXN0WCAvIHRoaXMuY29sdW1uV2lkdGggKTtcbiAgICAvLyBsYXN0Q29sIHNob3VsZCBub3QgZ28gb3ZlciBpZiBtdWx0aXBsZSBvZiBjb2x1bW5XaWR0aCAjNDI1XG4gICAgbGFzdENvbCAtPSBsYXN0WCAlIHRoaXMuY29sdW1uV2lkdGggPyAwIDogMTtcbiAgICBsYXN0Q29sID0gTWF0aC5taW4oIHRoaXMuY29scyAtIDEsIGxhc3RDb2wgKTtcbiAgICAvLyBzZXQgY29sWXMgdG8gYm90dG9tIG9mIHRoZSBzdGFtcFxuXG4gICAgdmFyIGlzT3JpZ2luVG9wID0gdGhpcy5fZ2V0T3B0aW9uKCdvcmlnaW5Ub3AnKTtcbiAgICB2YXIgc3RhbXBNYXhZID0gKCBpc09yaWdpblRvcCA/IG9mZnNldC50b3AgOiBvZmZzZXQuYm90dG9tICkgK1xuICAgICAgc3RhbXBTaXplLm91dGVySGVpZ2h0O1xuICAgIGZvciAoIHZhciBpID0gZmlyc3RDb2w7IGkgPD0gbGFzdENvbDsgaSsrICkge1xuICAgICAgdGhpcy5jb2xZc1tpXSA9IE1hdGgubWF4KCBzdGFtcE1heFksIHRoaXMuY29sWXNbaV0gKTtcbiAgICB9XG4gIH07XG5cbiAgcHJvdG8uX2dldENvbnRhaW5lclNpemUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLm1heFkgPSBNYXRoLm1heC5hcHBseSggTWF0aCwgdGhpcy5jb2xZcyApO1xuICAgIHZhciBzaXplID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLm1heFlcbiAgICB9O1xuXG4gICAgaWYgKCB0aGlzLl9nZXRPcHRpb24oJ2ZpdFdpZHRoJykgKSB7XG4gICAgICBzaXplLndpZHRoID0gdGhpcy5fZ2V0Q29udGFpbmVyRml0V2lkdGgoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfTtcblxuICBwcm90by5fZ2V0Q29udGFpbmVyRml0V2lkdGggPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdW51c2VkQ29scyA9IDA7XG4gICAgLy8gY291bnQgdW51c2VkIGNvbHVtbnNcbiAgICB2YXIgaSA9IHRoaXMuY29scztcbiAgICB3aGlsZSAoIC0taSApIHtcbiAgICAgIGlmICggdGhpcy5jb2xZc1tpXSAhPT0gMCApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB1bnVzZWRDb2xzKys7XG4gICAgfVxuICAgIC8vIGZpdCBjb250YWluZXIgdG8gY29sdW1ucyB0aGF0IGhhdmUgYmVlbiB1c2VkXG4gICAgcmV0dXJuICggdGhpcy5jb2xzIC0gdW51c2VkQ29scyApICogdGhpcy5jb2x1bW5XaWR0aCAtIHRoaXMuZ3V0dGVyO1xuICB9O1xuXG4gIHByb3RvLm5lZWRzUmVzaXplTGF5b3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHByZXZpb3VzV2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICAgIHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICByZXR1cm4gcHJldmlvdXNXaWR0aCAhPSB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICB9O1xuXG4gIHJldHVybiBNYXNvbnJ5O1xuXG59KSk7XG4iLCIvKiFcbiAqIE91dGxheWVyIHYyLjEuMVxuICogdGhlIGJyYWlucyBhbmQgZ3V0cyBvZiBhIGxheW91dCBsaWJyYXJ5XG4gKiBNSVQgbGljZW5zZVxuICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgJ3VzZSBzdHJpY3QnO1xuICAvLyB1bml2ZXJzYWwgbW9kdWxlIGRlZmluaXRpb25cbiAgLyoganNoaW50IHN0cmljdDogZmFsc2UgKi8gLyogZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSwgcmVxdWlyZSAqL1xuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRCAtIFJlcXVpcmVKU1xuICAgIGRlZmluZSggW1xuICAgICAgICAnZXYtZW1pdHRlci9ldi1lbWl0dGVyJyxcbiAgICAgICAgJ2dldC1zaXplL2dldC1zaXplJyxcbiAgICAgICAgJ2Zpenp5LXVpLXV0aWxzL3V0aWxzJyxcbiAgICAgICAgJy4vaXRlbSdcbiAgICAgIF0sXG4gICAgICBmdW5jdGlvbiggRXZFbWl0dGVyLCBnZXRTaXplLCB1dGlscywgSXRlbSApIHtcbiAgICAgICAgcmV0dXJuIGZhY3RvcnkoIHdpbmRvdywgRXZFbWl0dGVyLCBnZXRTaXplLCB1dGlscywgSXRlbSk7XG4gICAgICB9XG4gICAgKTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KUyAtIEJyb3dzZXJpZnksIFdlYnBhY2tcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoXG4gICAgICB3aW5kb3csXG4gICAgICByZXF1aXJlKCdldi1lbWl0dGVyJyksXG4gICAgICByZXF1aXJlKCdnZXQtc2l6ZScpLFxuICAgICAgcmVxdWlyZSgnZml6enktdWktdXRpbHMnKSxcbiAgICAgIHJlcXVpcmUoJy4vaXRlbScpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBicm93c2VyIGdsb2JhbFxuICAgIHdpbmRvdy5PdXRsYXllciA9IGZhY3RvcnkoXG4gICAgICB3aW5kb3csXG4gICAgICB3aW5kb3cuRXZFbWl0dGVyLFxuICAgICAgd2luZG93LmdldFNpemUsXG4gICAgICB3aW5kb3cuZml6enlVSVV0aWxzLFxuICAgICAgd2luZG93Lk91dGxheWVyLkl0ZW1cbiAgICApO1xuICB9XG5cbn0oIHdpbmRvdywgZnVuY3Rpb24gZmFjdG9yeSggd2luZG93LCBFdkVtaXR0ZXIsIGdldFNpemUsIHV0aWxzLCBJdGVtICkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyAtLS0tLSB2YXJzIC0tLS0tIC8vXG5cbnZhciBjb25zb2xlID0gd2luZG93LmNvbnNvbGU7XG52YXIgalF1ZXJ5ID0gd2luZG93LmpRdWVyeTtcbnZhciBub29wID0gZnVuY3Rpb24oKSB7fTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT3V0bGF5ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLy8gZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXJzXG52YXIgR1VJRCA9IDA7XG4vLyBpbnRlcm5hbCBzdG9yZSBvZiBhbGwgT3V0bGF5ZXIgaW50YW5jZXNcbnZhciBpbnN0YW5jZXMgPSB7fTtcblxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCwgU3RyaW5nfSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIE91dGxheWVyKCBlbGVtZW50LCBvcHRpb25zICkge1xuICB2YXIgcXVlcnlFbGVtZW50ID0gdXRpbHMuZ2V0UXVlcnlFbGVtZW50KCBlbGVtZW50ICk7XG4gIGlmICggIXF1ZXJ5RWxlbWVudCApIHtcbiAgICBpZiAoIGNvbnNvbGUgKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCAnQmFkIGVsZW1lbnQgZm9yICcgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWVzcGFjZSArXG4gICAgICAgICc6ICcgKyAoIHF1ZXJ5RWxlbWVudCB8fCBlbGVtZW50ICkgKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMuZWxlbWVudCA9IHF1ZXJ5RWxlbWVudDtcbiAgLy8gYWRkIGpRdWVyeVxuICBpZiAoIGpRdWVyeSApIHtcbiAgICB0aGlzLiRlbGVtZW50ID0galF1ZXJ5KCB0aGlzLmVsZW1lbnQgKTtcbiAgfVxuXG4gIC8vIG9wdGlvbnNcbiAgdGhpcy5vcHRpb25zID0gdXRpbHMuZXh0ZW5kKCB7fSwgdGhpcy5jb25zdHJ1Y3Rvci5kZWZhdWx0cyApO1xuICB0aGlzLm9wdGlvbiggb3B0aW9ucyApO1xuXG4gIC8vIGFkZCBpZCBmb3IgT3V0bGF5ZXIuZ2V0RnJvbUVsZW1lbnRcbiAgdmFyIGlkID0gKytHVUlEO1xuICB0aGlzLmVsZW1lbnQub3V0bGF5ZXJHVUlEID0gaWQ7IC8vIGV4cGFuZG9cbiAgaW5zdGFuY2VzWyBpZCBdID0gdGhpczsgLy8gYXNzb2NpYXRlIHZpYSBpZFxuXG4gIC8vIGtpY2sgaXQgb2ZmXG4gIHRoaXMuX2NyZWF0ZSgpO1xuXG4gIHZhciBpc0luaXRMYXlvdXQgPSB0aGlzLl9nZXRPcHRpb24oJ2luaXRMYXlvdXQnKTtcbiAgaWYgKCBpc0luaXRMYXlvdXQgKSB7XG4gICAgdGhpcy5sYXlvdXQoKTtcbiAgfVxufVxuXG4vLyBzZXR0aW5ncyBhcmUgZm9yIGludGVybmFsIHVzZSBvbmx5XG5PdXRsYXllci5uYW1lc3BhY2UgPSAnb3V0bGF5ZXInO1xuT3V0bGF5ZXIuSXRlbSA9IEl0ZW07XG5cbi8vIGRlZmF1bHQgb3B0aW9uc1xuT3V0bGF5ZXIuZGVmYXVsdHMgPSB7XG4gIGNvbnRhaW5lclN0eWxlOiB7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgfSxcbiAgaW5pdExheW91dDogdHJ1ZSxcbiAgb3JpZ2luTGVmdDogdHJ1ZSxcbiAgb3JpZ2luVG9wOiB0cnVlLFxuICByZXNpemU6IHRydWUsXG4gIHJlc2l6ZUNvbnRhaW5lcjogdHJ1ZSxcbiAgLy8gaXRlbSBvcHRpb25zXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogJzAuNHMnLFxuICBoaWRkZW5TdHlsZToge1xuICAgIG9wYWNpdHk6IDAsXG4gICAgdHJhbnNmb3JtOiAnc2NhbGUoMC4wMDEpJ1xuICB9LFxuICB2aXNpYmxlU3R5bGU6IHtcbiAgICBvcGFjaXR5OiAxLFxuICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEpJ1xuICB9XG59O1xuXG52YXIgcHJvdG8gPSBPdXRsYXllci5wcm90b3R5cGU7XG4vLyBpbmhlcml0IEV2RW1pdHRlclxudXRpbHMuZXh0ZW5kKCBwcm90bywgRXZFbWl0dGVyLnByb3RvdHlwZSApO1xuXG4vKipcbiAqIHNldCBvcHRpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0c1xuICovXG5wcm90by5vcHRpb24gPSBmdW5jdGlvbiggb3B0cyApIHtcbiAgdXRpbHMuZXh0ZW5kKCB0aGlzLm9wdGlvbnMsIG9wdHMgKTtcbn07XG5cbi8qKlxuICogZ2V0IGJhY2t3YXJkcyBjb21wYXRpYmxlIG9wdGlvbiB2YWx1ZSwgY2hlY2sgb2xkIG5hbWVcbiAqL1xucHJvdG8uX2dldE9wdGlvbiA9IGZ1bmN0aW9uKCBvcHRpb24gKSB7XG4gIHZhciBvbGRPcHRpb24gPSB0aGlzLmNvbnN0cnVjdG9yLmNvbXBhdE9wdGlvbnNbIG9wdGlvbiBdO1xuICByZXR1cm4gb2xkT3B0aW9uICYmIHRoaXMub3B0aW9uc1sgb2xkT3B0aW9uIF0gIT09IHVuZGVmaW5lZCA/XG4gICAgdGhpcy5vcHRpb25zWyBvbGRPcHRpb24gXSA6IHRoaXMub3B0aW9uc1sgb3B0aW9uIF07XG59O1xuXG5PdXRsYXllci5jb21wYXRPcHRpb25zID0ge1xuICAvLyBjdXJyZW50TmFtZTogb2xkTmFtZVxuICBpbml0TGF5b3V0OiAnaXNJbml0TGF5b3V0JyxcbiAgaG9yaXpvbnRhbDogJ2lzSG9yaXpvbnRhbCcsXG4gIGxheW91dEluc3RhbnQ6ICdpc0xheW91dEluc3RhbnQnLFxuICBvcmlnaW5MZWZ0OiAnaXNPcmlnaW5MZWZ0JyxcbiAgb3JpZ2luVG9wOiAnaXNPcmlnaW5Ub3AnLFxuICByZXNpemU6ICdpc1Jlc2l6ZUJvdW5kJyxcbiAgcmVzaXplQ29udGFpbmVyOiAnaXNSZXNpemluZ0NvbnRhaW5lcidcbn07XG5cbnByb3RvLl9jcmVhdGUgPSBmdW5jdGlvbigpIHtcbiAgLy8gZ2V0IGl0ZW1zIGZyb20gY2hpbGRyZW5cbiAgdGhpcy5yZWxvYWRJdGVtcygpO1xuICAvLyBlbGVtZW50cyB0aGF0IGFmZmVjdCBsYXlvdXQsIGJ1dCBhcmUgbm90IGxhaWQgb3V0XG4gIHRoaXMuc3RhbXBzID0gW107XG4gIHRoaXMuc3RhbXAoIHRoaXMub3B0aW9ucy5zdGFtcCApO1xuICAvLyBzZXQgY29udGFpbmVyIHN0eWxlXG4gIHV0aWxzLmV4dGVuZCggdGhpcy5lbGVtZW50LnN0eWxlLCB0aGlzLm9wdGlvbnMuY29udGFpbmVyU3R5bGUgKTtcblxuICAvLyBiaW5kIHJlc2l6ZSBtZXRob2RcbiAgdmFyIGNhbkJpbmRSZXNpemUgPSB0aGlzLl9nZXRPcHRpb24oJ3Jlc2l6ZScpO1xuICBpZiAoIGNhbkJpbmRSZXNpemUgKSB7XG4gICAgdGhpcy5iaW5kUmVzaXplKCk7XG4gIH1cbn07XG5cbi8vIGdvZXMgdGhyb3VnaCBhbGwgY2hpbGRyZW4gYWdhaW4gYW5kIGdldHMgYnJpY2tzIGluIHByb3BlciBvcmRlclxucHJvdG8ucmVsb2FkSXRlbXMgPSBmdW5jdGlvbigpIHtcbiAgLy8gY29sbGVjdGlvbiBvZiBpdGVtIGVsZW1lbnRzXG4gIHRoaXMuaXRlbXMgPSB0aGlzLl9pdGVtaXplKCB0aGlzLmVsZW1lbnQuY2hpbGRyZW4gKTtcbn07XG5cblxuLyoqXG4gKiB0dXJuIGVsZW1lbnRzIGludG8gT3V0bGF5ZXIuSXRlbXMgdG8gYmUgdXNlZCBpbiBsYXlvdXRcbiAqIEBwYXJhbSB7QXJyYXkgb3IgTm9kZUxpc3Qgb3IgSFRNTEVsZW1lbnR9IGVsZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGl0ZW1zIC0gY29sbGVjdGlvbiBvZiBuZXcgT3V0bGF5ZXIgSXRlbXNcbiAqL1xucHJvdG8uX2l0ZW1pemUgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG5cbiAgdmFyIGl0ZW1FbGVtcyA9IHRoaXMuX2ZpbHRlckZpbmRJdGVtRWxlbWVudHMoIGVsZW1zICk7XG4gIHZhciBJdGVtID0gdGhpcy5jb25zdHJ1Y3Rvci5JdGVtO1xuXG4gIC8vIGNyZWF0ZSBuZXcgT3V0bGF5ZXIgSXRlbXMgZm9yIGNvbGxlY3Rpb25cbiAgdmFyIGl0ZW1zID0gW107XG4gIGZvciAoIHZhciBpPTA7IGkgPCBpdGVtRWxlbXMubGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIGVsZW0gPSBpdGVtRWxlbXNbaV07XG4gICAgdmFyIGl0ZW0gPSBuZXcgSXRlbSggZWxlbSwgdGhpcyApO1xuICAgIGl0ZW1zLnB1c2goIGl0ZW0gKTtcbiAgfVxuXG4gIHJldHVybiBpdGVtcztcbn07XG5cbi8qKlxuICogZ2V0IGl0ZW0gZWxlbWVudHMgdG8gYmUgdXNlZCBpbiBsYXlvdXRcbiAqIEBwYXJhbSB7QXJyYXkgb3IgTm9kZUxpc3Qgb3IgSFRNTEVsZW1lbnR9IGVsZW1zXG4gKiBAcmV0dXJucyB7QXJyYXl9IGl0ZW1zIC0gaXRlbSBlbGVtZW50c1xuICovXG5wcm90by5fZmlsdGVyRmluZEl0ZW1FbGVtZW50cyA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgcmV0dXJuIHV0aWxzLmZpbHRlckZpbmRFbGVtZW50cyggZWxlbXMsIHRoaXMub3B0aW9ucy5pdGVtU2VsZWN0b3IgKTtcbn07XG5cbi8qKlxuICogZ2V0dGVyIG1ldGhvZCBmb3IgZ2V0dGluZyBpdGVtIGVsZW1lbnRzXG4gKiBAcmV0dXJucyB7QXJyYXl9IGVsZW1zIC0gY29sbGVjdGlvbiBvZiBpdGVtIGVsZW1lbnRzXG4gKi9cbnByb3RvLmdldEl0ZW1FbGVtZW50cyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoIGZ1bmN0aW9uKCBpdGVtICkge1xuICAgIHJldHVybiBpdGVtLmVsZW1lbnQ7XG4gIH0pO1xufTtcblxuLy8gLS0tLS0gaW5pdCAmIGxheW91dCAtLS0tLSAvL1xuXG4vKipcbiAqIGxheXMgb3V0IGFsbCBpdGVtc1xuICovXG5wcm90by5sYXlvdXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fcmVzZXRMYXlvdXQoKTtcbiAgdGhpcy5fbWFuYWdlU3RhbXBzKCk7XG5cbiAgLy8gZG9uJ3QgYW5pbWF0ZSBmaXJzdCBsYXlvdXRcbiAgdmFyIGxheW91dEluc3RhbnQgPSB0aGlzLl9nZXRPcHRpb24oJ2xheW91dEluc3RhbnQnKTtcbiAgdmFyIGlzSW5zdGFudCA9IGxheW91dEluc3RhbnQgIT09IHVuZGVmaW5lZCA/XG4gICAgbGF5b3V0SW5zdGFudCA6ICF0aGlzLl9pc0xheW91dEluaXRlZDtcbiAgdGhpcy5sYXlvdXRJdGVtcyggdGhpcy5pdGVtcywgaXNJbnN0YW50ICk7XG5cbiAgLy8gZmxhZyBmb3IgaW5pdGFsaXplZFxuICB0aGlzLl9pc0xheW91dEluaXRlZCA9IHRydWU7XG59O1xuXG4vLyBfaW5pdCBpcyBhbGlhcyBmb3IgbGF5b3V0XG5wcm90by5faW5pdCA9IHByb3RvLmxheW91dDtcblxuLyoqXG4gKiBsb2dpYyBiZWZvcmUgYW55IG5ldyBsYXlvdXRcbiAqL1xucHJvdG8uX3Jlc2V0TGF5b3V0ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuZ2V0U2l6ZSgpO1xufTtcblxuXG5wcm90by5nZXRTaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuc2l6ZSA9IGdldFNpemUoIHRoaXMuZWxlbWVudCApO1xufTtcblxuLyoqXG4gKiBnZXQgbWVhc3VyZW1lbnQgZnJvbSBvcHRpb24sIGZvciBjb2x1bW5XaWR0aCwgcm93SGVpZ2h0LCBndXR0ZXJcbiAqIGlmIG9wdGlvbiBpcyBTdHJpbmcgLT4gZ2V0IGVsZW1lbnQgZnJvbSBzZWxlY3RvciBzdHJpbmcsICYgZ2V0IHNpemUgb2YgZWxlbWVudFxuICogaWYgb3B0aW9uIGlzIEVsZW1lbnQgLT4gZ2V0IHNpemUgb2YgZWxlbWVudFxuICogZWxzZSB1c2Ugb3B0aW9uIGFzIGEgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lYXN1cmVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ30gc2l6ZSAtIHdpZHRoIG9yIGhlaWdodFxuICogQHByaXZhdGVcbiAqL1xucHJvdG8uX2dldE1lYXN1cmVtZW50ID0gZnVuY3Rpb24oIG1lYXN1cmVtZW50LCBzaXplICkge1xuICB2YXIgb3B0aW9uID0gdGhpcy5vcHRpb25zWyBtZWFzdXJlbWVudCBdO1xuICB2YXIgZWxlbTtcbiAgaWYgKCAhb3B0aW9uICkge1xuICAgIC8vIGRlZmF1bHQgdG8gMFxuICAgIHRoaXNbIG1lYXN1cmVtZW50IF0gPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBvcHRpb24gYXMgYW4gZWxlbWVudFxuICAgIGlmICggdHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJyApIHtcbiAgICAgIGVsZW0gPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3Rvciggb3B0aW9uICk7XG4gICAgfSBlbHNlIGlmICggb3B0aW9uIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgKSB7XG4gICAgICBlbGVtID0gb3B0aW9uO1xuICAgIH1cbiAgICAvLyB1c2Ugc2l6ZSBvZiBlbGVtZW50LCBpZiBlbGVtZW50XG4gICAgdGhpc1sgbWVhc3VyZW1lbnQgXSA9IGVsZW0gPyBnZXRTaXplKCBlbGVtIClbIHNpemUgXSA6IG9wdGlvbjtcbiAgfVxufTtcblxuLyoqXG4gKiBsYXlvdXQgYSBjb2xsZWN0aW9uIG9mIGl0ZW0gZWxlbWVudHNcbiAqIEBhcGkgcHVibGljXG4gKi9cbnByb3RvLmxheW91dEl0ZW1zID0gZnVuY3Rpb24oIGl0ZW1zLCBpc0luc3RhbnQgKSB7XG4gIGl0ZW1zID0gdGhpcy5fZ2V0SXRlbXNGb3JMYXlvdXQoIGl0ZW1zICk7XG5cbiAgdGhpcy5fbGF5b3V0SXRlbXMoIGl0ZW1zLCBpc0luc3RhbnQgKTtcblxuICB0aGlzLl9wb3N0TGF5b3V0KCk7XG59O1xuXG4vKipcbiAqIGdldCB0aGUgaXRlbXMgdG8gYmUgbGFpZCBvdXRcbiAqIHlvdSBtYXkgd2FudCB0byBza2lwIG92ZXIgc29tZSBpdGVtc1xuICogQHBhcmFtIHtBcnJheX0gaXRlbXNcbiAqIEByZXR1cm5zIHtBcnJheX0gaXRlbXNcbiAqL1xucHJvdG8uX2dldEl0ZW1zRm9yTGF5b3V0ID0gZnVuY3Rpb24oIGl0ZW1zICkge1xuICByZXR1cm4gaXRlbXMuZmlsdGVyKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICByZXR1cm4gIWl0ZW0uaXNJZ25vcmVkO1xuICB9KTtcbn07XG5cbi8qKlxuICogbGF5b3V0IGl0ZW1zXG4gKiBAcGFyYW0ge0FycmF5fSBpdGVtc1xuICogQHBhcmFtIHtCb29sZWFufSBpc0luc3RhbnRcbiAqL1xucHJvdG8uX2xheW91dEl0ZW1zID0gZnVuY3Rpb24oIGl0ZW1zLCBpc0luc3RhbnQgKSB7XG4gIHRoaXMuX2VtaXRDb21wbGV0ZU9uSXRlbXMoICdsYXlvdXQnLCBpdGVtcyApO1xuXG4gIGlmICggIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGggKSB7XG4gICAgLy8gbm8gaXRlbXMsIGVtaXQgZXZlbnQgd2l0aCBlbXB0eSBhcnJheVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBxdWV1ZSA9IFtdO1xuXG4gIGl0ZW1zLmZvckVhY2goIGZ1bmN0aW9uKCBpdGVtICkge1xuICAgIC8vIGdldCB4L3kgb2JqZWN0IGZyb20gbWV0aG9kXG4gICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fZ2V0SXRlbUxheW91dFBvc2l0aW9uKCBpdGVtICk7XG4gICAgLy8gZW5xdWV1ZVxuICAgIHBvc2l0aW9uLml0ZW0gPSBpdGVtO1xuICAgIHBvc2l0aW9uLmlzSW5zdGFudCA9IGlzSW5zdGFudCB8fCBpdGVtLmlzTGF5b3V0SW5zdGFudDtcbiAgICBxdWV1ZS5wdXNoKCBwb3NpdGlvbiApO1xuICB9LCB0aGlzICk7XG5cbiAgdGhpcy5fcHJvY2Vzc0xheW91dFF1ZXVlKCBxdWV1ZSApO1xufTtcblxuLyoqXG4gKiBnZXQgaXRlbSBsYXlvdXQgcG9zaXRpb25cbiAqIEBwYXJhbSB7T3V0bGF5ZXIuSXRlbX0gaXRlbVxuICogQHJldHVybnMge09iamVjdH0geCBhbmQgeSBwb3NpdGlvblxuICovXG5wcm90by5fZ2V0SXRlbUxheW91dFBvc2l0aW9uID0gZnVuY3Rpb24oIC8qIGl0ZW0gKi8gKSB7XG4gIHJldHVybiB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG59O1xuXG4vKipcbiAqIGl0ZXJhdGUgb3ZlciBhcnJheSBhbmQgcG9zaXRpb24gZWFjaCBpdGVtXG4gKiBSZWFzb24gYmVpbmcgLSBzZXBhcmF0aW5nIHRoaXMgbG9naWMgcHJldmVudHMgJ2xheW91dCBpbnZhbGlkYXRpb24nXG4gKiB0aHggQHBhdWxfaXJpc2hcbiAqIEBwYXJhbSB7QXJyYXl9IHF1ZXVlXG4gKi9cbnByb3RvLl9wcm9jZXNzTGF5b3V0UXVldWUgPSBmdW5jdGlvbiggcXVldWUgKSB7XG4gIHRoaXMudXBkYXRlU3RhZ2dlcigpO1xuICBxdWV1ZS5mb3JFYWNoKCBmdW5jdGlvbiggb2JqLCBpICkge1xuICAgIHRoaXMuX3Bvc2l0aW9uSXRlbSggb2JqLml0ZW0sIG9iai54LCBvYmoueSwgb2JqLmlzSW5zdGFudCwgaSApO1xuICB9LCB0aGlzICk7XG59O1xuXG4vLyBzZXQgc3RhZ2dlciBmcm9tIG9wdGlvbiBpbiBtaWxsaXNlY29uZHMgbnVtYmVyXG5wcm90by51cGRhdGVTdGFnZ2VyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdGFnZ2VyID0gdGhpcy5vcHRpb25zLnN0YWdnZXI7XG4gIGlmICggc3RhZ2dlciA9PT0gbnVsbCB8fCBzdGFnZ2VyID09PSB1bmRlZmluZWQgKSB7XG4gICAgdGhpcy5zdGFnZ2VyID0gMDtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5zdGFnZ2VyID0gZ2V0TWlsbGlzZWNvbmRzKCBzdGFnZ2VyICk7XG4gIHJldHVybiB0aGlzLnN0YWdnZXI7XG59O1xuXG4vKipcbiAqIFNldHMgcG9zaXRpb24gb2YgaXRlbSBpbiBET01cbiAqIEBwYXJhbSB7T3V0bGF5ZXIuSXRlbX0gaXRlbVxuICogQHBhcmFtIHtOdW1iZXJ9IHggLSBob3Jpem9udGFsIHBvc2l0aW9uXG4gKiBAcGFyYW0ge051bWJlcn0geSAtIHZlcnRpY2FsIHBvc2l0aW9uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzSW5zdGFudCAtIGRpc2FibGVzIHRyYW5zaXRpb25zXG4gKi9cbnByb3RvLl9wb3NpdGlvbkl0ZW0gPSBmdW5jdGlvbiggaXRlbSwgeCwgeSwgaXNJbnN0YW50LCBpICkge1xuICBpZiAoIGlzSW5zdGFudCApIHtcbiAgICAvLyBpZiBub3QgdHJhbnNpdGlvbiwganVzdCBzZXQgQ1NTXG4gICAgaXRlbS5nb1RvKCB4LCB5ICk7XG4gIH0gZWxzZSB7XG4gICAgaXRlbS5zdGFnZ2VyKCBpICogdGhpcy5zdGFnZ2VyICk7XG4gICAgaXRlbS5tb3ZlVG8oIHgsIHkgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBbnkgbG9naWMgeW91IHdhbnQgdG8gZG8gYWZ0ZXIgZWFjaCBsYXlvdXQsXG4gKiBpLmUuIHNpemUgdGhlIGNvbnRhaW5lclxuICovXG5wcm90by5fcG9zdExheW91dCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnJlc2l6ZUNvbnRhaW5lcigpO1xufTtcblxucHJvdG8ucmVzaXplQ29udGFpbmVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpc1Jlc2l6aW5nQ29udGFpbmVyID0gdGhpcy5fZ2V0T3B0aW9uKCdyZXNpemVDb250YWluZXInKTtcbiAgaWYgKCAhaXNSZXNpemluZ0NvbnRhaW5lciApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIHNpemUgPSB0aGlzLl9nZXRDb250YWluZXJTaXplKCk7XG4gIGlmICggc2l6ZSApIHtcbiAgICB0aGlzLl9zZXRDb250YWluZXJNZWFzdXJlKCBzaXplLndpZHRoLCB0cnVlICk7XG4gICAgdGhpcy5fc2V0Q29udGFpbmVyTWVhc3VyZSggc2l6ZS5oZWlnaHQsIGZhbHNlICk7XG4gIH1cbn07XG5cbi8qKlxuICogU2V0cyB3aWR0aCBvciBoZWlnaHQgb2YgY29udGFpbmVyIGlmIHJldHVybmVkXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBzaXplXG4gKiAgIEBwYXJhbSB7TnVtYmVyfSB3aWR0aFxuICogICBAcGFyYW0ge051bWJlcn0gaGVpZ2h0XG4gKi9cbnByb3RvLl9nZXRDb250YWluZXJTaXplID0gbm9vcDtcblxuLyoqXG4gKiBAcGFyYW0ge051bWJlcn0gbWVhc3VyZSAtIHNpemUgb2Ygd2lkdGggb3IgaGVpZ2h0XG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzV2lkdGhcbiAqL1xucHJvdG8uX3NldENvbnRhaW5lck1lYXN1cmUgPSBmdW5jdGlvbiggbWVhc3VyZSwgaXNXaWR0aCApIHtcbiAgaWYgKCBtZWFzdXJlID09PSB1bmRlZmluZWQgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGVsZW1TaXplID0gdGhpcy5zaXplO1xuICAvLyBhZGQgcGFkZGluZyBhbmQgYm9yZGVyIHdpZHRoIGlmIGJvcmRlciBib3hcbiAgaWYgKCBlbGVtU2l6ZS5pc0JvcmRlckJveCApIHtcbiAgICBtZWFzdXJlICs9IGlzV2lkdGggPyBlbGVtU2l6ZS5wYWRkaW5nTGVmdCArIGVsZW1TaXplLnBhZGRpbmdSaWdodCArXG4gICAgICBlbGVtU2l6ZS5ib3JkZXJMZWZ0V2lkdGggKyBlbGVtU2l6ZS5ib3JkZXJSaWdodFdpZHRoIDpcbiAgICAgIGVsZW1TaXplLnBhZGRpbmdCb3R0b20gKyBlbGVtU2l6ZS5wYWRkaW5nVG9wICtcbiAgICAgIGVsZW1TaXplLmJvcmRlclRvcFdpZHRoICsgZWxlbVNpemUuYm9yZGVyQm90dG9tV2lkdGg7XG4gIH1cblxuICBtZWFzdXJlID0gTWF0aC5tYXgoIG1lYXN1cmUsIDAgKTtcbiAgdGhpcy5lbGVtZW50LnN0eWxlWyBpc1dpZHRoID8gJ3dpZHRoJyA6ICdoZWlnaHQnIF0gPSBtZWFzdXJlICsgJ3B4Jztcbn07XG5cbi8qKlxuICogZW1pdCBldmVudENvbXBsZXRlIG9uIGEgY29sbGVjdGlvbiBvZiBpdGVtcyBldmVudHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWVcbiAqIEBwYXJhbSB7QXJyYXl9IGl0ZW1zIC0gT3V0bGF5ZXIuSXRlbXNcbiAqL1xucHJvdG8uX2VtaXRDb21wbGV0ZU9uSXRlbXMgPSBmdW5jdGlvbiggZXZlbnROYW1lLCBpdGVtcyApIHtcbiAgdmFyIF90aGlzID0gdGhpcztcbiAgZnVuY3Rpb24gb25Db21wbGV0ZSgpIHtcbiAgICBfdGhpcy5kaXNwYXRjaEV2ZW50KCBldmVudE5hbWUgKyAnQ29tcGxldGUnLCBudWxsLCBbIGl0ZW1zIF0gKTtcbiAgfVxuXG4gIHZhciBjb3VudCA9IGl0ZW1zLmxlbmd0aDtcbiAgaWYgKCAhaXRlbXMgfHwgIWNvdW50ICkge1xuICAgIG9uQ29tcGxldGUoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZG9uZUNvdW50ID0gMDtcbiAgZnVuY3Rpb24gdGljaygpIHtcbiAgICBkb25lQ291bnQrKztcbiAgICBpZiAoIGRvbmVDb3VudCA9PSBjb3VudCApIHtcbiAgICAgIG9uQ29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBiaW5kIGNhbGxiYWNrXG4gIGl0ZW1zLmZvckVhY2goIGZ1bmN0aW9uKCBpdGVtICkge1xuICAgIGl0ZW0ub25jZSggZXZlbnROYW1lLCB0aWNrICk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBlbWl0cyBldmVudHMgdmlhIEV2RW1pdHRlciBhbmQgalF1ZXJ5IGV2ZW50c1xuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgLSBuYW1lIG9mIGV2ZW50XG4gKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIG9yaWdpbmFsIGV2ZW50XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIC0gZXh0cmEgYXJndW1lbnRzXG4gKi9cbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiggdHlwZSwgZXZlbnQsIGFyZ3MgKSB7XG4gIC8vIGFkZCBvcmlnaW5hbCBldmVudCB0byBhcmd1bWVudHNcbiAgdmFyIGVtaXRBcmdzID0gZXZlbnQgPyBbIGV2ZW50IF0uY29uY2F0KCBhcmdzICkgOiBhcmdzO1xuICB0aGlzLmVtaXRFdmVudCggdHlwZSwgZW1pdEFyZ3MgKTtcblxuICBpZiAoIGpRdWVyeSApIHtcbiAgICAvLyBzZXQgdGhpcy4kZWxlbWVudFxuICAgIHRoaXMuJGVsZW1lbnQgPSB0aGlzLiRlbGVtZW50IHx8IGpRdWVyeSggdGhpcy5lbGVtZW50ICk7XG4gICAgaWYgKCBldmVudCApIHtcbiAgICAgIC8vIGNyZWF0ZSBqUXVlcnkgZXZlbnRcbiAgICAgIHZhciAkZXZlbnQgPSBqUXVlcnkuRXZlbnQoIGV2ZW50ICk7XG4gICAgICAkZXZlbnQudHlwZSA9IHR5cGU7XG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoICRldmVudCwgYXJncyApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBqdXN0IHRyaWdnZXIgd2l0aCB0eXBlIGlmIG5vIGV2ZW50IGF2YWlsYWJsZVxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCB0eXBlLCBhcmdzICk7XG4gICAgfVxuICB9XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpZ25vcmUgJiBzdGFtcHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuXG4vKipcbiAqIGtlZXAgaXRlbSBpbiBjb2xsZWN0aW9uLCBidXQgZG8gbm90IGxheSBpdCBvdXRcbiAqIGlnbm9yZWQgaXRlbXMgZG8gbm90IGdldCBza2lwcGVkIGluIGxheW91dFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtXG4gKi9cbnByb3RvLmlnbm9yZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbSggZWxlbSApO1xuICBpZiAoIGl0ZW0gKSB7XG4gICAgaXRlbS5pc0lnbm9yZWQgPSB0cnVlO1xuICB9XG59O1xuXG4vKipcbiAqIHJldHVybiBpdGVtIHRvIGxheW91dCBjb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1cbiAqL1xucHJvdG8udW5pZ25vcmUgPSBmdW5jdGlvbiggZWxlbSApIHtcbiAgdmFyIGl0ZW0gPSB0aGlzLmdldEl0ZW0oIGVsZW0gKTtcbiAgaWYgKCBpdGVtICkge1xuICAgIGRlbGV0ZSBpdGVtLmlzSWdub3JlZDtcbiAgfVxufTtcblxuLyoqXG4gKiBhZGRzIGVsZW1lbnRzIHRvIHN0YW1wc1xuICogQHBhcmFtIHtOb2RlTGlzdCwgQXJyYXksIEVsZW1lbnQsIG9yIFN0cmluZ30gZWxlbXNcbiAqL1xucHJvdG8uc3RhbXAgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIGVsZW1zID0gdGhpcy5fZmluZCggZWxlbXMgKTtcbiAgaWYgKCAhZWxlbXMgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5zdGFtcHMgPSB0aGlzLnN0YW1wcy5jb25jYXQoIGVsZW1zICk7XG4gIC8vIGlnbm9yZVxuICBlbGVtcy5mb3JFYWNoKCB0aGlzLmlnbm9yZSwgdGhpcyApO1xufTtcblxuLyoqXG4gKiByZW1vdmVzIGVsZW1lbnRzIHRvIHN0YW1wc1xuICogQHBhcmFtIHtOb2RlTGlzdCwgQXJyYXksIG9yIEVsZW1lbnR9IGVsZW1zXG4gKi9cbnByb3RvLnVuc3RhbXAgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIGVsZW1zID0gdGhpcy5fZmluZCggZWxlbXMgKTtcbiAgaWYgKCAhZWxlbXMgKXtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAvLyBmaWx0ZXIgb3V0IHJlbW92ZWQgc3RhbXAgZWxlbWVudHNcbiAgICB1dGlscy5yZW1vdmVGcm9tKCB0aGlzLnN0YW1wcywgZWxlbSApO1xuICAgIHRoaXMudW5pZ25vcmUoIGVsZW0gKTtcbiAgfSwgdGhpcyApO1xufTtcblxuLyoqXG4gKiBmaW5kcyBjaGlsZCBlbGVtZW50c1xuICogQHBhcmFtIHtOb2RlTGlzdCwgQXJyYXksIEVsZW1lbnQsIG9yIFN0cmluZ30gZWxlbXNcbiAqIEByZXR1cm5zIHtBcnJheX0gZWxlbXNcbiAqL1xucHJvdG8uX2ZpbmQgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIGlmICggIWVsZW1zICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBpZiBzdHJpbmcsIHVzZSBhcmd1bWVudCBhcyBzZWxlY3RvciBzdHJpbmdcbiAgaWYgKCB0eXBlb2YgZWxlbXMgPT0gJ3N0cmluZycgKSB7XG4gICAgZWxlbXMgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCggZWxlbXMgKTtcbiAgfVxuICBlbGVtcyA9IHV0aWxzLm1ha2VBcnJheSggZWxlbXMgKTtcbiAgcmV0dXJuIGVsZW1zO1xufTtcblxucHJvdG8uX21hbmFnZVN0YW1wcyA9IGZ1bmN0aW9uKCkge1xuICBpZiAoICF0aGlzLnN0YW1wcyB8fCAhdGhpcy5zdGFtcHMubGVuZ3RoICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuX2dldEJvdW5kaW5nUmVjdCgpO1xuXG4gIHRoaXMuc3RhbXBzLmZvckVhY2goIHRoaXMuX21hbmFnZVN0YW1wLCB0aGlzICk7XG59O1xuXG4vLyB1cGRhdGUgYm91bmRpbmdMZWZ0IC8gVG9wXG5wcm90by5fZ2V0Qm91bmRpbmdSZWN0ID0gZnVuY3Rpb24oKSB7XG4gIC8vIGdldCBib3VuZGluZyByZWN0IGZvciBjb250YWluZXIgZWxlbWVudFxuICB2YXIgYm91bmRpbmdSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgdGhpcy5fYm91bmRpbmdSZWN0ID0ge1xuICAgIGxlZnQ6IGJvdW5kaW5nUmVjdC5sZWZ0ICsgc2l6ZS5wYWRkaW5nTGVmdCArIHNpemUuYm9yZGVyTGVmdFdpZHRoLFxuICAgIHRvcDogYm91bmRpbmdSZWN0LnRvcCArIHNpemUucGFkZGluZ1RvcCArIHNpemUuYm9yZGVyVG9wV2lkdGgsXG4gICAgcmlnaHQ6IGJvdW5kaW5nUmVjdC5yaWdodCAtICggc2l6ZS5wYWRkaW5nUmlnaHQgKyBzaXplLmJvcmRlclJpZ2h0V2lkdGggKSxcbiAgICBib3R0b206IGJvdW5kaW5nUmVjdC5ib3R0b20gLSAoIHNpemUucGFkZGluZ0JvdHRvbSArIHNpemUuYm9yZGVyQm90dG9tV2lkdGggKVxuICB9O1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHN0YW1wXG4qKi9cbnByb3RvLl9tYW5hZ2VTdGFtcCA9IG5vb3A7XG5cbi8qKlxuICogZ2V0IHgveSBwb3NpdGlvbiBvZiBlbGVtZW50IHJlbGF0aXZlIHRvIGNvbnRhaW5lciBlbGVtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1cbiAqIEByZXR1cm5zIHtPYmplY3R9IG9mZnNldCAtIGhhcyBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b21cbiAqL1xucHJvdG8uX2dldEVsZW1lbnRPZmZzZXQgPSBmdW5jdGlvbiggZWxlbSApIHtcbiAgdmFyIGJvdW5kaW5nUmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciB0aGlzUmVjdCA9IHRoaXMuX2JvdW5kaW5nUmVjdDtcbiAgdmFyIHNpemUgPSBnZXRTaXplKCBlbGVtICk7XG4gIHZhciBvZmZzZXQgPSB7XG4gICAgbGVmdDogYm91bmRpbmdSZWN0LmxlZnQgLSB0aGlzUmVjdC5sZWZ0IC0gc2l6ZS5tYXJnaW5MZWZ0LFxuICAgIHRvcDogYm91bmRpbmdSZWN0LnRvcCAtIHRoaXNSZWN0LnRvcCAtIHNpemUubWFyZ2luVG9wLFxuICAgIHJpZ2h0OiB0aGlzUmVjdC5yaWdodCAtIGJvdW5kaW5nUmVjdC5yaWdodCAtIHNpemUubWFyZ2luUmlnaHQsXG4gICAgYm90dG9tOiB0aGlzUmVjdC5ib3R0b20gLSBib3VuZGluZ1JlY3QuYm90dG9tIC0gc2l6ZS5tYXJnaW5Cb3R0b21cbiAgfTtcbiAgcmV0dXJuIG9mZnNldDtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlc2l6ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4vLyBlbmFibGUgZXZlbnQgaGFuZGxlcnMgZm9yIGxpc3RlbmVyc1xuLy8gaS5lLiByZXNpemUgLT4gb25yZXNpemVcbnByb3RvLmhhbmRsZUV2ZW50ID0gdXRpbHMuaGFuZGxlRXZlbnQ7XG5cbi8qKlxuICogQmluZCBsYXlvdXQgdG8gd2luZG93IHJlc2l6aW5nXG4gKi9cbnByb3RvLmJpbmRSZXNpemUgPSBmdW5jdGlvbigpIHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICdyZXNpemUnLCB0aGlzICk7XG4gIHRoaXMuaXNSZXNpemVCb3VuZCA9IHRydWU7XG59O1xuXG4vKipcbiAqIFVuYmluZCBsYXlvdXQgdG8gd2luZG93IHJlc2l6aW5nXG4gKi9cbnByb3RvLnVuYmluZFJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ3Jlc2l6ZScsIHRoaXMgKTtcbiAgdGhpcy5pc1Jlc2l6ZUJvdW5kID0gZmFsc2U7XG59O1xuXG5wcm90by5vbnJlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnJlc2l6ZSgpO1xufTtcblxudXRpbHMuZGVib3VuY2VNZXRob2QoIE91dGxheWVyLCAnb25yZXNpemUnLCAxMDAgKTtcblxucHJvdG8ucmVzaXplID0gZnVuY3Rpb24oKSB7XG4gIC8vIGRvbid0IHRyaWdnZXIgaWYgc2l6ZSBkaWQgbm90IGNoYW5nZVxuICAvLyBvciBpZiByZXNpemUgd2FzIHVuYm91bmQuIFNlZSAjOVxuICBpZiAoICF0aGlzLmlzUmVzaXplQm91bmQgfHwgIXRoaXMubmVlZHNSZXNpemVMYXlvdXQoKSApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmxheW91dCgpO1xufTtcblxuLyoqXG4gKiBjaGVjayBpZiBsYXlvdXQgaXMgbmVlZGVkIHBvc3QgbGF5b3V0XG4gKiBAcmV0dXJucyBCb29sZWFuXG4gKi9cbnByb3RvLm5lZWRzUmVzaXplTGF5b3V0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzaXplID0gZ2V0U2l6ZSggdGhpcy5lbGVtZW50ICk7XG4gIC8vIGNoZWNrIHRoYXQgdGhpcy5zaXplIGFuZCBzaXplIGFyZSB0aGVyZVxuICAvLyBJRTggdHJpZ2dlcnMgcmVzaXplIG9uIGJvZHkgc2l6ZSBjaGFuZ2UsIHNvIHRoZXkgbWlnaHQgbm90IGJlXG4gIHZhciBoYXNTaXplcyA9IHRoaXMuc2l6ZSAmJiBzaXplO1xuICByZXR1cm4gaGFzU2l6ZXMgJiYgc2l6ZS5pbm5lcldpZHRoICE9PSB0aGlzLnNpemUuaW5uZXJXaWR0aDtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLyoqXG4gKiBhZGQgaXRlbXMgdG8gT3V0bGF5ZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7QXJyYXkgb3IgTm9kZUxpc3Qgb3IgRWxlbWVudH0gZWxlbXNcbiAqIEByZXR1cm5zIHtBcnJheX0gaXRlbXMgLSBPdXRsYXllci5JdGVtc1xuKiovXG5wcm90by5hZGRJdGVtcyA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgdmFyIGl0ZW1zID0gdGhpcy5faXRlbWl6ZSggZWxlbXMgKTtcbiAgLy8gYWRkIGl0ZW1zIHRvIGNvbGxlY3Rpb25cbiAgaWYgKCBpdGVtcy5sZW5ndGggKSB7XG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuY29uY2F0KCBpdGVtcyApO1xuICB9XG4gIHJldHVybiBpdGVtcztcbn07XG5cbi8qKlxuICogTGF5b3V0IG5ld2x5LWFwcGVuZGVkIGl0ZW0gZWxlbWVudHNcbiAqIEBwYXJhbSB7QXJyYXkgb3IgTm9kZUxpc3Qgb3IgRWxlbWVudH0gZWxlbXNcbiAqL1xucHJvdG8uYXBwZW5kZWQgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHZhciBpdGVtcyA9IHRoaXMuYWRkSXRlbXMoIGVsZW1zICk7XG4gIGlmICggIWl0ZW1zLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gbGF5b3V0IGFuZCByZXZlYWwganVzdCB0aGUgbmV3IGl0ZW1zXG4gIHRoaXMubGF5b3V0SXRlbXMoIGl0ZW1zLCB0cnVlICk7XG4gIHRoaXMucmV2ZWFsKCBpdGVtcyApO1xufTtcblxuLyoqXG4gKiBMYXlvdXQgcHJlcGVuZGVkIGVsZW1lbnRzXG4gKiBAcGFyYW0ge0FycmF5IG9yIE5vZGVMaXN0IG9yIEVsZW1lbnR9IGVsZW1zXG4gKi9cbnByb3RvLnByZXBlbmRlZCA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgdmFyIGl0ZW1zID0gdGhpcy5faXRlbWl6ZSggZWxlbXMgKTtcbiAgaWYgKCAhaXRlbXMubGVuZ3RoICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBhZGQgaXRlbXMgdG8gYmVnaW5uaW5nIG9mIGNvbGxlY3Rpb25cbiAgdmFyIHByZXZpb3VzSXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKDApO1xuICB0aGlzLml0ZW1zID0gaXRlbXMuY29uY2F0KCBwcmV2aW91c0l0ZW1zICk7XG4gIC8vIHN0YXJ0IG5ldyBsYXlvdXRcbiAgdGhpcy5fcmVzZXRMYXlvdXQoKTtcbiAgdGhpcy5fbWFuYWdlU3RhbXBzKCk7XG4gIC8vIGxheW91dCBuZXcgc3R1ZmYgd2l0aG91dCB0cmFuc2l0aW9uXG4gIHRoaXMubGF5b3V0SXRlbXMoIGl0ZW1zLCB0cnVlICk7XG4gIHRoaXMucmV2ZWFsKCBpdGVtcyApO1xuICAvLyBsYXlvdXQgcHJldmlvdXMgaXRlbXNcbiAgdGhpcy5sYXlvdXRJdGVtcyggcHJldmlvdXNJdGVtcyApO1xufTtcblxuLyoqXG4gKiByZXZlYWwgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zXG4gKiBAcGFyYW0ge0FycmF5IG9mIE91dGxheWVyLkl0ZW1zfSBpdGVtc1xuICovXG5wcm90by5yZXZlYWwgPSBmdW5jdGlvbiggaXRlbXMgKSB7XG4gIHRoaXMuX2VtaXRDb21wbGV0ZU9uSXRlbXMoICdyZXZlYWwnLCBpdGVtcyApO1xuICBpZiAoICFpdGVtcyB8fCAhaXRlbXMubGVuZ3RoICkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgc3RhZ2dlciA9IHRoaXMudXBkYXRlU3RhZ2dlcigpO1xuICBpdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSwgaSApIHtcbiAgICBpdGVtLnN0YWdnZXIoIGkgKiBzdGFnZ2VyICk7XG4gICAgaXRlbS5yZXZlYWwoKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIGhpZGUgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zXG4gKiBAcGFyYW0ge0FycmF5IG9mIE91dGxheWVyLkl0ZW1zfSBpdGVtc1xuICovXG5wcm90by5oaWRlID0gZnVuY3Rpb24oIGl0ZW1zICkge1xuICB0aGlzLl9lbWl0Q29tcGxldGVPbkl0ZW1zKCAnaGlkZScsIGl0ZW1zICk7XG4gIGlmICggIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGggKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBzdGFnZ2VyID0gdGhpcy51cGRhdGVTdGFnZ2VyKCk7XG4gIGl0ZW1zLmZvckVhY2goIGZ1bmN0aW9uKCBpdGVtLCBpICkge1xuICAgIGl0ZW0uc3RhZ2dlciggaSAqIHN0YWdnZXIgKTtcbiAgICBpdGVtLmhpZGUoKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIHJldmVhbCBpdGVtIGVsZW1lbnRzXG4gKiBAcGFyYW0ge0FycmF5fSwge0VsZW1lbnR9LCB7Tm9kZUxpc3R9IGl0ZW1zXG4gKi9cbnByb3RvLnJldmVhbEl0ZW1FbGVtZW50cyA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgdmFyIGl0ZW1zID0gdGhpcy5nZXRJdGVtcyggZWxlbXMgKTtcbiAgdGhpcy5yZXZlYWwoIGl0ZW1zICk7XG59O1xuXG4vKipcbiAqIGhpZGUgaXRlbSBlbGVtZW50c1xuICogQHBhcmFtIHtBcnJheX0sIHtFbGVtZW50fSwge05vZGVMaXN0fSBpdGVtc1xuICovXG5wcm90by5oaWRlSXRlbUVsZW1lbnRzID0gZnVuY3Rpb24oIGVsZW1zICkge1xuICB2YXIgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCBlbGVtcyApO1xuICB0aGlzLmhpZGUoIGl0ZW1zICk7XG59O1xuXG4vKipcbiAqIGdldCBPdXRsYXllci5JdGVtLCBnaXZlbiBhbiBFbGVtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7T3V0bGF5ZXIuSXRlbX0gaXRlbVxuICovXG5wcm90by5nZXRJdGVtID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIC8vIGxvb3AgdGhyb3VnaCBpdGVtcyB0byBnZXQgdGhlIG9uZSB0aGF0IG1hdGNoZXNcbiAgZm9yICggdmFyIGk9MDsgaSA8IHRoaXMuaXRlbXMubGVuZ3RoOyBpKysgKSB7XG4gICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2ldO1xuICAgIGlmICggaXRlbS5lbGVtZW50ID09IGVsZW0gKSB7XG4gICAgICAvLyByZXR1cm4gaXRlbVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIGdldCBjb2xsZWN0aW9uIG9mIE91dGxheWVyLkl0ZW1zLCBnaXZlbiBFbGVtZW50c1xuICogQHBhcmFtIHtBcnJheX0gZWxlbXNcbiAqIEByZXR1cm5zIHtBcnJheX0gaXRlbXMgLSBPdXRsYXllci5JdGVtc1xuICovXG5wcm90by5nZXRJdGVtcyA9IGZ1bmN0aW9uKCBlbGVtcyApIHtcbiAgZWxlbXMgPSB1dGlscy5tYWtlQXJyYXkoIGVsZW1zICk7XG4gIHZhciBpdGVtcyA9IFtdO1xuICBlbGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbSApIHtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbSggZWxlbSApO1xuICAgIGlmICggaXRlbSApIHtcbiAgICAgIGl0ZW1zLnB1c2goIGl0ZW0gKTtcbiAgICB9XG4gIH0sIHRoaXMgKTtcblxuICByZXR1cm4gaXRlbXM7XG59O1xuXG4vKipcbiAqIHJlbW92ZSBlbGVtZW50KHMpIGZyb20gaW5zdGFuY2UgYW5kIERPTVxuICogQHBhcmFtIHtBcnJheSBvciBOb2RlTGlzdCBvciBFbGVtZW50fSBlbGVtc1xuICovXG5wcm90by5yZW1vdmUgPSBmdW5jdGlvbiggZWxlbXMgKSB7XG4gIHZhciByZW1vdmVJdGVtcyA9IHRoaXMuZ2V0SXRlbXMoIGVsZW1zICk7XG5cbiAgdGhpcy5fZW1pdENvbXBsZXRlT25JdGVtcyggJ3JlbW92ZScsIHJlbW92ZUl0ZW1zICk7XG5cbiAgLy8gYmFpbCBpZiBubyBpdGVtcyB0byByZW1vdmVcbiAgaWYgKCAhcmVtb3ZlSXRlbXMgfHwgIXJlbW92ZUl0ZW1zLmxlbmd0aCApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZW1vdmVJdGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggaXRlbSApIHtcbiAgICBpdGVtLnJlbW92ZSgpO1xuICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY29sbGVjdGlvblxuICAgIHV0aWxzLnJlbW92ZUZyb20oIHRoaXMuaXRlbXMsIGl0ZW0gKTtcbiAgfSwgdGhpcyApO1xufTtcblxuLy8gLS0tLS0gZGVzdHJveSAtLS0tLSAvL1xuXG4vLyByZW1vdmUgYW5kIGRpc2FibGUgT3V0bGF5ZXIgaW5zdGFuY2VcbnByb3RvLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgLy8gY2xlYW4gdXAgZHluYW1pYyBzdHlsZXNcbiAgdmFyIHN0eWxlID0gdGhpcy5lbGVtZW50LnN0eWxlO1xuICBzdHlsZS5oZWlnaHQgPSAnJztcbiAgc3R5bGUucG9zaXRpb24gPSAnJztcbiAgc3R5bGUud2lkdGggPSAnJztcbiAgLy8gZGVzdHJveSBpdGVtc1xuICB0aGlzLml0ZW1zLmZvckVhY2goIGZ1bmN0aW9uKCBpdGVtICkge1xuICAgIGl0ZW0uZGVzdHJveSgpO1xuICB9KTtcblxuICB0aGlzLnVuYmluZFJlc2l6ZSgpO1xuXG4gIHZhciBpZCA9IHRoaXMuZWxlbWVudC5vdXRsYXllckdVSUQ7XG4gIGRlbGV0ZSBpbnN0YW5jZXNbIGlkIF07IC8vIHJlbW92ZSByZWZlcmVuY2UgdG8gaW5zdGFuY2UgYnkgaWRcbiAgZGVsZXRlIHRoaXMuZWxlbWVudC5vdXRsYXllckdVSUQ7XG4gIC8vIHJlbW92ZSBkYXRhIGZvciBqUXVlcnlcbiAgaWYgKCBqUXVlcnkgKSB7XG4gICAgalF1ZXJ5LnJlbW92ZURhdGEoIHRoaXMuZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lc3BhY2UgKTtcbiAgfVxuXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbi8qKlxuICogZ2V0IE91dGxheWVyIGluc3RhbmNlIGZyb20gZWxlbWVudFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtXG4gKiBAcmV0dXJucyB7T3V0bGF5ZXJ9XG4gKi9cbk91dGxheWVyLmRhdGEgPSBmdW5jdGlvbiggZWxlbSApIHtcbiAgZWxlbSA9IHV0aWxzLmdldFF1ZXJ5RWxlbWVudCggZWxlbSApO1xuICB2YXIgaWQgPSBlbGVtICYmIGVsZW0ub3V0bGF5ZXJHVUlEO1xuICByZXR1cm4gaWQgJiYgaW5zdGFuY2VzWyBpZCBdO1xufTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjcmVhdGUgT3V0bGF5ZXIgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLyoqXG4gKiBjcmVhdGUgYSBsYXlvdXQgY2xhc3NcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqL1xuT3V0bGF5ZXIuY3JlYXRlID0gZnVuY3Rpb24oIG5hbWVzcGFjZSwgb3B0aW9ucyApIHtcbiAgLy8gc3ViLWNsYXNzIE91dGxheWVyXG4gIHZhciBMYXlvdXQgPSBzdWJjbGFzcyggT3V0bGF5ZXIgKTtcbiAgLy8gYXBwbHkgbmV3IG9wdGlvbnMgYW5kIGNvbXBhdE9wdGlvbnNcbiAgTGF5b3V0LmRlZmF1bHRzID0gdXRpbHMuZXh0ZW5kKCB7fSwgT3V0bGF5ZXIuZGVmYXVsdHMgKTtcbiAgdXRpbHMuZXh0ZW5kKCBMYXlvdXQuZGVmYXVsdHMsIG9wdGlvbnMgKTtcbiAgTGF5b3V0LmNvbXBhdE9wdGlvbnMgPSB1dGlscy5leHRlbmQoIHt9LCBPdXRsYXllci5jb21wYXRPcHRpb25zICApO1xuXG4gIExheW91dC5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG5cbiAgTGF5b3V0LmRhdGEgPSBPdXRsYXllci5kYXRhO1xuXG4gIC8vIHN1Yi1jbGFzcyBJdGVtXG4gIExheW91dC5JdGVtID0gc3ViY2xhc3MoIEl0ZW0gKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkZWNsYXJhdGl2ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4gIHV0aWxzLmh0bWxJbml0KCBMYXlvdXQsIG5hbWVzcGFjZSApO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGpRdWVyeSBicmlkZ2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAvLyBtYWtlIGludG8galF1ZXJ5IHBsdWdpblxuICBpZiAoIGpRdWVyeSAmJiBqUXVlcnkuYnJpZGdldCApIHtcbiAgICBqUXVlcnkuYnJpZGdldCggbmFtZXNwYWNlLCBMYXlvdXQgKTtcbiAgfVxuXG4gIHJldHVybiBMYXlvdXQ7XG59O1xuXG5mdW5jdGlvbiBzdWJjbGFzcyggUGFyZW50ICkge1xuICBmdW5jdGlvbiBTdWJDbGFzcygpIHtcbiAgICBQYXJlbnQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xuICB9XG5cbiAgU3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggUGFyZW50LnByb3RvdHlwZSApO1xuICBTdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWJDbGFzcztcblxuICByZXR1cm4gU3ViQ2xhc3M7XG59XG5cbi8vIC0tLS0tIGhlbHBlcnMgLS0tLS0gLy9cblxuLy8gaG93IG1hbnkgbWlsbGlzZWNvbmRzIGFyZSBpbiBlYWNoIHVuaXRcbnZhciBtc1VuaXRzID0ge1xuICBtczogMSxcbiAgczogMTAwMFxufTtcblxuLy8gbXVuZ2UgdGltZS1saWtlIHBhcmFtZXRlciBpbnRvIG1pbGxpc2Vjb25kIG51bWJlclxuLy8gJzAuNHMnIC0+IDQwXG5mdW5jdGlvbiBnZXRNaWxsaXNlY29uZHMoIHRpbWUgKSB7XG4gIGlmICggdHlwZW9mIHRpbWUgPT0gJ251bWJlcicgKSB7XG4gICAgcmV0dXJuIHRpbWU7XG4gIH1cbiAgdmFyIG1hdGNoZXMgPSB0aW1lLm1hdGNoKCAvKF5cXGQqXFwuP1xcZCopKFxcdyopLyApO1xuICB2YXIgbnVtID0gbWF0Y2hlcyAmJiBtYXRjaGVzWzFdO1xuICB2YXIgdW5pdCA9IG1hdGNoZXMgJiYgbWF0Y2hlc1syXTtcbiAgaWYgKCAhbnVtLmxlbmd0aCApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBudW0gPSBwYXJzZUZsb2F0KCBudW0gKTtcbiAgdmFyIG11bHQgPSBtc1VuaXRzWyB1bml0IF0gfHwgMTtcbiAgcmV0dXJuIG51bSAqIG11bHQ7XG59XG5cbi8vIC0tLS0tIGZpbiAtLS0tLSAvL1xuXG4vLyBiYWNrIGluIGdsb2JhbFxuT3V0bGF5ZXIuSXRlbSA9IEl0ZW07XG5cbnJldHVybiBPdXRsYXllcjtcblxufSkpO1xuIiwiLyoqXG4gKiBGaXp6eSBVSSB1dGlscyB2Mi4wLjdcbiAqIE1JVCBsaWNlbnNlXG4gKi9cblxuLypqc2hpbnQgYnJvd3NlcjogdHJ1ZSwgdW5kZWY6IHRydWUsIHVudXNlZDogdHJ1ZSwgc3RyaWN0OiB0cnVlICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgLy8gdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uXG4gIC8qanNoaW50IHN0cmljdDogZmFsc2UgKi8gLypnbG9iYWxzIGRlZmluZSwgbW9kdWxlLCByZXF1aXJlICovXG5cbiAgaWYgKCB0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCApIHtcbiAgICAvLyBBTURcbiAgICBkZWZpbmUoIFtcbiAgICAgICdkZXNhbmRyby1tYXRjaGVzLXNlbGVjdG9yL21hdGNoZXMtc2VsZWN0b3InXG4gICAgXSwgZnVuY3Rpb24oIG1hdGNoZXNTZWxlY3RvciApIHtcbiAgICAgIHJldHVybiBmYWN0b3J5KCB3aW5kb3csIG1hdGNoZXNTZWxlY3RvciApO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKCB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzICkge1xuICAgIC8vIENvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KFxuICAgICAgd2luZG93LFxuICAgICAgcmVxdWlyZSgnZGVzYW5kcm8tbWF0Y2hlcy1zZWxlY3RvcicpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBicm93c2VyIGdsb2JhbFxuICAgIHdpbmRvdy5maXp6eVVJVXRpbHMgPSBmYWN0b3J5KFxuICAgICAgd2luZG93LFxuICAgICAgd2luZG93Lm1hdGNoZXNTZWxlY3RvclxuICAgICk7XG4gIH1cblxufSggd2luZG93LCBmdW5jdGlvbiBmYWN0b3J5KCB3aW5kb3csIG1hdGNoZXNTZWxlY3RvciApIHtcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSB7fTtcblxuLy8gLS0tLS0gZXh0ZW5kIC0tLS0tIC8vXG5cbi8vIGV4dGVuZHMgb2JqZWN0c1xudXRpbHMuZXh0ZW5kID0gZnVuY3Rpb24oIGEsIGIgKSB7XG4gIGZvciAoIHZhciBwcm9wIGluIGIgKSB7XG4gICAgYVsgcHJvcCBdID0gYlsgcHJvcCBdO1xuICB9XG4gIHJldHVybiBhO1xufTtcblxuLy8gLS0tLS0gbW9kdWxvIC0tLS0tIC8vXG5cbnV0aWxzLm1vZHVsbyA9IGZ1bmN0aW9uKCBudW0sIGRpdiApIHtcbiAgcmV0dXJuICggKCBudW0gJSBkaXYgKSArIGRpdiApICUgZGl2O1xufTtcblxuLy8gLS0tLS0gbWFrZUFycmF5IC0tLS0tIC8vXG5cbnZhciBhcnJheVNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuXG4vLyB0dXJuIGVsZW1lbnQgb3Igbm9kZUxpc3QgaW50byBhbiBhcnJheVxudXRpbHMubWFrZUFycmF5ID0gZnVuY3Rpb24oIG9iaiApIHtcbiAgaWYgKCBBcnJheS5pc0FycmF5KCBvYmogKSApIHtcbiAgICAvLyB1c2Ugb2JqZWN0IGlmIGFscmVhZHkgYW4gYXJyYXlcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIC8vIHJldHVybiBlbXB0eSBhcnJheSBpZiB1bmRlZmluZWQgb3IgbnVsbC4gIzZcbiAgaWYgKCBvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQgKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIGlzQXJyYXlMaWtlID0gdHlwZW9mIG9iaiA9PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLmxlbmd0aCA9PSAnbnVtYmVyJztcbiAgaWYgKCBpc0FycmF5TGlrZSApIHtcbiAgICAvLyBjb252ZXJ0IG5vZGVMaXN0IHRvIGFycmF5XG4gICAgcmV0dXJuIGFycmF5U2xpY2UuY2FsbCggb2JqICk7XG4gIH1cblxuICAvLyBhcnJheSBvZiBzaW5nbGUgaW5kZXhcbiAgcmV0dXJuIFsgb2JqIF07XG59O1xuXG4vLyAtLS0tLSByZW1vdmVGcm9tIC0tLS0tIC8vXG5cbnV0aWxzLnJlbW92ZUZyb20gPSBmdW5jdGlvbiggYXJ5LCBvYmogKSB7XG4gIHZhciBpbmRleCA9IGFyeS5pbmRleE9mKCBvYmogKTtcbiAgaWYgKCBpbmRleCAhPSAtMSApIHtcbiAgICBhcnkuc3BsaWNlKCBpbmRleCwgMSApO1xuICB9XG59O1xuXG4vLyAtLS0tLSBnZXRQYXJlbnQgLS0tLS0gLy9cblxudXRpbHMuZ2V0UGFyZW50ID0gZnVuY3Rpb24oIGVsZW0sIHNlbGVjdG9yICkge1xuICB3aGlsZSAoIGVsZW0ucGFyZW50Tm9kZSAmJiBlbGVtICE9IGRvY3VtZW50LmJvZHkgKSB7XG4gICAgZWxlbSA9IGVsZW0ucGFyZW50Tm9kZTtcbiAgICBpZiAoIG1hdGNoZXNTZWxlY3RvciggZWxlbSwgc2VsZWN0b3IgKSApIHtcbiAgICAgIHJldHVybiBlbGVtO1xuICAgIH1cbiAgfVxufTtcblxuLy8gLS0tLS0gZ2V0UXVlcnlFbGVtZW50IC0tLS0tIC8vXG5cbi8vIHVzZSBlbGVtZW50IGFzIHNlbGVjdG9yIHN0cmluZ1xudXRpbHMuZ2V0UXVlcnlFbGVtZW50ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIGlmICggdHlwZW9mIGVsZW0gPT0gJ3N0cmluZycgKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIGVsZW0gKTtcbiAgfVxuICByZXR1cm4gZWxlbTtcbn07XG5cbi8vIC0tLS0tIGhhbmRsZUV2ZW50IC0tLS0tIC8vXG5cbi8vIGVuYWJsZSAub250eXBlIHRvIHRyaWdnZXIgZnJvbSAuYWRkRXZlbnRMaXN0ZW5lciggZWxlbSwgJ3R5cGUnIClcbnV0aWxzLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuICB2YXIgbWV0aG9kID0gJ29uJyArIGV2ZW50LnR5cGU7XG4gIGlmICggdGhpc1sgbWV0aG9kIF0gKSB7XG4gICAgdGhpc1sgbWV0aG9kIF0oIGV2ZW50ICk7XG4gIH1cbn07XG5cbi8vIC0tLS0tIGZpbHRlckZpbmRFbGVtZW50cyAtLS0tLSAvL1xuXG51dGlscy5maWx0ZXJGaW5kRWxlbWVudHMgPSBmdW5jdGlvbiggZWxlbXMsIHNlbGVjdG9yICkge1xuICAvLyBtYWtlIGFycmF5IG9mIGVsZW1zXG4gIGVsZW1zID0gdXRpbHMubWFrZUFycmF5KCBlbGVtcyApO1xuICB2YXIgZmZFbGVtcyA9IFtdO1xuXG4gIGVsZW1zLmZvckVhY2goIGZ1bmN0aW9uKCBlbGVtICkge1xuICAgIC8vIGNoZWNrIHRoYXQgZWxlbSBpcyBhbiBhY3R1YWwgZWxlbWVudFxuICAgIGlmICggISggZWxlbSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICkgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGFkZCBlbGVtIGlmIG5vIHNlbGVjdG9yXG4gICAgaWYgKCAhc2VsZWN0b3IgKSB7XG4gICAgICBmZkVsZW1zLnB1c2goIGVsZW0gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZmlsdGVyICYgZmluZCBpdGVtcyBpZiB3ZSBoYXZlIGEgc2VsZWN0b3JcbiAgICAvLyBmaWx0ZXJcbiAgICBpZiAoIG1hdGNoZXNTZWxlY3RvciggZWxlbSwgc2VsZWN0b3IgKSApIHtcbiAgICAgIGZmRWxlbXMucHVzaCggZWxlbSApO1xuICAgIH1cbiAgICAvLyBmaW5kIGNoaWxkcmVuXG4gICAgdmFyIGNoaWxkRWxlbXMgPSBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoIHNlbGVjdG9yICk7XG4gICAgLy8gY29uY2F0IGNoaWxkRWxlbXMgdG8gZmlsdGVyRm91bmQgYXJyYXlcbiAgICBmb3IgKCB2YXIgaT0wOyBpIDwgY2hpbGRFbGVtcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgIGZmRWxlbXMucHVzaCggY2hpbGRFbGVtc1tpXSApO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZmRWxlbXM7XG59O1xuXG4vLyAtLS0tLSBkZWJvdW5jZU1ldGhvZCAtLS0tLSAvL1xuXG51dGlscy5kZWJvdW5jZU1ldGhvZCA9IGZ1bmN0aW9uKCBfY2xhc3MsIG1ldGhvZE5hbWUsIHRocmVzaG9sZCApIHtcbiAgdGhyZXNob2xkID0gdGhyZXNob2xkIHx8IDEwMDtcbiAgLy8gb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBtZXRob2QgPSBfY2xhc3MucHJvdG90eXBlWyBtZXRob2ROYW1lIF07XG4gIHZhciB0aW1lb3V0TmFtZSA9IG1ldGhvZE5hbWUgKyAnVGltZW91dCc7XG5cbiAgX2NsYXNzLnByb3RvdHlwZVsgbWV0aG9kTmFtZSBdID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRpbWVvdXQgPSB0aGlzWyB0aW1lb3V0TmFtZSBdO1xuICAgIGNsZWFyVGltZW91dCggdGltZW91dCApO1xuXG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICB0aGlzWyB0aW1lb3V0TmFtZSBdID0gc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG4gICAgICBtZXRob2QuYXBwbHkoIF90aGlzLCBhcmdzICk7XG4gICAgICBkZWxldGUgX3RoaXNbIHRpbWVvdXROYW1lIF07XG4gICAgfSwgdGhyZXNob2xkICk7XG4gIH07XG59O1xuXG4vLyAtLS0tLSBkb2NSZWFkeSAtLS0tLSAvL1xuXG51dGlscy5kb2NSZWFkeSA9IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcbiAgdmFyIHJlYWR5U3RhdGUgPSBkb2N1bWVudC5yZWFkeVN0YXRlO1xuICBpZiAoIHJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJyB8fCByZWFkeVN0YXRlID09ICdpbnRlcmFjdGl2ZScgKSB7XG4gICAgLy8gZG8gYXN5bmMgdG8gYWxsb3cgZm9yIG90aGVyIHNjcmlwdHMgdG8gcnVuLiBtZXRhZml6enkvZmxpY2tpdHkjNDQxXG4gICAgc2V0VGltZW91dCggY2FsbGJhY2sgKTtcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAnRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrICk7XG4gIH1cbn07XG5cbi8vIC0tLS0tIGh0bWxJbml0IC0tLS0tIC8vXG5cbi8vIGh0dHA6Ly9qYW1lc3JvYmVydHMubmFtZS9ibG9nLzIwMTAvMDIvMjIvc3RyaW5nLWZ1bmN0aW9ucy1mb3ItamF2YXNjcmlwdC10cmltLXRvLWNhbWVsLWNhc2UtdG8tZGFzaGVkLWFuZC10by11bmRlcnNjb3JlL1xudXRpbHMudG9EYXNoZWQgPSBmdW5jdGlvbiggc3RyICkge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoIC8oLikoW0EtWl0pL2csIGZ1bmN0aW9uKCBtYXRjaCwgJDEsICQyICkge1xuICAgIHJldHVybiAkMSArICctJyArICQyO1xuICB9KS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGNvbnNvbGUgPSB3aW5kb3cuY29uc29sZTtcbi8qKlxuICogYWxsb3cgdXNlciB0byBpbml0aWFsaXplIGNsYXNzZXMgdmlhIFtkYXRhLW5hbWVzcGFjZV0gb3IgLmpzLW5hbWVzcGFjZSBjbGFzc1xuICogaHRtbEluaXQoIFdpZGdldCwgJ3dpZGdldE5hbWUnIClcbiAqIG9wdGlvbnMgYXJlIHBhcnNlZCBmcm9tIGRhdGEtbmFtZXNwYWNlLW9wdGlvbnNcbiAqL1xudXRpbHMuaHRtbEluaXQgPSBmdW5jdGlvbiggV2lkZ2V0Q2xhc3MsIG5hbWVzcGFjZSApIHtcbiAgdXRpbHMuZG9jUmVhZHkoIGZ1bmN0aW9uKCkge1xuICAgIHZhciBkYXNoZWROYW1lc3BhY2UgPSB1dGlscy50b0Rhc2hlZCggbmFtZXNwYWNlICk7XG4gICAgdmFyIGRhdGFBdHRyID0gJ2RhdGEtJyArIGRhc2hlZE5hbWVzcGFjZTtcbiAgICB2YXIgZGF0YUF0dHJFbGVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICdbJyArIGRhdGFBdHRyICsgJ10nICk7XG4gICAgdmFyIGpzRGFzaEVsZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy5qcy0nICsgZGFzaGVkTmFtZXNwYWNlICk7XG4gICAgdmFyIGVsZW1zID0gdXRpbHMubWFrZUFycmF5KCBkYXRhQXR0ckVsZW1zIClcbiAgICAgIC5jb25jYXQoIHV0aWxzLm1ha2VBcnJheSgganNEYXNoRWxlbXMgKSApO1xuICAgIHZhciBkYXRhT3B0aW9uc0F0dHIgPSBkYXRhQXR0ciArICctb3B0aW9ucyc7XG4gICAgdmFyIGpRdWVyeSA9IHdpbmRvdy5qUXVlcnk7XG5cbiAgICBlbGVtcy5mb3JFYWNoKCBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgIHZhciBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoIGRhdGFBdHRyICkgfHxcbiAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoIGRhdGFPcHRpb25zQXR0ciApO1xuICAgICAgdmFyIG9wdGlvbnM7XG4gICAgICB0cnkge1xuICAgICAgICBvcHRpb25zID0gYXR0ciAmJiBKU09OLnBhcnNlKCBhdHRyICk7XG4gICAgICB9IGNhdGNoICggZXJyb3IgKSB7XG4gICAgICAgIC8vIGxvZyBlcnJvciwgZG8gbm90IGluaXRpYWxpemVcbiAgICAgICAgaWYgKCBjb25zb2xlICkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoICdFcnJvciBwYXJzaW5nICcgKyBkYXRhQXR0ciArICcgb24gJyArIGVsZW0uY2xhc3NOYW1lICtcbiAgICAgICAgICAnOiAnICsgZXJyb3IgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBpbml0aWFsaXplXG4gICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgV2lkZ2V0Q2xhc3MoIGVsZW0sIG9wdGlvbnMgKTtcbiAgICAgIC8vIG1ha2UgYXZhaWxhYmxlIHZpYSAkKCkuZGF0YSgnbmFtZXNwYWNlJylcbiAgICAgIGlmICggalF1ZXJ5ICkge1xuICAgICAgICBqUXVlcnkuZGF0YSggZWxlbSwgbmFtZXNwYWNlLCBpbnN0YW5jZSApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH0pO1xufTtcblxuLy8gLS0tLS0gIC0tLS0tIC8vXG5cbnJldHVybiB1dGlscztcblxufSkpO1xuIiwiLyoqXG4gKiBtYXRjaGVzU2VsZWN0b3IgdjIuMC4yXG4gKiBtYXRjaGVzU2VsZWN0b3IoIGVsZW1lbnQsICcuc2VsZWN0b3InIClcbiAqIE1JVCBsaWNlbnNlXG4gKi9cblxuLypqc2hpbnQgYnJvd3NlcjogdHJ1ZSwgc3RyaWN0OiB0cnVlLCB1bmRlZjogdHJ1ZSwgdW51c2VkOiB0cnVlICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHtcbiAgLypnbG9iYWwgZGVmaW5lOiBmYWxzZSwgbW9kdWxlOiBmYWxzZSAqL1xuICAndXNlIHN0cmljdCc7XG4gIC8vIHVuaXZlcnNhbCBtb2R1bGUgZGVmaW5pdGlvblxuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRFxuICAgIGRlZmluZSggZmFjdG9yeSApO1xuICB9IGVsc2UgaWYgKCB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzICkge1xuICAgIC8vIENvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYnJvd3NlciBnbG9iYWxcbiAgICB3aW5kb3cubWF0Y2hlc1NlbGVjdG9yID0gZmFjdG9yeSgpO1xuICB9XG5cbn0oIHdpbmRvdywgZnVuY3Rpb24gZmFjdG9yeSgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBtYXRjaGVzTWV0aG9kID0gKCBmdW5jdGlvbigpIHtcbiAgICB2YXIgRWxlbVByb3RvID0gd2luZG93LkVsZW1lbnQucHJvdG90eXBlO1xuICAgIC8vIGNoZWNrIGZvciB0aGUgc3RhbmRhcmQgbWV0aG9kIG5hbWUgZmlyc3RcbiAgICBpZiAoIEVsZW1Qcm90by5tYXRjaGVzICkge1xuICAgICAgcmV0dXJuICdtYXRjaGVzJztcbiAgICB9XG4gICAgLy8gY2hlY2sgdW4tcHJlZml4ZWRcbiAgICBpZiAoIEVsZW1Qcm90by5tYXRjaGVzU2VsZWN0b3IgKSB7XG4gICAgICByZXR1cm4gJ21hdGNoZXNTZWxlY3Rvcic7XG4gICAgfVxuICAgIC8vIGNoZWNrIHZlbmRvciBwcmVmaXhlc1xuICAgIHZhciBwcmVmaXhlcyA9IFsgJ3dlYmtpdCcsICdtb3onLCAnbXMnLCAnbycgXTtcblxuICAgIGZvciAoIHZhciBpPTA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgIHZhciBwcmVmaXggPSBwcmVmaXhlc1tpXTtcbiAgICAgIHZhciBtZXRob2QgPSBwcmVmaXggKyAnTWF0Y2hlc1NlbGVjdG9yJztcbiAgICAgIGlmICggRWxlbVByb3RvWyBtZXRob2QgXSApIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZDtcbiAgICAgIH1cbiAgICB9XG4gIH0pKCk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIG1hdGNoZXNTZWxlY3RvciggZWxlbSwgc2VsZWN0b3IgKSB7XG4gICAgcmV0dXJuIGVsZW1bIG1hdGNoZXNNZXRob2QgXSggc2VsZWN0b3IgKTtcbiAgfTtcblxufSkpO1xuIiwiLyoqXG4gKiBPdXRsYXllciBJdGVtXG4gKi9cblxuKCBmdW5jdGlvbiggd2luZG93LCBmYWN0b3J5ICkge1xuICAvLyB1bml2ZXJzYWwgbW9kdWxlIGRlZmluaXRpb25cbiAgLyoganNoaW50IHN0cmljdDogZmFsc2UgKi8gLyogZ2xvYmFscyBkZWZpbmUsIG1vZHVsZSwgcmVxdWlyZSAqL1xuICBpZiAoIHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kICkge1xuICAgIC8vIEFNRCAtIFJlcXVpcmVKU1xuICAgIGRlZmluZSggW1xuICAgICAgICAnZXYtZW1pdHRlci9ldi1lbWl0dGVyJyxcbiAgICAgICAgJ2dldC1zaXplL2dldC1zaXplJ1xuICAgICAgXSxcbiAgICAgIGZhY3RvcnlcbiAgICApO1xuICB9IGVsc2UgaWYgKCB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzICkge1xuICAgIC8vIENvbW1vbkpTIC0gQnJvd3NlcmlmeSwgV2VicGFja1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgICAgIHJlcXVpcmUoJ2V2LWVtaXR0ZXInKSxcbiAgICAgIHJlcXVpcmUoJ2dldC1zaXplJylcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIC8vIGJyb3dzZXIgZ2xvYmFsXG4gICAgd2luZG93Lk91dGxheWVyID0ge307XG4gICAgd2luZG93Lk91dGxheWVyLkl0ZW0gPSBmYWN0b3J5KFxuICAgICAgd2luZG93LkV2RW1pdHRlcixcbiAgICAgIHdpbmRvdy5nZXRTaXplXG4gICAgKTtcbiAgfVxuXG59KCB3aW5kb3csIGZ1bmN0aW9uIGZhY3RvcnkoIEV2RW1pdHRlciwgZ2V0U2l6ZSApIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gLS0tLS0gaGVscGVycyAtLS0tLSAvL1xuXG5mdW5jdGlvbiBpc0VtcHR5T2JqKCBvYmogKSB7XG4gIGZvciAoIHZhciBwcm9wIGluIG9iaiApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcHJvcCA9IG51bGw7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDU1MzIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuXG52YXIgZG9jRWxlbVN0eWxlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlO1xuXG52YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gdHlwZW9mIGRvY0VsZW1TdHlsZS50cmFuc2l0aW9uID09ICdzdHJpbmcnID9cbiAgJ3RyYW5zaXRpb24nIDogJ1dlYmtpdFRyYW5zaXRpb24nO1xudmFyIHRyYW5zZm9ybVByb3BlcnR5ID0gdHlwZW9mIGRvY0VsZW1TdHlsZS50cmFuc2Zvcm0gPT0gJ3N0cmluZycgP1xuICAndHJhbnNmb3JtJyA6ICdXZWJraXRUcmFuc2Zvcm0nO1xuXG52YXIgdHJhbnNpdGlvbkVuZEV2ZW50ID0ge1xuICBXZWJraXRUcmFuc2l0aW9uOiAnd2Via2l0VHJhbnNpdGlvbkVuZCcsXG4gIHRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJ1xufVsgdHJhbnNpdGlvblByb3BlcnR5IF07XG5cbi8vIGNhY2hlIGFsbCB2ZW5kb3IgcHJvcGVydGllcyB0aGF0IGNvdWxkIGhhdmUgdmVuZG9yIHByZWZpeFxudmFyIHZlbmRvclByb3BlcnRpZXMgPSB7XG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtUHJvcGVydHksXG4gIHRyYW5zaXRpb246IHRyYW5zaXRpb25Qcm9wZXJ0eSxcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiB0cmFuc2l0aW9uUHJvcGVydHkgKyAnRHVyYXRpb24nLFxuICB0cmFuc2l0aW9uUHJvcGVydHk6IHRyYW5zaXRpb25Qcm9wZXJ0eSArICdQcm9wZXJ0eScsXG4gIHRyYW5zaXRpb25EZWxheTogdHJhbnNpdGlvblByb3BlcnR5ICsgJ0RlbGF5J1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSXRlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG5mdW5jdGlvbiBJdGVtKCBlbGVtZW50LCBsYXlvdXQgKSB7XG4gIGlmICggIWVsZW1lbnQgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgLy8gcGFyZW50IGxheW91dCBjbGFzcywgaS5lLiBNYXNvbnJ5LCBJc290b3BlLCBvciBQYWNrZXJ5XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLnBvc2l0aW9uID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIHRoaXMuX2NyZWF0ZSgpO1xufVxuXG4vLyBpbmhlcml0IEV2RW1pdHRlclxudmFyIHByb3RvID0gSXRlbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBFdkVtaXR0ZXIucHJvdG90eXBlICk7XG5wcm90by5jb25zdHJ1Y3RvciA9IEl0ZW07XG5cbnByb3RvLl9jcmVhdGUgPSBmdW5jdGlvbigpIHtcbiAgLy8gdHJhbnNpdGlvbiBvYmplY3RzXG4gIHRoaXMuX3RyYW5zbiA9IHtcbiAgICBpbmdQcm9wZXJ0aWVzOiB7fSxcbiAgICBjbGVhbjoge30sXG4gICAgb25FbmQ6IHt9XG4gIH07XG5cbiAgdGhpcy5jc3Moe1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gIH0pO1xufTtcblxuLy8gdHJpZ2dlciBzcGVjaWZpZWQgaGFuZGxlciBmb3IgZXZlbnQgdHlwZVxucHJvdG8uaGFuZGxlRXZlbnQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG4gIHZhciBtZXRob2QgPSAnb24nICsgZXZlbnQudHlwZTtcbiAgaWYgKCB0aGlzWyBtZXRob2QgXSApIHtcbiAgICB0aGlzWyBtZXRob2QgXSggZXZlbnQgKTtcbiAgfVxufTtcblxucHJvdG8uZ2V0U2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnNpemUgPSBnZXRTaXplKCB0aGlzLmVsZW1lbnQgKTtcbn07XG5cbi8qKlxuICogYXBwbHkgQ1NTIHN0eWxlcyB0byBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gc3R5bGVcbiAqL1xucHJvdG8uY3NzID0gZnVuY3Rpb24oIHN0eWxlICkge1xuICB2YXIgZWxlbVN0eWxlID0gdGhpcy5lbGVtZW50LnN0eWxlO1xuXG4gIGZvciAoIHZhciBwcm9wIGluIHN0eWxlICkge1xuICAgIC8vIHVzZSB2ZW5kb3IgcHJvcGVydHkgaWYgYXZhaWxhYmxlXG4gICAgdmFyIHN1cHBvcnRlZFByb3AgPSB2ZW5kb3JQcm9wZXJ0aWVzWyBwcm9wIF0gfHwgcHJvcDtcbiAgICBlbGVtU3R5bGVbIHN1cHBvcnRlZFByb3AgXSA9IHN0eWxlWyBwcm9wIF07XG4gIH1cbn07XG5cbiAvLyBtZWFzdXJlIHBvc2l0aW9uLCBhbmQgc2V0cyBpdFxucHJvdG8uZ2V0UG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSggdGhpcy5lbGVtZW50ICk7XG4gIHZhciBpc09yaWdpbkxlZnQgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdvcmlnaW5MZWZ0Jyk7XG4gIHZhciBpc09yaWdpblRvcCA9IHRoaXMubGF5b3V0Ll9nZXRPcHRpb24oJ29yaWdpblRvcCcpO1xuICB2YXIgeFZhbHVlID0gc3R5bGVbIGlzT3JpZ2luTGVmdCA/ICdsZWZ0JyA6ICdyaWdodCcgXTtcbiAgdmFyIHlWYWx1ZSA9IHN0eWxlWyBpc09yaWdpblRvcCA/ICd0b3AnIDogJ2JvdHRvbScgXTtcbiAgdmFyIHggPSBwYXJzZUZsb2F0KCB4VmFsdWUgKTtcbiAgdmFyIHkgPSBwYXJzZUZsb2F0KCB5VmFsdWUgKTtcbiAgLy8gY29udmVydCBwZXJjZW50IHRvIHBpeGVsc1xuICB2YXIgbGF5b3V0U2l6ZSA9IHRoaXMubGF5b3V0LnNpemU7XG4gIGlmICggeFZhbHVlLmluZGV4T2YoJyUnKSAhPSAtMSApIHtcbiAgICB4ID0gKCB4IC8gMTAwICkgKiBsYXlvdXRTaXplLndpZHRoO1xuICB9XG4gIGlmICggeVZhbHVlLmluZGV4T2YoJyUnKSAhPSAtMSApIHtcbiAgICB5ID0gKCB5IC8gMTAwICkgKiBsYXlvdXRTaXplLmhlaWdodDtcbiAgfVxuICAvLyBjbGVhbiB1cCAnYXV0bycgb3Igb3RoZXIgbm9uLWludGVnZXIgdmFsdWVzXG4gIHggPSBpc05hTiggeCApID8gMCA6IHg7XG4gIHkgPSBpc05hTiggeSApID8gMCA6IHk7XG4gIC8vIHJlbW92ZSBwYWRkaW5nIGZyb20gbWVhc3VyZW1lbnRcbiAgeCAtPSBpc09yaWdpbkxlZnQgPyBsYXlvdXRTaXplLnBhZGRpbmdMZWZ0IDogbGF5b3V0U2l6ZS5wYWRkaW5nUmlnaHQ7XG4gIHkgLT0gaXNPcmlnaW5Ub3AgPyBsYXlvdXRTaXplLnBhZGRpbmdUb3AgOiBsYXlvdXRTaXplLnBhZGRpbmdCb3R0b207XG5cbiAgdGhpcy5wb3NpdGlvbi54ID0geDtcbiAgdGhpcy5wb3NpdGlvbi55ID0geTtcbn07XG5cbi8vIHNldCBzZXR0bGVkIHBvc2l0aW9uLCBhcHBseSBwYWRkaW5nXG5wcm90by5sYXlvdXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbGF5b3V0U2l6ZSA9IHRoaXMubGF5b3V0LnNpemU7XG4gIHZhciBzdHlsZSA9IHt9O1xuICB2YXIgaXNPcmlnaW5MZWZ0ID0gdGhpcy5sYXlvdXQuX2dldE9wdGlvbignb3JpZ2luTGVmdCcpO1xuICB2YXIgaXNPcmlnaW5Ub3AgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdvcmlnaW5Ub3AnKTtcblxuICAvLyB4XG4gIHZhciB4UGFkZGluZyA9IGlzT3JpZ2luTGVmdCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgdmFyIHhQcm9wZXJ0eSA9IGlzT3JpZ2luTGVmdCA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gIHZhciB4UmVzZXRQcm9wZXJ0eSA9IGlzT3JpZ2luTGVmdCA/ICdyaWdodCcgOiAnbGVmdCc7XG5cbiAgdmFyIHggPSB0aGlzLnBvc2l0aW9uLnggKyBsYXlvdXRTaXplWyB4UGFkZGluZyBdO1xuICAvLyBzZXQgaW4gcGVyY2VudGFnZSBvciBwaXhlbHNcbiAgc3R5bGVbIHhQcm9wZXJ0eSBdID0gdGhpcy5nZXRYVmFsdWUoIHggKTtcbiAgLy8gcmVzZXQgb3RoZXIgcHJvcGVydHlcbiAgc3R5bGVbIHhSZXNldFByb3BlcnR5IF0gPSAnJztcblxuICAvLyB5XG4gIHZhciB5UGFkZGluZyA9IGlzT3JpZ2luVG9wID8gJ3BhZGRpbmdUb3AnIDogJ3BhZGRpbmdCb3R0b20nO1xuICB2YXIgeVByb3BlcnR5ID0gaXNPcmlnaW5Ub3AgPyAndG9wJyA6ICdib3R0b20nO1xuICB2YXIgeVJlc2V0UHJvcGVydHkgPSBpc09yaWdpblRvcCA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgdmFyIHkgPSB0aGlzLnBvc2l0aW9uLnkgKyBsYXlvdXRTaXplWyB5UGFkZGluZyBdO1xuICAvLyBzZXQgaW4gcGVyY2VudGFnZSBvciBwaXhlbHNcbiAgc3R5bGVbIHlQcm9wZXJ0eSBdID0gdGhpcy5nZXRZVmFsdWUoIHkgKTtcbiAgLy8gcmVzZXQgb3RoZXIgcHJvcGVydHlcbiAgc3R5bGVbIHlSZXNldFByb3BlcnR5IF0gPSAnJztcblxuICB0aGlzLmNzcyggc3R5bGUgKTtcbiAgdGhpcy5lbWl0RXZlbnQoICdsYXlvdXQnLCBbIHRoaXMgXSApO1xufTtcblxucHJvdG8uZ2V0WFZhbHVlID0gZnVuY3Rpb24oIHggKSB7XG4gIHZhciBpc0hvcml6b250YWwgPSB0aGlzLmxheW91dC5fZ2V0T3B0aW9uKCdob3Jpem9udGFsJyk7XG4gIHJldHVybiB0aGlzLmxheW91dC5vcHRpb25zLnBlcmNlbnRQb3NpdGlvbiAmJiAhaXNIb3Jpem9udGFsID9cbiAgICAoICggeCAvIHRoaXMubGF5b3V0LnNpemUud2lkdGggKSAqIDEwMCApICsgJyUnIDogeCArICdweCc7XG59O1xuXG5wcm90by5nZXRZVmFsdWUgPSBmdW5jdGlvbiggeSApIHtcbiAgdmFyIGlzSG9yaXpvbnRhbCA9IHRoaXMubGF5b3V0Ll9nZXRPcHRpb24oJ2hvcml6b250YWwnKTtcbiAgcmV0dXJuIHRoaXMubGF5b3V0Lm9wdGlvbnMucGVyY2VudFBvc2l0aW9uICYmIGlzSG9yaXpvbnRhbCA/XG4gICAgKCAoIHkgLyB0aGlzLmxheW91dC5zaXplLmhlaWdodCApICogMTAwICkgKyAnJScgOiB5ICsgJ3B4Jztcbn07XG5cbnByb3RvLl90cmFuc2l0aW9uVG8gPSBmdW5jdGlvbiggeCwgeSApIHtcbiAgdGhpcy5nZXRQb3NpdGlvbigpO1xuICAvLyBnZXQgY3VycmVudCB4ICYgeSBmcm9tIHRvcC9sZWZ0XG4gIHZhciBjdXJYID0gdGhpcy5wb3NpdGlvbi54O1xuICB2YXIgY3VyWSA9IHRoaXMucG9zaXRpb24ueTtcblxuICB2YXIgZGlkTm90TW92ZSA9IHggPT0gdGhpcy5wb3NpdGlvbi54ICYmIHkgPT0gdGhpcy5wb3NpdGlvbi55O1xuXG4gIC8vIHNhdmUgZW5kIHBvc2l0aW9uXG4gIHRoaXMuc2V0UG9zaXRpb24oIHgsIHkgKTtcblxuICAvLyBpZiBkaWQgbm90IG1vdmUgYW5kIG5vdCB0cmFuc2l0aW9uaW5nLCBqdXN0IGdvIHRvIGxheW91dFxuICBpZiAoIGRpZE5vdE1vdmUgJiYgIXRoaXMuaXNUcmFuc2l0aW9uaW5nICkge1xuICAgIHRoaXMubGF5b3V0UG9zaXRpb24oKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdHJhbnNYID0geCAtIGN1clg7XG4gIHZhciB0cmFuc1kgPSB5IC0gY3VyWTtcbiAgdmFyIHRyYW5zaXRpb25TdHlsZSA9IHt9O1xuICB0cmFuc2l0aW9uU3R5bGUudHJhbnNmb3JtID0gdGhpcy5nZXRUcmFuc2xhdGUoIHRyYW5zWCwgdHJhbnNZICk7XG5cbiAgdGhpcy50cmFuc2l0aW9uKHtcbiAgICB0bzogdHJhbnNpdGlvblN0eWxlLFxuICAgIG9uVHJhbnNpdGlvbkVuZDoge1xuICAgICAgdHJhbnNmb3JtOiB0aGlzLmxheW91dFBvc2l0aW9uXG4gICAgfSxcbiAgICBpc0NsZWFuaW5nOiB0cnVlXG4gIH0pO1xufTtcblxucHJvdG8uZ2V0VHJhbnNsYXRlID0gZnVuY3Rpb24oIHgsIHkgKSB7XG4gIC8vIGZsaXAgY29vcmlkaW5hdGVzIGlmIG9yaWdpbiBvbiByaWdodCBvciBib3R0b21cbiAgdmFyIGlzT3JpZ2luTGVmdCA9IHRoaXMubGF5b3V0Ll9nZXRPcHRpb24oJ29yaWdpbkxlZnQnKTtcbiAgdmFyIGlzT3JpZ2luVG9wID0gdGhpcy5sYXlvdXQuX2dldE9wdGlvbignb3JpZ2luVG9wJyk7XG4gIHggPSBpc09yaWdpbkxlZnQgPyB4IDogLXg7XG4gIHkgPSBpc09yaWdpblRvcCA/IHkgOiAteTtcbiAgcmV0dXJuICd0cmFuc2xhdGUzZCgnICsgeCArICdweCwgJyArIHkgKyAncHgsIDApJztcbn07XG5cbi8vIG5vbiB0cmFuc2l0aW9uICsgdHJhbnNmb3JtIHN1cHBvcnRcbnByb3RvLmdvVG8gPSBmdW5jdGlvbiggeCwgeSApIHtcbiAgdGhpcy5zZXRQb3NpdGlvbiggeCwgeSApO1xuICB0aGlzLmxheW91dFBvc2l0aW9uKCk7XG59O1xuXG5wcm90by5tb3ZlVG8gPSBwcm90by5fdHJhbnNpdGlvblRvO1xuXG5wcm90by5zZXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCB4LCB5ICkge1xuICB0aGlzLnBvc2l0aW9uLnggPSBwYXJzZUZsb2F0KCB4ICk7XG4gIHRoaXMucG9zaXRpb24ueSA9IHBhcnNlRmxvYXQoIHkgKTtcbn07XG5cbi8vIC0tLS0tIHRyYW5zaXRpb24gLS0tLS0gLy9cblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdH0gc3R5bGUgLSBDU1NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uVHJhbnNpdGlvbkVuZFxuICovXG5cbi8vIG5vbiB0cmFuc2l0aW9uLCBqdXN0IHRyaWdnZXIgY2FsbGJhY2tcbnByb3RvLl9ub25UcmFuc2l0aW9uID0gZnVuY3Rpb24oIGFyZ3MgKSB7XG4gIHRoaXMuY3NzKCBhcmdzLnRvICk7XG4gIGlmICggYXJncy5pc0NsZWFuaW5nICkge1xuICAgIHRoaXMuX3JlbW92ZVN0eWxlcyggYXJncy50byApO1xuICB9XG4gIGZvciAoIHZhciBwcm9wIGluIGFyZ3Mub25UcmFuc2l0aW9uRW5kICkge1xuICAgIGFyZ3Mub25UcmFuc2l0aW9uRW5kWyBwcm9wIF0uY2FsbCggdGhpcyApO1xuICB9XG59O1xuXG4vKipcbiAqIHByb3BlciB0cmFuc2l0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gYXJncyAtIGFyZ3VtZW50c1xuICogICBAcGFyYW0ge09iamVjdH0gdG8gLSBzdHlsZSB0byB0cmFuc2l0aW9uIHRvXG4gKiAgIEBwYXJhbSB7T2JqZWN0fSBmcm9tIC0gc3R5bGUgdG8gc3RhcnQgdHJhbnNpdGlvbiBmcm9tXG4gKiAgIEBwYXJhbSB7Qm9vbGVhbn0gaXNDbGVhbmluZyAtIHJlbW92ZXMgdHJhbnNpdGlvbiBzdHlsZXMgYWZ0ZXIgdHJhbnNpdGlvblxuICogICBAcGFyYW0ge0Z1bmN0aW9ufSBvblRyYW5zaXRpb25FbmQgLSBjYWxsYmFja1xuICovXG5wcm90by50cmFuc2l0aW9uID0gZnVuY3Rpb24oIGFyZ3MgKSB7XG4gIC8vIHJlZGlyZWN0IHRvIG5vblRyYW5zaXRpb24gaWYgbm8gdHJhbnNpdGlvbiBkdXJhdGlvblxuICBpZiAoICFwYXJzZUZsb2F0KCB0aGlzLmxheW91dC5vcHRpb25zLnRyYW5zaXRpb25EdXJhdGlvbiApICkge1xuICAgIHRoaXMuX25vblRyYW5zaXRpb24oIGFyZ3MgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX3RyYW5zaXRpb24gPSB0aGlzLl90cmFuc247XG4gIC8vIGtlZXAgdHJhY2sgb2Ygb25UcmFuc2l0aW9uRW5kIGNhbGxiYWNrIGJ5IGNzcyBwcm9wZXJ0eVxuICBmb3IgKCB2YXIgcHJvcCBpbiBhcmdzLm9uVHJhbnNpdGlvbkVuZCApIHtcbiAgICBfdHJhbnNpdGlvbi5vbkVuZFsgcHJvcCBdID0gYXJncy5vblRyYW5zaXRpb25FbmRbIHByb3AgXTtcbiAgfVxuICAvLyBrZWVwIHRyYWNrIG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgdHJhbnNpdGlvbmluZ1xuICBmb3IgKCBwcm9wIGluIGFyZ3MudG8gKSB7XG4gICAgX3RyYW5zaXRpb24uaW5nUHJvcGVydGllc1sgcHJvcCBdID0gdHJ1ZTtcbiAgICAvLyBrZWVwIHRyYWNrIG9mIHByb3BlcnRpZXMgdG8gY2xlYW4gdXAgd2hlbiB0cmFuc2l0aW9uIGlzIGRvbmVcbiAgICBpZiAoIGFyZ3MuaXNDbGVhbmluZyApIHtcbiAgICAgIF90cmFuc2l0aW9uLmNsZWFuWyBwcm9wIF0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBmcm9tIHN0eWxlc1xuICBpZiAoIGFyZ3MuZnJvbSApIHtcbiAgICB0aGlzLmNzcyggYXJncy5mcm9tICk7XG4gICAgLy8gZm9yY2UgcmVkcmF3LiBodHRwOi8vYmxvZy5hbGV4bWFjY2F3LmNvbS9jc3MtdHJhbnNpdGlvbnNcbiAgICB2YXIgaCA9IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgLy8gaGFjayBmb3IgSlNIaW50IHRvIGh1c2ggYWJvdXQgdW51c2VkIHZhclxuICAgIGggPSBudWxsO1xuICB9XG4gIC8vIGVuYWJsZSB0cmFuc2l0aW9uXG4gIHRoaXMuZW5hYmxlVHJhbnNpdGlvbiggYXJncy50byApO1xuICAvLyBzZXQgc3R5bGVzIHRoYXQgYXJlIHRyYW5zaXRpb25pbmdcbiAgdGhpcy5jc3MoIGFyZ3MudG8gKTtcblxuICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XG5cbn07XG5cbi8vIGRhc2ggYmVmb3JlIGFsbCBjYXAgbGV0dGVycywgaW5jbHVkaW5nIGZpcnN0IGZvclxuLy8gV2Via2l0VHJhbnNmb3JtID0+IC13ZWJraXQtdHJhbnNmb3JtXG5mdW5jdGlvbiB0b0Rhc2hlZEFsbCggc3RyICkge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoIC8oW0EtWl0pL2csIGZ1bmN0aW9uKCAkMSApIHtcbiAgICByZXR1cm4gJy0nICsgJDEudG9Mb3dlckNhc2UoKTtcbiAgfSk7XG59XG5cbnZhciB0cmFuc2l0aW9uUHJvcHMgPSAnb3BhY2l0eSwnICsgdG9EYXNoZWRBbGwoIHRyYW5zZm9ybVByb3BlcnR5ICk7XG5cbnByb3RvLmVuYWJsZVRyYW5zaXRpb24gPSBmdW5jdGlvbigvKiBzdHlsZSAqLykge1xuICAvLyBIQUNLIGNoYW5naW5nIHRyYW5zaXRpb25Qcm9wZXJ0eSBkdXJpbmcgYSB0cmFuc2l0aW9uXG4gIC8vIHdpbGwgY2F1c2UgdHJhbnNpdGlvbiB0byBqdW1wXG4gIGlmICggdGhpcy5pc1RyYW5zaXRpb25pbmcgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gbWFrZSBgdHJhbnNpdGlvbjogZm9vLCBiYXIsIGJhemAgZnJvbSBzdHlsZSBvYmplY3RcbiAgLy8gSEFDSyB1bi1jb21tZW50IHRoaXMgd2hlbiBlbmFibGVUcmFuc2l0aW9uIGNhbiB3b3JrXG4gIC8vIHdoaWxlIGEgdHJhbnNpdGlvbiBpcyBoYXBwZW5pbmdcbiAgLy8gdmFyIHRyYW5zaXRpb25WYWx1ZXMgPSBbXTtcbiAgLy8gZm9yICggdmFyIHByb3AgaW4gc3R5bGUgKSB7XG4gIC8vICAgLy8gZGFzaC1pZnkgY2FtZWxDYXNlZCBwcm9wZXJ0aWVzIGxpa2UgV2Via2l0VHJhbnNpdGlvblxuICAvLyAgIHByb3AgPSB2ZW5kb3JQcm9wZXJ0aWVzWyBwcm9wIF0gfHwgcHJvcDtcbiAgLy8gICB0cmFuc2l0aW9uVmFsdWVzLnB1c2goIHRvRGFzaGVkQWxsKCBwcm9wICkgKTtcbiAgLy8gfVxuICAvLyBtdW5nZSBudW1iZXIgdG8gbWlsbGlzZWNvbmQsIHRvIG1hdGNoIHN0YWdnZXJcbiAgdmFyIGR1cmF0aW9uID0gdGhpcy5sYXlvdXQub3B0aW9ucy50cmFuc2l0aW9uRHVyYXRpb247XG4gIGR1cmF0aW9uID0gdHlwZW9mIGR1cmF0aW9uID09ICdudW1iZXInID8gZHVyYXRpb24gKyAnbXMnIDogZHVyYXRpb247XG4gIC8vIGVuYWJsZSB0cmFuc2l0aW9uIHN0eWxlc1xuICB0aGlzLmNzcyh7XG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiB0cmFuc2l0aW9uUHJvcHMsXG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uRGVsYXk6IHRoaXMuc3RhZ2dlckRlbGF5IHx8IDBcbiAgfSk7XG4gIC8vIGxpc3RlbiBmb3IgdHJhbnNpdGlvbiBlbmQgZXZlbnRcbiAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIHRyYW5zaXRpb25FbmRFdmVudCwgdGhpcywgZmFsc2UgKTtcbn07XG5cbi8vIC0tLS0tIGV2ZW50cyAtLS0tLSAvL1xuXG5wcm90by5vbndlYmtpdFRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiggZXZlbnQgKSB7XG4gIHRoaXMub250cmFuc2l0aW9uZW5kKCBldmVudCApO1xufTtcblxucHJvdG8ub25vdHJhbnNpdGlvbmVuZCA9IGZ1bmN0aW9uKCBldmVudCApIHtcbiAgdGhpcy5vbnRyYW5zaXRpb25lbmQoIGV2ZW50ICk7XG59O1xuXG4vLyBwcm9wZXJ0aWVzIHRoYXQgSSBtdW5nZSB0byBtYWtlIG15IGxpZmUgZWFzaWVyXG52YXIgZGFzaGVkVmVuZG9yUHJvcGVydGllcyA9IHtcbiAgJy13ZWJraXQtdHJhbnNmb3JtJzogJ3RyYW5zZm9ybSdcbn07XG5cbnByb3RvLm9udHJhbnNpdGlvbmVuZCA9IGZ1bmN0aW9uKCBldmVudCApIHtcbiAgLy8gZGlzcmVnYXJkIGJ1YmJsZWQgZXZlbnRzIGZyb20gY2hpbGRyZW5cbiAgaWYgKCBldmVudC50YXJnZXQgIT09IHRoaXMuZWxlbWVudCApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIF90cmFuc2l0aW9uID0gdGhpcy5fdHJhbnNuO1xuICAvLyBnZXQgcHJvcGVydHkgbmFtZSBvZiB0cmFuc2l0aW9uZWQgcHJvcGVydHksIGNvbnZlcnQgdG8gcHJlZml4LWZyZWVcbiAgdmFyIHByb3BlcnR5TmFtZSA9IGRhc2hlZFZlbmRvclByb3BlcnRpZXNbIGV2ZW50LnByb3BlcnR5TmFtZSBdIHx8IGV2ZW50LnByb3BlcnR5TmFtZTtcblxuICAvLyByZW1vdmUgcHJvcGVydHkgdGhhdCBoYXMgY29tcGxldGVkIHRyYW5zaXRpb25pbmdcbiAgZGVsZXRlIF90cmFuc2l0aW9uLmluZ1Byb3BlcnRpZXNbIHByb3BlcnR5TmFtZSBdO1xuICAvLyBjaGVjayBpZiBhbnkgcHJvcGVydGllcyBhcmUgc3RpbGwgdHJhbnNpdGlvbmluZ1xuICBpZiAoIGlzRW1wdHlPYmooIF90cmFuc2l0aW9uLmluZ1Byb3BlcnRpZXMgKSApIHtcbiAgICAvLyBhbGwgcHJvcGVydGllcyBoYXZlIGNvbXBsZXRlZCB0cmFuc2l0aW9uaW5nXG4gICAgdGhpcy5kaXNhYmxlVHJhbnNpdGlvbigpO1xuICB9XG4gIC8vIGNsZWFuIHN0eWxlXG4gIGlmICggcHJvcGVydHlOYW1lIGluIF90cmFuc2l0aW9uLmNsZWFuICkge1xuICAgIC8vIGNsZWFuIHVwIHN0eWxlXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlWyBldmVudC5wcm9wZXJ0eU5hbWUgXSA9ICcnO1xuICAgIGRlbGV0ZSBfdHJhbnNpdGlvbi5jbGVhblsgcHJvcGVydHlOYW1lIF07XG4gIH1cbiAgLy8gdHJpZ2dlciBvblRyYW5zaXRpb25FbmQgY2FsbGJhY2tcbiAgaWYgKCBwcm9wZXJ0eU5hbWUgaW4gX3RyYW5zaXRpb24ub25FbmQgKSB7XG4gICAgdmFyIG9uVHJhbnNpdGlvbkVuZCA9IF90cmFuc2l0aW9uLm9uRW5kWyBwcm9wZXJ0eU5hbWUgXTtcbiAgICBvblRyYW5zaXRpb25FbmQuY2FsbCggdGhpcyApO1xuICAgIGRlbGV0ZSBfdHJhbnNpdGlvbi5vbkVuZFsgcHJvcGVydHlOYW1lIF07XG4gIH1cblxuICB0aGlzLmVtaXRFdmVudCggJ3RyYW5zaXRpb25FbmQnLCBbIHRoaXMgXSApO1xufTtcblxucHJvdG8uZGlzYWJsZVRyYW5zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yZW1vdmVUcmFuc2l0aW9uU3R5bGVzKCk7XG4gIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCB0cmFuc2l0aW9uRW5kRXZlbnQsIHRoaXMsIGZhbHNlICk7XG4gIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG59O1xuXG4vKipcbiAqIHJlbW92ZXMgc3R5bGUgcHJvcGVydHkgZnJvbSBlbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gc3R5bGVcbioqL1xucHJvdG8uX3JlbW92ZVN0eWxlcyA9IGZ1bmN0aW9uKCBzdHlsZSApIHtcbiAgLy8gY2xlYW4gdXAgdHJhbnNpdGlvbiBzdHlsZXNcbiAgdmFyIGNsZWFuU3R5bGUgPSB7fTtcbiAgZm9yICggdmFyIHByb3AgaW4gc3R5bGUgKSB7XG4gICAgY2xlYW5TdHlsZVsgcHJvcCBdID0gJyc7XG4gIH1cbiAgdGhpcy5jc3MoIGNsZWFuU3R5bGUgKTtcbn07XG5cbnZhciBjbGVhblRyYW5zaXRpb25TdHlsZSA9IHtcbiAgdHJhbnNpdGlvblByb3BlcnR5OiAnJyxcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnJyxcbiAgdHJhbnNpdGlvbkRlbGF5OiAnJ1xufTtcblxucHJvdG8ucmVtb3ZlVHJhbnNpdGlvblN0eWxlcyA9IGZ1bmN0aW9uKCkge1xuICAvLyByZW1vdmUgdHJhbnNpdGlvblxuICB0aGlzLmNzcyggY2xlYW5UcmFuc2l0aW9uU3R5bGUgKTtcbn07XG5cbi8vIC0tLS0tIHN0YWdnZXIgLS0tLS0gLy9cblxucHJvdG8uc3RhZ2dlciA9IGZ1bmN0aW9uKCBkZWxheSApIHtcbiAgZGVsYXkgPSBpc05hTiggZGVsYXkgKSA/IDAgOiBkZWxheTtcbiAgdGhpcy5zdGFnZ2VyRGVsYXkgPSBkZWxheSArICdtcyc7XG59O1xuXG4vLyAtLS0tLSBzaG93L2hpZGUvcmVtb3ZlIC0tLS0tIC8vXG5cbi8vIHJlbW92ZSBlbGVtZW50IGZyb20gRE9NXG5wcm90by5yZW1vdmVFbGVtID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCB0aGlzLmVsZW1lbnQgKTtcbiAgLy8gcmVtb3ZlIGRpc3BsYXk6IG5vbmVcbiAgdGhpcy5jc3MoeyBkaXNwbGF5OiAnJyB9KTtcbiAgdGhpcy5lbWl0RXZlbnQoICdyZW1vdmUnLCBbIHRoaXMgXSApO1xufTtcblxucHJvdG8ucmVtb3ZlID0gZnVuY3Rpb24oKSB7XG4gIC8vIGp1c3QgcmVtb3ZlIGVsZW1lbnQgaWYgbm8gdHJhbnNpdGlvbiBzdXBwb3J0IG9yIG5vIHRyYW5zaXRpb25cbiAgaWYgKCAhdHJhbnNpdGlvblByb3BlcnR5IHx8ICFwYXJzZUZsb2F0KCB0aGlzLmxheW91dC5vcHRpb25zLnRyYW5zaXRpb25EdXJhdGlvbiApICkge1xuICAgIHRoaXMucmVtb3ZlRWxlbSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHN0YXJ0IHRyYW5zaXRpb25cbiAgdGhpcy5vbmNlKCAndHJhbnNpdGlvbkVuZCcsIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlRWxlbSgpO1xuICB9KTtcbiAgdGhpcy5oaWRlKCk7XG59O1xuXG5wcm90by5yZXZlYWwgPSBmdW5jdGlvbigpIHtcbiAgZGVsZXRlIHRoaXMuaXNIaWRkZW47XG4gIC8vIHJlbW92ZSBkaXNwbGF5OiBub25lXG4gIHRoaXMuY3NzKHsgZGlzcGxheTogJycgfSk7XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLmxheW91dC5vcHRpb25zO1xuXG4gIHZhciBvblRyYW5zaXRpb25FbmQgPSB7fTtcbiAgdmFyIHRyYW5zaXRpb25FbmRQcm9wZXJ0eSA9IHRoaXMuZ2V0SGlkZVJldmVhbFRyYW5zaXRpb25FbmRQcm9wZXJ0eSgndmlzaWJsZVN0eWxlJyk7XG4gIG9uVHJhbnNpdGlvbkVuZFsgdHJhbnNpdGlvbkVuZFByb3BlcnR5IF0gPSB0aGlzLm9uUmV2ZWFsVHJhbnNpdGlvbkVuZDtcblxuICB0aGlzLnRyYW5zaXRpb24oe1xuICAgIGZyb206IG9wdGlvbnMuaGlkZGVuU3R5bGUsXG4gICAgdG86IG9wdGlvbnMudmlzaWJsZVN0eWxlLFxuICAgIGlzQ2xlYW5pbmc6IHRydWUsXG4gICAgb25UcmFuc2l0aW9uRW5kOiBvblRyYW5zaXRpb25FbmRcbiAgfSk7XG59O1xuXG5wcm90by5vblJldmVhbFRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbigpIHtcbiAgLy8gY2hlY2sgaWYgc3RpbGwgdmlzaWJsZVxuICAvLyBkdXJpbmcgdHJhbnNpdGlvbiwgaXRlbSBtYXkgaGF2ZSBiZWVuIGhpZGRlblxuICBpZiAoICF0aGlzLmlzSGlkZGVuICkge1xuICAgIHRoaXMuZW1pdEV2ZW50KCdyZXZlYWwnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBnZXQgc3R5bGUgcHJvcGVydHkgdXNlIGZvciBoaWRlL3JldmVhbCB0cmFuc2l0aW9uIGVuZFxuICogQHBhcmFtIHtTdHJpbmd9IHN0eWxlUHJvcGVydHkgLSBoaWRkZW5TdHlsZS92aXNpYmxlU3R5bGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbnByb3RvLmdldEhpZGVSZXZlYWxUcmFuc2l0aW9uRW5kUHJvcGVydHkgPSBmdW5jdGlvbiggc3R5bGVQcm9wZXJ0eSApIHtcbiAgdmFyIG9wdGlvblN0eWxlID0gdGhpcy5sYXlvdXQub3B0aW9uc1sgc3R5bGVQcm9wZXJ0eSBdO1xuICAvLyB1c2Ugb3BhY2l0eVxuICBpZiAoIG9wdGlvblN0eWxlLm9wYWNpdHkgKSB7XG4gICAgcmV0dXJuICdvcGFjaXR5JztcbiAgfVxuICAvLyBnZXQgZmlyc3QgcHJvcGVydHlcbiAgZm9yICggdmFyIHByb3AgaW4gb3B0aW9uU3R5bGUgKSB7XG4gICAgcmV0dXJuIHByb3A7XG4gIH1cbn07XG5cbnByb3RvLmhpZGUgPSBmdW5jdGlvbigpIHtcbiAgLy8gc2V0IGZsYWdcbiAgdGhpcy5pc0hpZGRlbiA9IHRydWU7XG4gIC8vIHJlbW92ZSBkaXNwbGF5OiBub25lXG4gIHRoaXMuY3NzKHsgZGlzcGxheTogJycgfSk7XG5cbiAgdmFyIG9wdGlvbnMgPSB0aGlzLmxheW91dC5vcHRpb25zO1xuXG4gIHZhciBvblRyYW5zaXRpb25FbmQgPSB7fTtcbiAgdmFyIHRyYW5zaXRpb25FbmRQcm9wZXJ0eSA9IHRoaXMuZ2V0SGlkZVJldmVhbFRyYW5zaXRpb25FbmRQcm9wZXJ0eSgnaGlkZGVuU3R5bGUnKTtcbiAgb25UcmFuc2l0aW9uRW5kWyB0cmFuc2l0aW9uRW5kUHJvcGVydHkgXSA9IHRoaXMub25IaWRlVHJhbnNpdGlvbkVuZDtcblxuICB0aGlzLnRyYW5zaXRpb24oe1xuICAgIGZyb206IG9wdGlvbnMudmlzaWJsZVN0eWxlLFxuICAgIHRvOiBvcHRpb25zLmhpZGRlblN0eWxlLFxuICAgIC8vIGtlZXAgaGlkZGVuIHN0dWZmIGhpZGRlblxuICAgIGlzQ2xlYW5pbmc6IHRydWUsXG4gICAgb25UcmFuc2l0aW9uRW5kOiBvblRyYW5zaXRpb25FbmRcbiAgfSk7XG59O1xuXG5wcm90by5vbkhpZGVUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oKSB7XG4gIC8vIGNoZWNrIGlmIHN0aWxsIGhpZGRlblxuICAvLyBkdXJpbmcgdHJhbnNpdGlvbiwgaXRlbSBtYXkgaGF2ZSBiZWVuIHVuLWhpZGRlblxuICBpZiAoIHRoaXMuaXNIaWRkZW4gKSB7XG4gICAgdGhpcy5jc3MoeyBkaXNwbGF5OiAnbm9uZScgfSk7XG4gICAgdGhpcy5lbWl0RXZlbnQoJ2hpZGUnKTtcbiAgfVxufTtcblxucHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmNzcyh7XG4gICAgcG9zaXRpb246ICcnLFxuICAgIGxlZnQ6ICcnLFxuICAgIHJpZ2h0OiAnJyxcbiAgICB0b3A6ICcnLFxuICAgIGJvdHRvbTogJycsXG4gICAgdHJhbnNpdGlvbjogJycsXG4gICAgdHJhbnNmb3JtOiAnJ1xuICB9KTtcbn07XG5cbnJldHVybiBJdGVtO1xuXG59KSk7XG4iLCIvKiFcbiAqIGltYWdlc0xvYWRlZCB2NC4xLjRcbiAqIEphdmFTY3JpcHQgaXMgYWxsIGxpa2UgXCJZb3UgaW1hZ2VzIGFyZSBkb25lIHlldCBvciB3aGF0P1wiXG4gKiBNSVQgTGljZW5zZVxuICovXG5cbiggZnVuY3Rpb24oIHdpbmRvdywgZmFjdG9yeSApIHsgJ3VzZSBzdHJpY3QnO1xuICAvLyB1bml2ZXJzYWwgbW9kdWxlIGRlZmluaXRpb25cblxuICAvKmdsb2JhbCBkZWZpbmU6IGZhbHNlLCBtb2R1bGU6IGZhbHNlLCByZXF1aXJlOiBmYWxzZSAqL1xuXG4gIGlmICggdHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgKSB7XG4gICAgLy8gQU1EXG4gICAgZGVmaW5lKCBbXG4gICAgICAnZXYtZW1pdHRlci9ldi1lbWl0dGVyJ1xuICAgIF0sIGZ1bmN0aW9uKCBFdkVtaXR0ZXIgKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeSggd2luZG93LCBFdkVtaXR0ZXIgKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICggdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cyApIHtcbiAgICAvLyBDb21tb25KU1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdyxcbiAgICAgIHJlcXVpcmUoJ2V2LWVtaXR0ZXInKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYnJvd3NlciBnbG9iYWxcbiAgICB3aW5kb3cuaW1hZ2VzTG9hZGVkID0gZmFjdG9yeShcbiAgICAgIHdpbmRvdyxcbiAgICAgIHdpbmRvdy5FdkVtaXR0ZXJcbiAgICApO1xuICB9XG5cbn0pKCB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHRoaXMsXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBmYWN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbmZ1bmN0aW9uIGZhY3RvcnkoIHdpbmRvdywgRXZFbWl0dGVyICkge1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciAkID0gd2luZG93LmpRdWVyeTtcbnZhciBjb25zb2xlID0gd2luZG93LmNvbnNvbGU7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLy8gZXh0ZW5kIG9iamVjdHNcbmZ1bmN0aW9uIGV4dGVuZCggYSwgYiApIHtcbiAgZm9yICggdmFyIHByb3AgaW4gYiApIHtcbiAgICBhWyBwcm9wIF0gPSBiWyBwcm9wIF07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbnZhciBhcnJheVNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuXG4vLyB0dXJuIGVsZW1lbnQgb3Igbm9kZUxpc3QgaW50byBhbiBhcnJheVxuZnVuY3Rpb24gbWFrZUFycmF5KCBvYmogKSB7XG4gIGlmICggQXJyYXkuaXNBcnJheSggb2JqICkgKSB7XG4gICAgLy8gdXNlIG9iamVjdCBpZiBhbHJlYWR5IGFuIGFycmF5XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHZhciBpc0FycmF5TGlrZSA9IHR5cGVvZiBvYmogPT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai5sZW5ndGggPT0gJ251bWJlcic7XG4gIGlmICggaXNBcnJheUxpa2UgKSB7XG4gICAgLy8gY29udmVydCBub2RlTGlzdCB0byBhcnJheVxuICAgIHJldHVybiBhcnJheVNsaWNlLmNhbGwoIG9iaiApO1xuICB9XG5cbiAgLy8gYXJyYXkgb2Ygc2luZ2xlIGluZGV4XG4gIHJldHVybiBbIG9iaiBdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpbWFnZXNMb2FkZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5LCBFbGVtZW50LCBOb2RlTGlzdCwgU3RyaW5nfSBlbGVtXG4gKiBAcGFyYW0ge09iamVjdCBvciBGdW5jdGlvbn0gb3B0aW9ucyAtIGlmIGZ1bmN0aW9uLCB1c2UgYXMgY2FsbGJhY2tcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uQWx3YXlzIC0gY2FsbGJhY2sgZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gSW1hZ2VzTG9hZGVkKCBlbGVtLCBvcHRpb25zLCBvbkFsd2F5cyApIHtcbiAgLy8gY29lcmNlIEltYWdlc0xvYWRlZCgpIHdpdGhvdXQgbmV3LCB0byBiZSBuZXcgSW1hZ2VzTG9hZGVkKClcbiAgaWYgKCAhKCB0aGlzIGluc3RhbmNlb2YgSW1hZ2VzTG9hZGVkICkgKSB7XG4gICAgcmV0dXJuIG5ldyBJbWFnZXNMb2FkZWQoIGVsZW0sIG9wdGlvbnMsIG9uQWx3YXlzICk7XG4gIH1cbiAgLy8gdXNlIGVsZW0gYXMgc2VsZWN0b3Igc3RyaW5nXG4gIHZhciBxdWVyeUVsZW0gPSBlbGVtO1xuICBpZiAoIHR5cGVvZiBlbGVtID09ICdzdHJpbmcnICkge1xuICAgIHF1ZXJ5RWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIGVsZW0gKTtcbiAgfVxuICAvLyBiYWlsIGlmIGJhZCBlbGVtZW50XG4gIGlmICggIXF1ZXJ5RWxlbSApIHtcbiAgICBjb25zb2xlLmVycm9yKCAnQmFkIGVsZW1lbnQgZm9yIGltYWdlc0xvYWRlZCAnICsgKCBxdWVyeUVsZW0gfHwgZWxlbSApICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5lbGVtZW50cyA9IG1ha2VBcnJheSggcXVlcnlFbGVtICk7XG4gIHRoaXMub3B0aW9ucyA9IGV4dGVuZCgge30sIHRoaXMub3B0aW9ucyApO1xuICAvLyBzaGlmdCBhcmd1bWVudHMgaWYgbm8gb3B0aW9ucyBzZXRcbiAgaWYgKCB0eXBlb2Ygb3B0aW9ucyA9PSAnZnVuY3Rpb24nICkge1xuICAgIG9uQWx3YXlzID0gb3B0aW9ucztcbiAgfSBlbHNlIHtcbiAgICBleHRlbmQoIHRoaXMub3B0aW9ucywgb3B0aW9ucyApO1xuICB9XG5cbiAgaWYgKCBvbkFsd2F5cyApIHtcbiAgICB0aGlzLm9uKCAnYWx3YXlzJywgb25BbHdheXMgKTtcbiAgfVxuXG4gIHRoaXMuZ2V0SW1hZ2VzKCk7XG5cbiAgaWYgKCAkICkge1xuICAgIC8vIGFkZCBqUXVlcnkgRGVmZXJyZWQgb2JqZWN0XG4gICAgdGhpcy5qcURlZmVycmVkID0gbmV3ICQuRGVmZXJyZWQoKTtcbiAgfVxuXG4gIC8vIEhBQ0sgY2hlY2sgYXN5bmMgdG8gYWxsb3cgdGltZSB0byBiaW5kIGxpc3RlbmVyc1xuICBzZXRUaW1lb3V0KCB0aGlzLmNoZWNrLmJpbmQoIHRoaXMgKSApO1xufVxuXG5JbWFnZXNMb2FkZWQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggRXZFbWl0dGVyLnByb3RvdHlwZSApO1xuXG5JbWFnZXNMb2FkZWQucHJvdG90eXBlLm9wdGlvbnMgPSB7fTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5nZXRJbWFnZXMgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5pbWFnZXMgPSBbXTtcblxuICAvLyBmaWx0ZXIgJiBmaW5kIGl0ZW1zIGlmIHdlIGhhdmUgYW4gaXRlbSBzZWxlY3RvclxuICB0aGlzLmVsZW1lbnRzLmZvckVhY2goIHRoaXMuYWRkRWxlbWVudEltYWdlcywgdGhpcyApO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IGVsZW1lbnRcbiAqL1xuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5hZGRFbGVtZW50SW1hZ2VzID0gZnVuY3Rpb24oIGVsZW0gKSB7XG4gIC8vIGZpbHRlciBzaWJsaW5nc1xuICBpZiAoIGVsZW0ubm9kZU5hbWUgPT0gJ0lNRycgKSB7XG4gICAgdGhpcy5hZGRJbWFnZSggZWxlbSApO1xuICB9XG4gIC8vIGdldCBiYWNrZ3JvdW5kIGltYWdlIG9uIGVsZW1lbnRcbiAgaWYgKCB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZCA9PT0gdHJ1ZSApIHtcbiAgICB0aGlzLmFkZEVsZW1lbnRCYWNrZ3JvdW5kSW1hZ2VzKCBlbGVtICk7XG4gIH1cblxuICAvLyBmaW5kIGNoaWxkcmVuXG4gIC8vIG5vIG5vbi1lbGVtZW50IG5vZGVzLCAjMTQzXG4gIHZhciBub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG4gIGlmICggIW5vZGVUeXBlIHx8ICFlbGVtZW50Tm9kZVR5cGVzWyBub2RlVHlwZSBdICkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgY2hpbGRJbWdzID0gZWxlbS5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTtcbiAgLy8gY29uY2F0IGNoaWxkRWxlbXMgdG8gZmlsdGVyRm91bmQgYXJyYXlcbiAgZm9yICggdmFyIGk9MDsgaSA8IGNoaWxkSW1ncy5sZW5ndGg7IGkrKyApIHtcbiAgICB2YXIgaW1nID0gY2hpbGRJbWdzW2ldO1xuICAgIHRoaXMuYWRkSW1hZ2UoIGltZyApO1xuICB9XG5cbiAgLy8gZ2V0IGNoaWxkIGJhY2tncm91bmQgaW1hZ2VzXG4gIGlmICggdHlwZW9mIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kID09ICdzdHJpbmcnICkge1xuICAgIHZhciBjaGlsZHJlbiA9IGVsZW0ucXVlcnlTZWxlY3RvckFsbCggdGhpcy5vcHRpb25zLmJhY2tncm91bmQgKTtcbiAgICBmb3IgKCBpPTA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKyApIHtcbiAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgdGhpcy5hZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcyggY2hpbGQgKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBlbGVtZW50Tm9kZVR5cGVzID0ge1xuICAxOiB0cnVlLFxuICA5OiB0cnVlLFxuICAxMTogdHJ1ZVxufTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5hZGRFbGVtZW50QmFja2dyb3VuZEltYWdlcyA9IGZ1bmN0aW9uKCBlbGVtICkge1xuICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG4gIGlmICggIXN0eWxlICkge1xuICAgIC8vIEZpcmVmb3ggcmV0dXJucyBudWxsIGlmIGluIGEgaGlkZGVuIGlmcmFtZSBodHRwczovL2J1Z3ppbC5sYS81NDgzOTdcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gZ2V0IHVybCBpbnNpZGUgdXJsKFwiLi4uXCIpXG4gIHZhciByZVVSTCA9IC91cmxcXCgoWydcIl0pPyguKj8pXFwxXFwpL2dpO1xuICB2YXIgbWF0Y2hlcyA9IHJlVVJMLmV4ZWMoIHN0eWxlLmJhY2tncm91bmRJbWFnZSApO1xuICB3aGlsZSAoIG1hdGNoZXMgIT09IG51bGwgKSB7XG4gICAgdmFyIHVybCA9IG1hdGNoZXMgJiYgbWF0Y2hlc1syXTtcbiAgICBpZiAoIHVybCApIHtcbiAgICAgIHRoaXMuYWRkQmFja2dyb3VuZCggdXJsLCBlbGVtICk7XG4gICAgfVxuICAgIG1hdGNoZXMgPSByZVVSTC5leGVjKCBzdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge0ltYWdlfSBpbWdcbiAqL1xuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5hZGRJbWFnZSA9IGZ1bmN0aW9uKCBpbWcgKSB7XG4gIHZhciBsb2FkaW5nSW1hZ2UgPSBuZXcgTG9hZGluZ0ltYWdlKCBpbWcgKTtcbiAgdGhpcy5pbWFnZXMucHVzaCggbG9hZGluZ0ltYWdlICk7XG59O1xuXG5JbWFnZXNMb2FkZWQucHJvdG90eXBlLmFkZEJhY2tncm91bmQgPSBmdW5jdGlvbiggdXJsLCBlbGVtICkge1xuICB2YXIgYmFja2dyb3VuZCA9IG5ldyBCYWNrZ3JvdW5kKCB1cmwsIGVsZW0gKTtcbiAgdGhpcy5pbWFnZXMucHVzaCggYmFja2dyb3VuZCApO1xufTtcblxuSW1hZ2VzTG9hZGVkLnByb3RvdHlwZS5jaGVjayA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuICB0aGlzLnByb2dyZXNzZWRDb3VudCA9IDA7XG4gIHRoaXMuaGFzQW55QnJva2VuID0gZmFsc2U7XG4gIC8vIGNvbXBsZXRlIGlmIG5vIGltYWdlc1xuICBpZiAoICF0aGlzLmltYWdlcy5sZW5ndGggKSB7XG4gICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUHJvZ3Jlc3MoIGltYWdlLCBlbGVtLCBtZXNzYWdlICkge1xuICAgIC8vIEhBQ0sgLSBDaHJvbWUgdHJpZ2dlcnMgZXZlbnQgYmVmb3JlIG9iamVjdCBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZC4gIzgzXG4gICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG4gICAgICBfdGhpcy5wcm9ncmVzcyggaW1hZ2UsIGVsZW0sIG1lc3NhZ2UgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRoaXMuaW1hZ2VzLmZvckVhY2goIGZ1bmN0aW9uKCBsb2FkaW5nSW1hZ2UgKSB7XG4gICAgbG9hZGluZ0ltYWdlLm9uY2UoICdwcm9ncmVzcycsIG9uUHJvZ3Jlc3MgKTtcbiAgICBsb2FkaW5nSW1hZ2UuY2hlY2soKTtcbiAgfSk7XG59O1xuXG5JbWFnZXNMb2FkZWQucHJvdG90eXBlLnByb2dyZXNzID0gZnVuY3Rpb24oIGltYWdlLCBlbGVtLCBtZXNzYWdlICkge1xuICB0aGlzLnByb2dyZXNzZWRDb3VudCsrO1xuICB0aGlzLmhhc0FueUJyb2tlbiA9IHRoaXMuaGFzQW55QnJva2VuIHx8ICFpbWFnZS5pc0xvYWRlZDtcbiAgLy8gcHJvZ3Jlc3MgZXZlbnRcbiAgdGhpcy5lbWl0RXZlbnQoICdwcm9ncmVzcycsIFsgdGhpcywgaW1hZ2UsIGVsZW0gXSApO1xuICBpZiAoIHRoaXMuanFEZWZlcnJlZCAmJiB0aGlzLmpxRGVmZXJyZWQubm90aWZ5ICkge1xuICAgIHRoaXMuanFEZWZlcnJlZC5ub3RpZnkoIHRoaXMsIGltYWdlICk7XG4gIH1cbiAgLy8gY2hlY2sgaWYgY29tcGxldGVkXG4gIGlmICggdGhpcy5wcm9ncmVzc2VkQ291bnQgPT0gdGhpcy5pbWFnZXMubGVuZ3RoICkge1xuICAgIHRoaXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIGlmICggdGhpcy5vcHRpb25zLmRlYnVnICYmIGNvbnNvbGUgKSB7XG4gICAgY29uc29sZS5sb2coICdwcm9ncmVzczogJyArIG1lc3NhZ2UsIGltYWdlLCBlbGVtICk7XG4gIH1cbn07XG5cbkltYWdlc0xvYWRlZC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGV2ZW50TmFtZSA9IHRoaXMuaGFzQW55QnJva2VuID8gJ2ZhaWwnIDogJ2RvbmUnO1xuICB0aGlzLmlzQ29tcGxldGUgPSB0cnVlO1xuICB0aGlzLmVtaXRFdmVudCggZXZlbnROYW1lLCBbIHRoaXMgXSApO1xuICB0aGlzLmVtaXRFdmVudCggJ2Fsd2F5cycsIFsgdGhpcyBdICk7XG4gIGlmICggdGhpcy5qcURlZmVycmVkICkge1xuICAgIHZhciBqcU1ldGhvZCA9IHRoaXMuaGFzQW55QnJva2VuID8gJ3JlamVjdCcgOiAncmVzb2x2ZSc7XG4gICAgdGhpcy5qcURlZmVycmVkWyBqcU1ldGhvZCBdKCB0aGlzICk7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG5mdW5jdGlvbiBMb2FkaW5nSW1hZ2UoIGltZyApIHtcbiAgdGhpcy5pbWcgPSBpbWc7XG59XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBFdkVtaXR0ZXIucHJvdG90eXBlICk7XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUuY2hlY2sgPSBmdW5jdGlvbigpIHtcbiAgLy8gSWYgY29tcGxldGUgaXMgdHJ1ZSBhbmQgYnJvd3NlciBzdXBwb3J0cyBuYXR1cmFsIHNpemVzLFxuICAvLyB0cnkgdG8gY2hlY2sgZm9yIGltYWdlIHN0YXR1cyBtYW51YWxseS5cbiAgdmFyIGlzQ29tcGxldGUgPSB0aGlzLmdldElzSW1hZ2VDb21wbGV0ZSgpO1xuICBpZiAoIGlzQ29tcGxldGUgKSB7XG4gICAgLy8gcmVwb3J0IGJhc2VkIG9uIG5hdHVyYWxXaWR0aFxuICAgIHRoaXMuY29uZmlybSggdGhpcy5pbWcubmF0dXJhbFdpZHRoICE9PSAwLCAnbmF0dXJhbFdpZHRoJyApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIG5vbmUgb2YgdGhlIGNoZWNrcyBhYm92ZSBtYXRjaGVkLCBzaW11bGF0ZSBsb2FkaW5nIG9uIGRldGFjaGVkIGVsZW1lbnQuXG4gIHRoaXMucHJveHlJbWFnZSA9IG5ldyBJbWFnZSgpO1xuICB0aGlzLnByb3h5SW1hZ2UuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCB0aGlzICk7XG4gIHRoaXMucHJveHlJbWFnZS5hZGRFdmVudExpc3RlbmVyKCAnZXJyb3InLCB0aGlzICk7XG4gIC8vIGJpbmQgdG8gaW1hZ2UgYXMgd2VsbCBmb3IgRmlyZWZveC4gIzE5MVxuICB0aGlzLmltZy5hZGRFdmVudExpc3RlbmVyKCAnbG9hZCcsIHRoaXMgKTtcbiAgdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lciggJ2Vycm9yJywgdGhpcyApO1xuICB0aGlzLnByb3h5SW1hZ2Uuc3JjID0gdGhpcy5pbWcuc3JjO1xufTtcblxuTG9hZGluZ0ltYWdlLnByb3RvdHlwZS5nZXRJc0ltYWdlQ29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgLy8gY2hlY2sgZm9yIG5vbi16ZXJvLCBub24tdW5kZWZpbmVkIG5hdHVyYWxXaWR0aFxuICAvLyBmaXhlcyBTYWZhcmkrSW5maW5pdGVTY3JvbGwrTWFzb25yeSBidWcgaW5maW5pdGUtc2Nyb2xsIzY3MVxuICByZXR1cm4gdGhpcy5pbWcuY29tcGxldGUgJiYgdGhpcy5pbWcubmF0dXJhbFdpZHRoO1xufTtcblxuTG9hZGluZ0ltYWdlLnByb3RvdHlwZS5jb25maXJtID0gZnVuY3Rpb24oIGlzTG9hZGVkLCBtZXNzYWdlICkge1xuICB0aGlzLmlzTG9hZGVkID0gaXNMb2FkZWQ7XG4gIHRoaXMuZW1pdEV2ZW50KCAncHJvZ3Jlc3MnLCBbIHRoaXMsIHRoaXMuaW1nLCBtZXNzYWdlIF0gKTtcbn07XG5cbi8vIC0tLS0tIGV2ZW50cyAtLS0tLSAvL1xuXG4vLyB0cmlnZ2VyIHNwZWNpZmllZCBoYW5kbGVyIGZvciBldmVudCB0eXBlXG5Mb2FkaW5nSW1hZ2UucHJvdG90eXBlLmhhbmRsZUV2ZW50ID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuICB2YXIgbWV0aG9kID0gJ29uJyArIGV2ZW50LnR5cGU7XG4gIGlmICggdGhpc1sgbWV0aG9kIF0gKSB7XG4gICAgdGhpc1sgbWV0aG9kIF0oIGV2ZW50ICk7XG4gIH1cbn07XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuY29uZmlybSggdHJ1ZSwgJ29ubG9hZCcgKTtcbiAgdGhpcy51bmJpbmRFdmVudHMoKTtcbn07XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmNvbmZpcm0oIGZhbHNlLCAnb25lcnJvcicgKTtcbiAgdGhpcy51bmJpbmRFdmVudHMoKTtcbn07XG5cbkxvYWRpbmdJbWFnZS5wcm90b3R5cGUudW5iaW5kRXZlbnRzID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMucHJveHlJbWFnZS5yZW1vdmVFdmVudExpc3RlbmVyKCAnbG9hZCcsIHRoaXMgKTtcbiAgdGhpcy5wcm94eUltYWdlLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdlcnJvcicsIHRoaXMgKTtcbiAgdGhpcy5pbWcucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCB0aGlzICk7XG4gIHRoaXMuaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdlcnJvcicsIHRoaXMgKTtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJhY2tncm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuZnVuY3Rpb24gQmFja2dyb3VuZCggdXJsLCBlbGVtZW50ICkge1xuICB0aGlzLnVybCA9IHVybDtcbiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgdGhpcy5pbWcgPSBuZXcgSW1hZ2UoKTtcbn1cblxuLy8gaW5oZXJpdCBMb2FkaW5nSW1hZ2UgcHJvdG90eXBlXG5CYWNrZ3JvdW5kLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExvYWRpbmdJbWFnZS5wcm90b3R5cGUgKTtcblxuQmFja2dyb3VuZC5wcm90b3R5cGUuY2hlY2sgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5pbWcuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCB0aGlzICk7XG4gIHRoaXMuaW1nLmFkZEV2ZW50TGlzdGVuZXIoICdlcnJvcicsIHRoaXMgKTtcbiAgdGhpcy5pbWcuc3JjID0gdGhpcy51cmw7XG4gIC8vIGNoZWNrIGlmIGltYWdlIGlzIGFscmVhZHkgY29tcGxldGVcbiAgdmFyIGlzQ29tcGxldGUgPSB0aGlzLmdldElzSW1hZ2VDb21wbGV0ZSgpO1xuICBpZiAoIGlzQ29tcGxldGUgKSB7XG4gICAgdGhpcy5jb25maXJtKCB0aGlzLmltZy5uYXR1cmFsV2lkdGggIT09IDAsICduYXR1cmFsV2lkdGgnICk7XG4gICAgdGhpcy51bmJpbmRFdmVudHMoKTtcbiAgfVxufTtcblxuQmFja2dyb3VuZC5wcm90b3R5cGUudW5iaW5kRXZlbnRzID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuaW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoICdsb2FkJywgdGhpcyApO1xuICB0aGlzLmltZy5yZW1vdmVFdmVudExpc3RlbmVyKCAnZXJyb3InLCB0aGlzICk7XG59O1xuXG5CYWNrZ3JvdW5kLnByb3RvdHlwZS5jb25maXJtID0gZnVuY3Rpb24oIGlzTG9hZGVkLCBtZXNzYWdlICkge1xuICB0aGlzLmlzTG9hZGVkID0gaXNMb2FkZWQ7XG4gIHRoaXMuZW1pdEV2ZW50KCAncHJvZ3Jlc3MnLCBbIHRoaXMsIHRoaXMuZWxlbWVudCwgbWVzc2FnZSBdICk7XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBqUXVlcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuSW1hZ2VzTG9hZGVkLm1ha2VKUXVlcnlQbHVnaW4gPSBmdW5jdGlvbiggalF1ZXJ5ICkge1xuICBqUXVlcnkgPSBqUXVlcnkgfHwgd2luZG93LmpRdWVyeTtcbiAgaWYgKCAhalF1ZXJ5ICkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBzZXQgbG9jYWwgdmFyaWFibGVcbiAgJCA9IGpRdWVyeTtcbiAgLy8gJCgpLmltYWdlc0xvYWRlZCgpXG4gICQuZm4uaW1hZ2VzTG9hZGVkID0gZnVuY3Rpb24oIG9wdGlvbnMsIGNhbGxiYWNrICkge1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBJbWFnZXNMb2FkZWQoIHRoaXMsIG9wdGlvbnMsIGNhbGxiYWNrICk7XG4gICAgcmV0dXJuIGluc3RhbmNlLmpxRGVmZXJyZWQucHJvbWlzZSggJCh0aGlzKSApO1xuICB9O1xufTtcbi8vIHRyeSBtYWtpbmcgcGx1Z2luXG5JbWFnZXNMb2FkZWQubWFrZUpRdWVyeVBsdWdpbigpO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxucmV0dXJuIEltYWdlc0xvYWRlZDtcblxufSk7XG4iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgY3JlYXRlQXNzaWduZXIgPSByZXF1aXJlKCcuL19jcmVhdGVBc3NpZ25lcicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogU3Vic2VxdWVudCBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYE9iamVjdC5hc3NpZ25gXShodHRwczovL21kbi5pby9PYmplY3QvYXNzaWduKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMTAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmFzc2lnbkluXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBCYXIoKSB7XG4gKiAgIHRoaXMuYyA9IDM7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gIGlmIChpc1Byb3RvdHlwZShzb3VyY2UpIHx8IGlzQXJyYXlMaWtlKHNvdXJjZSkpIHtcbiAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgc291cmNlW2tleV0pO1xuICAgIH1cbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgb3ZlclJlc3QgPSByZXF1aXJlKCcuL19vdmVyUmVzdCcpLFxuICAgIHNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fc2V0VG9TdHJpbmcnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBmb3JFYWNoICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoXCIuL2NvbGxlY3Rpb24tdXRpbHNcIikuZm9yRWFjaDtcbnZhciBlbGVtZW50VXRpbHNNYWtlciAgICAgICA9IHJlcXVpcmUoXCIuL2VsZW1lbnQtdXRpbHNcIik7XG52YXIgbGlzdGVuZXJIYW5kbGVyTWFrZXIgICAgPSByZXF1aXJlKFwiLi9saXN0ZW5lci1oYW5kbGVyXCIpO1xudmFyIGlkR2VuZXJhdG9yTWFrZXIgICAgICAgID0gcmVxdWlyZShcIi4vaWQtZ2VuZXJhdG9yXCIpO1xudmFyIGlkSGFuZGxlck1ha2VyICAgICAgICAgID0gcmVxdWlyZShcIi4vaWQtaGFuZGxlclwiKTtcbnZhciByZXBvcnRlck1ha2VyICAgICAgICAgICA9IHJlcXVpcmUoXCIuL3JlcG9ydGVyXCIpO1xudmFyIGJyb3dzZXJEZXRlY3RvciAgICAgICAgID0gcmVxdWlyZShcIi4vYnJvd3Nlci1kZXRlY3RvclwiKTtcbnZhciBiYXRjaFByb2Nlc3Nvck1ha2VyICAgICA9IHJlcXVpcmUoXCJiYXRjaC1wcm9jZXNzb3JcIik7XG52YXIgc3RhdGVIYW5kbGVyICAgICAgICAgICAgPSByZXF1aXJlKFwiLi9zdGF0ZS1oYW5kbGVyXCIpO1xuXG4vL0RldGVjdGlvbiBzdHJhdGVnaWVzLlxudmFyIG9iamVjdFN0cmF0ZWd5TWFrZXIgICAgID0gcmVxdWlyZShcIi4vZGV0ZWN0aW9uLXN0cmF0ZWd5L29iamVjdC5qc1wiKTtcbnZhciBzY3JvbGxTdHJhdGVneU1ha2VyICAgICA9IHJlcXVpcmUoXCIuL2RldGVjdGlvbi1zdHJhdGVneS9zY3JvbGwuanNcIik7XG5cbmZ1bmN0aW9uIGlzQ29sbGVjdGlvbihvYmopIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShvYmopIHx8IG9iai5sZW5ndGggIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShjb2xsZWN0aW9uKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHZhciBhcnJheSA9IFtdO1xuICAgICAgICBmb3JFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIGFycmF5LnB1c2gob2JqKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5ub2RlVHlwZSA9PT0gMTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBpZEhhbmRsZXJcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBnZXQgR2V0cyB0aGUgcmVzaXplIGRldGVjdG9yIGlkIG9mIHRoZSBlbGVtZW50LlxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gc2V0IEdlbmVyYXRlIGFuZCBzZXRzIHRoZSByZXNpemUgZGV0ZWN0b3IgaWQgb2YgdGhlIGVsZW1lbnQuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBPcHRpb25zXG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHByb3BlcnR5IHtib29sZWFufSBjYWxsT25BZGQgICAgRGV0ZXJtaW5lcyBpZiBsaXN0ZW5lcnMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZXkgYXJlIGdldHRpbmcgYWRkZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIHRydWUuIElmIHRydWUsIHRoZSBsaXN0ZW5lciBpcyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCB3aGVuIGl0IGhhcyBiZWVuIGFkZGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgZmFsc2UsIHRoZSBsaXN0ZW5lciB3aWxsIG5vdCBiZSBndWFyZW50ZWVkIHRvIGJlIGNhbGxlZCB3aGVuIGl0IGhhcyBiZWVuIGFkZGVkIChkb2VzIG5vdCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY2FsbGVkKS5cbiAqIEBwcm9wZXJ0eSB7aWRIYW5kbGVyfSBpZEhhbmRsZXIgIEEgY3VzdG9tIGlkIGhhbmRsZXIgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZywgc2V0dGluZyBhbmQgcmV0cmlldmluZyBpZCdzIGZvciBlbGVtZW50cy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBwcm92aWRlZCwgYSBkZWZhdWx0IGlkIGhhbmRsZXIgd2lsbCBiZSB1c2VkLlxuICogQHByb3BlcnR5IHtyZXBvcnRlcn0gcmVwb3J0ZXIgICAgQSBjdXN0b20gcmVwb3J0ZXIgdGhhdCBoYW5kbGVzIHJlcG9ydGluZyBsb2dzLCB3YXJuaW5ncyBhbmQgZXJyb3JzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHByb3ZpZGVkLCBhIGRlZmF1bHQgaWQgaGFuZGxlciB3aWxsIGJlIHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gZmFsc2UsIHRoZW4gbm90aGluZyB3aWxsIGJlIHJlcG9ydGVkLlxuICogQHByb3BlcnR5IHtib29sZWFufSBkZWJ1ZyAgICAgICAgSWYgc2V0IHRvIHRydWUsIHRoZSB0aGUgc3lzdGVtIHdpbGwgcmVwb3J0IGRlYnVnIG1lc3NhZ2VzIGFzIGRlZmF1bHQgZm9yIHRoZSBsaXN0ZW5UbyBtZXRob2QuXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQgcmVzaXplIGRldGVjdG9yIGluc3RhbmNlLlxuICogQHB1YmxpY1xuICogQHBhcmFtIHtPcHRpb25zP30gb3B0aW9ucyBPcHRpb25hbCBnbG9iYWwgb3B0aW9ucyBvYmplY3QgdGhhdCB3aWxsIGRlY2lkZSBob3cgdGhpcyBpbnN0YW5jZSB3aWxsIHdvcmsuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy9pZEhhbmRsZXIgaXMgY3VycmVudGx5IG5vdCBhbiBvcHRpb24gdG8gdGhlIGxpc3RlblRvIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGdsb2JhbE9wdGlvbnMuXG4gICAgdmFyIGlkSGFuZGxlcjtcblxuICAgIGlmIChvcHRpb25zLmlkSGFuZGxlcikge1xuICAgICAgICAvLyBUbyBtYWludGFpbiBjb21wYXRhYmlsaXR5IHdpdGggaWRIYW5kbGVyLmdldChlbGVtZW50LCByZWFkb25seSksIG1ha2Ugc3VyZSB0byB3cmFwIHRoZSBnaXZlbiBpZEhhbmRsZXJcbiAgICAgICAgLy8gc28gdGhhdCByZWFkb25seSBmbGFnIGFsd2F5cyBpcyB0cnVlIHdoZW4gaXQncyB1c2VkIGhlcmUuIFRoaXMgbWF5IGJlIHJlbW92ZWQgbmV4dCBtYWpvciB2ZXJzaW9uIGJ1bXAuXG4gICAgICAgIGlkSGFuZGxlciA9IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG9wdGlvbnMuaWRIYW5kbGVyLmdldChlbGVtZW50LCB0cnVlKTsgfSxcbiAgICAgICAgICAgIHNldDogb3B0aW9ucy5pZEhhbmRsZXIuc2V0XG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGlkR2VuZXJhdG9yID0gaWRHZW5lcmF0b3JNYWtlcigpO1xuICAgICAgICB2YXIgZGVmYXVsdElkSGFuZGxlciA9IGlkSGFuZGxlck1ha2VyKHtcbiAgICAgICAgICAgIGlkR2VuZXJhdG9yOiBpZEdlbmVyYXRvcixcbiAgICAgICAgICAgIHN0YXRlSGFuZGxlcjogc3RhdGVIYW5kbGVyXG4gICAgICAgIH0pO1xuICAgICAgICBpZEhhbmRsZXIgPSBkZWZhdWx0SWRIYW5kbGVyO1xuICAgIH1cblxuICAgIC8vcmVwb3J0ZXIgaXMgY3VycmVudGx5IG5vdCBhbiBvcHRpb24gdG8gdGhlIGxpc3RlblRvIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGdsb2JhbE9wdGlvbnMuXG4gICAgdmFyIHJlcG9ydGVyID0gb3B0aW9ucy5yZXBvcnRlcjtcblxuICAgIGlmKCFyZXBvcnRlcikge1xuICAgICAgICAvL0lmIG9wdGlvbnMucmVwb3J0ZXIgaXMgZmFsc2UsIHRoZW4gdGhlIHJlcG9ydGVyIHNob3VsZCBiZSBxdWlldC5cbiAgICAgICAgdmFyIHF1aWV0ID0gcmVwb3J0ZXIgPT09IGZhbHNlO1xuICAgICAgICByZXBvcnRlciA9IHJlcG9ydGVyTWFrZXIocXVpZXQpO1xuICAgIH1cblxuICAgIC8vYmF0Y2hQcm9jZXNzb3IgaXMgY3VycmVudGx5IG5vdCBhbiBvcHRpb24gdG8gdGhlIGxpc3RlblRvIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGdsb2JhbE9wdGlvbnMuXG4gICAgdmFyIGJhdGNoUHJvY2Vzc29yID0gZ2V0T3B0aW9uKG9wdGlvbnMsIFwiYmF0Y2hQcm9jZXNzb3JcIiwgYmF0Y2hQcm9jZXNzb3JNYWtlcih7IHJlcG9ydGVyOiByZXBvcnRlciB9KSk7XG5cbiAgICAvL09wdGlvbnMgdG8gYmUgdXNlZCBhcyBkZWZhdWx0IGZvciB0aGUgbGlzdGVuVG8gZnVuY3Rpb24uXG4gICAgdmFyIGdsb2JhbE9wdGlvbnMgPSB7fTtcbiAgICBnbG9iYWxPcHRpb25zLmNhbGxPbkFkZCAgICAgPSAhIWdldE9wdGlvbihvcHRpb25zLCBcImNhbGxPbkFkZFwiLCB0cnVlKTtcbiAgICBnbG9iYWxPcHRpb25zLmRlYnVnICAgICAgICAgPSAhIWdldE9wdGlvbihvcHRpb25zLCBcImRlYnVnXCIsIGZhbHNlKTtcblxuICAgIHZhciBldmVudExpc3RlbmVySGFuZGxlciAgICA9IGxpc3RlbmVySGFuZGxlck1ha2VyKGlkSGFuZGxlcik7XG4gICAgdmFyIGVsZW1lbnRVdGlscyAgICAgICAgICAgID0gZWxlbWVudFV0aWxzTWFrZXIoe1xuICAgICAgICBzdGF0ZUhhbmRsZXI6IHN0YXRlSGFuZGxlclxuICAgIH0pO1xuXG4gICAgLy9UaGUgZGV0ZWN0aW9uIHN0cmF0ZWd5IHRvIGJlIHVzZWQuXG4gICAgdmFyIGRldGVjdGlvblN0cmF0ZWd5O1xuICAgIHZhciBkZXNpcmVkU3RyYXRlZ3kgPSBnZXRPcHRpb24ob3B0aW9ucywgXCJzdHJhdGVneVwiLCBcIm9iamVjdFwiKTtcbiAgICB2YXIgaW1wb3J0YW50Q3NzUnVsZXMgPSBnZXRPcHRpb24ob3B0aW9ucywgXCJpbXBvcnRhbnRcIiwgZmFsc2UpO1xuICAgIHZhciBzdHJhdGVneU9wdGlvbnMgPSB7XG4gICAgICAgIHJlcG9ydGVyOiByZXBvcnRlcixcbiAgICAgICAgYmF0Y2hQcm9jZXNzb3I6IGJhdGNoUHJvY2Vzc29yLFxuICAgICAgICBzdGF0ZUhhbmRsZXI6IHN0YXRlSGFuZGxlcixcbiAgICAgICAgaWRIYW5kbGVyOiBpZEhhbmRsZXIsXG4gICAgICAgIGltcG9ydGFudDogaW1wb3J0YW50Q3NzUnVsZXNcbiAgICB9O1xuXG4gICAgaWYoZGVzaXJlZFN0cmF0ZWd5ID09PSBcInNjcm9sbFwiKSB7XG4gICAgICAgIGlmIChicm93c2VyRGV0ZWN0b3IuaXNMZWdhY3lPcGVyYSgpKSB7XG4gICAgICAgICAgICByZXBvcnRlci53YXJuKFwiU2Nyb2xsIHN0cmF0ZWd5IGlzIG5vdCBzdXBwb3J0ZWQgb24gbGVnYWN5IE9wZXJhLiBDaGFuZ2luZyB0byBvYmplY3Qgc3RyYXRlZ3kuXCIpO1xuICAgICAgICAgICAgZGVzaXJlZFN0cmF0ZWd5ID0gXCJvYmplY3RcIjtcbiAgICAgICAgfSBlbHNlIGlmIChicm93c2VyRGV0ZWN0b3IuaXNJRSg5KSkge1xuICAgICAgICAgICAgcmVwb3J0ZXIud2FybihcIlNjcm9sbCBzdHJhdGVneSBpcyBub3Qgc3VwcG9ydGVkIG9uIElFOS4gQ2hhbmdpbmcgdG8gb2JqZWN0IHN0cmF0ZWd5LlwiKTtcbiAgICAgICAgICAgIGRlc2lyZWRTdHJhdGVneSA9IFwib2JqZWN0XCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZihkZXNpcmVkU3RyYXRlZ3kgPT09IFwic2Nyb2xsXCIpIHtcbiAgICAgICAgZGV0ZWN0aW9uU3RyYXRlZ3kgPSBzY3JvbGxTdHJhdGVneU1ha2VyKHN0cmF0ZWd5T3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmKGRlc2lyZWRTdHJhdGVneSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBkZXRlY3Rpb25TdHJhdGVneSA9IG9iamVjdFN0cmF0ZWd5TWFrZXIoc3RyYXRlZ3lPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0cmF0ZWd5IG5hbWU6IFwiICsgZGVzaXJlZFN0cmF0ZWd5KTtcbiAgICB9XG5cbiAgICAvL0NhbGxzIGNhbiBiZSBtYWRlIHRvIGxpc3RlblRvIHdpdGggZWxlbWVudHMgdGhhdCBhcmUgc3RpbGwgYmVpbmcgaW5zdGFsbGVkLlxuICAgIC8vQWxzbywgc2FtZSBlbGVtZW50cyBjYW4gb2NjdXIgaW4gdGhlIGVsZW1lbnRzIGxpc3QgaW4gdGhlIGxpc3RlblRvIGZ1bmN0aW9uLlxuICAgIC8vV2l0aCB0aGlzIG1hcCwgdGhlIHJlYWR5IGNhbGxiYWNrcyBjYW4gYmUgc3luY2hyb25pemVkIGJldHdlZW4gdGhlIGNhbGxzXG4gICAgLy9zbyB0aGF0IHRoZSByZWFkeSBjYWxsYmFjayBjYW4gYWx3YXlzIGJlIGNhbGxlZCB3aGVuIGFuIGVsZW1lbnQgaXMgcmVhZHkgLSBldmVuIGlmXG4gICAgLy9pdCB3YXNuJ3QgaW5zdGFsbGVkIGZyb20gdGhlIGZ1bmN0aW9uIGl0c2VsZi5cbiAgICB2YXIgb25SZWFkeUNhbGxiYWNrcyA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgdGhlIGdpdmVuIGVsZW1lbnRzIHJlc2l6ZS1kZXRlY3RhYmxlIGFuZCBzdGFydHMgbGlzdGVuaW5nIHRvIHJlc2l6ZSBldmVudHMgb24gdGhlIGVsZW1lbnRzLiBDYWxscyB0aGUgZXZlbnQgY2FsbGJhY2sgZm9yIGVhY2ggZXZlbnQgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtPcHRpb25zP30gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIG9iamVjdC4gVGhlc2Ugb3B0aW9ucyB3aWxsIG92ZXJyaWRlIHRoZSBnbG9iYWwgb3B0aW9ucy4gU29tZSBvcHRpb25zIG1heSBub3QgYmUgb3ZlcnJpZGVuLCBzdWNoIGFzIGlkSGFuZGxlci5cbiAgICAgKiBAcGFyYW0ge2VsZW1lbnRbXXxlbGVtZW50fSBlbGVtZW50cyBUaGUgZ2l2ZW4gYXJyYXkgb2YgZWxlbWVudHMgdG8gZGV0ZWN0IHJlc2l6ZSBldmVudHMgb2YuIFNpbmdsZSBlbGVtZW50IGlzIGFsc28gdmFsaWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIGJlIGV4ZWN1dGVkIGZvciBlYWNoIHJlc2l6ZSBldmVudCBmb3IgZWFjaCBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RlblRvKG9wdGlvbnMsIGVsZW1lbnRzLCBsaXN0ZW5lcikge1xuICAgICAgICBmdW5jdGlvbiBvblJlc2l6ZUNhbGxiYWNrKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBldmVudExpc3RlbmVySGFuZGxlci5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBmb3JFYWNoKGxpc3RlbmVycywgZnVuY3Rpb24gY2FsbExpc3RlbmVyUHJveHkobGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcihlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYWRkTGlzdGVuZXIoY2FsbE9uQWRkLCBlbGVtZW50LCBsaXN0ZW5lcikge1xuICAgICAgICAgICAgZXZlbnRMaXN0ZW5lckhhbmRsZXIuYWRkKGVsZW1lbnQsIGxpc3RlbmVyKTtcblxuICAgICAgICAgICAgaWYoY2FsbE9uQWRkKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL09wdGlvbnMgb2JqZWN0IG1heSBiZSBvbWl0dGVkLlxuICAgICAgICBpZighbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZWxlbWVudHM7XG4gICAgICAgICAgICBlbGVtZW50cyA9IG9wdGlvbnM7XG4gICAgICAgICAgICBvcHRpb25zID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBpZighZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0IGxlYXN0IG9uZSBlbGVtZW50IHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCFsaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdGVuZXIgcmVxdWlyZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cykpIHtcbiAgICAgICAgICAgIC8vIEEgc2luZ2xlIGVsZW1lbnQgaGFzIGJlZW4gcGFzc2VkIGluLlxuICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNdO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgY29sbGVjdGlvbiB0byBhcnJheSBmb3IgcGx1Z2lucy5cbiAgICAgICAgICAgIC8vIFRPRE86IE1heSB3YW50IHRvIGNoZWNrIHNvIHRoYXQgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgY29sbGVjdGlvbiBhcmUgdmFsaWQgZWxlbWVudHMuXG4gICAgICAgICAgICBlbGVtZW50cyA9IHRvQXJyYXkoZWxlbWVudHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMuIE11c3QgYmUgYSBET00gZWxlbWVudCBvciBhIGNvbGxlY3Rpb24gb2YgRE9NIGVsZW1lbnRzLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlbGVtZW50c1JlYWR5ID0gMDtcblxuICAgICAgICB2YXIgY2FsbE9uQWRkID0gZ2V0T3B0aW9uKG9wdGlvbnMsIFwiY2FsbE9uQWRkXCIsIGdsb2JhbE9wdGlvbnMuY2FsbE9uQWRkKTtcbiAgICAgICAgdmFyIG9uUmVhZHlDYWxsYmFjayA9IGdldE9wdGlvbihvcHRpb25zLCBcIm9uUmVhZHlcIiwgZnVuY3Rpb24gbm9vcCgpIHt9KTtcbiAgICAgICAgdmFyIGRlYnVnID0gZ2V0T3B0aW9uKG9wdGlvbnMsIFwiZGVidWdcIiwgZ2xvYmFsT3B0aW9ucy5kZWJ1Zyk7XG5cbiAgICAgICAgZm9yRWFjaChlbGVtZW50cywgZnVuY3Rpb24gYXR0YWNoTGlzdGVuZXJUb0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCFzdGF0ZUhhbmRsZXIuZ2V0U3RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZUhhbmRsZXIuaW5pdFN0YXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlkSGFuZGxlci5zZXQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpZCA9IGlkSGFuZGxlci5nZXQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGRlYnVnICYmIHJlcG9ydGVyLmxvZyhcIkF0dGFjaGluZyBsaXN0ZW5lciB0byBlbGVtZW50XCIsIGlkLCBlbGVtZW50KTtcblxuICAgICAgICAgICAgaWYoIWVsZW1lbnRVdGlscy5pc0RldGVjdGFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coaWQsIFwiTm90IGRldGVjdGFibGUuXCIpO1xuICAgICAgICAgICAgICAgIGlmKGVsZW1lbnRVdGlscy5pc0J1c3koZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcgJiYgcmVwb3J0ZXIubG9nKGlkLCBcIlN5c3RlbSBidXN5IG1ha2luZyBpdCBkZXRlY3RhYmxlXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vVGhlIGVsZW1lbnQgaXMgYmVpbmcgcHJlcGFyZWQgdG8gYmUgZGV0ZWN0YWJsZS4gRG8gbm90IG1ha2UgaXQgZGV0ZWN0YWJsZS5cbiAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGFkZCB0aGUgbGlzdGVuZXIsIGJlY2F1c2UgdGhlIGVsZW1lbnQgd2lsbCBzb29uIGJlIGRldGVjdGFibGUuXG4gICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKGNhbGxPbkFkZCwgZWxlbWVudCwgbGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgICAgICBvblJlYWR5Q2FsbGJhY2tzW2lkXSA9IG9uUmVhZHlDYWxsYmFja3NbaWRdIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBvblJlYWR5Q2FsbGJhY2tzW2lkXS5wdXNoKGZ1bmN0aW9uIG9uUmVhZHkoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1JlYWR5Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnRzUmVhZHkgPT09IGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVhZHlDYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRlYnVnICYmIHJlcG9ydGVyLmxvZyhpZCwgXCJNYWtpbmcgZGV0ZWN0YWJsZS4uLlwiKTtcbiAgICAgICAgICAgICAgICAvL1RoZSBlbGVtZW50IGlzIG5vdCBwcmVwYXJlZCB0byBiZSBkZXRlY3RhYmxlLCBzbyBkbyBwcmVwYXJlIGl0IGFuZCBhZGQgYSBsaXN0ZW5lciB0byBpdC5cbiAgICAgICAgICAgICAgICBlbGVtZW50VXRpbHMubWFya0J1c3koZWxlbWVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldGVjdGlvblN0cmF0ZWd5Lm1ha2VEZXRlY3RhYmxlKHsgZGVidWc6IGRlYnVnLCBpbXBvcnRhbnQ6IGltcG9ydGFudENzc1J1bGVzIH0sIGVsZW1lbnQsIGZ1bmN0aW9uIG9uRWxlbWVudERldGVjdGFibGUoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coaWQsIFwib25FbGVtZW50RGV0ZWN0YWJsZVwiKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVIYW5kbGVyLmdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50VXRpbHMubWFya0FzRGV0ZWN0YWJsZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRVdGlscy5tYXJrQnVzeShlbGVtZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb25TdHJhdGVneS5hZGRMaXN0ZW5lcihlbGVtZW50LCBvblJlc2l6ZUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKGNhbGxPbkFkZCwgZWxlbWVudCwgbGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZWxlbWVudCBzaXplIG1pZ2h0IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgY2FsbCB0byBcImxpc3RlblRvXCIsIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoaXMgY2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhhdCBhIHJlc2l6ZSBldmVudCBtYXkgYmUgZW1pdHRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhdmluZyB0aGUgc3RhcnRTaXplIG9iamVjdCBpcyBvcHRpb25hbCAoc2luY2UgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbiBzb21lIGNhc2VzIHN1Y2ggYXMgdW5yZW5kZXJlZCBlbGVtZW50cyksIHNvIGNoZWNrIGZvciBpdHMgZXhpc3RhbmNlIGJlZm9yZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsc28sIGNoZWNrIHRoZSBzdGF0ZSBleGlzdGFuY2UgYmVmb3JlIHNpbmNlIHRoZSBlbGVtZW50IG1heSBoYXZlIGJlZW4gdW5pbnN0YWxsZWQgaW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gc3RhdGVIYW5kbGVyLmdldFN0YXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnN0YXJ0U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zdGFydFNpemUud2lkdGggIT09IHdpZHRoIHx8IHN0YXRlLnN0YXJ0U2l6ZS5oZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZUNhbGxiYWNrKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYob25SZWFkeUNhbGxiYWNrc1tpZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKG9uUmVhZHlDYWxsYmFja3NbaWRdLCBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQgaGFzIGJlZW4gdW5pc250YWxsZWQgYmVmb3JlIGJlaW5nIGRldGVjdGFibGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyAmJiByZXBvcnRlci5sb2coaWQsIFwiRWxlbWVudCB1bmluc3RhbGxlZCBiZWZvcmUgYmVpbmcgZGV0ZWN0YWJsZS5cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb25SZWFkeUNhbGxiYWNrc1tpZF07XG5cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNSZWFkeSsrO1xuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50c1JlYWR5ID09PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVhZHlDYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlYnVnICYmIHJlcG9ydGVyLmxvZyhpZCwgXCJBbHJlYWR5IGRldGVjYWJsZSwgYWRkaW5nIGxpc3RlbmVyLlwiKTtcblxuICAgICAgICAgICAgLy9UaGUgZWxlbWVudCBoYXMgYmVlbiBwcmVwYXJlZCB0byBiZSBkZXRlY3RhYmxlIGFuZCBpcyByZWFkeSB0byBiZSBsaXN0ZW5lZCB0by5cbiAgICAgICAgICAgIGFkZExpc3RlbmVyKGNhbGxPbkFkZCwgZWxlbWVudCwgbGlzdGVuZXIpO1xuICAgICAgICAgICAgZWxlbWVudHNSZWFkeSsrO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZihlbGVtZW50c1JlYWR5ID09PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG9uUmVhZHlDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW5pbnN0YWxsKGVsZW1lbnRzKSB7XG4gICAgICAgIGlmKCFlbGVtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKFwiQXQgbGVhc3Qgb25lIGVsZW1lbnQgaXMgcmVxdWlyZWQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRWxlbWVudChlbGVtZW50cykpIHtcbiAgICAgICAgICAgIC8vIEEgc2luZ2xlIGVsZW1lbnQgaGFzIGJlZW4gcGFzc2VkIGluLlxuICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNdO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgY29sbGVjdGlvbiB0byBhcnJheSBmb3IgcGx1Z2lucy5cbiAgICAgICAgICAgIC8vIFRPRE86IE1heSB3YW50IHRvIGNoZWNrIHNvIHRoYXQgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgY29sbGVjdGlvbiBhcmUgdmFsaWQgZWxlbWVudHMuXG4gICAgICAgICAgICBlbGVtZW50cyA9IHRvQXJyYXkoZWxlbWVudHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKFwiSW52YWxpZCBhcmd1bWVudHMuIE11c3QgYmUgYSBET00gZWxlbWVudCBvciBhIGNvbGxlY3Rpb24gb2YgRE9NIGVsZW1lbnRzLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvckVhY2goZWxlbWVudHMsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBldmVudExpc3RlbmVySGFuZGxlci5yZW1vdmVBbGxMaXN0ZW5lcnMoZWxlbWVudCk7XG4gICAgICAgICAgICBkZXRlY3Rpb25TdHJhdGVneS51bmluc3RhbGwoZWxlbWVudCk7XG4gICAgICAgICAgICBzdGF0ZUhhbmRsZXIuY2xlYW5TdGF0ZShlbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5pdERvY3VtZW50KHRhcmdldERvY3VtZW50KSB7XG4gICAgICAgIGRldGVjdGlvblN0cmF0ZWd5LmluaXREb2N1bWVudCAmJiBkZXRlY3Rpb25TdHJhdGVneS5pbml0RG9jdW1lbnQodGFyZ2V0RG9jdW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGxpc3RlblRvOiBsaXN0ZW5UbyxcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXI6IGV2ZW50TGlzdGVuZXJIYW5kbGVyLnJlbW92ZUxpc3RlbmVyLFxuICAgICAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IGV2ZW50TGlzdGVuZXJIYW5kbGVyLnJlbW92ZUFsbExpc3RlbmVycyxcbiAgICAgICAgdW5pbnN0YWxsOiB1bmluc3RhbGwsXG4gICAgICAgIGluaXREb2N1bWVudDogaW5pdERvY3VtZW50XG4gICAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldE9wdGlvbihvcHRpb25zLCBuYW1lLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgdmFsdWUgPSBvcHRpb25zW25hbWVdO1xuXG4gICAgaWYoKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHZhciBnZXRTdGF0ZSA9IG9wdGlvbnMuc3RhdGVIYW5kbGVyLmdldFN0YXRlO1xuXG4gICAgLyoqXG4gICAgICogVGVsbHMgaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gbWFkZSBkZXRlY3RhYmxlIGFuZCByZWFkeSB0byBiZSBsaXN0ZW5lZCBmb3IgcmVzaXplIGV2ZW50cy5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBUaGUgZWxlbWVudCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gaWYgdGhlIGVsZW1lbnQgaXMgZGV0ZWN0YWJsZSBvciBub3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNEZXRlY3RhYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBzdGF0ZSAmJiAhIXN0YXRlLmlzRGV0ZWN0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXJrcyB0aGUgZWxlbWVudCB0aGF0IGl0IGhhcyBiZWVuIG1hZGUgZGV0ZWN0YWJsZSBhbmQgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBldmVudHMuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gVGhlIGVsZW1lbnQgdG8gbWFyay5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXJrQXNEZXRlY3RhYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkuaXNEZXRlY3RhYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZWxscyBpZiB0aGUgZWxlbWVudCBpcyBidXN5IG9yIG5vdC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBUaGUgZWxlbWVudCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gaWYgdGhlIGVsZW1lbnQgaXMgYnVzeSBvciBub3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNCdXN5KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuICEhZ2V0U3RhdGUoZWxlbWVudCkuYnVzeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXJrcyB0aGUgb2JqZWN0IGlzIGJ1c3kgYW5kIHNob3VsZCBub3QgYmUgbWFkZSBkZXRlY3RhYmxlLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge2VsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gbWFyay5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJ1c3kgSWYgdGhlIGVsZW1lbnQgaXMgYnVzeSBvciBub3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFya0J1c3koZWxlbWVudCwgYnVzeSkge1xuICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5idXN5ID0gISFidXN5O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGlzRGV0ZWN0YWJsZTogaXNEZXRlY3RhYmxlLFxuICAgICAgICBtYXJrQXNEZXRlY3RhYmxlOiBtYXJrQXNEZXRlY3RhYmxlLFxuICAgICAgICBpc0J1c3k6IGlzQnVzeSxcbiAgICAgICAgbWFya0J1c3k6IG1hcmtCdXN5XG4gICAgfTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpZEhhbmRsZXIpIHtcbiAgICB2YXIgZXZlbnRMaXN0ZW5lcnMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBnZXQgYWxsIGxpc3RlbmVycyBmb3IuXG4gICAgICogQHJldHVybnMgQWxsIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TGlzdGVuZXJzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGlkID0gaWRIYW5kbGVyLmdldChlbGVtZW50KTtcblxuICAgICAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJzW2lkXSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZXMgdGhlIGdpdmVuIGxpc3RlbmVyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4gV2lsbCBub3QgYWN0dWFsbHkgYWRkIHRoZSBsaXN0ZW5lciB0byB0aGUgZWxlbWVudC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGhhdmUgdGhlIGxpc3RlbmVyIGFkZGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0aGF0IHRoZSBlbGVtZW50IGhhcyBhZGRlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcihlbGVtZW50LCBsaXN0ZW5lcikge1xuICAgICAgICB2YXIgaWQgPSBpZEhhbmRsZXIuZ2V0KGVsZW1lbnQpO1xuXG4gICAgICAgIGlmKCFldmVudExpc3RlbmVyc1tpZF0pIHtcbiAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzW2lkXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnRMaXN0ZW5lcnNbaWRdLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGVsZW1lbnQsIGxpc3RlbmVyKSB7XG4gICAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnMoZWxlbWVudCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKGVsZW1lbnQpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnMoZWxlbWVudCk7XG4gICAgICBpZiAoIWxpc3RlbmVycykgeyByZXR1cm47IH1cbiAgICAgIGxpc3RlbmVycy5sZW5ndGggPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldDogZ2V0TGlzdGVuZXJzLFxuICAgICAgICBhZGQ6IGFkZExpc3RlbmVyLFxuICAgICAgICByZW1vdmVMaXN0ZW5lcjogcmVtb3ZlTGlzdGVuZXIsXG4gICAgICAgIHJlbW92ZUFsbExpc3RlbmVyczogcmVtb3ZlQWxsTGlzdGVuZXJzXG4gICAgfTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaWRDb3VudCA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcgdW5pcXVlIGlkIGluIHRoZSBjb250ZXh0LlxuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBBIHVuaXF1ZSBpZCBpbiB0aGUgY29udGV4dC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZW5lcmF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIGlkQ291bnQrKztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZW5lcmF0ZTogZ2VuZXJhdGVcbiAgICB9O1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICB2YXIgaWRHZW5lcmF0b3IgICAgID0gb3B0aW9ucy5pZEdlbmVyYXRvcjtcbiAgICB2YXIgZ2V0U3RhdGUgICAgICAgID0gb3B0aW9ucy5zdGF0ZUhhbmRsZXIuZ2V0U3RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZXNpemUgZGV0ZWN0b3IgaWQgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQHB1YmxpY1xuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgdG8gZ2V0IHRoZSBpZCBvZi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfG51bWJlcnxudWxsfSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQuIE51bGwgaWYgaXQgaGFzIG5vIGlkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldElkKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLmlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlc2l6ZSBkZXRlY3RvciBpZCBvZiB0aGUgZWxlbWVudC4gUmVxdWlyZXMgdGhlIGVsZW1lbnQgdG8gaGF2ZSBhIHJlc2l6ZSBkZXRlY3RvciBzdGF0ZSBpbml0aWFsaXplZC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSB0YXJnZXQgZWxlbWVudCB0byBzZXQgdGhlIGlkIG9mLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8bnVtYmVyfG51bGx9IFRoZSBpZCBvZiB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRJZChlbGVtZW50KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNldElkIHJlcXVpcmVkIHRoZSBlbGVtZW50IHRvIGhhdmUgYSByZXNpemUgZGV0ZWN0aW9uIHN0YXRlLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZCA9IGlkR2VuZXJhdG9yLmdlbmVyYXRlKCk7XG5cbiAgICAgICAgc3RhdGUuaWQgPSBpZDtcblxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0OiBnZXRJZCxcbiAgICAgICAgc2V0OiBzZXRJZFxuICAgIH07XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGdsb2JhbCBjb25zb2xlOiBmYWxzZSAqL1xuXG4vKipcbiAqIFJlcG9ydGVyIHRoYXQgaGFuZGxlcyB0aGUgcmVwb3J0aW5nIG9mIGxvZ3MsIHdhcm5pbmdzIGFuZCBlcnJvcnMuXG4gKiBAcHVibGljXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHF1aWV0IFRlbGxzIGlmIHRoZSByZXBvcnRlciBzaG91bGQgYmUgcXVpZXQgb3Igbm90LlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHF1aWV0KSB7XG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgICAgLy9Eb2VzIG5vdGhpbmcuXG4gICAgfVxuXG4gICAgdmFyIHJlcG9ydGVyID0ge1xuICAgICAgICBsb2c6IG5vb3AsXG4gICAgICAgIHdhcm46IG5vb3AsXG4gICAgICAgIGVycm9yOiBub29wXG4gICAgfTtcblxuICAgIGlmKCFxdWlldCAmJiB3aW5kb3cuY29uc29sZSkge1xuICAgICAgICB2YXIgYXR0YWNoRnVuY3Rpb24gPSBmdW5jdGlvbihyZXBvcnRlciwgbmFtZSkge1xuICAgICAgICAgICAgLy9UaGUgcHJveHkgaXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gY2FsbCB0aGUgbWV0aG9kIHdpdGggdGhlIGNvbnNvbGUgY29udGV4dCxcbiAgICAgICAgICAgIC8vc2luY2Ugd2UgY2Fubm90IHVzZSBiaW5kLlxuICAgICAgICAgICAgcmVwb3J0ZXJbbmFtZV0gPSBmdW5jdGlvbiByZXBvcnRlclByb3h5KCkge1xuICAgICAgICAgICAgICAgIHZhciBmID0gY29uc29sZVtuYW1lXTtcbiAgICAgICAgICAgICAgICBpZiAoZi5hcHBseSkgeyAvL0lFOSBkb2VzIG5vdCBzdXBwb3J0IGNvbnNvbGUubG9nLmFwcGx5IDopXG4gICAgICAgICAgICAgICAgICAgIGYuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZihhcmd1bWVudHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBhdHRhY2hGdW5jdGlvbihyZXBvcnRlciwgXCJsb2dcIik7XG4gICAgICAgIGF0dGFjaEZ1bmN0aW9uKHJlcG9ydGVyLCBcIndhcm5cIik7XG4gICAgICAgIGF0dGFjaEZ1bmN0aW9uKHJlcG9ydGVyLCBcImVycm9yXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZXBvcnRlcjtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJhdGNoUHJvY2Vzc29yTWFrZXIob3B0aW9ucykge1xuICAgIG9wdGlvbnMgICAgICAgICAgICAgPSBvcHRpb25zIHx8IHt9O1xuICAgIHZhciByZXBvcnRlciAgICAgICAgPSBvcHRpb25zLnJlcG9ydGVyO1xuICAgIHZhciBhc3luY1Byb2Nlc3MgICAgPSB1dGlscy5nZXRPcHRpb24ob3B0aW9ucywgXCJhc3luY1wiLCB0cnVlKTtcbiAgICB2YXIgYXV0b1Byb2Nlc3MgICAgID0gdXRpbHMuZ2V0T3B0aW9uKG9wdGlvbnMsIFwiYXV0b1wiLCB0cnVlKTtcblxuICAgIGlmKGF1dG9Qcm9jZXNzICYmICFhc3luY1Byb2Nlc3MpIHtcbiAgICAgICAgcmVwb3J0ZXIgJiYgcmVwb3J0ZXIud2FybihcIkludmFsaWQgb3B0aW9ucyBjb21iaW5hdGlvbi4gYXV0bz10cnVlIGFuZCBhc3luYz1mYWxzZSBpcyBpbnZhbGlkLiBTZXR0aW5nIGFzeW5jPXRydWUuXCIpO1xuICAgICAgICBhc3luY1Byb2Nlc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBiYXRjaCA9IEJhdGNoKCk7XG4gICAgdmFyIGFzeW5jRnJhbWVIYW5kbGVyO1xuICAgIHZhciBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGFkZEZ1bmN0aW9uKGxldmVsLCBmbikge1xuICAgICAgICBpZighaXNQcm9jZXNzaW5nICYmIGF1dG9Qcm9jZXNzICYmIGFzeW5jUHJvY2VzcyAmJiBiYXRjaC5zaXplKCkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYXN5bmMsIGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhhdCB0aGUgZm4gaXMgYWRkZWQgdG8gdGhlIGJhdGNoLlxuICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSwgc2luY2Ugd2UncmUgY2hlY2tpbmcgdGhlIHNpemUgb2YgdGhlIGJhdGNoIHRvIGJlIDAuXG4gICAgICAgICAgICBwcm9jZXNzQmF0Y2hBc3luYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgYmF0Y2guYWRkKGxldmVsLCBmbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0JhdGNoKCkge1xuICAgICAgICAvLyBTYXZlIHRoZSBjdXJyZW50IGJhdGNoLCBhbmQgY3JlYXRlIGEgbmV3IGJhdGNoIHNvIHRoYXQgaW5jb21pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWRkZWQgaW50byB0aGUgY3VycmVudGx5IHByb2Nlc3NpbmcgYmF0Y2guXG4gICAgICAgIC8vIENvbnRpbnVlIHByb2Nlc3NpbmcgdW50aWwgdGhlIHRvcC1sZXZlbCBiYXRjaCBpcyBlbXB0eSAoZnVuY3Rpb25zIG1heSBiZSBhZGRlZCB0byB0aGUgbmV3IGJhdGNoIHdoaWxlIHByb2Nlc3NpbmcsIGFuZCBzbyBvbikuXG4gICAgICAgIGlzUHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgIHdoaWxlIChiYXRjaC5zaXplKCkpIHtcbiAgICAgICAgICAgIHZhciBwcm9jZXNzaW5nQmF0Y2ggPSBiYXRjaDtcbiAgICAgICAgICAgIGJhdGNoID0gQmF0Y2goKTtcbiAgICAgICAgICAgIHByb2Nlc3NpbmdCYXRjaC5wcm9jZXNzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZm9yY2VQcm9jZXNzQmF0Y2gobG9jYWxBc3luY1Byb2Nlc3MpIHtcbiAgICAgICAgaWYgKGlzUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYobG9jYWxBc3luY1Byb2Nlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxBc3luY1Byb2Nlc3MgPSBhc3luY1Byb2Nlc3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZihhc3luY0ZyYW1lSGFuZGxlcikge1xuICAgICAgICAgICAgY2FuY2VsRnJhbWUoYXN5bmNGcmFtZUhhbmRsZXIpO1xuICAgICAgICAgICAgYXN5bmNGcmFtZUhhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYobG9jYWxBc3luY1Byb2Nlc3MpIHtcbiAgICAgICAgICAgIHByb2Nlc3NCYXRjaEFzeW5jKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9jZXNzQmF0Y2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCYXRjaEFzeW5jKCkge1xuICAgICAgICBhc3luY0ZyYW1lSGFuZGxlciA9IHJlcXVlc3RGcmFtZShwcm9jZXNzQmF0Y2gpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFyQmF0Y2goKSB7XG4gICAgICAgIGJhdGNoICAgICAgICAgICA9IHt9O1xuICAgICAgICBiYXRjaFNpemUgICAgICAgPSAwO1xuICAgICAgICB0b3BMZXZlbCAgICAgICAgPSAwO1xuICAgICAgICBib3R0b21MZXZlbCAgICAgPSAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbmNlbEZyYW1lKGxpc3RlbmVyKSB7XG4gICAgICAgIC8vIHZhciBjYW5jZWwgPSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1vekNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cuY2xlYXJUaW1lb3V0O1xuICAgICAgICB2YXIgY2FuY2VsID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2FuY2VsKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXF1ZXN0RnJhbWUoY2FsbGJhY2spIHtcbiAgICAgICAgLy8gdmFyIHJhZiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IGZ1bmN0aW9uKGZuKSB7IHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmbiwgMjApOyB9O1xuICAgICAgICB2YXIgcmFmID0gZnVuY3Rpb24oZm4pIHsgcmV0dXJuIHNldFRpbWVvdXQoZm4sIDApOyB9O1xuICAgICAgICByZXR1cm4gcmFmKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGFkZEZ1bmN0aW9uLFxuICAgICAgICBmb3JjZTogZm9yY2VQcm9jZXNzQmF0Y2hcbiAgICB9O1xufTtcblxuZnVuY3Rpb24gQmF0Y2goKSB7XG4gICAgdmFyIGJhdGNoICAgICAgID0ge307XG4gICAgdmFyIHNpemUgICAgICAgID0gMDtcbiAgICB2YXIgdG9wTGV2ZWwgICAgPSAwO1xuICAgIHZhciBib3R0b21MZXZlbCA9IDA7XG5cbiAgICBmdW5jdGlvbiBhZGQobGV2ZWwsIGZuKSB7XG4gICAgICAgIGlmKCFmbikge1xuICAgICAgICAgICAgZm4gPSBsZXZlbDtcbiAgICAgICAgICAgIGxldmVsID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGxldmVsID4gdG9wTGV2ZWwpIHtcbiAgICAgICAgICAgIHRvcExldmVsID0gbGV2ZWw7XG4gICAgICAgIH0gZWxzZSBpZihsZXZlbCA8IGJvdHRvbUxldmVsKSB7XG4gICAgICAgICAgICBib3R0b21MZXZlbCA9IGxldmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIWJhdGNoW2xldmVsXSkge1xuICAgICAgICAgICAgYmF0Y2hbbGV2ZWxdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBiYXRjaFtsZXZlbF0ucHVzaChmbik7XG4gICAgICAgIHNpemUrKztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzKCkge1xuICAgICAgICBmb3IodmFyIGxldmVsID0gYm90dG9tTGV2ZWw7IGxldmVsIDw9IHRvcExldmVsOyBsZXZlbCsrKSB7XG4gICAgICAgICAgICB2YXIgZm5zID0gYmF0Y2hbbGV2ZWxdO1xuXG4gICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZuID0gZm5zW2ldO1xuICAgICAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGFkZCxcbiAgICAgICAgcHJvY2VzczogcHJvY2VzcyxcbiAgICAgICAgc2l6ZTogZ2V0U2l6ZVxuICAgIH07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHV0aWxzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxudXRpbHMuZ2V0T3B0aW9uID0gZ2V0T3B0aW9uO1xuXG5mdW5jdGlvbiBnZXRPcHRpb24ob3B0aW9ucywgbmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHZhbHVlID0gb3B0aW9uc1tuYW1lXTtcblxuICAgIGlmKCh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgcHJvcCA9IFwiX2VyZFwiO1xuXG5mdW5jdGlvbiBpbml0U3RhdGUoZWxlbWVudCkge1xuICAgIGVsZW1lbnRbcHJvcF0gPSB7fTtcbiAgICByZXR1cm4gZ2V0U3RhdGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGdldFN0YXRlKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudFtwcm9wXTtcbn1cblxuZnVuY3Rpb24gY2xlYW5TdGF0ZShlbGVtZW50KSB7XG4gICAgZGVsZXRlIGVsZW1lbnRbcHJvcF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGluaXRTdGF0ZTogaW5pdFN0YXRlLFxuICAgIGdldFN0YXRlOiBnZXRTdGF0ZSxcbiAgICBjbGVhblN0YXRlOiBjbGVhblN0YXRlXG59O1xuIiwiLyoqXG4gKiBSZXNpemUgZGV0ZWN0aW9uIHN0cmF0ZWd5IHRoYXQgaW5qZWN0cyBvYmplY3RzIHRvIGVsZW1lbnRzIGluIG9yZGVyIHRvIGRldGVjdCByZXNpemUgZXZlbnRzLlxuICogSGVhdmlseSBpbnNwaXJlZCBieTogaHR0cDovL3d3dy5iYWNrYWxsZXljb2Rlci5jb20vMjAxMy8wMy8xOC9jcm9zcy1icm93c2VyLWV2ZW50LWJhc2VkLWVsZW1lbnQtcmVzaXplLWRldGVjdGlvbi9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGJyb3dzZXJEZXRlY3RvciA9IHJlcXVpcmUoXCIuLi9icm93c2VyLWRldGVjdG9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zICAgICAgICAgICAgID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgcmVwb3J0ZXIgICAgICAgID0gb3B0aW9ucy5yZXBvcnRlcjtcbiAgICB2YXIgYmF0Y2hQcm9jZXNzb3IgID0gb3B0aW9ucy5iYXRjaFByb2Nlc3NvcjtcbiAgICB2YXIgZ2V0U3RhdGUgICAgICAgID0gb3B0aW9ucy5zdGF0ZUhhbmRsZXIuZ2V0U3RhdGU7XG5cbiAgICBpZighcmVwb3J0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyByZXF1aXJlZCBkZXBlbmRlbmN5OiByZXBvcnRlci5cIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIHJlc2l6ZSBldmVudCBsaXN0ZW5lciB0byB0aGUgZWxlbWVudC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGhhdmUgdGhlIGxpc3RlbmVyIGFkZGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBsaXN0ZW5lciBjYWxsYmFjayB0byBiZSBjYWxsZWQgZm9yIGVhY2ggcmVzaXplIGV2ZW50IG9mIHRoZSBlbGVtZW50LiBUaGUgZWxlbWVudCB3aWxsIGJlIGdpdmVuIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBsaXN0ZW5lciBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcihlbGVtZW50LCBsaXN0ZW5lcikge1xuICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lclByb3h5KCkge1xuICAgICAgICAgICAgbGlzdGVuZXIoZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihicm93c2VyRGV0ZWN0b3IuaXNJRSg4KSkge1xuICAgICAgICAgICAgLy9JRSA4IGRvZXMgbm90IHN1cHBvcnQgb2JqZWN0LCBidXQgc3VwcG9ydHMgdGhlIHJlc2l6ZSBldmVudCBkaXJlY3RseSBvbiBlbGVtZW50cy5cbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9iamVjdCA9IHtcbiAgICAgICAgICAgICAgICBwcm94eTogbGlzdGVuZXJQcm94eVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoXCJvbnJlc2l6ZVwiLCBsaXN0ZW5lclByb3h5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBvYmplY3QgPSBnZXRPYmplY3QoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmKCFvYmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IGlzIG5vdCBkZXRlY3RhYmxlIGJ5IHRoaXMgc3RyYXRlZ3kuXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvYmplY3QuY29udGVudERvY3VtZW50LmRlZmF1bHRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgbGlzdGVuZXJQcm94eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENzc1RleHRTdHJpbmcocnVsZXMpIHtcbiAgICAgICAgdmFyIHNlcGVyYXRvciA9IG9wdGlvbnMuaW1wb3J0YW50ID8gXCIgIWltcG9ydGFudDsgXCIgOiBcIjsgXCI7XG5cbiAgICAgICAgcmV0dXJuIChydWxlcy5qb2luKHNlcGVyYXRvcikgKyBzZXBlcmF0b3IpLnRyaW0oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhbiBlbGVtZW50IGRldGVjdGFibGUgYW5kIHJlYWR5IHRvIGJlIGxpc3RlbmVkIGZvciByZXNpemUgZXZlbnRzLiBXaWxsIGNhbGwgdGhlIGNhbGxiYWNrIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBjaGFuZ2VzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1ha2UgZGV0ZWN0YWJsZVxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZWxlbWVudCBpcyByZWFkeSB0byBiZSBsaXN0ZW5lZCBmb3IgcmVzaXplIGNoYW5nZXMuIFdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGVsZW1lbnQgYXMgZmlyc3QgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1ha2VEZXRlY3RhYmxlKG9wdGlvbnMsIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gZWxlbWVudDtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgdmFyIGRlYnVnID0gb3B0aW9ucy5kZWJ1ZztcblxuICAgICAgICBmdW5jdGlvbiBpbmplY3RPYmplY3QoZWxlbWVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHZhciBPQkpFQ1RfU1RZTEUgPSBidWlsZENzc1RleHRTdHJpbmcoW1wiZGlzcGxheTogYmxvY2tcIiwgXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJ0b3A6IDBcIiwgXCJsZWZ0OiAwXCIsIFwid2lkdGg6IDEwMCVcIiwgXCJoZWlnaHQ6IDEwMCVcIiwgXCJib3JkZXI6IG5vbmVcIiwgXCJwYWRkaW5nOiAwXCIsIFwibWFyZ2luOiAwXCIsIFwib3BhY2l0eTogMFwiLCBcInotaW5kZXg6IC0xMDAwXCIsIFwicG9pbnRlci1ldmVudHM6IG5vbmVcIl0pO1xuXG4gICAgICAgICAgICAvL1RoZSB0YXJnZXQgZWxlbWVudCBuZWVkcyB0byBiZSBwb3NpdGlvbmVkIChldmVyeXRoaW5nIGV4Y2VwdCBzdGF0aWMpIHNvIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmVkIG9iamVjdCB3aWxsIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBlbGVtZW50LlxuXG4gICAgICAgICAgICAvLyBQb3NpdGlvbiBhbHRlcmluZyBtYXkgYmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9yIG9uIG9iamVjdCBsb2FkLCBkZXBlbmRpbmcgb24gaWYgc3R5bGUgcmVzb2x1dGlvbiBpcyBwb3NzaWJsZSBkaXJlY3RseSBvciBub3QuXG4gICAgICAgICAgICB2YXIgcG9zaXRpb25DaGVja1BlcmZvcm1lZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBUaGUgZWxlbWVudCBtYXkgbm90IHlldCBiZSBhdHRhY2hlZCB0byB0aGUgRE9NLCBhbmQgdGhlcmVmb3JlIHRoZSBzdHlsZSBvYmplY3QgbWF5IGJlIGVtcHR5IGluIHNvbWUgYnJvd3NlcnMuXG4gICAgICAgICAgICAvLyBTaW5jZSB0aGUgc3R5bGUgb2JqZWN0IGlzIGEgcmVmZXJlbmNlLCBpdCB3aWxsIGJlIHVwZGF0ZWQgYXMgc29vbiBhcyB0aGUgZWxlbWVudCBpcyBhdHRhY2hlZCB0byB0aGUgRE9NLlxuICAgICAgICAgICAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5zdGFydFNpemUgPSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBtdXRhdGVEb20oKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYWx0ZXJQb3NpdGlvblN0eWxlcygpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoc3R5bGUucG9zaXRpb24gPT09IFwic3RhdGljXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJwb3NpdGlvblwiLCBcInJlbGF0aXZlXCIsIG9wdGlvbnMuaW1wb3J0YW50ID8gXCJpbXBvcnRhbnRcIiA6IFwiXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlUmVsYXRpdmVTdHlsZXMgPSBmdW5jdGlvbihyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0TnVtZXJpY2FsVmFsdWUodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1teLVxcZFxcLl0vZywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT09IFwiYXV0b1wiICYmIGdldE51bWVyaWNhbFZhbHVlKHZhbHVlKSAhPT0gXCIwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIud2FybihcIkFuIGVsZW1lbnQgdGhhdCBpcyBwb3NpdGlvbmVkIHN0YXRpYyBoYXMgc3R5bGUuXCIgKyBwcm9wZXJ0eSArIFwiPVwiICsgdmFsdWUgKyBcIiB3aGljaCBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgc3RhdGljIHBvc2l0aW9uaW5nLiBUaGUgZWxlbWVudCB3aWxsIG5lZWQgdG8gYmUgcG9zaXRpb25lZCByZWxhdGl2ZSwgc28gdGhlIHN0eWxlLlwiICsgcHJvcGVydHkgKyBcIiB3aWxsIGJlIHNldCB0byAwLiBFbGVtZW50OiBcIiwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIFwiMFwiLCBvcHRpb25zLmltcG9ydGFudCA/IFwiaW1wb3J0YW50XCIgOiBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIHNvIHRoYXQgdGhlcmUgYXJlIG5vIGFjY2lkZW50YWwgc3R5bGVzIHRoYXQgd2lsbCBtYWtlIHRoZSBlbGVtZW50IHN0eWxlZCBkaWZmZXJlbnRseSBub3cgdGhhdCBpcyBpcyByZWxhdGl2ZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSwgc2V0IHRoZW0gdG8gMCAodGhpcyBzaG91bGQgYmUgb2theSB3aXRoIHRoZSB1c2VyIHNpbmNlIHRoZSBzdHlsZSBwcm9wZXJ0aWVzIGRpZCBub3RoaW5nIGJlZm9yZSBbc2luY2UgdGhlIGVsZW1lbnQgd2FzIHBvc2l0aW9uZWQgc3RhdGljXSBhbnl3YXkpLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVsYXRpdmVTdHlsZXMocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBcInRvcFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJyaWdodFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJib3R0b21cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSZWxhdGl2ZVN0eWxlcyhyZXBvcnRlciwgZWxlbWVudCwgc3R5bGUsIFwibGVmdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uT2JqZWN0TG9hZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG9iamVjdCBoYXMgYmVlbiBsb2FkZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgbm93IGlzIGd1YXJhbnRlZWQgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwb3NpdGlvbkNoZWNrUGVyZm9ybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHRlclBvc2l0aW9uU3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvKmpzaGludCB2YWxpZHRoaXM6IHRydWUgKi9cblxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnZXREb2N1bWVudChlbGVtZW50LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9PcGVyYSAxMiBzZWVtIHRvIGNhbGwgdGhlIG9iamVjdC5vbmxvYWQgYmVmb3JlIHRoZSBhY3R1YWwgZG9jdW1lbnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vU28gaWYgaXQgaXMgbm90IHByZXNlbnQsIHBvbGwgaXQgd2l0aCBhbiB0aW1lb3V0IHVudGlsIGl0IGlzIHByZXNlbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1RPRE86IENvdWxkIG1heWJlIGJlIGhhbmRsZWQgYmV0dGVyIHdpdGggb2JqZWN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSBvciBzaW1pbGFyLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmNoZWNrRm9yT2JqZWN0RG9jdW1lbnRUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChzdGF0ZS5jaGVja0Zvck9iamVjdERvY3VtZW50VGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tGb3JPYmplY3REb2N1bWVudFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gY2hlY2tGb3JPYmplY3REb2N1bWVudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tGb3JPYmplY3REb2N1bWVudFRpbWVvdXRJZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERvY3VtZW50KGVsZW1lbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlbGVtZW50LmNvbnRlbnREb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvL011dGF0aW5nIHRoZSBvYmplY3QgZWxlbWVudCBoZXJlIHNlZW1zIHRvIGZpcmUgYW5vdGhlciBsb2FkIGV2ZW50LlxuICAgICAgICAgICAgICAgICAgICAvL011dGF0aW5nIHRoZSBpbm5lciBkb2N1bWVudCBvZiB0aGUgb2JqZWN0IGVsZW1lbnQgaXMgZmluZSB0aG91Z2guXG4gICAgICAgICAgICAgICAgICAgIHZhciBvYmplY3RFbGVtZW50ID0gdGhpcztcblxuICAgICAgICAgICAgICAgICAgICAvL0NyZWF0ZSB0aGUgc3R5bGUgZWxlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgb2JqZWN0LlxuICAgICAgICAgICAgICAgICAgICBnZXREb2N1bWVudChvYmplY3RFbGVtZW50LCBmdW5jdGlvbiBvbk9iamVjdERvY3VtZW50UmVhZHkob2JqZWN0RG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vTm90aWZ5IHRoYXQgdGhlIGVsZW1lbnQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgdG8uXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQgbWF5IGJlIGRldGFjaGVkIGZyb20gdGhlIERPTSwgYW5kIHNvbWUgYnJvd3NlcnMgZG9lcyBub3Qgc3VwcG9ydCBzdHlsZSByZXNvbHZpbmcgb2YgZGV0YWNoZWQgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgLy8gVGhlIGFsdGVyUG9zaXRpb25TdHlsZXMgbmVlZHMgdG8gYmUgZGVsYXllZCB1bnRpbCB3ZSBrbm93IHRoZSBlbGVtZW50IGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBET00gKHdoaWNoIHdlIGFyZSBzdXJlIG9mIHdoZW4gdGhlIG9uT2JqZWN0TG9hZCBoYXMgYmVlbiBmaXJlZCksIGlmIHN0eWxlIHJlc29sdXRpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgICAgICAgICAgICAgIGlmIChzdHlsZS5wb3NpdGlvbiAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBhbHRlclBvc2l0aW9uU3R5bGVzKHN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25DaGVja1BlcmZvcm1lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9BZGQgYW4gb2JqZWN0IGVsZW1lbnQgYXMgYSBjaGlsZCB0byB0aGUgdGFyZ2V0IGVsZW1lbnQgdGhhdCB3aWxsIGJlIGxpc3RlbmVkIHRvIGZvciByZXNpemUgZXZlbnRzLlxuICAgICAgICAgICAgICAgIHZhciBvYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib2JqZWN0XCIpO1xuICAgICAgICAgICAgICAgIG9iamVjdC5zdHlsZS5jc3NUZXh0ID0gT0JKRUNUX1NUWUxFO1xuICAgICAgICAgICAgICAgIG9iamVjdC50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIG9iamVjdC50eXBlID0gXCJ0ZXh0L2h0bWxcIjtcbiAgICAgICAgICAgICAgICBvYmplY3Quc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xuICAgICAgICAgICAgICAgIG9iamVjdC5vbmxvYWQgPSBvbk9iamVjdExvYWQ7XG5cbiAgICAgICAgICAgICAgICAvL1NhZmFyaTogVGhpcyBtdXN0IG9jY3VyIGJlZm9yZSBhZGRpbmcgdGhlIG9iamVjdCB0byB0aGUgRE9NLlxuICAgICAgICAgICAgICAgIC8vSUU6IERvZXMgbm90IGxpa2UgdGhhdCB0aGlzIGhhcHBlbnMgYmVmb3JlLCBldmVuIGlmIGl0IGlzIGFsc28gYWRkZWQgYWZ0ZXIuXG4gICAgICAgICAgICAgICAgaWYoIWJyb3dzZXJEZXRlY3Rvci5pc0lFKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmRhdGEgPSBcImFib3V0OmJsYW5rXCI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZCBiZWZvcmUgdGhlIGFjdHVhbCBsb2FkaW5nIGhhcHBlbmVkLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChvYmplY3QpO1xuICAgICAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9iamVjdCA9IG9iamVjdDtcblxuICAgICAgICAgICAgICAgIC8vSUU6IFRoaXMgbXVzdCBvY2N1ciBhZnRlciBhZGRpbmcgdGhlIG9iamVjdCB0byB0aGUgRE9NLlxuICAgICAgICAgICAgICAgIGlmKGJyb3dzZXJEZXRlY3Rvci5pc0lFKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LmRhdGEgPSBcImFib3V0OmJsYW5rXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihiYXRjaFByb2Nlc3Nvcikge1xuICAgICAgICAgICAgICAgIGJhdGNoUHJvY2Vzc29yLmFkZChtdXRhdGVEb20pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtdXRhdGVEb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGJyb3dzZXJEZXRlY3Rvci5pc0lFKDgpKSB7XG4gICAgICAgICAgICAvL0lFIDggZG9lcyBub3Qgc3VwcG9ydCBvYmplY3RzIHByb3Blcmx5LiBMdWNraWx5IHRoZXkgZG8gc3VwcG9ydCB0aGUgcmVzaXplIGV2ZW50LlxuICAgICAgICAgICAgLy9TbyBkbyBub3QgaW5qZWN0IHRoZSBvYmplY3QgYW5kIG5vdGlmeSB0aGF0IHRoZSBlbGVtZW50IGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgbGlzdGVuZWQgdG8uXG4gICAgICAgICAgICAvL1RoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgcmVzaXplIGV2ZW50IGlzIGF0dGFjaGVkIGluIHRoZSB1dGlscy5hZGRMaXN0ZW5lciBpbnN0ZWFkLlxuICAgICAgICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmplY3RPYmplY3QoZWxlbWVudCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2hpbGQgb2JqZWN0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7ZWxlbWVudH0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgVGhlIG9iamVjdCBlbGVtZW50IG9mIHRoZSB0YXJnZXQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0T2JqZWN0KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGdldFN0YXRlKGVsZW1lbnQpLm9iamVjdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bmluc3RhbGwoZWxlbWVudCkge1xuICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb2JqZWN0ID0gZ2V0T2JqZWN0KGVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghb2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnJvd3NlckRldGVjdG9yLmlzSUUoOCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZGV0YWNoRXZlbnQoXCJvbnJlc2l6ZVwiLCBvYmplY3QucHJveHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChvYmplY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdldFN0YXRlKGVsZW1lbnQpLmNoZWNrRm9yT2JqZWN0RG9jdW1lbnRUaW1lb3V0SWQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoZ2V0U3RhdGUoZWxlbWVudCkuY2hlY2tGb3JPYmplY3REb2N1bWVudFRpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgZ2V0U3RhdGUoZWxlbWVudCkub2JqZWN0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG1ha2VEZXRlY3RhYmxlOiBtYWtlRGV0ZWN0YWJsZSxcbiAgICAgICAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICAgICAgICB1bmluc3RhbGw6IHVuaW5zdGFsbFxuICAgIH07XG59O1xuIiwiLyoqXG4gKiBSZXNpemUgZGV0ZWN0aW9uIHN0cmF0ZWd5IHRoYXQgaW5qZWN0cyBkaXZzIHRvIGVsZW1lbnRzIGluIG9yZGVyIHRvIGRldGVjdCByZXNpemUgZXZlbnRzIG9uIHNjcm9sbCBldmVudHMuXG4gKiBIZWF2aWx5IGluc3BpcmVkIGJ5OiBodHRwczovL2dpdGh1Yi5jb20vbWFyY2ovY3NzLWVsZW1lbnQtcXVlcmllcy9ibG9iL21hc3Rlci9zcmMvUmVzaXplU2Vuc29yLmpzXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBmb3JFYWNoID0gcmVxdWlyZShcIi4uL2NvbGxlY3Rpb24tdXRpbHNcIikuZm9yRWFjaDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgb3B0aW9ucyAgICAgICAgICAgICA9IG9wdGlvbnMgfHwge307XG4gICAgdmFyIHJlcG9ydGVyICAgICAgICA9IG9wdGlvbnMucmVwb3J0ZXI7XG4gICAgdmFyIGJhdGNoUHJvY2Vzc29yICA9IG9wdGlvbnMuYmF0Y2hQcm9jZXNzb3I7XG4gICAgdmFyIGdldFN0YXRlICAgICAgICA9IG9wdGlvbnMuc3RhdGVIYW5kbGVyLmdldFN0YXRlO1xuICAgIHZhciBoYXNTdGF0ZSAgICAgICAgPSBvcHRpb25zLnN0YXRlSGFuZGxlci5oYXNTdGF0ZTtcbiAgICB2YXIgaWRIYW5kbGVyICAgICAgID0gb3B0aW9ucy5pZEhhbmRsZXI7XG5cbiAgICBpZiAoIWJhdGNoUHJvY2Vzc29yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgZGVwZW5kZW5jeTogYmF0Y2hQcm9jZXNzb3JcIik7XG4gICAgfVxuXG4gICAgaWYgKCFyZXBvcnRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkIGRlcGVuZGVuY3k6IHJlcG9ydGVyLlwiKTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENvdWxkIHRoaXMgcGVyaGFwcyBiZSBkb25lIGF0IGluc3RhbGxhdGlvbiB0aW1lP1xuICAgIHZhciBzY3JvbGxiYXJTaXplcyA9IGdldFNjcm9sbGJhclNpemVzKCk7XG5cbiAgICB2YXIgc3R5bGVJZCA9IFwiZXJkX3Njcm9sbF9kZXRlY3Rpb25fc2Nyb2xsYmFyX3N0eWxlXCI7XG4gICAgdmFyIGRldGVjdGlvbkNvbnRhaW5lckNsYXNzID0gXCJlcmRfc2Nyb2xsX2RldGVjdGlvbl9jb250YWluZXJcIjtcblxuICAgIGZ1bmN0aW9uIGluaXREb2N1bWVudCh0YXJnZXREb2N1bWVudCkge1xuICAgICAgICAvLyBJbmplY3QgdGhlIHNjcm9sbGJhciBzdHlsaW5nIHRoYXQgcHJldmVudHMgdGhlbSBmcm9tIGFwcGVhcmluZyBzb21ldGltZXMgaW4gQ2hyb21lLlxuICAgICAgICAvLyBUaGUgaW5qZWN0ZWQgY29udGFpbmVyIG5lZWRzIHRvIGhhdmUgYSBjbGFzcywgc28gdGhhdCBpdCBtYXkgYmUgc3R5bGVkIHdpdGggQ1NTIChwc2V1ZG8gZWxlbWVudHMpLlxuICAgICAgICBpbmplY3RTY3JvbGxTdHlsZSh0YXJnZXREb2N1bWVudCwgc3R5bGVJZCwgZGV0ZWN0aW9uQ29udGFpbmVyQ2xhc3MpO1xuICAgIH1cblxuICAgIGluaXREb2N1bWVudCh3aW5kb3cuZG9jdW1lbnQpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRDc3NUZXh0U3RyaW5nKHJ1bGVzKSB7XG4gICAgICAgIHZhciBzZXBlcmF0b3IgPSBvcHRpb25zLmltcG9ydGFudCA/IFwiICFpbXBvcnRhbnQ7IFwiIDogXCI7IFwiO1xuXG4gICAgICAgIHJldHVybiAocnVsZXMuam9pbihzZXBlcmF0b3IpICsgc2VwZXJhdG9yKS50cmltKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2Nyb2xsYmFyU2l6ZXMoKSB7XG4gICAgICAgIHZhciB3aWR0aCA9IDUwMDtcbiAgICAgICAgdmFyIGhlaWdodCA9IDUwMDtcblxuICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBjaGlsZC5zdHlsZS5jc3NUZXh0ID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcInBvc2l0aW9uOiBhYnNvbHV0ZVwiLCBcIndpZHRoOiBcIiArIHdpZHRoKjIgKyBcInB4XCIsIFwiaGVpZ2h0OiBcIiArIGhlaWdodCoyICsgXCJweFwiLCBcInZpc2liaWxpdHk6IGhpZGRlblwiLCBcIm1hcmdpbjogMFwiLCBcInBhZGRpbmc6IDBcIl0pO1xuXG4gICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJ3aWR0aDogXCIgKyB3aWR0aCArIFwicHhcIiwgXCJoZWlnaHQ6IFwiICsgaGVpZ2h0ICsgXCJweFwiLCBcIm92ZXJmbG93OiBzY3JvbGxcIiwgXCJ2aXNpYmlsaXR5OiBub25lXCIsIFwidG9wOiBcIiArIC13aWR0aCozICsgXCJweFwiLCBcImxlZnQ6IFwiICsgLWhlaWdodCozICsgXCJweFwiLCBcInZpc2liaWxpdHk6IGhpZGRlblwiLCBcIm1hcmdpbjogMFwiLCBcInBhZGRpbmc6IDBcIl0pO1xuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoY29udGFpbmVyLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuXG4gICAgICAgIHZhciB3aWR0aFNpemUgPSB3aWR0aCAtIGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgICAgdmFyIGhlaWdodFNpemUgPSBoZWlnaHQgLSBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoU2l6ZSxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0U2l6ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluamVjdFNjcm9sbFN0eWxlKHRhcmdldERvY3VtZW50LCBzdHlsZUlkLCBjb250YWluZXJDbGFzcykge1xuICAgICAgICBmdW5jdGlvbiBpbmplY3RTdHlsZShzdHlsZSwgbWV0aG9kKSB7XG4gICAgICAgICAgICBtZXRob2QgPSBtZXRob2QgfHwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIHN0eWxlRWxlbWVudCA9IHRhcmdldERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZTtcbiAgICAgICAgICAgIHN0eWxlRWxlbWVudC5pZCA9IHN0eWxlSWQ7XG4gICAgICAgICAgICBtZXRob2Qoc3R5bGVFbGVtZW50KTtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRhcmdldERvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0eWxlSWQpKSB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyQW5pbWF0aW9uQ2xhc3MgPSBjb250YWluZXJDbGFzcyArIFwiX2FuaW1hdGlvblwiO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lckFuaW1hdGlvbkFjdGl2ZUNsYXNzID0gY29udGFpbmVyQ2xhc3MgKyBcIl9hbmltYXRpb25fYWN0aXZlXCI7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSBcIi8qIENyZWF0ZWQgYnkgdGhlIGVsZW1lbnQtcmVzaXplLWRldGVjdG9yIGxpYnJhcnkuICovXFxuXCI7XG4gICAgICAgICAgICBzdHlsZSArPSBcIi5cIiArIGNvbnRhaW5lckNsYXNzICsgXCIgPiBkaXY6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgXCIgKyBidWlsZENzc1RleHRTdHJpbmcoW1wiZGlzcGxheTogbm9uZVwiXSkgKyBcIiB9XFxuXFxuXCI7XG4gICAgICAgICAgICBzdHlsZSArPSBcIi5cIiArIGNvbnRhaW5lckFuaW1hdGlvbkFjdGl2ZUNsYXNzICsgXCIgeyBcIiArIGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC4xc1wiLCBcImFuaW1hdGlvbi1kdXJhdGlvbjogMC4xc1wiLCBcIi13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IFwiICsgY29udGFpbmVyQW5pbWF0aW9uQ2xhc3MsIFwiYW5pbWF0aW9uLW5hbWU6IFwiICsgY29udGFpbmVyQW5pbWF0aW9uQ2xhc3NdKSArIFwiIH1cXG5cIjtcbiAgICAgICAgICAgIHN0eWxlICs9IFwiQC13ZWJraXQta2V5ZnJhbWVzIFwiICsgY29udGFpbmVyQW5pbWF0aW9uQ2xhc3MgKyAgXCIgeyAwJSB7IG9wYWNpdHk6IDE7IH0gNTAlIHsgb3BhY2l0eTogMDsgfSAxMDAlIHsgb3BhY2l0eTogMTsgfSB9XFxuXCI7XG4gICAgICAgICAgICBzdHlsZSArPSBcIkBrZXlmcmFtZXMgXCIgKyBjb250YWluZXJBbmltYXRpb25DbGFzcyArICAgICAgICAgIFwiIHsgMCUgeyBvcGFjaXR5OiAxOyB9IDUwJSB7IG9wYWNpdHk6IDA7IH0gMTAwJSB7IG9wYWNpdHk6IDE7IH0gfVwiO1xuICAgICAgICAgICAgaW5qZWN0U3R5bGUoc3R5bGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkQW5pbWF0aW9uQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSBcIiBcIiArIGRldGVjdGlvbkNvbnRhaW5lckNsYXNzICsgXCJfYW5pbWF0aW9uX2FjdGl2ZVwiO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEV2ZW50KGVsLCBuYW1lLCBjYikge1xuICAgICAgICBpZiAoZWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBjYik7XG4gICAgICAgIH0gZWxzZSBpZihlbC5hdHRhY2hFdmVudCkge1xuICAgICAgICAgICAgZWwuYXR0YWNoRXZlbnQoXCJvblwiICsgbmFtZSwgY2IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKFwiW3Njcm9sbF0gRG9uJ3Qga25vdyBob3cgdG8gYWRkIGV2ZW50IGxpc3RlbmVycy5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVFdmVudChlbCwgbmFtZSwgY2IpIHtcbiAgICAgICAgaWYgKGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgY2IpO1xuICAgICAgICB9IGVsc2UgaWYoZWwuZGV0YWNoRXZlbnQpIHtcbiAgICAgICAgICAgIGVsLmRldGFjaEV2ZW50KFwib25cIiArIG5hbWUsIGNiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcihcIltzY3JvbGxdIERvbid0IGtub3cgaG93IHRvIHJlbW92ZSBldmVudCBsaXN0ZW5lcnMuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0RXhwYW5kRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBnZXRTdGF0ZShlbGVtZW50KS5jb250YWluZXIuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2hyaW5rRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBnZXRTdGF0ZShlbGVtZW50KS5jb250YWluZXIuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIHJlc2l6ZSBldmVudCBsaXN0ZW5lciB0byB0aGUgZWxlbWVudC5cbiAgICAgKiBAcHVibGljXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGhhdmUgdGhlIGxpc3RlbmVyIGFkZGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBsaXN0ZW5lciBjYWxsYmFjayB0byBiZSBjYWxsZWQgZm9yIGVhY2ggcmVzaXplIGV2ZW50IG9mIHRoZSBlbGVtZW50LiBUaGUgZWxlbWVudCB3aWxsIGJlIGdpdmVuIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBsaXN0ZW5lciBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRMaXN0ZW5lcihlbGVtZW50LCBsaXN0ZW5lcikge1xuICAgICAgICB2YXIgbGlzdGVuZXJzID0gZ2V0U3RhdGUoZWxlbWVudCkubGlzdGVuZXJzO1xuXG4gICAgICAgIGlmICghbGlzdGVuZXJzLnB1c2gpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhZGQgbGlzdGVuZXIgdG8gYW4gZWxlbWVudCB0aGF0IGlzIG5vdCBkZXRlY3RhYmxlLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhbiBlbGVtZW50IGRldGVjdGFibGUgYW5kIHJlYWR5IHRvIGJlIGxpc3RlbmVkIGZvciByZXNpemUgZXZlbnRzLiBXaWxsIGNhbGwgdGhlIGNhbGxiYWNrIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVhZHkgdG8gYmUgbGlzdGVuZWQgZm9yIHJlc2l6ZSBjaGFuZ2VzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtlbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIG1ha2UgZGV0ZWN0YWJsZVxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZWxlbWVudCBpcyByZWFkeSB0byBiZSBsaXN0ZW5lZCBmb3IgcmVzaXplIGNoYW5nZXMuIFdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGVsZW1lbnQgYXMgZmlyc3QgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1ha2VEZXRlY3RhYmxlKG9wdGlvbnMsIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNhbGxiYWNrID0gZWxlbWVudDtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBmdW5jdGlvbiBkZWJ1ZygpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGFyZ3MudW5zaGlmdChpZEhhbmRsZXIuZ2V0KGVsZW1lbnQpLCBcIlNjcm9sbDogXCIpO1xuICAgICAgICAgICAgICAgIGlmIChyZXBvcnRlci5sb2cuYXBwbHkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIubG9nLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIubG9nKGFyZ3NbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaXNEZXRhY2hlZChlbGVtZW50KSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBpc0luRG9jdW1lbnQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keSB8fCBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keS5jb250YWlucyhlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0luRG9jdW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmlyZUZveCByZXR1cm5zIG51bGwgc3R5bGUgaW4gaGlkZGVuIGlmcmFtZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd25yL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL2lzc3Vlcy82OCBhbmQgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1NTIwXG4gICAgICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaXNVbnJlbmRlcmVkKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmVkIGNvbnRhaW5lciBzaW5jZSB0aGUgdG9wIGxldmVsIGNvbnRhaW5lciBpcyBkaXNwbGF5OiBpbmxpbmUuXG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuICAgICAgICAgICAgcmV0dXJuICFzdHlsZS53aWR0aCB8fCBzdHlsZS53aWR0aC5pbmRleE9mKFwicHhcIikgPT09IC0xOyAvL0NhbiBvbmx5IGNvbXB1dGUgcGl4ZWwgdmFsdWUgd2hlbiByZW5kZXJlZC5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFN0eWxlKCkge1xuICAgICAgICAgICAgLy8gU29tZSBicm93c2VycyBvbmx5IGZvcmNlIGxheW91dHMgd2hlbiBhY3R1YWxseSByZWFkaW5nIHRoZSBzdHlsZSBwcm9wZXJ0aWVzIG9mIHRoZSBzdHlsZSBvYmplY3QsIHNvIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGFsbCByZWFkIGhlcmUsXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSB1c2VyIG9mIHRoZSBmdW5jdGlvbiBjYW4gYmUgc3VyZSB0aGF0IGl0IHdpbGwgcGVyZm9ybSB0aGUgbGF5b3V0IGhlcmUsIGluc3RlYWQgb2YgbGF0ZXIgKGltcG9ydGFudCBmb3IgYmF0Y2hpbmcpLlxuICAgICAgICAgICAgdmFyIGVsZW1lbnRTdHlsZSAgICAgICAgICAgID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgc3R5bGUgICAgICAgICAgICAgICAgICAgPSB7fTtcbiAgICAgICAgICAgIHN0eWxlLnBvc2l0aW9uICAgICAgICAgICAgICA9IGVsZW1lbnRTdHlsZS5wb3NpdGlvbjtcbiAgICAgICAgICAgIHN0eWxlLndpZHRoICAgICAgICAgICAgICAgICA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBzdHlsZS5oZWlnaHQgICAgICAgICAgICAgICAgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIHN0eWxlLnRvcCAgICAgICAgICAgICAgICAgICA9IGVsZW1lbnRTdHlsZS50b3A7XG4gICAgICAgICAgICBzdHlsZS5yaWdodCAgICAgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUucmlnaHQ7XG4gICAgICAgICAgICBzdHlsZS5ib3R0b20gICAgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUuYm90dG9tO1xuICAgICAgICAgICAgc3R5bGUubGVmdCAgICAgICAgICAgICAgICAgID0gZWxlbWVudFN0eWxlLmxlZnQ7XG4gICAgICAgICAgICBzdHlsZS53aWR0aENTUyAgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUud2lkdGg7XG4gICAgICAgICAgICBzdHlsZS5oZWlnaHRDU1MgICAgICAgICAgICAgPSBlbGVtZW50U3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc3RvcmVTdGFydFNpemUoKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSBnZXRTdHlsZSgpO1xuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkuc3RhcnRTaXplID0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBzdHlsZS53aWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHN0eWxlLmhlaWdodFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRlYnVnKFwiRWxlbWVudCBzdGFydCBzaXplXCIsIGdldFN0YXRlKGVsZW1lbnQpLnN0YXJ0U2l6ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbml0TGlzdGVuZXJzKCkge1xuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkubGlzdGVuZXJzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzdG9yZVN0eWxlKCkge1xuICAgICAgICAgICAgZGVidWcoXCJzdG9yZVN0eWxlIGludm9rZWQuXCIpO1xuICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiQWJvcnRpbmcgYmVjYXVzZSBlbGVtZW50IGhhcyBiZWVuIHVuaW5zdGFsbGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlID0gZ2V0U3R5bGUoKTtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLnN0eWxlID0gc3R5bGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzdG9yZUN1cnJlbnRTaXplKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLmxhc3RXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkubGFzdEhlaWdodCAgPSBoZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRFeHBhbmRDaGlsZEVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEV4cGFuZEVsZW1lbnQoZWxlbWVudCkuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFdpZHRoT2Zmc2V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJTaXplcy53aWR0aCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRIZWlnaHRPZmZzZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gMiAqIHNjcm9sbGJhclNpemVzLmhlaWdodCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRFeHBhbmRXaWR0aCh3aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpZHRoICsgMTAgKyBnZXRXaWR0aE9mZnNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RXhwYW5kSGVpZ2h0KGhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIGhlaWdodCArIDEwICsgZ2V0SGVpZ2h0T2Zmc2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTaHJpbmtXaWR0aCh3aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpZHRoICogMiArIGdldFdpZHRoT2Zmc2V0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTaHJpbmtIZWlnaHQoaGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0ICogMiArIGdldEhlaWdodE9mZnNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcG9zaXRpb25TY3JvbGxiYXJzKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgICAgIHZhciBleHBhbmQgICAgICAgICAgPSBnZXRFeHBhbmRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHNocmluayAgICAgICAgICA9IGdldFNocmlua0VsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgZXhwYW5kV2lkdGggICAgID0gZ2V0RXhwYW5kV2lkdGgod2lkdGgpO1xuICAgICAgICAgICAgdmFyIGV4cGFuZEhlaWdodCAgICA9IGdldEV4cGFuZEhlaWdodChoZWlnaHQpO1xuICAgICAgICAgICAgdmFyIHNocmlua1dpZHRoICAgICA9IGdldFNocmlua1dpZHRoKHdpZHRoKTtcbiAgICAgICAgICAgIHZhciBzaHJpbmtIZWlnaHQgICAgPSBnZXRTaHJpbmtIZWlnaHQoaGVpZ2h0KTtcbiAgICAgICAgICAgIGV4cGFuZC5zY3JvbGxMZWZ0ICAgPSBleHBhbmRXaWR0aDtcbiAgICAgICAgICAgIGV4cGFuZC5zY3JvbGxUb3AgICAgPSBleHBhbmRIZWlnaHQ7XG4gICAgICAgICAgICBzaHJpbmsuc2Nyb2xsTGVmdCAgID0gc2hyaW5rV2lkdGg7XG4gICAgICAgICAgICBzaHJpbmsuc2Nyb2xsVG9wICAgID0gc2hyaW5rSGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaW5qZWN0Q29udGFpbmVyRWxlbWVudCgpIHtcbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBnZXRTdGF0ZShlbGVtZW50KS5jb250YWluZXI7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyICAgICAgICAgICAgICAgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lICAgICAgICAgPSBkZXRlY3Rpb25Db250YWluZXJDbGFzcztcbiAgICAgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCAgICAgPSBidWlsZENzc1RleHRTdHJpbmcoW1widmlzaWJpbGl0eTogaGlkZGVuXCIsIFwiZGlzcGxheTogaW5saW5lXCIsIFwid2lkdGg6IDBweFwiLCBcImhlaWdodDogMHB4XCIsIFwiei1pbmRleDogLTFcIiwgXCJvdmVyZmxvdzogaGlkZGVuXCIsIFwibWFyZ2luOiAwXCIsIFwicGFkZGluZzogMFwiXSk7XG4gICAgICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvbkNsYXNzKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG9uQW5pbWF0aW9uU3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uUmVuZGVyZWQgJiYgZ2V0U3RhdGUoZWxlbWVudCkub25SZW5kZXJlZCgpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBhZGRFdmVudChjb250YWluZXIsIFwiYW5pbWF0aW9uc3RhcnRcIiwgb25BbmltYXRpb25TdGFydCk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgZXZlbnQgaGFuZGxlciBoZXJlIHNvIHRoYXQgdGhleSBtYXkgYmUgcmVtb3ZlZCB3aGVuIHVuaW5zdGFsbCBpcyBjYWxsZWQuXG4gICAgICAgICAgICAgICAgLy8gU2VlIHVuaW5zdGFsbCBmdW5jdGlvbiBmb3IgYW4gZXhwbGFuYXRpb24gd2h5IGl0IGlzIG5lZWRlZC5cbiAgICAgICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vbkFuaW1hdGlvblN0YXJ0ID0gb25BbmltYXRpb25TdGFydDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluamVjdFNjcm9sbEVsZW1lbnRzKCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gYWx0ZXJQb3NpdGlvblN0eWxlcygpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSBnZXRTdGF0ZShlbGVtZW50KS5zdHlsZTtcblxuICAgICAgICAgICAgICAgIGlmKHN0eWxlLnBvc2l0aW9uID09PSBcInN0YXRpY1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCJwb3NpdGlvblwiLCBcInJlbGF0aXZlXCIsb3B0aW9ucy5pbXBvcnRhbnQgPyBcImltcG9ydGFudFwiIDogXCJcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlbW92ZVJlbGF0aXZlU3R5bGVzID0gZnVuY3Rpb24ocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0TnVtZXJpY2FsVmFsdWUodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW14tXFxkXFwuXS9nLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPT0gXCJhdXRvXCIgJiYgZ2V0TnVtZXJpY2FsVmFsdWUodmFsdWUpICE9PSBcIjBcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyLndhcm4oXCJBbiBlbGVtZW50IHRoYXQgaXMgcG9zaXRpb25lZCBzdGF0aWMgaGFzIHN0eWxlLlwiICsgcHJvcGVydHkgKyBcIj1cIiArIHZhbHVlICsgXCIgd2hpY2ggaXMgaWdub3JlZCBkdWUgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbmluZy4gVGhlIGVsZW1lbnQgd2lsbCBuZWVkIHRvIGJlIHBvc2l0aW9uZWQgcmVsYXRpdmUsIHNvIHRoZSBzdHlsZS5cIiArIHByb3BlcnR5ICsgXCIgd2lsbCBiZSBzZXQgdG8gMC4gRWxlbWVudDogXCIsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIHNvIHRoYXQgdGhlcmUgYXJlIG5vIGFjY2lkZW50YWwgc3R5bGVzIHRoYXQgd2lsbCBtYWtlIHRoZSBlbGVtZW50IHN0eWxlZCBkaWZmZXJlbnRseSBub3cgdGhhdCBpcyBpcyByZWxhdGl2ZS5cbiAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGVyZSBhcmUgYW55LCBzZXQgdGhlbSB0byAwICh0aGlzIHNob3VsZCBiZSBva2F5IHdpdGggdGhlIHVzZXIgc2luY2UgdGhlIHN0eWxlIHByb3BlcnRpZXMgZGlkIG5vdGhpbmcgYmVmb3JlIFtzaW5jZSB0aGUgZWxlbWVudCB3YXMgcG9zaXRpb25lZCBzdGF0aWNdIGFueXdheSkuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJ0b3BcIik7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJlbGF0aXZlU3R5bGVzKHJlcG9ydGVyLCBlbGVtZW50LCBzdHlsZSwgXCJyaWdodFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVsYXRpdmVTdHlsZXMocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBcImJvdHRvbVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUmVsYXRpdmVTdHlsZXMocmVwb3J0ZXIsIGVsZW1lbnQsIHN0eWxlLCBcImxlZnRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRMZWZ0VG9wQm90dG9tUmlnaHRDc3NUZXh0KGxlZnQsIHRvcCwgYm90dG9tLCByaWdodCkge1xuICAgICAgICAgICAgICAgIGxlZnQgPSAoIWxlZnQgPyBcIjBcIiA6IChsZWZ0ICsgXCJweFwiKSk7XG4gICAgICAgICAgICAgICAgdG9wID0gKCF0b3AgPyBcIjBcIiA6ICh0b3AgKyBcInB4XCIpKTtcbiAgICAgICAgICAgICAgICBib3R0b20gPSAoIWJvdHRvbSA/IFwiMFwiIDogKGJvdHRvbSArIFwicHhcIikpO1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gKCFyaWdodCA/IFwiMFwiIDogKHJpZ2h0ICsgXCJweFwiKSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW1wibGVmdDogXCIgKyBsZWZ0LCBcInRvcDogXCIgKyB0b3AsIFwicmlnaHQ6IFwiICsgcmlnaHQsIFwiYm90dG9tOiBcIiArIGJvdHRvbV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlYnVnKFwiSW5qZWN0aW5nIGVsZW1lbnRzXCIpO1xuXG4gICAgICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhbHRlclBvc2l0aW9uU3R5bGVzKCk7XG5cbiAgICAgICAgICAgIHZhciByb290Q29udGFpbmVyID0gZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyO1xuXG4gICAgICAgICAgICBpZiAoIXJvb3RDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByb290Q29udGFpbmVyID0gaW5qZWN0Q29udGFpbmVyRWxlbWVudCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEdWUgdG8gdGhpcyBXZWJLaXQgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDgwOCAoY3VycmVudGx5IGZpeGVkIGluIEJsaW5rLCBidXQgc3RpbGwgcHJlc2VudCBpbiBXZWJLaXQgYnJvd3NlcnMgc3VjaCBhcyBTYWZhcmkpLFxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBpbmplY3QgdHdvIGNvbnRhaW5lcnMsIG9uZSB0aGF0IGlzIHdpZHRoL2hlaWdodCAxMDAlIGFuZCBhbm90aGVyIHRoYXQgaXMgbGVmdC90b3AgLTFweCBzbyB0aGF0IHRoZSBmaW5hbCBjb250YWluZXIgYWx3YXlzIGlzIDF4MSBwaXhlbHMgYmlnZ2VyIHRoYW5cbiAgICAgICAgICAgIC8vIHRoZSB0YXJnZXRlZCBlbGVtZW50LlxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgYnVnIGlzIHJlc29sdmVkLCBcImNvbnRhaW5lckNvbnRhaW5lclwiIG1heSBiZSByZW1vdmVkLlxuXG4gICAgICAgICAgICAvLyBUaGUgb3V0ZXIgY29udGFpbmVyIGNhbiBvY2Nhc2lvbmFsbHkgYmUgbGVzcyB3aWRlIHRoYW4gdGhlIHRhcmdldGVkIHdoZW4gaW5zaWRlIGlubGluZSBlbGVtZW50cyBlbGVtZW50IGluIFdlYktpdCAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5ODApLlxuICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgbm8gcHJvYmxlbSBzaW5jZSB0aGUgaW5uZXIgY29udGFpbmVyIGVpdGhlciB3YXkgbWFrZXMgc3VyZSB0aGUgaW5qZWN0ZWQgc2Nyb2xsIGVsZW1lbnRzIGFyZSBhdCBsZWFzdCAxeDEgcHguXG5cbiAgICAgICAgICAgIHZhciBzY3JvbGxiYXJXaWR0aCAgICAgICAgICA9IHNjcm9sbGJhclNpemVzLndpZHRoO1xuICAgICAgICAgICAgdmFyIHNjcm9sbGJhckhlaWdodCAgICAgICAgID0gc2Nyb2xsYmFyU2l6ZXMuaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lckNvbnRhaW5lclN0eWxlID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcInBvc2l0aW9uOiBhYnNvbHV0ZVwiLCBcImZsZXg6IG5vbmVcIiwgXCJvdmVyZmxvdzogaGlkZGVuXCIsIFwiei1pbmRleDogLTFcIiwgXCJ2aXNpYmlsaXR5OiBoaWRkZW5cIiwgXCJ3aWR0aDogMTAwJVwiLCBcImhlaWdodDogMTAwJVwiLCBcImxlZnQ6IDBweFwiLCBcInRvcDogMHB4XCJdKTtcbiAgICAgICAgICAgIHZhciBjb250YWluZXJTdHlsZSAgICAgICAgICA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJmbGV4OiBub25lXCIsIFwib3ZlcmZsb3c6IGhpZGRlblwiLCBcInotaW5kZXg6IC0xXCIsIFwidmlzaWJpbGl0eTogaGlkZGVuXCJdLmNvbmNhdChnZXRMZWZ0VG9wQm90dG9tUmlnaHRDc3NUZXh0KC0oMSArIHNjcm9sbGJhcldpZHRoKSwgLSgxICsgc2Nyb2xsYmFySGVpZ2h0KSwgLXNjcm9sbGJhckhlaWdodCwgLXNjcm9sbGJhcldpZHRoKSkpO1xuICAgICAgICAgICAgdmFyIGV4cGFuZFN0eWxlICAgICAgICAgICAgID0gYnVpbGRDc3NUZXh0U3RyaW5nKFtcInBvc2l0aW9uOiBhYnNvbHV0ZVwiLCBcImZsZXg6IG5vbmVcIiwgXCJvdmVyZmxvdzogc2Nyb2xsXCIsIFwiei1pbmRleDogLTFcIiwgXCJ2aXNpYmlsaXR5OiBoaWRkZW5cIiwgXCJ3aWR0aDogMTAwJVwiLCBcImhlaWdodDogMTAwJVwiXSk7XG4gICAgICAgICAgICB2YXIgc2hyaW5rU3R5bGUgICAgICAgICAgICAgPSBidWlsZENzc1RleHRTdHJpbmcoW1wicG9zaXRpb246IGFic29sdXRlXCIsIFwiZmxleDogbm9uZVwiLCBcIm92ZXJmbG93OiBzY3JvbGxcIiwgXCJ6LWluZGV4OiAtMVwiLCBcInZpc2liaWxpdHk6IGhpZGRlblwiLCBcIndpZHRoOiAxMDAlXCIsIFwiaGVpZ2h0OiAxMDAlXCJdKTtcbiAgICAgICAgICAgIHZhciBleHBhbmRDaGlsZFN0eWxlICAgICAgICA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJsZWZ0OiAwXCIsIFwidG9wOiAwXCJdKTtcbiAgICAgICAgICAgIHZhciBzaHJpbmtDaGlsZFN0eWxlICAgICAgICA9IGJ1aWxkQ3NzVGV4dFN0cmluZyhbXCJwb3NpdGlvbjogYWJzb2x1dGVcIiwgXCJ3aWR0aDogMjAwJVwiLCBcImhlaWdodDogMjAwJVwiXSk7XG5cbiAgICAgICAgICAgIHZhciBjb250YWluZXJDb250YWluZXIgICAgICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyICAgICAgICAgICAgICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgdmFyIGV4cGFuZCAgICAgICAgICAgICAgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIHZhciBleHBhbmRDaGlsZCAgICAgICAgICAgICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICB2YXIgc2hyaW5rICAgICAgICAgICAgICAgICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgICAgdmFyIHNocmlua0NoaWxkICAgICAgICAgICAgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuICAgICAgICAgICAgLy8gU29tZSBicm93c2VycyBjaG9rZSBvbiB0aGUgcmVzaXplIHN5c3RlbSBiZWluZyBydGwsIHNvIGZvcmNlIGl0IHRvIGx0ci4gaHR0cHM6Ly9naXRodWIuY29tL3duci9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9pc3N1ZXMvNTZcbiAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGRpciBzaG91bGQgbm90IGJlIHNldCBvbiB0aGUgdG9wIGxldmVsIGNvbnRhaW5lciBhcyBpdCBhbHRlcnMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHRhcmdldCBlbGVtZW50IGluIHNvbWUgYnJvd3NlcnMuXG4gICAgICAgICAgICBjb250YWluZXJDb250YWluZXIuZGlyICAgICAgICAgICAgICA9IFwibHRyXCI7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lckNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ICAgID0gY29udGFpbmVyQ29udGFpbmVyU3R5bGU7XG4gICAgICAgICAgICBjb250YWluZXJDb250YWluZXIuY2xhc3NOYW1lICAgICAgICA9IGRldGVjdGlvbkNvbnRhaW5lckNsYXNzO1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSAgICAgICAgICAgICAgICAgPSBkZXRlY3Rpb25Db250YWluZXJDbGFzcztcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ICAgICAgICAgICAgID0gY29udGFpbmVyU3R5bGU7XG4gICAgICAgICAgICBleHBhbmQuc3R5bGUuY3NzVGV4dCAgICAgICAgICAgICAgICA9IGV4cGFuZFN0eWxlO1xuICAgICAgICAgICAgZXhwYW5kQ2hpbGQuc3R5bGUuY3NzVGV4dCAgICAgICAgICAgPSBleHBhbmRDaGlsZFN0eWxlO1xuICAgICAgICAgICAgc2hyaW5rLnN0eWxlLmNzc1RleHQgICAgICAgICAgICAgICAgPSBzaHJpbmtTdHlsZTtcbiAgICAgICAgICAgIHNocmlua0NoaWxkLnN0eWxlLmNzc1RleHQgICAgICAgICAgID0gc2hyaW5rQ2hpbGRTdHlsZTtcblxuICAgICAgICAgICAgZXhwYW5kLmFwcGVuZENoaWxkKGV4cGFuZENoaWxkKTtcbiAgICAgICAgICAgIHNocmluay5hcHBlbmRDaGlsZChzaHJpbmtDaGlsZCk7XG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZXhwYW5kKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzaHJpbmspO1xuICAgICAgICAgICAgY29udGFpbmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICByb290Q29udGFpbmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lckNvbnRhaW5lcik7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG9uRXhwYW5kU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uRXhwYW5kICYmIGdldFN0YXRlKGVsZW1lbnQpLm9uRXhwYW5kKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIG9uU2hyaW5rU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uU2hyaW5rICYmIGdldFN0YXRlKGVsZW1lbnQpLm9uU2hyaW5rKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZEV2ZW50KGV4cGFuZCwgXCJzY3JvbGxcIiwgb25FeHBhbmRTY3JvbGwpO1xuICAgICAgICAgICAgYWRkRXZlbnQoc2hyaW5rLCBcInNjcm9sbFwiLCBvblNocmlua1Njcm9sbCk7XG5cbiAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBldmVudCBoYW5kbGVycyBoZXJlIHNvIHRoYXQgdGhleSBtYXkgYmUgcmVtb3ZlZCB3aGVuIHVuaW5zdGFsbCBpcyBjYWxsZWQuXG4gICAgICAgICAgICAvLyBTZWUgdW5pbnN0YWxsIGZ1bmN0aW9uIGZvciBhbiBleHBsYW5hdGlvbiB3aHkgaXQgaXMgbmVlZGVkLlxuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25FeHBhbmRTY3JvbGwgPSBvbkV4cGFuZFNjcm9sbDtcbiAgICAgICAgICAgIGdldFN0YXRlKGVsZW1lbnQpLm9uU2hyaW5rU2Nyb2xsID0gb25TaHJpbmtTY3JvbGw7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3Rlckxpc3RlbmVyc0FuZFBvc2l0aW9uRWxlbWVudHMoKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVDaGlsZFNpemVzKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXhwYW5kQ2hpbGQgICAgICAgICAgICAgPSBnZXRFeHBhbmRDaGlsZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdmFyIGV4cGFuZFdpZHRoICAgICAgICAgICAgID0gZ2V0RXhwYW5kV2lkdGgod2lkdGgpO1xuICAgICAgICAgICAgICAgIHZhciBleHBhbmRIZWlnaHQgICAgICAgICAgICA9IGdldEV4cGFuZEhlaWdodChoZWlnaHQpO1xuICAgICAgICAgICAgICAgIGV4cGFuZENoaWxkLnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgZXhwYW5kV2lkdGggKyBcInB4XCIsIG9wdGlvbnMuaW1wb3J0YW50ID8gXCJpbXBvcnRhbnRcIiA6IFwiXCIpO1xuICAgICAgICAgICAgICAgIGV4cGFuZENoaWxkLnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIGV4cGFuZEhlaWdodCArIFwicHhcIiwgb3B0aW9ucy5pbXBvcnRhbnQgPyBcImltcG9ydGFudFwiIDogXCJcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZURldGVjdG9yRWxlbWVudHMoZG9uZSkge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCAgICAgICAgICAgPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgICAgICAgICAgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHNpemUgaGFzIGFjdHVhbGx5IGNoYW5nZWQgc2luY2UgbGFzdCB0aW1lIHRoZSBhbGdvcml0aG0gcmFuLiBJZiBub3QsIHNvbWUgc3RlcHMgbWF5IGJlIHNraXBwZWQuXG4gICAgICAgICAgICAgICAgdmFyIHNpemVDaGFuZ2VkID0gd2lkdGggIT09IGdldFN0YXRlKGVsZW1lbnQpLmxhc3RXaWR0aCB8fCBoZWlnaHQgIT09IGdldFN0YXRlKGVsZW1lbnQpLmxhc3RIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIlN0b3JpbmcgY3VycmVudCBzaXplXCIsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQgc3luYyBoZXJlLCBzbyB0aGF0IG11bHRpcGxlIHNjcm9sbCBldmVudHMgbWF5IGJlIGlnbm9yZWQgaW4gdGhlIGV2ZW50IGxpc3RlbmVycy5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGlmLWNoZWNrIGluIGhhbmRsZVNjcm9sbCBpcyB1c2VsZXNzLlxuICAgICAgICAgICAgICAgIHN0b3JlQ3VycmVudFNpemUoZWxlbWVudCwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkZWxheSB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgYmF0Y2gsIHRoZXJlIGlzIGEgcmlzayB0aGF0IHVuaW5zdGFsbCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlIHRoZSBiYXRjaCBnZXRzIHRvIGV4ZWN1dGUuXG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGNhbmNlbCB0aGUgZm4gZXhlY3V0aW9ucywgd2UgbmVlZCB0byBhZGQgYW4gdW5pbnN0YWxsIGd1YXJkIHRvIGFsbCBmbnMgb2YgdGhlIGJhdGNoLlxuXG4gICAgICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDAsIGZ1bmN0aW9uIHBlcmZvcm1VcGRhdGVDaGlsZFNpemVzKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNpemVDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYXJlRWxlbWVudHNJbmplY3RlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBjb250YWluZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ICE9PSB3aWR0aCB8fCBoICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRlci53YXJuKGlkSGFuZGxlci5nZXQoZWxlbWVudCksIFwiU2Nyb2xsOiBTaXplIGNoYW5nZWQgYmVmb3JlIHVwZGF0aW5nIGRldGVjdG9yIGVsZW1lbnRzLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNoaWxkU2l6ZXMoZWxlbWVudCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQoMSwgZnVuY3Rpb24gdXBkYXRlU2Nyb2xsYmFycygpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBpbnZva2VkIGV2ZW50IHRob3VnaCB0aGUgc2l6ZSBpcyB1bmNoYW5nZWQuIFRoZSBlbGVtZW50IGNvdWxkIGhhdmUgYmVlbiByZXNpemVkIHZlcnkgcXVpY2tseSBhbmQgdGhlblxuICAgICAgICAgICAgICAgICAgICAvLyBiZWVuIHJlc3RvcmVkIHRvIHRoZSBvcmlnaW5hbCBzaXplLCB3aGljaCB3aWxsIGhhdmUgY2hhbmdlZCB0aGUgc2Nyb2xsYmFyIHBvc2l0aW9ucy5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYXJlRWxlbWVudHNJbmplY3RlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBjb250YWluZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25TY3JvbGxiYXJzKGVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNpemVDaGFuZ2VkICYmIGRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2V0U3RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhcIkFib3J0aW5nIGJlY2F1c2UgZWxlbWVudCBoYXMgYmVlbiB1bmluc3RhbGxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXJlRWxlbWVudHNJbmplY3RlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKFwiQWJvcnRpbmcgYmVjYXVzZSBlbGVtZW50IGNvbnRhaW5lciBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGFyZUVsZW1lbnRzSW5qZWN0ZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhZ2V0U3RhdGUoZWxlbWVudCkuY29udGFpbmVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBub3RpZnlMaXN0ZW5lcnNJZk5lZWRlZCgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpc0ZpcnN0Tm90aWZ5KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3RhdGUoZWxlbWVudCkubGFzdE5vdGlmaWVkV2lkdGggPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIm5vdGlmeUxpc3RlbmVyc0lmTmVlZGVkIGludm9rZWRcIik7XG5cbiAgICAgICAgICAgICAgICB2YXIgc3RhdGUgPSBnZXRTdGF0ZShlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIC8vIERvbid0IG5vdGlmeSBpZiB0aGUgY3VycmVudCBzaXplIGlzIHRoZSBzdGFydCBzaXplLCBhbmQgdGhpcyBpcyB0aGUgZmlyc3Qgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0Tm90aWZ5KCkgJiYgc3RhdGUubGFzdFdpZHRoID09PSBzdGF0ZS5zdGFydFNpemUud2lkdGggJiYgc3RhdGUubGFzdEhlaWdodCA9PT0gc3RhdGUuc3RhcnRTaXplLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVidWcoXCJOb3Qgbm90aWZ5aW5nOiBTaXplIGlzIHRoZSBzYW1lIGFzIHRoZSBzdGFydCBzaXplLCBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gbm90aWZpY2F0aW9uIHlldC5cIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gRG9uJ3Qgbm90aWZ5IGlmIHRoZSBzaXplIGFscmVhZHkgaGFzIGJlZW4gbm90aWZpZWQuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLmxhc3RXaWR0aCA9PT0gc3RhdGUubGFzdE5vdGlmaWVkV2lkdGggJiYgc3RhdGUubGFzdEhlaWdodCA9PT0gc3RhdGUubGFzdE5vdGlmaWVkSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWJ1ZyhcIk5vdCBub3RpZnlpbmc6IFNpemUgYWxyZWFkeSBub3RpZmllZFwiKTtcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIGRlYnVnKFwiQ3VycmVudCBzaXplIG5vdCBub3RpZmllZCwgbm90aWZ5aW5nLi4uXCIpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmxhc3ROb3RpZmllZFdpZHRoID0gc3RhdGUubGFzdFdpZHRoO1xuICAgICAgICAgICAgICAgIHN0YXRlLmxhc3ROb3RpZmllZEhlaWdodCA9IHN0YXRlLmxhc3RIZWlnaHQ7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChnZXRTdGF0ZShlbGVtZW50KS5saXN0ZW5lcnMsIGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVuZGVyKCkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwic3RhcnRhbmltYXRpb24gdHJpZ2dlcmVkLlwiKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1VucmVuZGVyZWQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJJZ25vcmluZyBzaW5jZSBlbGVtZW50IGlzIHN0aWxsIHVucmVuZGVyZWQuLi5cIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkZWJ1ZyhcIkVsZW1lbnQgcmVuZGVyZWQuXCIpO1xuICAgICAgICAgICAgICAgIHZhciBleHBhbmQgPSBnZXRFeHBhbmRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciBzaHJpbmsgPSBnZXRTaHJpbmtFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChleHBhbmQuc2Nyb2xsTGVmdCA9PT0gMCB8fCBleHBhbmQuc2Nyb2xsVG9wID09PSAwIHx8IHNocmluay5zY3JvbGxMZWZ0ID09PSAwIHx8IHNocmluay5zY3JvbGxUb3AgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcoXCJTY3JvbGxiYXJzIG91dCBvZiBzeW5jLiBVcGRhdGluZyBkZXRlY3RvciBlbGVtZW50cy4uLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGV0ZWN0b3JFbGVtZW50cyhub3RpZnlMaXN0ZW5lcnNJZk5lZWRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICAgICAgICAgICAgZGVidWcoXCJTY3JvbGwgZGV0ZWN0ZWQuXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVW5yZW5kZXJlZChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBFbGVtZW50IGlzIHN0aWxsIHVucmVuZGVyZWQuIFNraXAgdGhpcyBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKFwiU2Nyb2xsIGV2ZW50IGZpcmVkIHdoaWxlIHVucmVuZGVyZWQuIElnbm9yaW5nLi4uXCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlRGV0ZWN0b3JFbGVtZW50cyhub3RpZnlMaXN0ZW5lcnNJZk5lZWRlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlYnVnKFwicmVnaXN0ZXJMaXN0ZW5lcnNBbmRQb3NpdGlvbkVsZW1lbnRzIGludm9rZWQuXCIpO1xuXG4gICAgICAgICAgICBpZiAoIWdldFN0YXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZGVidWcoXCJBYm9ydGluZyBiZWNhdXNlIGVsZW1lbnQgaGFzIGJlZW4gdW5pbnN0YWxsZWRcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblJlbmRlcmVkID0gaGFuZGxlUmVuZGVyO1xuICAgICAgICAgICAgZ2V0U3RhdGUoZWxlbWVudCkub25FeHBhbmQgPSBoYW5kbGVTY3JvbGw7XG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblNocmluayA9IGhhbmRsZVNjcm9sbDtcblxuICAgICAgICAgICAgdmFyIHN0eWxlID0gZ2V0U3RhdGUoZWxlbWVudCkuc3R5bGU7XG4gICAgICAgICAgICB1cGRhdGVDaGlsZFNpemVzKGVsZW1lbnQsIHN0eWxlLndpZHRoLCBzdHlsZS5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemVEb21NdXRhdGlvbigpIHtcbiAgICAgICAgICAgIGRlYnVnKFwiZmluYWxpemVEb21NdXRhdGlvbiBpbnZva2VkLlwiKTtcblxuICAgICAgICAgICAgaWYgKCFnZXRTdGF0ZShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiQWJvcnRpbmcgYmVjYXVzZSBlbGVtZW50IGhhcyBiZWVuIHVuaW5zdGFsbGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlID0gZ2V0U3RhdGUoZWxlbWVudCkuc3R5bGU7XG4gICAgICAgICAgICBzdG9yZUN1cnJlbnRTaXplKGVsZW1lbnQsIHN0eWxlLndpZHRoLCBzdHlsZS5oZWlnaHQpO1xuICAgICAgICAgICAgcG9zaXRpb25TY3JvbGxiYXJzKGVsZW1lbnQsIHN0eWxlLndpZHRoLCBzdHlsZS5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVhZHkoKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluc3RhbGwoKSB7XG4gICAgICAgICAgICBkZWJ1ZyhcIkluc3RhbGxpbmcuLi5cIik7XG4gICAgICAgICAgICBpbml0TGlzdGVuZXJzKCk7XG4gICAgICAgICAgICBzdG9yZVN0YXJ0U2l6ZSgpO1xuXG4gICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQoMCwgc3RvcmVTdHlsZSk7XG4gICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQoMSwgaW5qZWN0U2Nyb2xsRWxlbWVudHMpO1xuICAgICAgICAgICAgYmF0Y2hQcm9jZXNzb3IuYWRkKDIsIHJlZ2lzdGVyTGlzdGVuZXJzQW5kUG9zaXRpb25FbGVtZW50cyk7XG4gICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQoMywgZmluYWxpemVEb21NdXRhdGlvbik7XG4gICAgICAgICAgICBiYXRjaFByb2Nlc3Nvci5hZGQoNCwgcmVhZHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVidWcoXCJNYWtpbmcgZGV0ZWN0YWJsZS4uLlwiKTtcblxuICAgICAgICBpZiAoaXNEZXRhY2hlZChlbGVtZW50KSkge1xuICAgICAgICAgICAgZGVidWcoXCJFbGVtZW50IGlzIGRldGFjaGVkXCIpO1xuXG4gICAgICAgICAgICBpbmplY3RDb250YWluZXJFbGVtZW50KCk7XG5cbiAgICAgICAgICAgIGRlYnVnKFwiV2FpdGluZyB1bnRpbCBlbGVtZW50IGlzIGF0dGFjaGVkLi4uXCIpO1xuXG4gICAgICAgICAgICBnZXRTdGF0ZShlbGVtZW50KS5vblJlbmRlcmVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRlYnVnKFwiRWxlbWVudCBpcyBub3cgYXR0YWNoZWRcIik7XG4gICAgICAgICAgICAgICAgaW5zdGFsbCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluc3RhbGwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVuaW5zdGFsbChlbGVtZW50KSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGdldFN0YXRlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIC8vIFVuaW5zdGFsbCBoYXMgYmVlbiBjYWxsZWQgb24gYSBub24tZXJkIGVsZW1lbnQuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmluc3RhbGwgbWF5IGhhdmUgYmVlbiBjYWxsZWQgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpb3M6XG4gICAgICAgIC8vICgxKSBSaWdodCBiZXR3ZWVuIHRoZSBzeW5jIGNvZGUgYW5kIGFzeW5jIGJhdGNoIChoZXJlIHN0YXRlLmJ1c3kgPSB0cnVlLCBidXQgbm90aGluZyBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBvciBpbmplY3RlZCkuXG4gICAgICAgIC8vICgyKSBJbiB0aGUgcmVhZHkgY2FsbGJhY2sgb2YgdGhlIGxhc3QgbGV2ZWwgb2YgdGhlIGJhdGNoIGJ5IGFub3RoZXIgZWxlbWVudCAoaGVyZSwgc3RhdGUuYnVzeSA9IHRydWUsIGJ1dCBhbGwgdGhlIHN0dWZmIGhhcyBiZWVuIGluamVjdGVkKS5cbiAgICAgICAgLy8gKDMpIEFmdGVyIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyAoaGVyZSwgc3RhdGUuYnVzeSA9IGZhbHNlIGFuZCBhbGwgdGhlIHN0dWZmIGhhcyBiZWVuIGluamVjdGVkKS5cbiAgICAgICAgLy8gU28gdG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgbGV0J3MgY2hlY2sgZm9yIGVhY2ggdGhpbmcgYmVmb3JlIHJlbW92aW5nLlxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lcnMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBldmVudCBtaWdodCBmaXJlIG9uIGFuIHVuaW5zdGFsbCBlbGVtZW50IHdoaWNoIHJlc3VsdHMgaW4gYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgICAgc3RhdGUub25FeHBhbmRTY3JvbGwgJiYgcmVtb3ZlRXZlbnQoZ2V0RXhwYW5kRWxlbWVudChlbGVtZW50KSwgXCJzY3JvbGxcIiwgc3RhdGUub25FeHBhbmRTY3JvbGwpO1xuICAgICAgICBzdGF0ZS5vblNocmlua1Njcm9sbCAmJiByZW1vdmVFdmVudChnZXRTaHJpbmtFbGVtZW50KGVsZW1lbnQpLCBcInNjcm9sbFwiLCBzdGF0ZS5vblNocmlua1Njcm9sbCk7XG4gICAgICAgIHN0YXRlLm9uQW5pbWF0aW9uU3RhcnQgJiYgcmVtb3ZlRXZlbnQoc3RhdGUuY29udGFpbmVyLCBcImFuaW1hdGlvbnN0YXJ0XCIsIHN0YXRlLm9uQW5pbWF0aW9uU3RhcnQpO1xuXG4gICAgICAgIHN0YXRlLmNvbnRhaW5lciAmJiBlbGVtZW50LnJlbW92ZUNoaWxkKHN0YXRlLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWFrZURldGVjdGFibGU6IG1ha2VEZXRlY3RhYmxlLFxuICAgICAgICBhZGRMaXN0ZW5lcjogYWRkTGlzdGVuZXIsXG4gICAgICAgIHVuaW5zdGFsbDogdW5pbnN0YWxsLFxuICAgICAgICBpbml0RG9jdW1lbnQ6IGluaXREb2N1bWVudFxuICAgIH07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIGZhY3RvcnkgPSByZXF1aXJlKCcuL2ZhY3RvcnknKTtcblxuaWYgKHR5cGVvZiBSZWFjdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgdGhyb3cgRXJyb3IoXG4gICAgJ2NyZWF0ZS1yZWFjdC1jbGFzcyBjb3VsZCBub3QgZmluZCB0aGUgUmVhY3Qgb2JqZWN0LiBJZiB5b3UgYXJlIHVzaW5nIHNjcmlwdCB0YWdzLCAnICtcbiAgICAgICdtYWtlIHN1cmUgdGhhdCBSZWFjdCBpcyBiZWluZyBsb2FkZWQgYmVmb3JlIGNyZWF0ZS1yZWFjdC1jbGFzcy4nXG4gICk7XG59XG5cbi8vIEhhY2sgdG8gZ3JhYiBOb29wVXBkYXRlUXVldWUgZnJvbSBpc29tb3JwaGljIFJlYWN0XG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSBuZXcgUmVhY3QuQ29tcG9uZW50KCkudXBkYXRlcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KFxuICBSZWFjdC5Db21wb25lbnQsXG4gIFJlYWN0LmlzVmFsaWRFbGVtZW50LFxuICBSZWFjdE5vb3BVcGRhdGVRdWV1ZVxuKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbn1cblxudmFyIE1JWElOU19LRVkgPSAnbWl4aW5zJztcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdFxuLy8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLlxuZnVuY3Rpb24gaWRlbnRpdHkoZm4pIHtcbiAgcmV0dXJuIGZuO1xufVxuXG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcbiAgICBwcm9wOiAncHJvcCcsXG4gICAgY29udGV4dDogJ2NvbnRleHQnLFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnXG4gIH07XG59IGVsc2Uge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBmYWN0b3J5KFJlYWN0Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUpIHtcbiAgLyoqXG4gICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXG4gICAqL1xuXG4gIHZhciBpbmplY3RlZE1peGlucyA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICAgKiBvciBob3N0IGNvbXBvbmVudHMuXG4gICAqXG4gICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2ZcbiAgICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuICAgKiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC5cbiAgICpcbiAgICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjtcbiAgICogICAgIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogVGhlIGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRoYXQgaGF2ZVxuICAgKiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJlYWN0Q2xhc3NJbnRlcmZhY2VgIGZvclxuICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcbiAgICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgKlxuICAgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2VcbiAgICogQGludGVybmFsXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBtaXhpbnM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgb25cbiAgICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJvdG90eXBlIChzdGF0aWMgbWV0aG9kcykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHN0YXRpY3M6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjaGlsZENvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxuICAgICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1c2luZyBhbiBgaW5gIGNoZWNrKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcbiAgICAgKiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXG4gICAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMuc3RhdGVgLlxuICAgICAqXG4gICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICByZXR1cm4ge1xuICAgICAqICAgICAgIGlzT246IGZhbHNlLFxuICAgICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRJbml0aWFsU3RhdGU6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldENoaWxkQ29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBVc2VzIHByb3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5kZXIgdGhlXG4gICAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHNvXG4gICAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuXG4gICAgICpcbiAgICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHZhciBuYW1lID0gdGhpcy5wcm9wcy5uYW1lO1xuICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2PjtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuICAgICAqIEByZXF1aXJlZFxuICAgICAqL1xuICAgIHJlbmRlcjogJ0RFRklORV9PTkNFJyxcblxuICAgIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3JlYXRlZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC5cbiAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuICAgICAqIGJ5IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNpdGlvbiBieSB1cGRhdGluZyB0aGVcbiAgICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRTdGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuXG4gICAgICpcbiAgICAgKiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dENvbnRleHQpIHtcbiAgICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4gQW4gaW5jb21pbmcgcHJvcFxuICAgICAqIHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3VcbiAgICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVkIGFzIGEgcmVzdWx0IG9mXG4gICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBgcmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlXG4gICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudFxuICAgICAqIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtcbiAgICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxuICAgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWBcbiAgICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuICAgICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24gZGVzdHJveWVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgICAqXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuXG4gICAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VtZW50IGZvciAoZGVwcmVjYXRlZCkgYGNvbXBvbmVudFdpbGxNb3VudGAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZW1lbnQgZm9yIChkZXByZWNhdGVkKSBgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc2AuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VtZW50IGZvciAoZGVwcmVjYXRlZCkgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvLyA9PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG4gICAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGludGVybmFsXG4gICAgICogQG92ZXJyaWRhYmxlXG4gICAgICovXG4gICAgdXBkYXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRSdcbiAgfTtcblxuICAvKipcbiAgICogU2ltaWxhciB0byBSZWFjdENsYXNzSW50ZXJmYWNlIGJ1dCBmb3Igc3RhdGljIG1ldGhvZHMuXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZSA9IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGFmdGVyIGEgY29tcG9uZW50IGlzIGluc3RhbnRpYXRlZCBhbmQgd2hlbiBpdFxuICAgICAqIHJlY2VpdmVzIG5ldyBwcm9wcy4gUmV0dXJuIGFuIG9iamVjdCB0byB1cGRhdGUgc3RhdGUgaW4gcmVzcG9uc2UgdG9cbiAgICAgKiBwcm9wIGNoYW5nZXMuIFJldHVybiBudWxsIHRvIGluZGljYXRlIG5vIGNoYW5nZSB0byBzdGF0ZS5cbiAgICAgKlxuICAgICAqIElmIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgaXRzIGtleXMgd2lsbCBiZSBtZXJnZWQgaW50byB0aGUgZXhpc3Rpbmcgc3RhdGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3QgfHwgbnVsbH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnXG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuICAgKiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXG4gICAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlXG4gICAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG4gICAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC5cbiAgICovXG4gIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG4gICAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkge1xuICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICB9LFxuICAgIG1peGluczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIG1peGlucykge1xuICAgICAgaWYgKG1peGlucykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGlsZENvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyxcbiAgICAgICAgY2hpbGRDb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICBjb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzLCAnY29udGV4dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyxcbiAgICAgICAgY29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG4gICAgICogYXV0b21hdGljIG1lcmdpbmcuXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKFxuICAgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyxcbiAgICAgICAgICBnZXREZWZhdWx0UHJvcHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9wcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb3BUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMsICdwcm9wJyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBlcyk7XG4gICAgfSxcbiAgICBzdGF0aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgICAgbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICAgIH0sXG4gICAgYXV0b2JpbmQ6IGZ1bmN0aW9uKCkge31cbiAgfTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gdHlwZURlZikge1xuICAgICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNvIGNvbXBvbmVudHNcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9fREVWX19cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgdHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArXG4gICAgICAgICAgICAgICdSZWFjdC5Qcm9wVHlwZXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSxcbiAgICAgICAgICAgIHByb3BOYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkge1xuICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdXG4gICAgICA6IG51bGw7XG5cbiAgICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICAgIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdPVkVSUklERV9CQVNFJyxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICtcbiAgICAgICAgICAnYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3BlY2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgJyArXG4gICAgICAgICAgJ2RvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICtcbiAgICAgICAgICAndG8gYSBtaXhpbi4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcbiAgICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3Nlcy5cbiAgICovXG4gIGZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBzcGVjO1xuICAgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlwZW9mU3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICBpc01peGluVmFsaWQsXG4gICAgICAgICAgICBcIiVzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBpbmNsdWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCBcIiArXG4gICAgICAgICAgICAgICdvciBub3QgYW4gb2JqZWN0LiBDaGVjayB0aGUgbWl4aW5zIGluY2x1ZGVkIGJ5IHRoZSBjb21wb25lbnQsICcgK1xuICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkgaW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcbiAgICAgICAgICAgICAgJ0V4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXG4gICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhICcgK1xuICAgICAgICAncmVndWxhciBvYmplY3QuJ1xuICAgICk7XG4gICAgX2ludmFyaWFudChcbiAgICAgICFpc1ZhbGlkRWxlbWVudChzcGVjKSxcbiAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJ1xuICAgICk7XG5cbiAgICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgdmFyIGF1dG9CaW5kUGFpcnMgPSBwcm90by5fX3JlYWN0QXV0b0JpbmRQYWlycztcblxuICAgIC8vIEJ5IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0aGUgc2FtZVxuICAgIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwgd2hldGhlclxuICAgIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuICAgIGlmIChzcGVjLmhhc093blByb3BlcnR5KE1JWElOU19LRVkpKSB7XG4gICAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7XG4gICAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7XG4gICAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTtcblxuICAgICAgaWYgKFJFU0VSVkVEX1NQRUNfS0VZUy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNldHVwIG1ldGhvZHMgb24gcHJvdG90eXBlOlxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcbiAgICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgXCJpbnRlcmZhY2VcIikuXG4gICAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS5cbiAgICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICAgIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nO1xuICAgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPVxuICAgICAgICAgIGlzRnVuY3Rpb24gJiZcbiAgICAgICAgICAhaXNSZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgIWlzQWxyZWFkeURlZmluZWQgJiZcbiAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblxuICAgICAgICBpZiAoc2hvdWxkQXV0b0JpbmQpIHtcbiAgICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpO1xuICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTtcblxuICAgICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG4gICAgICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgICAgICBpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHxcbiAgICAgICAgICAgICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpLFxuICAgICAgICAgICAgICAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVzICcgK1xuICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJyxcbiAgICAgICAgICAgICAgc3BlY1BvbGljeSxcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nXG4gICAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgICBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgIGlmICghc3RhdGljcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gc3RhdGljcykge1xuICAgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcbiAgICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUztcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFpc1Jlc2VydmVkLFxuICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJlc2VydmVkICcgK1xuICAgICAgICAgICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIga2V5LiBEZWZpbmUgaXQgJyArXG4gICAgICAgICAgJ2FzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgJyArXG4gICAgICAgICAgJ2NvbnN0cnVjdG9yLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG5cbiAgICAgIHZhciBpc0FscmVhZHlEZWZpbmVkID0gbmFtZSBpbiBDb25zdHJ1Y3RvcjtcbiAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgICAgID8gUmVhY3RDbGFzc1N0YXRpY0ludGVyZmFjZVtuYW1lXVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuICAgICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlICcgK1xuICAgICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG4gICAgICAgICAgbmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIENvbnN0cnVjdG9yW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oQ29uc3RydWN0b3JbbmFtZV0sIHByb3BlcnR5KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVydHk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHR3byBvYmplY3RzLCBidXQgdGhyb3cgaWYgYm90aCBjb250YWluIHRoZSBzYW1lIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gdHdvIFRoZSBzZWNvbmQgb2JqZWN0XG4gICAqIEByZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGluIHR3by5cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMob25lLCB0d28pIHtcbiAgICBfaW52YXJpYW50KFxuICAgICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JyxcbiAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4nXG4gICAgKTtcblxuICAgIGZvciAodmFyIGtleSBpbiB0d28pIHtcbiAgICAgIGlmICh0d28uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgIG9uZVtrZXldID09PSB1bmRlZmluZWQsXG4gICAgICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogJyArXG4gICAgICAgICAgICAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyArXG4gICAgICAgICAgICAnbWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBjYXVzZWQgYnkgdHdvICcgK1xuICAgICAgICAgICAgJ2dldEluaXRpYWxTdGF0ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhvZHMgcmV0dXJuaW5nIG9iamVjdHMgJyArXG4gICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXG4gICAgICAgICAga2V5XG4gICAgICAgICk7XG4gICAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbmU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0dXJuIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihvbmUsIHR3bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XG4gICAgICB2YXIgYSA9IG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdmFyIGIgPSB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIGlmIChhID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICAgIHZhciBjID0ge307XG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBiKTtcbiAgICAgIHJldHVybiBjO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xuICAgICAgb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1ldGhvZCB0byBiZSBib3VuZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpIHtcbiAgICB2YXIgYm91bmRNZXRob2QgPSBtZXRob2QuYmluZChjb21wb25lbnQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lO1xuICAgICAgdmFyIF9iaW5kID0gYm91bmRNZXRob2QuYmluZDtcbiAgICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbihuZXdUaGlzKSB7XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSxcbiAgICAgICAgICAgIF9rZXkgPSAxO1xuICAgICAgICAgIF9rZXkgPCBfbGVuO1xuICAgICAgICAgIF9rZXkrK1xuICAgICAgICApIHtcbiAgICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsXG4gICAgICAgIC8vIGlnbm9yZSB0aGUgdmFsdWUgb2YgXCJ0aGlzXCIgdGhhdCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzb1xuICAgICAgICAvLyBsZXQncyB3YXJuLlxuICAgICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICdiaW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICtcbiAgICAgICAgICAgICAgICAnY29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMnLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICdiaW5kKCk6IFlvdSBhcmUgYmluZGluZyBhIGNvbXBvbmVudCBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4gJyArXG4gICAgICAgICAgICAgICAgJ1JlYWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNlICcgK1xuICAgICAgICAgICAgICAgICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpO1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7XG4gICAgICAgIHJldHVybiByZWJvdW5kTWV0aG9kO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGFsbCBhdXRvLWJvdW5kIG1ldGhvZHMgaW4gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XG4gICAgdmFyIHBhaXJzID0gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZFBhaXJzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFpcnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIHZhciBhdXRvQmluZEtleSA9IHBhaXJzW2ldO1xuICAgICAgdmFyIG1ldGhvZCA9IHBhaXJzW2kgKyAxXTtcbiAgICAgIGNvbXBvbmVudFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBJc01vdW50ZWRQcmVNaXhpbiA9IHtcbiAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl9faXNNb3VudGVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIElzTW91bnRlZFBvc3RNaXhpbiA9IHtcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl9faXNNb3VudGVkID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBiYXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmRcbiAgICogdGhlcmVmb3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cbiAgICovXG4gIHZhciBSZWFjdENsYXNzTWl4aW4gPSB7XG4gICAgLyoqXG4gICAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XG4gICAgICogdHlwZSBzaWduYXR1cmUgYW5kIHRoZSBvbmx5IHVzZSBjYXNlIGZvciB0aGlzLCBpcyB0byBhdm9pZCB0aGF0LlxuICAgICAqL1xuICAgIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24obmV3U3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSwgY2FsbGJhY2spO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEBmaW5hbFxuICAgICAqL1xuICAgIGlzTW91bnRlZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkLFxuICAgICAgICAgICclczogaXNNb3VudGVkIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCAnICtcbiAgICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcgK1xuICAgICAgICAgICAgJ3ByZXZlbnQgbWVtb3J5IGxlYWtzLicsXG4gICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgJiYgdGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSkgfHxcbiAgICAgICAgICAgIHRoaXMubmFtZSB8fFxuICAgICAgICAgICAgJ0NvbXBvbmVudCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEhdGhpcy5fX2lzTW91bnRlZDtcbiAgICB9XG4gIH07XG5cbiAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xuICBfYXNzaWduKFxuICAgIFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENsYXNzTWl4aW5cbiAgKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLlxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3NcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lmaWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICAgKiBAcHVibGljXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhzcGVjKSB7XG4gICAgLy8gVG8ga2VlcCBvdXIgd2FybmluZ3MgbW9yZSB1bmRlcnN0YW5kYWJsZSwgd2UnbGwgdXNlIGEgbGl0dGxlIGhhY2sgaGVyZSB0b1xuICAgIC8vIGVuc3VyZSB0aGF0IENvbnN0cnVjdG9yLm5hbWUgIT09ICdDb25zdHJ1Y3RvcicuIFRoaXMgbWFrZXMgc3VyZSB3ZSBkb24ndFxuICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXG4gICAgdmFyIENvbnN0cnVjdG9yID0gaWRlbnRpdHkoZnVuY3Rpb24ocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZFxuICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcixcbiAgICAgICAgICAnU29tZXRoaW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArXG4gICAgICAgICAgICAnSlNYIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5J1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xuICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoKSB7XG4gICAgICAgIGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuXG4gICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2UgdGhlXG4gICAgICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxNb3VudCBtZXRob2RzIGZvciBpbml0aWFsaXphdGlvbi5cblxuICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhpcy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4gICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICB0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpLFxuICAgICAgICAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJyxcbiAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50J1xuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICB9KTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycyA9IFtdO1xuXG4gICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7XG5cbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUHJlTWl4aW4pO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUG9zdE1peGluKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwgbWl4aW5zIGhhdmUgYmVlbiBtZXJnZWQuXG4gICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvayxcbiAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhXG4gICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuICAgICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LlxuICAgICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlcixcbiAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcbiAgICApO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcbiAgICAgICAgICAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArXG4gICAgICAgICAgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICtcbiAgICAgICAgICAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICApO1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcbiAgICAgICAgICAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuICcgK1xuICAgICAgICAgICdEaWQgeW91IG1lYW4gVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7XG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVDbGFzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50OyIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYXN0RnVuY3Rpb247XG4iLCJjb25zdCBpY29ucyA9IHt9O1xuaW1wb3J0ICcuL3N0eWxlLnNjc3MnO1xuaWNvbnMuY2F0ZWdvcnkgPSA8c3ZnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWJsb2Nrc3BhcmVcIiBmaWxsPVwidXJsKCNibG9ja3NwYXJlLWdyYWRpZW50KVwiIHdpZHRoPScyMHB4JyBoZWlnaHQ9JzIwcHgnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD1cIjAgMCA2MDguMjIgNzA0LjcyXCI+XG4gICAgPHBhdGggZmlsbD1cIiMzYjFhNWJcIiBjbGFzc05hbWU9XCJjbHMtMVwiXG4gICAgICAgICAgZD1cIk00NzAuMTMsMTE1Ljg0LDIxMiwzMDUuNDIsMjAwLjc2LDY0OS44OCw0MzQuMDUsNzY3LjQxbDI2MS40LTIxOC42N0w0ODIuOSw0NDEuOTJabS0xOTksMjE5LjU4TDQxMy42OSwyMjguMTdsMS4xNSwxNzkuNDJMMjYzLjY0LDUyNi43OVptMzE3LjQ2LDIyOEw0MjYuODgsNzA2Ljg3LDI1NC42NCw2MTIuMDgsNDI2LDQ4Mi44MlwiXG4gICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yMDAuNzYgLTExNS44NClcIi8+XG4gICAgPHBvbHlnb24gY2xhc3NOYW1lPVwiY2xzLTFcIiBmaWxsPVwiIzNiMWE1YlwiXG4gICAgICAgICAgICAgcG9pbnRzPVwiMzI5LjQ4IDMwLjI4IDM4NC44IDU4LjE2IDM5MC40NiAyNTcuOCA0NDQuNzMgMjgzLjY2IDQ0MC42OSA4Ni4zMSA1OTguMzggMTY1Ljc1IDYwOC4yMiA0OTAuNTQgMzM4Ljc5IDcwNC43MiAyOTAuMzYgNjgwLjMyIDU0OS41MiA0NjMuOTUgNTQ2LjQ5IDE4OS4wNyA0OTUuODMgMTY0Ljg2IDQ5Mi4xNyAzNzQuOTcgMzM3LjU2IDI5Ni4xNSAzMjkuNDggMzAuMjhcIi8+XG4gICAgPHBvbHlnb24gY2xhc3NOYW1lPVwiY2xzLTJcIiBmaWxsPVwiIzhiMjQ5Y1wiXG4gICAgICAgICAgICAgcG9pbnRzPVwiMCA1MzQuMDQgNTMuODggNDk2LjIzIDIyNi4xMiA1OTEuMDIgMzg3Ljg1IDQ0Ny41NCAyMjUuMjkgMzY2Ljk3IDI4Mi4xNCAzMjYuMDggNDk0LjY5IDQzMi45IDIzMy4yOSA2NTEuNTcgMCA1MzQuMDRcIi8+XG4gICAgPHBvbHlnb24gY2xhc3NOYW1lPVwiY2xzLTJcIiBmaWxsPVwiIzhiMjQ5Y1wiXG4gICAgICAgICAgICAgcG9pbnRzPVwiMjkwLjM2IDY4MC4zMiAzMzguNzkgNzA0LjcyIDYwOC4yMiA0OTAuNTQgNTQ5LjUyIDQ2My45NSAyOTAuMzYgNjgwLjMyXCIvPlxuICAgIDwvc3ZnPjtcblxuaWNvbnMuYWNjb3JkaW9uID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWFjY29yZGlvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMV9cIiB4PVwiMS4yXCIgeT1cIjYuOFwiIHdpZHRoPVwiMTcuNlwiIGhlaWdodD1cIjEyLjZcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF80X1wiIHg9XCIxLjJcIiB5PVwiMy42XCIgd2lkdGg9XCIxNy42XCIgaGVpZ2h0PVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzNfXCIgeD1cIjEuMlwiIHk9XCIwLjZcIiB3aWR0aD1cIjE3LjZcIiBoZWlnaHQ9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuY29udGFpbmVyID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWNvbnRhaW5lclwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9XCJYTUxJRF8zX1wiIGN4PVwiMTBcIiBjeT1cIjkuOVwiIHI9XCI1LjVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF80X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzVfXCIgeD1cIjguOVwiIHk9XCI2LjFcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiMi4yXCIgaGVpZ2h0PVwiNy45XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzZfXCIgeD1cIjZcIiB5PVwiOVwiIGNsYXNzPVwic3QwXCIgd2lkdGg9XCI3LjlcIiBoZWlnaHQ9XCIyLjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfOF9cIiBkPVwiTTIwLDIwSDBWMEgyMFYyMHogTTEsMTlIMTlWMUgxVjE5elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47IFxuXG5pY29ucy5jb250ZW50Ym94ID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWNvbnRlbnRib3hcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwiWE1MSURfMV9cIiBjeD1cIjUuN1wiIGN5PVwiMTBcIiByPVwiMy44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfM19cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF81X1wiIHg9XCIxMC43XCIgeT1cIjEwLjZcIiB3aWR0aD1cIjcuM1wiIGhlaWdodD1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfOF9cIiB4PVwiMTAuN1wiIHk9XCI3LjRcIiB3aWR0aD1cIjcuM1wiIGhlaWdodD1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF83X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNF9cIiBkPVwiTTE5LjgsMTYuOEgwLjJWMy4yaDE5LjdWMTYuOHogTTAuOSwxNmgxOC4yVjRIMC45VjE2elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47ICAgICBcblxuaWNvbnMudXNlcnByb2ZpbGUgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctdXNlcnByb2ZpbGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzNfXCIgZD1cIk0xMy4xLDIuNWMxLjcsMS43LDEuNyw0LjUsMCw2LjNzLTQuNSwxLjctNi4zLDBzLTEuNy00LjUsMC02LjNDOC42LDAuNywxMS40LDAuNywxMy4xLDIuNVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzJfXCIgZD1cIk0xNi44LDEzLjJjLTQtMi43LTkuNS0yLjctMTMuNiwwYy0wLjYsMC40LTEsMS4xLTEsMS44djMuOGgxNS41VjE1QzE3LjcsMTQuMywxNy40LDEzLjYsMTYuOCwxMy4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwxNi44LDEzLjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuc3RhcnJhdGluZyA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1zdGFycmF0aW5nXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF82X1wiIHBvaW50cz1cIjE3LjQsOC4yIDEyLjMsNy41IDEwLDIuOCA3LjcsNy41IDIuNiw4LjIgNi4zLDExLjggNS40LDE2LjkgMTAsMTQuNSAxNC42LDE2LjkgMTMuNywxMS44ICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfOF9cIiBjbGFzcz1cInN0MFwiIHBvaW50cz1cIjEzLjcsMTUuOCAxMCwxMy44IDEwLDQuMiAxMS45LDggMTYsOC42IDEzLDExLjYgICBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICBcblxuaWNvbnMuaW1hZ2VjYXJvdXNlbCA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1pbWFnZWNhcm91c2VsXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF85X1wiIGQ9XCJNMTYuNCwxNi40SDMuNlYzLjZoMTIuN1YxNi40eiBNNC42LDE1LjRoMTAuN1Y0LjZINC42VjE1LjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8zX1wiIHg9XCIxNy41XCIgeT1cIjQuMVwiIHdpZHRoPVwiMi41XCIgaGVpZ2h0PVwiMTEuN1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB4PVwiMFwiIHk9XCI0LjFcIiB3aWR0aD1cIjIuNVwiIGhlaWdodD1cIjExLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzdfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF8yX1wiIHBvaW50cz1cIjUuMSwxNCA4LjYsNy45IDEyLjEsMTQgICBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF82X1wiIHBvaW50cz1cIjEwLjQsMTQgMTIuNiwxMC4xIDE0LjksMTQgICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9XCJYTUxJRF81X1wiIGN4PVwiMTIuNFwiIGN5PVwiNy4xXCIgcj1cIjEuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLmltYWdlc2xpZGVyID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWltYWdlc2xpZGVyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzlfXCIgZD1cIk0xNi40LDE2LjRIMy42VjMuNmgxMi43VjE2LjR6IE00LjYsMTUuNGgxMC43VjQuNkg0LjZWMTUuNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF81X1wiIHBvaW50cz1cIjUuMSwxNCA4LjYsNy45IDEyLjEsMTQgICBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF82X1wiIHBvaW50cz1cIjEwLjQsMTQgMTIuNiwxMC4xIDE0LjksMTQgICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9XCJYTUxJRF83X1wiIGN4PVwiMTIuNFwiIGN5PVwiNy4xXCIgcj1cIjEuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjBfXCIgZD1cIk0xLjEsMTBsMS41LTAuOUMyLjcsOSwyLjcsOC45LDIuNyw4LjdjMC0wLjEtMC4xLTAuMy0wLjItMC40QzIuNCw4LjIsMi4yLDguMiwyLDguM0wwLjEsOS41XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQzAsOS42LDAsOS43LDAsOS45djAuMmMwLDAuMiwwLDAuNCwwLjEsMC41TDIsMTEuN2MwLjEsMC4xLDAuMiwwLjEsMC4zLDAuMWMwLjEsMCwwLjIsMCwwLjMtMC4xYzAuMS0wLjEsMC4xLTAuMiwwLjEtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC4yLTAuMS0wLjMtMC4yLTAuNEwxLjEsMTB6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xN19cIiBkPVwiTTE5LjksOS41TDE4LDguM2MtMC4yLTAuMS0wLjQtMC4xLTAuNiwwLjFjLTAuMSwwLjEtMC4xLDAuMi0wLjEsMC40YzAsMC4yLDAuMSwwLjMsMC4yLDAuNGwxLjUsMC45XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC0xLjUsMC45Yy0wLjEsMC4xLTAuMiwwLjItMC4yLDAuNGMwLDAuMSwwLjEsMC4zLDAuMiwwLjRjMC4xLDAuMSwwLjIsMC4xLDAuMywwLjFjMC4xLDAsMC4yLDAsMC4zLTAuMWwxLjgtMS4xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuMi0wLjEsMC4yLTAuMywwLjItMC41VjkuOUMyMCw5LjcsMjAsOS42LDE5LjksOS41elwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47IFxuXG5pY29ucy5wb3N0bGlzdCA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1wb3N0bGlzdFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNV9cIiBkPVwiTTYuOCw4LjNIMC45VjJoNS45VjguM3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8zX1wiIHg9XCI4LjdcIiB5PVwiMy4xXCIgd2lkdGg9XCI4LjVcIiBoZWlnaHQ9XCIxLjRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF80X1wiIHg9XCI4LjdcIiB5PVwiNS44XCIgd2lkdGg9XCIxMC4yXCIgaGVpZ2h0PVwiMS40XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzE1X1wiIGQ9XCJNNi45LDE4LjJIMC44di02LjZoNi4xVjE4LjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzEzX1wiIHg9XCI4LjdcIiB5PVwiMTIuOFwiIHdpZHRoPVwiOC41XCIgaGVpZ2h0PVwiMS40XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMTJfXCIgeD1cIjguN1wiIHk9XCIxNS41XCIgd2lkdGg9XCIxMC4yXCIgaGVpZ2h0PVwiMS40XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjsgICBcblxuaWNvbnMucG9zdGdyaWQgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctcG9zdGdyaWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzE0X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzE1X1wiIGQ9XCJNOSwxMS4ySDFWMi45aDhWMTEuMnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGQ9XCJNMTksMTEuMmgtOFYyLjloOFYxMS4yelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xX1wiIHg9XCIxXCIgeT1cIjEyLjRcIiB3aWR0aD1cIjcuMlwiIGhlaWdodD1cIjEuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzZfXCIgeD1cIjFcIiB5PVwiMTUuM1wiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjEuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzhfXCIgeD1cIjExXCIgeT1cIjEyLjRcIiB3aWR0aD1cIjcuMlwiIGhlaWdodD1cIjEuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzdfXCIgeD1cIjExXCIgeT1cIjE1LjNcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5wb3N0Y2Fyb3VzZWwgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctcG9zdGNhcm91c2VsXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNV9cIiBkPVwiTTE2LDExLjRINFYxLjdIMTZWMTEuNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNV9cIiB4PVwiNFwiIHk9XCIxMi44XCIgd2lkdGg9XCIxMC44XCIgaGVpZ2h0PVwiMi4xXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNl9cIiB4PVwiNFwiIHk9XCIxNi4yXCIgd2lkdGg9XCIxMi4xXCIgaGVpZ2h0PVwiMi4xXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yMF9cIiBkPVwiTTEuMSwxMGwxLjUtMC45QzIuNyw5LDIuNyw4LjksMi43LDguN2MwLTAuMS0wLjEtMC4zLTAuMi0wLjRDMi40LDguMiwyLjIsOC4yLDIsOC4zTDAuMSw5LjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMCw5LjYsMCw5LjcsMCw5Ljl2MC4yYzAsMC4yLDAsMC40LDAuMSwwLjVMMiwxMS43YzAuMSwwLjEsMC4yLDAuMSwwLjMsMC4xYzAuMSwwLDAuMiwwLDAuMy0wLjFjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjItMC4xLTAuMy0wLjItMC40TDEuMSwxMHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzJfXCIgZD1cIk0xOS45LDkuNUwxOCw4LjNjLTAuMi0wLjEtMC40LTAuMS0wLjYsMC4xYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuNGMwLDAuMiwwLjEsMC4zLDAuMiwwLjRsMS41LDAuOWwtMS41LDAuOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4xLDAuMS0wLjIsMC4yLTAuMiwwLjRjMCwwLjEsMC4xLDAuMywwLjIsMC40YzAuMSwwLjEsMC4yLDAuMSwwLjMsMC4xYzAuMSwwLDAuMiwwLDAuMy0wLjFsMS44LTEuMWMwLjItMC4xLDAuMi0wLjMsMC4yLTAuNVY5LjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMjAsOS43LDIwLDkuNiwxOS45LDkuNXpcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICBcblxuaWNvbnMuaWNvbmJsb2Nrc3BhcmUgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctaWNvbmJsb2Nrc3BhcmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzIzX1wiIGQ9XCJNMTcuNCwyYzAuMiwwLDAuNSwwLDAuNywwYzAuNCwwLDAuNSwwLjEsMC41LDAuNWMwLDIuNy0wLjksNS0yLjgsNi45Yy0wLjgsMC44LTEuNywxLjUtMi41LDIuM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuMSwwLjEtMC4yLDAuMy0wLjIsMC40Yy0wLjEsMS4xLTAuMSwyLjItMC4yLDMuM2MwLDAuMy0wLjEsMC40LTAuMywwLjZjLTEuMiwwLjctMi41LDEuNC0zLjcsMmMtMC4zLDAuMi0wLjUsMC4xLTAuNy0wLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjYtMC40LTAuNy0wLjktMC40LTEuNWMwLjMtMC42LDAuNC0xLjIsMC42LTEuOGMwLjEtMC4yLDAtMC4zLTAuMS0wLjVjLTAuOC0wLjgtMS43LTEuNi0yLjUtMi40Yy0wLjItMC4yLTAuMy0wLjItMC41LTAuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuOCwwLjMtMS43LDAuNS0yLjUsMC43Yy0wLjMsMC4xLTAuNCwwLTAuNi0wLjJjLTAuOS0wLjktMC44LTAuNi0wLjItMS41YzAuNi0xLDEuMi0yLDEuOC0yLjlDMy44LDcuNCw0LDcuMyw0LjMsNy4zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxLjIsMCwyLjMtMC4xLDMuNS0wLjJDOCw3LjEsOC4yLDcsOC4zLDYuOWMxLTEsMi0yLDMuMS0yLjlDMTMsMi43LDE0LjksMi4xLDE3LDJDMTcuMSwyLDE3LjMsMiwxNy40LDJDMTcuNCwyLDE3LjQsMiwxNy40LDJ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNMTUuMiw2LjFjMC42LDAsMS0wLjQsMS0wLjljMC0wLjUtMC41LTEtMS0xYy0wLjUsMC0xLDAuNC0xLDFDMTQuMiw1LjYsMTQuNyw2LjEsMTUuMiw2LjF6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjsgXG5cbmljb25zLmljb25saXN0ID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLWljb25saXN0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzJfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNl9cIiBkPVwiTTIuNCwzLjNjMC43LTAuNywxLjMtMS4zLDItMmMwLjEtMC4xLDAuMS0wLjEsMC4yLTAuMkM0LjgsMSw1LjEsMSw1LjMsMS4xYzAuMiwwLjIsMC4yLDAuNCwwLDAuNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLTAuMSwwLjEtMC4xLDAuMUM0LjQsMi43LDMuNiwzLjUsMi44LDQuM0MyLjUsNC42LDIuMyw0LjYsMiw0LjNDMS42LDMuOSwxLjIsMy41LDAuOCwzLjFDMC41LDIuOCwwLjYsMi4zLDEsMi4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjItMC4xLDAuNCwwLDAuNSwwLjJDMS44LDIuNywyLjEsMywyLjQsMy4zelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzFfXCIgeD1cIjYuNFwiIHk9XCIyLjJcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMS43XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF80X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNl9cIiBkPVwiTTIuNCwxMC42YzAuNy0wLjcsMS4zLTEuMywyLTJjMC4xLTAuMSwwLjEtMC4xLDAuMi0wLjJjMC4yLTAuMiwwLjUtMC4yLDAuNywwYzAuMiwwLjIsMC4yLDAuNCwwLDAuNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLTAuMSwwLjEtMC4xLDAuMWMtMC44LDAuOC0xLjYsMS42LTIuNCwyLjRjLTAuMywwLjMtMC41LDAuMy0wLjgsMGMtMC40LTAuNC0wLjgtMC44LTEuMi0xLjJDMC41LDEwLDAuNiw5LjYsMSw5LjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuMi0wLjEsMC40LDAsMC41LDAuMkMxLjgsMTAsMi4xLDEwLjMsMi40LDEwLjZ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNV9cIiB4PVwiNi40XCIgeT1cIjkuNVwiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzdfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF85X1wiIGQ9XCJNMi40LDE3LjhjMC43LTAuNywxLjMtMS4zLDItMmMwLjEtMC4xLDAuMS0wLjEsMC4yLTAuMmMwLjItMC4yLDAuNS0wLjIsMC43LDBjMC4yLDAuMiwwLjIsMC40LDAsMC42XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAtMC4xLDAuMS0wLjEsMC4xYy0wLjgsMC44LTEuNiwxLjYtMi40LDIuNGMtMC4zLDAuMy0wLjUsMC4zLTAuOCwwYy0wLjQtMC40LTAuOC0wLjgtMS4yLTEuMmMtMC4zLTAuMy0wLjItMC43LDAuMi0wLjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuMi0wLjEsMC40LDAsMC41LDAuMkMxLjgsMTcuMiwyLjEsMTcuNSwyLjQsMTcuOHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF84X1wiIHg9XCI2LjRcIiB5PVwiMTYuN1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCIxLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgPC9zdmc+OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5pY29ucy5idXR0b24gPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctYnV0dG9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzJfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTE4LDkuNUgyYy0xLjEsMC0yLTAuOS0yLTJ2LTJjMC0xLjEsMC45LTIsMi0ySDE4YzEuMSwwLDIsMC45LDIsMnYyQzIwLDguNiwxOS4xLDkuNSwxOCw5LjV6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF81X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNl9cIiBjbGFzcz1cInN0MVwiIGQ9XCJNMTIuOCwyMEg5LjdjLTEsMC0xLjktMC42LTIuNC0xLjVMNC40LDEzbDAuNC0wLjNjMC4zLTAuMywwLjctMC40LDEuMS0wLjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuNCwwLDAuOCwwLjIsMS4xLDAuNmwwLjUsMC42bDAtNi4yYzAtMC42LDAuNS0xLjIsMS4xLTEuMmMwLjYsMCwxLjEsMC41LDEuMSwxLjJ2My4yYzAuMi0wLjIsMC41LTAuNCwwLjgtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjUsMCwwLjksMC4zLDEuMSwwLjhjMC4yLTAuMywwLjUtMC41LDAuOS0wLjVjMC41LDAsMSwwLjQsMS4xLDFjMC4yLTAuMywwLjUtMC40LDAuOS0wLjRoMGMwLjYsMCwxLjEsMC41LDEuMSwxLjJsMCw0LjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE1LjYsMTguNywxNC40LDIwLDEyLjgsMjB6IE01LjMsMTMuMmwyLjYsNWMwLjQsMC43LDEuMSwxLjEsMS44LDEuMWgzLjFjMS4xLDAsMi4xLTEsMi4xLTIuMmwwLTQuOGMwLTAuMi0wLjItMC40LTAuNC0wLjRoMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuMiwwLTAuNCwwLjItMC40LDAuNHYwLjZjMCwwLjMtMC4zLDAuNi0wLjYsMC42cy0wLjYtMC4zLTAuNi0wLjZ2LTEuMWMwLTAuMi0wLjItMC40LTAuNC0wLjRjLTAuMiwwLTAuNCwwLjItMC40LDAuNHYxLjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMC4zLTAuMywwLjYtMC42LDAuNmMtMC4zLDAtMC42LTAuMy0wLjYtMC42di0xLjVjMC0wLjItMC4yLTAuNC0wLjQtMC40Yy0wLjIsMC0wLjQsMC4yLTAuNCwwLjRWMTNjMCwwLjMtMC4zLDAuNi0wLjYsMC42XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEM5LjMsMTMuNiw5LDEzLjQsOSwxM1Y3LjNjMC0wLjItMC4yLTAuNC0wLjQtMC40UzguMyw3LjEsOC4zLDcuM2wwLDYuNmMwLDAuMy0wLjIsMC41LTAuNCwwLjZjLTAuMiwwLjEtMC41LDAtMC43LTAuMmwtMC44LTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzYuMywxMy4xLDYuMSwxMyw1LjksMTNDNS43LDEzLDUuNSwxMyw1LjMsMTMuMnpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzRfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xNC41LDExLjRMMTQuNSwxMS40Yy0wLjQsMC0wLjgsMC4zLTAuOCwwLjh2MC42YzAsMC4xLTAuMSwwLjItMC4yLDAuMmMtMC4xLDAtMC4yLTAuMS0wLjItMC4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtMS4xYzAtMC40LTAuMy0wLjgtMC43LTAuOGMtMC40LDAtMC43LDAuNC0wLjcsMC44djEuMmMwLDAuMS0wLjEsMC4yLTAuMiwwLjJjLTAuMSwwLTAuMi0wLjEtMC4yLTAuMnYtMS41YzAtMC40LTAuMy0wLjgtMC43LTAuOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMGMtMC40LDAtMC43LDAuMy0wLjcsMC44VjEzYzAsMC4xLTAuMSwwLjItMC4yLDAuMmMtMC4xLDAtMC4yLTAuMS0wLjItMC4ydi0xLjdjMCwwLDAsMCwwLDBjMCwwLDAsMCwwLDB2LTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC40LTAuMy0wLjgtMC43LTAuOGMtMC40LDAtMC43LDAuNC0wLjcsMC44bDAsNi42YzAsMC4xLTAuMSwwLjItMC4xLDAuMmMtMC4xLDAtMC4yLDAtMC4yLTAuMWwtMC44LTFjLTAuMi0wLjMtMC41LTAuNC0wLjgtMC40XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC4zLDAtMC42LDAuMS0wLjksMC4zYzAsMCwwLDAsMCwwbC0wLjIsMC4xbDIuNyw1LjJjMC40LDAuOCwxLjIsMS4zLDIuMSwxLjNoMy4xYzEuMywwLDIuNC0xLjIsMi40LTIuNmMwLTAuOCwwLTEuMywwLTEuOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0xLjIsMC0xLjcsMC0zQzE1LjIsMTEuNywxNC45LDExLjQsMTQuNSwxMS40elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47ICAgICAgICAgICAgICAgIFxuXG5pY29ucy5jdGEgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1jdGFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzE3X1wiPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xNV9cIiB4PVwiMTQuNlwiIHk9XCI0LjFcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMC43MDcxIC0wLjcwNzEgMC43MDcxIDAuNzA3MSAxLjc2OTYgMTMuNTU0NClcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiNS4zXCIgaGVpZ2h0PVwiMS4yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xNF9cIiB4PVwiMTYuNFwiIHk9XCI4LjFcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiMy41XCIgaGVpZ2h0PVwiMS4yXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xM19cIiB4PVwiMTQuNlwiIHk9XCIxMi42XCIgdHJhbnNmb3JtPVwibWF0cml4KDAuNzA3MSAwLjcwNzEgLTAuNzA3MSAwLjcwNzEgMTQuMzY4OSAtOC4zMzY0KVwiIGNsYXNzPVwic3QwXCIgd2lkdGg9XCI1LjNcIiBoZWlnaHQ9XCIxLjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzE2X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMV9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMi42LDExLjhIMC44Yy0wLjQsMC0wLjctMC4zLTAuNy0wLjdWN2MwLTAuNCwwLjMtMC43LDAuNy0wLjdoMS44QzMsNi4zLDMuMyw2LjYsMy4zLDd2NC4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMzLjMsMTEuNSwzLDExLjgsMi42LDExLjh6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfMjRfXCIgY2xhc3M9XCJzdDBcIiBwb2ludHM9XCI3LjMsMTIuOCA0LDEyLjIgNCw2IDcuMyw1LjQgICAgICAgICBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF8yOF9cIiBjbGFzcz1cInN0MFwiIHBvaW50cz1cIjMuOSwxMi44IDcuMiwxMy41IDcuMiwxNy42IDMuOSwxNy42ICAgICAgICAgXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIGlkPVwiWE1MSURfMjZfXCIgY2xhc3M9XCJzdDBcIiBwb2ludHM9XCIxMy4zLDE0LjIgOC4xLDEyLjggOC4xLDUuMiAxMy4zLDMuOCAgICAgICAgIFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPVwiWE1MSURfMjVfXCIgY2xhc3M9XCJzdDBcIiBjeD1cIjEzLjlcIiBjeT1cIjguN1wiIHI9XCIxLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLm1hc29ucnkgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1tYXNvbnJ5XCIgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIiMzQzFBNUJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xX1wiIHg9XCIxLjJcIiB5PVwiMTEuMlwiIGNsYXNzPVwic3QwXCIgd2lkdGg9XCI4LjJcIiBoZWlnaHQ9XCI3LjZcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB4PVwiMS4yXCIgeT1cIjEuMlwiIGNsYXNzPVwic3QwXCIgd2lkdGg9XCI4LjJcIiBoZWlnaHQ9XCI4LjdcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfM19cIiB4PVwiMTAuNlwiIHk9XCIxLjJcIiBjbGFzcz1cInN0MFwiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiNVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF81X1wiIHg9XCIxMC42XCIgeT1cIjcuN1wiIGNsYXNzPVwic3QwXCIgd2lkdGg9XCI4LjJcIiBoZWlnaHQ9XCIxMS4xXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMubG9nb2JhZGdlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctbG9nb2JhZGdlXCIgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIiMzQzFBNUJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xNl9cIiBkPVwiTTMuMSwyLjhjMC4zLTAuMSwwLjUtMC4yLDAuOC0wLjNjMC44LTAuMywxLjYtMC42LDIuNS0wLjhjMCwwLDAuMSwwLDAuMiwwQzcsMS45LDcuNSwyLjEsOCwyLjNcbiAgICAgICAgICAgICAgICAgICAgYzAuMSwwLDAuMSwwLDAuMiwwQzguOCwyLDkuNCwxLjcsOS45LDEuNWMwLjEsMCwwLjEsMCwwLjIsMGMwLjYsMC4zLDEuMSwwLjUsMS43LDAuOGMwLjEsMCwwLjEsMCwwLjIsMGMwLjUtMC4yLDEtMC40LDEuNi0wLjZcbiAgICAgICAgICAgICAgICAgICAgYzAsMCwwLjEsMCwwLjEsMGMxLjEsMC40LDIuMSwwLjcsMy4yLDEuMWMwLDAsMC4xLDAsMC4xLDBjLTAuMSwwLjQtMC4zLDAuNy0wLjQsMS4xYy0wLjIsMC44LTAuNCwxLjYtMC4zLDIuNGMwLDAuNSwwLjEsMSwwLjIsMS41XG4gICAgICAgICAgICAgICAgICAgIGMwLjIsMSwwLjQsMi4xLDAuNiwzLjFjMC4xLDAuNywwLjIsMS4zLDAuMiwyYzAsMC4zLDAsMC41LTAuMSwwLjhjMCwwLjQtMC4yLDAuNy0wLjUsMWMtMC40LDAuNS0xLDAuOS0xLjUsMS4zXG4gICAgICAgICAgICAgICAgICAgIGMtMC44LDAuNS0xLjcsMC45LTIuNiwxLjNjLTAuOSwwLjQtMS43LDAuOC0yLjUsMS40YzAsMC0wLjEsMC4xLTAuMSwwQzksMTcuOSw4LjEsMTcuNCw3LDE3Yy0wLjgtMC40LTEuNy0wLjgtMi40LTEuMlxuICAgICAgICAgICAgICAgICAgICBjLTAuNS0wLjMtMC45LTAuNy0xLjMtMS4xYy0wLjQtMC40LTAuNS0wLjktMC42LTEuNGMwLTAuNywwLTEuMywwLjEtMkMzLDEwLDMuMyw4LjgsMy42LDcuNkMzLjcsNywzLjgsNi40LDMuOCw1LjhcbiAgICAgICAgICAgICAgICAgICAgQzMuOCw0LjgsMy41LDMuOCwzLjEsMi44QzMuMSwyLjgsMy4xLDIuOCwzLjEsMi44elwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47ICAgICAgICAgICAgICAgIFxuXG5pY29ucy5ub3RpY2UgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwiIzhCMjQ5Q1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfNF9cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG5cdCAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zX1wiIGNsYXNzTmFtZT1cInN0MFwiIGQ9XCJNMTAsMjBDNC41LDIwLDAsMTUuNSwwLDEwQzAsNC41LDQuNSwwLDEwLDBjNS41LDAsMTAsNC41LDEwLDEwQzIwLDE1LjUsMTUuNSwyMCwxMCwyMHogTTEwLDFcblx0XHQgICAgICAgICAgICAgICAgICAgIEM1LDEsMSw1LDEsMTBzNC4xLDksOSw5czktNC4xLDktOVMxNSwxLDEwLDF6XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzEwX1wiIGNsYXNzTmFtZT1cInN0MFwiIGQ9XCJNMTEuNyw0LjRDMTEuNyw1LjMsMTEsNiwxMCw2QzksNiw4LjMsNS4zLDguMyw0LjRDOC4zLDMuNSw5LDIuNywxMCwyLjdcblx0ICAgICAgICAgICAgICAgICAgICAgICAgQzExLDIuNywxMS43LDMuNSwxMS43LDQuNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzlfXCIgeD1cIjguOFwiIHk9XCI3LjFcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjIuNVwiIGhlaWdodD1cIjkuNlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cblxuaWNvbnMucHJvZ3Jlc3NCYXIgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiIzhCMjQ5Q1wiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzRfXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzVfXCIgY2xhc3NOYW1lPVwic3QwXCIgZD1cIk0yMCwzLjlIMFYwaDIwVjMuOXogTTAuNSwzLjRoMTlWMC41aC0xOVYzLjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfM19cIiB4PVwiMC45XCIgeT1cIjAuOVwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMTYuNlwiIGhlaWdodD1cIjIuMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfOV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xMl9cIiBjbGFzc05hbWU9XCJzdDBcIiBkPVwiTTIwLDkuM0gwVjUuNGgyMFY5LjN6IE0wLjUsOC44aDE5VjUuOWgtMTlWOC44elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzEwX1wiIHg9XCIwLjlcIiB5PVwiNi4zXCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIxMC4yXCIgaGVpZ2h0PVwiMi4xXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8xNV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMTdfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8xOF9cIiBjbGFzc05hbWU9XCJzdDBcIiBkPVwiTTIwLDE0LjZIMHYtMy45aDIwVjE0LjZ6IE0wLjUsMTQuMWgxOXYtMi45aC0xOVYxNC4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzE2X1wiIHg9XCIwLjlcIiB5PVwiMTEuNlwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiMTQuNFwiIGhlaWdodD1cIjIuMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMjFfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzIzX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjRfXCIgY2xhc3NOYW1lPVwic3QwXCIgZD1cIk0yMCwyMEgwdi0zLjloMjBWMjB6IE0wLjUsMTkuNWgxOXYtMi45aC0xOVYxOS41elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzIyX1wiIHg9XCIwLjlcIiB5PVwiMTdcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjE2LjZcIiBoZWlnaHQ9XCIyLjFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMucHJpY2luZ1RhYmxlID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctcHJpY2luZy10YWJsZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiLTQ2OSAyNzEgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMV9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzM0X1wiIGNsYXNzPVwic3QwXCIgZD1cIk0tNDU1LjYsMjkxaC02Ljh2LTIwaDYuOFYyOTF6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8yX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMzFfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTS00NjIuOCwyODloLTUuOVYyNzNoNS45VjI4OXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzNfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yOF9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNLTQ0OS4zLDI4OWgtNS45VjI3M2g1LjlWMjg5elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjVfXCIgY2xhc3M9XCJzdDFcIiBkPVwiTS00NjQuNCwyODcuNWgtMi43Yy0wLjMsMC0wLjUtMC4yLTAuNS0wLjVsMCwwYzAtMC4zLDAuMi0wLjUsMC41LTAuNWgyLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC4zLDAsMC41LDAuMiwwLjUsMC41bDAsMEMtNDYzLjksMjg3LjMtNDY0LjEsMjg3LjUtNDY0LjQsMjg3LjV6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8yNl9cIiBjbGFzcz1cInN0MVwiIGQ9XCJNLTQ1Ny43LDI4Ny41aC0yLjZjLTAuMywwLTAuNS0wLjItMC41LTAuNWwwLDBjMC0wLjMsMC4yLTAuNSwwLjUtMC41aDIuN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjMsMCwwLjUsMC4yLDAuNSwwLjVsMCwwQy00NTcuMSwyODcuMy00NTcuNCwyODcuNS00NTcuNywyODcuNXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzI3X1wiIGNsYXNzPVwic3QxXCIgZD1cIk0tNDUxLDI4Ny41aC0yLjdjLTAuMywwLTAuNS0wLjItMC41LTAuNWwwLDBjMC0wLjMsMC4yLTAuNSwwLjUtMC41aDIuN2MwLjMsMCwwLjUsMC4yLDAuNSwwLjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsMCwwQy00NTAuNCwyODcuMy00NTAuNywyODcuNS00NTEsMjg3LjV6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJzdDFcIiBkPVwiTS00NjYuMSwyODMuM3YtMWMtMC42LDAtMS4yLTAuMi0xLjUtMC40bDAuMi0wLjdjMC40LDAuMiwwLjksMC40LDEuNCwwLjRjMC43LDAsMS4yLTAuNCwxLjItMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjUtMC40LTAuOS0xLjEtMS4yYy0xLTAuNC0xLjYtMC45LTEuNi0xLjdjMC0wLjgsMC42LTEuNCwxLjUtMS42di0xaDAuNnYxYzAuNiwwLDEsMC4yLDEuMywwLjNsLTAuMiwwLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjItMC4xLTAuNi0wLjMtMS4yLTAuM2MtMC44LDAtMSwwLjUtMSwwLjljMCwwLjUsMC40LDAuOCwxLjIsMS4xYzEsMC40LDEuNSwwLjksMS41LDEuOGMwLDAuOC0wLjUsMS41LTEuNiwxLjd2MUgtNDY2LjF6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJzdDFcIiBkPVwiTS00NTkuMywyODIuM3YtMWMtMC42LDAtMS4yLTAuMi0xLjUtMC40bDAuMi0wLjdjMC40LDAuMiwwLjksMC40LDEuNCwwLjRjMC43LDAsMS4yLTAuNCwxLjItMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjUtMC40LTAuOS0xLjEtMS4yYy0xLTAuNC0xLjYtMC45LTEuNi0xLjdjMC0wLjgsMC42LTEuNCwxLjUtMS42di0xaDAuNnYxYzAuNiwwLDEsMC4yLDEuMywwLjNsLTAuMiwwLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjItMC4xLTAuNi0wLjMtMS4yLTAuM2MtMC44LDAtMSwwLjUtMSwwLjljMCwwLjUsMC40LDAuOCwxLjIsMS4xYzEsMC40LDEuNSwwLjksMS41LDEuOGMwLDAuOC0wLjUsMS41LTEuNiwxLjd2MUgtNDU5LjN6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJzdDFcIiBkPVwiTS00NTIuNiwyODMuM3YtMWMtMC42LDAtMS4yLTAuMi0xLjUtMC40bDAuMi0wLjdjMC40LDAuMiwwLjksMC40LDEuNCwwLjRjMC43LDAsMS4yLTAuNCwxLjItMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC0wLjUtMC40LTAuOS0xLjEtMS4yYy0xLTAuNC0xLjYtMC45LTEuNi0xLjdjMC0wLjgsMC42LTEuNCwxLjUtMS42di0xaDAuNnYxYzAuNiwwLDEsMC4yLDEuMywwLjNsLTAuMiwwLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjItMC4xLTAuNi0wLjMtMS4yLTAuM2MtMC44LDAtMSwwLjUtMSwwLjljMCwwLjUsMC40LDAuOCwxLjIsMS4xYzEsMC40LDEuNSwwLjksMS41LDEuOGMwLDAuOC0wLjUsMS41LTEuNiwxLjd2MUgtNDUyLjZ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuXG5pY29ucy5wcmljaW5nTGlzdCA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiIzNDMUE1QlwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMy4zXCIgY3k9XCIyLjZcIiByPVwiMi42XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCI3LjFcIiB5PVwiMS40XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCI5LjhcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCAgeD1cIjE3LjdcIiB5PVwiMS40XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIyLjNcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCAgeD1cIjcuMVwiIHk9XCIzLjFcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjEyLjlcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlICBjbGFzc05hbWU9XCJzdDBcIiBjeD1cIjMuM1wiIGN5PVwiOS43XCIgcj1cIjIuNlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiNy4xXCIgeT1cIjguOVwiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiOS44XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjE3LjdcIiB5PVwiOC45XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIyLjNcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCAgeD1cIjcuMVwiIHk9XCIxMC41XCIgY2xhc3NOYW1lPVwic3QwXCIgd2lkdGg9XCIxMi45XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSAgY2xhc3NOYW1lPVwic3QwXCIgY3g9XCIzLjNcIiBjeT1cIjE3LjRcIiByPVwiMi42XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCI3LjFcIiB5PVwiMTYuM1wiIGNsYXNzTmFtZT1cInN0MFwiIHdpZHRoPVwiOS44XCIgaGVpZ2h0PVwiMC44XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgIHg9XCIxNy43XCIgeT1cIjE2LjNcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjIuM1wiIGhlaWdodD1cIjAuOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0ICB4PVwiNy4xXCIgeT1cIjE3LjlcIiBjbGFzc05hbWU9XCJzdDBcIiB3aWR0aD1cIjEyLjlcIiBoZWlnaHQ9XCIwLjhcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuc29jaWFsU2hhcmUgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIiMzQzFBNUJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfN19cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTYsMTIuOGMtMC45LDAtMS44LDAuNC0yLjMsMWwtNi40LTMuN2MwLTAuMSwwLTAuMSwwLTAuMmMwLTAuMSwwLTAuMiwwLTAuM2w2LjMtMy42XG4gICAgICAgICAgICAgICAgICAgICAgICBDMTQuMSw2LjgsMTUsNy4zLDE2LDcuM2MxLjcsMCwzLjItMS40LDMuMi0zLjJDMTkuMSwyLjQsMTcuNywxLDE2LDFzLTMuMiwxLjQtMy4yLDMuMmMwLDAuMywwLDAuNSwwLjEsMC44TDYuNyw4LjRcbiAgICAgICAgICAgICAgICAgICAgICAgIEM2LjIsNy41LDUuMiw2LjgsNC4xLDYuOGMtMS43LDAtMy4yLDEuNC0zLjIsMy4yYzAsMS43LDEuNCwzLjIsMy4yLDMuMmMxLjIsMCwyLjItMC43LDIuNy0xLjZMMTMsMTVjLTAuMSwwLjMtMC4yLDAuNi0wLjIsMC45XG4gICAgICAgICAgICAgICAgICAgICAgICBjMCwxLjcsMS40LDMuMiwzLjIsMy4yczMuMi0xLjQsMy4yLTMuMkMxOS4xLDE0LjIsMTcuNywxMi44LDE2LDEyLjh6XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLnNvY2lhbGxpbmtzID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctc29jaWFsbGlua3NcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCIjM0MxQTVCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzFfXCIgeD1cIjAuNVwiIHk9XCIwLjVcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI5XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xMF9cIiB4PVwiMTAuNVwiIHk9XCIwLjVcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI5XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xMl9cIiB4PVwiMC41XCIgeT1cIjEwLjVcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCI5XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xMV9cIiB4PVwiMTAuNVwiIHk9XCIxMC41XCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfN19cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzcwX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xMS4yLDE1LjFjMC0wLjYsMC0xLjEsMC0xLjVjMC0wLjQsMC0wLjcsMC4yLTFjMC4yLTAuNiwwLjctMSwxLjMtMS4yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLjItMC4xLDAuNS0wLjEsMC44LTAuMWMxLDAsMiwwLDIuOSwwYzAuMywwLDAuNywwLDEsMC4xYzAuNiwwLjIsMSwwLjYsMS4yLDEuMmMwLjEsMC4zLDAuMiwwLjUsMC4yLDAuOGMwLDAuNCwwLDAuOCwwLDEuM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLjYsMCwxLjEsMCwxLjdjMCwwLjMsMCwwLjYtMC4xLDFjLTAuMiwwLjctMC43LDEuMi0xLjQsMS40Yy0wLjIsMC4xLTAuNSwwLjEtMC43LDAuMWMtMSwwLTEuOSwwLTIuOSwwYy0wLjMsMC0wLjcsMC0xLTAuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuNy0wLjItMS4xLTAuNy0xLjMtMS40Yy0wLjEtMC4yLTAuMS0wLjUtMC4xLTAuN0MxMS4yLDE2LDExLjIsMTUuNSwxMS4yLDE1LjF6IE0xOC4xLDE1QzE4LjEsMTUsMTguMSwxNSwxOC4xLDE1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuMywwLTAuNywwLTFjMC0wLjMsMC0wLjctMC4xLTFjLTAuMS0wLjMtMC4yLTAuNS0wLjQtMC43Yy0wLjItMC4yLTAuNC0wLjMtMC43LTAuM2MtMC40LTAuMS0wLjgtMC4xLTEuMS0wLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjYsMC0xLjEsMC0xLjcsMGMtMC4zLDAtMC43LDAtMSwwLjFjLTAuMywwLjEtMC41LDAuMi0wLjcsMC40QzEyLjEsMTIuNSwxMiwxMi44LDEyLDEzYy0wLjEsMC40LTAuMSwwLjctMC4xLDEuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLjYsMCwxLjIsMCwxLjhjMCwwLjQsMCwwLjcsMC4xLDEuMWMwLjEsMC4zLDAuMiwwLjUsMC40LDAuN2MwLjIsMC4yLDAuNSwwLjMsMC43LDAuM2MwLjQsMC4xLDAuNywwLjEsMS4xLDAuMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC42LDAsMS4yLDAsMS43LDBjMC4zLDAsMC43LDAsMS0wLjFjMC4zLTAuMSwwLjUtMC4yLDAuNy0wLjRjMC4yLTAuMiwwLjMtMC40LDAuMy0wLjdjMC0wLjMsMC4xLTAuNiwwLjEtMC45XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMxOC4xLDE1LjcsMTguMSwxNS40LDE4LjEsMTV6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfNjNfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTE2LjksMTVjMCwxLTAuOCwyLTIsMmMtMSwwLTItMC44LTItMmMwLTEsMC44LTEuOSwyLTJDMTYuMSwxMywxNywxNCwxNi45LDE1eiBNMTUsMTMuN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuNywwLTEuMywwLjYtMS4zLDEuM2MwLDAuNywwLjYsMS4zLDEuMywxLjNjMC43LDAsMS4zLTAuNiwxLjMtMS4zQzE2LjMsMTQuMywxNS43LDEzLjcsMTUsMTMuN3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF82Ml9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTcuNSwxM2MwLDAuMi0wLjIsMC41LTAuNSwwLjVjLTAuMiwwLTAuNS0wLjItMC41LTAuNWMwLTAuMiwwLjItMC41LDAuNS0wLjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE3LjMsMTIuNSwxNy41LDEyLjcsMTcuNSwxM3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzRfXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF8zNV9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTMuNSw2LjdjLTAuOCwwLTEuMy0wLjYtMS41LTEuMWMwLjIsMCwwLjUsMCwwLjcsMGMtMC40LTAuMS0wLjctMC4zLTAuOS0wLjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjItMC4zLTAuMy0wLjYtMC4zLTFjMC4xLDAsMC4yLDAuMSwwLjMsMC4xYzAuMSwwLDAuMiwwLjEsMC40LDAuMUMxMS44LDQsMTEuNSwzLjYsMTEuNSwzYzAtMC4zLDAuMS0wLjYsMC4yLTAuOVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMC44LDEsMS45LDEuNSwzLjIsMS42YzAtMC4xLDAtMC4xLDAtMC4yYzAtMC42LDAuMi0xLDAuNi0xLjRjMC42LTAuNSwxLjUtMC40LDIuMSwwLjFjMCwwLDAsMCwwLjEsMEMxOCwyLjMsMTguMywyLjIsMTguNiwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAsMCwwLDAsMGMtMC4xLDAuMi0wLjEsMC4zLTAuMywwLjVjLTAuMSwwLjEtMC4zLDAuMy0wLjQsMC40YzAuMywwLDAuNi0wLjEsMC45LTAuMmMwLDAsMCwwLDAsMGMtMC4yLDAuMy0wLjQsMC41LTAuNywwLjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMCwwLDAsMCwwLjFjMCwwLjctMC4xLDEuNC0wLjQsMmMtMC4zLDAuNy0wLjgsMS4zLTEuNCwxLjhjLTAuNSwwLjMtMSwwLjYtMS42LDAuN2MtMC42LDAuMS0xLjMsMC4yLTEuOSwwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC41LTAuMS0xLTAuMy0xLjUtMC42YzAsMCwwLDAsMCwwYzAuNiwwLjEsMS4yLDAsMS44LTAuM0MxMy4yLDcsMTMuMyw2LjksMTMuNSw2Ljd6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF8zX1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMzdfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTQuMiw1LjNjLTAuNCwwLTAuOCwwLTEuMiwwQzMsNC45LDMsNC40LDMsNGMwLjQsMCwwLjgsMCwxLjIsMGMwLDAsMCwwLDAtMC4xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuNCwwLTAuNywwLTEuMWMwLTAuNCwwLjEtMC43LDAuMy0xQzQuNywxLjQsNSwxLjMsNS40LDEuMmMwLjItMC4xLDAuNS0wLjEsMC43LTAuMWMwLjMsMCwwLjYsMCwwLjksMGMwLDAsMCwwLDAsMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDNywxLjYsNywyLDcsMi40YzAsMCwwLDAsMCwwYzAsMCwwLDAtMC4xLDBjLTAuMywwLTAuNSwwLTAuOCwwYy0wLjEsMC0wLjEsMC0wLjIsMEM1LjgsMi41LDUuNiwyLjYsNS42LDIuOWMwLDAuMSwwLDAuMiwwLDAuM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMCwwLjIsMCwwLjUsMCwwLjdjMCwwLDAsMCwwLDAuMWMwLjUsMCwwLjksMCwxLjQsMEM2LjksNC40LDYuOCw0LjksNi44LDUuM2MtMC40LDAtMC44LDAtMS4yLDBjMCwxLjIsMCwyLjQsMCwzLjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjUsMC0xLDAtMS40LDBDNC4yLDcuNyw0LjIsNi41LDQuMiw1LjN6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJYTUxJRF81X1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMzNfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTguNiwxOC42QzguNiwxOC42LDguNiwxOC42LDguNiwxOC42Yy0wLjUsMC0xLDAtMS40LDBjMCwwLDAsMCwwLDBjMCwwLDAsMCwwLDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAtMC44LDAtMS42LDAtMi40YzAtMC4yLDAtMC40LDAtMC42YzAtMC4xLTAuMS0wLjItMC4xLTAuM0M2LjgsMTUuMSw2LjcsMTUsNi41LDE1Yy0wLjIsMC0wLjMsMC0wLjUsMGMtMC4yLDAuMS0wLjQsMC4yLTAuNSwwLjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjEsMC4xLTAuMSwwLjMtMC4xLDAuNGMwLDAuMSwwLDAuMywwLDAuNGMwLDAuOCwwLDEuNSwwLDIuM2MwLDAsMCwwLDAsMGMtMC41LDAtMSwwLTEuNSwwYzAtMS42LDAtMy4yLDAtNC44YzAuNSwwLDAuOSwwLDEuNCwwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMwLDAuMiwwLDAuNCwwLDAuNmMwLDAsMCwwLDAsMGMwLDAsMCwwLDAsMEM1LjYsMTQuMiw1LjgsMTQsNiwxMy44YzAuMi0wLjEsMC41LTAuMiwwLjgtMC4yYzAuMywwLDAuNSwwLDAuNywwLjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuNCwwLjEsMC43LDAuNCwwLjgsMC44YzAuMSwwLjIsMC4xLDAuNSwwLjEsMC43YzAsMC4xLDAsMC4zLDAsMC40YzAsMCwwLDAsMCwwQzguNiwxNi43LDguNiwxNy42LDguNiwxOC42elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzMyX1wiIGNsYXNzPVwic3QwXCIgZD1cIk0yLjMsMTEuNGMwLDAsMC4xLDAsMC4xLDBjMC40LDAuMSwwLjcsMC40LDAuNywwLjhjMCwwLjQtMC4zLDAuOC0wLjcsMC44XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC41LDAuMS0wLjktMC4yLTEtMC43YzAsMCwwLDAsMC0wLjFjMCwwLDAtMC4xLDAtMC4xYzAsMCwwLDAsMCwwYzAtMC4zLDAuMy0wLjYsMC42LTAuN2MwLjEsMCwwLjEsMCwwLjIsMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDMi4yLDExLjQsMi4zLDExLjQsMi4zLDExLjR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMzBfXCIgY2xhc3M9XCJzdDBcIiBkPVwiTTMsMTguNmMtMC41LDAtMSwwLTEuNSwwYzAtMS42LDAtMy4yLDAtNC44YzAuNSwwLDEsMCwxLjUsMEMzLDE1LjQsMywxNywzLDE4LjZ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz47ICAgICAgICAgICAgICAgICAgICBcblxuaWNvbnMudGFicyA9IDxzdmcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctdGFic1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgPlxuICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF8xX1wiIHg9XCIxLjJcIiB5PVwiNC45XCIgd2lkdGg9XCIxNy42XCIgaGVpZ2h0PVwiMTRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB4PVwiMS4yXCIgeT1cIjEuM1wiIHdpZHRoPVwiOC4yXCIgaGVpZ2h0PVwiMy42XCIvPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzNfXCIgeD1cIjEwLjZcIiB5PVwiMS4zXCIgd2lkdGg9XCI4LjJcIiBoZWlnaHQ9XCIyLjVcIi8+XG4gICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuc2hhcGVkaXZpdmVyID0gPHN2ZyBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2ZyBibG9ja3NwYXJlLXN2Zy1zaGFwZS1kaXZpdmVyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiA+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF82X1wiIGQ9XCJNMjAsMjBIMFYwaDIwVjIweiBNMSwxOWgxOFYxSDFWMTl6XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMTBfXCIgZD1cIk0wLDEwLjhjMCwwLDYuMy0zLjMsMTAuNiwxLjFjNS4zLDUuNSw5LjQtMiw5LjQtMlYyMEwwLDIwVjEwLjh6XCIvPlxuICAgICAgICAgICAgIDwvc3ZnPjsgICAgICAgICAgICAgXG5cbmljb25zLmNvdW50ZXIgPSA8c3ZnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnIGJsb2Nrc3BhcmUtc3ZnLXNoYXBlLWNvdW50ZXJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzRfXCIgeD1cIjEuM1wiIHk9XCIxXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiMThcIi8+XG4gICAgICAgICAgICAgICAgPHJlY3QgaWQ9XCJYTUxJRF84X1wiIHg9XCIxMC43XCIgeT1cIjFcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxOFwiLz5cbiAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzIzX1wiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzI1X1wiIGNsYXNzPVwic3QwXCIgZD1cIk04LjQsMTBjMCwwLjctMC4xLDEuMy0wLjIsMS44Yy0wLjEsMC41LTAuMywxLTAuNSwxLjNjLTAuMiwwLjMtMC42LDAuNi0xLDAuOFxuICAgICAgICAgICAgICAgICAgICAgICAgYy0wLjQsMC4yLTAuOSwwLjMtMS40LDAuM2MtMC42LDAtMS0wLjEtMS40LTAuM2MtMC40LTAuMi0wLjctMC40LTEtMC44Yy0wLjItMC40LTAuNC0wLjgtMC41LTEuM2MtMC4xLTAuNS0wLjItMS4xLTAuMi0xLjhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMwLTAuNywwLjEtMS4zLDAuMi0xLjhjMC4xLTAuNSwwLjMtMC45LDAuNS0xLjNjMC4zLTAuNCwwLjYtMC42LDEtMC44YzAuNC0wLjIsMC45LTAuMywxLjQtMC4zYzAuNiwwLDEuMSwwLjEsMS41LDAuM1xuICAgICAgICAgICAgICAgICAgICAgICAgczAuNywwLjUsMSwwLjhDOCw3LjIsOC4yLDcuNyw4LjMsOC4yQzguNCw4LjcsOC40LDkuMyw4LjQsMTB6IE02LjQsMTBjMC0xLTAuMS0xLjctMC4yLTIuMUM2LDcuNSw1LjcsNy4zLDUuMyw3LjNcbiAgICAgICAgICAgICAgICAgICAgICAgIGMtMC40LDAtMC43LDAuMi0wLjgsMC42QzQuMyw4LjMsNC4zLDksNC4zLDEwYzAsMSwwLjEsMS43LDAuMiwyLjFjMC4yLDAuNCwwLjQsMC42LDAuOCwwLjZzMC43LTAuMiwwLjgtMC42XG4gICAgICAgICAgICAgICAgICAgICAgICBDNi4zLDExLjcsNi40LDExLDYuNCwxMHpcIi8+XG4gICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfM19cIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJYTUxJRF85X1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xNy42LDcuNkwxNC4yLDE0SDEybDMuNi02LjVoLTMuOFY2aDUuOVY3LjZ6XCIvPlxuICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzI2X1wiIGNsYXNzPVwic3QwXCIgZD1cIk0xNS4xLDIuMWMtMC4yLDAuNC0wLjQsMC41LTAuOCwwLjVjLTAuNCwwLTAuNi0wLjEtMC44LTAuNUMxMy40LDEuOSwxMy4zLDEsMTMuMywxaC0xLjlcbiAgICAgICAgICAgICAgICAgICAgYzAsMCwwLjEsMC42LDAuMSwwLjljMC4xLDAuNSwwLjMsMC44LDAuNSwxLjJjMC4yLDAuMywwLjUsMC42LDAuOSwwLjdDMTMuMywzLjksMTMuOCw0LDE0LjMsNGMwLjUsMCwxLTAuMSwxLjQtMC4zXG4gICAgICAgICAgICAgICAgICAgIEMxNiwzLjYsMTYuMywzLjMsMTYuNSwzYzAuMi0wLjMsMC40LTAuNiwwLjUtMS4xQzE3LjEsMS42LDE3LjEsMSwxNy4yLDFoLTEuOUMxNS4yLDEsMTUuMiwxLjksMTUuMSwyLjF6XCIvPlxuICAgICAgICAgICAgIDwvc3ZnPjsgIFxuXG5pY29ucy50ZXN0aW1vbmlhbCA9IDxzdmcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctdGVzdGltb25pYWxcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiID5cbiAgICAgICAgICAgICAgICA8ZyBpZD1cIlhNTElEXzFfXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMl9cIiBjbGFzcz1cInN0MFwiIGQ9XCJNMTcuNSwxNC4xSDIuNWMtMS4zLDAtMi4zLTEtMi4zLTIuM1Y2LjNDMC4yLDUsMS4zLDQsMi41LDRoMTQuOWMxLjMsMCwyLjMsMSwyLjMsMi4zdjUuNlxuICAgICAgICAgICAgICAgICAgICAgICAgQzE5LjgsMTMuMSwxOC43LDE0LjEsMTcuNSwxNC4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9XCJYTUxJRF8zX1wiIGNsYXNzPVwic3QwXCIgcG9pbnRzPVwiMS44LDEzIDQuMSwxNyA2LjQsMTMgICAgIFwiLz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgPC9zdmc+O1xuXG5cbmljb25zLnVwbG9hZCA9IDxzdmcgd2lkdGg9JzUwcHgnIGhlaWdodD0nNTBweCcgdmlld0JveD0nMCAwIDIwIDIwJyBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuOSw0Yy0xLDAtMiwwLTMsMGMtMC4yLDAtMC4zLDAtMC4zLTAuM2MtMC4xLTAuOS0xLTEuNS0xLjgtMS41Yy0xLjksMC0zLjgsMC01LjcsMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtMC44LDAtMS42LDAuNi0xLjcsMS41QzUuNCwzLjksNS4zLDQsNSw0Yy0xLDAtMS45LDAtMi45LDBDMS4xLDQsMC4xLDUsMC4xLDZjMCwzLjIsMCw2LjUsMCw5LjdjMCwwLjIsMC4xLDAuNSwwLjIsMC43XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAuNCwwLjksMS4yLDEuNCwyLjIsMS40YzIuNSwwLDUuMSwwLDcuNiwwYzIuNSwwLDQuOSwwLDcuNCwwYzAuMywwLDAuNSwwLDAuOC0wLjFjMC45LTAuMiwxLjctMS4xLDEuOC0yYzAtMy4zLDAtNi41LDAtOS44XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQzE5LjksNSwxOC45LDQsMTcuOSw0eiBNMTksMTUuM2MwLDAuNC0wLjEsMC45LTAuNSwxLjJjLTAuMywwLjMtMC43LDAuMy0xLjEsMC4zYy0yLjUsMC00LjksMC03LjQsMGMtMi41LDAtNC45LDAtNy40LDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLTAuNCwwLTAuOSwwLTEuMi0wLjRjLTAuMi0wLjItMC40LTAuNS0wLjQtMC45YzAtMy4xLDAtNi4zLDAtOS40QzEuMSw1LjUsMS42LDUsMi4zLDVjMS4xLDAsMi4zLDAsMy40LDBjMC42LDAsMC44LTAuMiwwLjgtMC44XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzAsMCwwLTAuMSwwLTAuMUM2LjQsMy4zLDYuOCwzLjEsNy4zLDMuMWMxLjgsMCwzLjgsMCw1LjYsMGMwLjYsMCwxLjEsMC4zLDEuMSwxYzAsMC4xLDAsMC4xLDAsMC4yQzE0LDQuOCwxNCw1LDE0LjUsNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxLjEsMCwyLjEsMCwzLjIsMGMwLjksMCwxLjQsMC41LDEuNCwxLjVDMTkuMSw5LjQsMTksMTIuMywxOSwxNS4zelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAsNi4yYy0yLjYsMC00LjcsMi4xLTQuNyw0LjZjMCwyLjYsMi4xLDQuNyw0LjYsNC43YzIuNiwwLDQuNy0yLjEsNC43LTQuNkMxNC43LDguMywxMi42LDYuMiwxMCw2LjJ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0xMCwxNC41Yy0xLjksMC0zLjYtMS40LTMuNi0zLjZjMC0yLDEuNi0zLjYsMy42LTMuNmMyLDAsMy42LDEuNSwzLjYsMy43QzEzLjYsMTMsMTIsMTQuNSwxMCwxNC41elwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjcsNi4yYy0wLjUsMC0wLjksMC40LTAuOSwwLjljMCwwLjUsMC40LDAuOSwwLjksMC45YzAuNSwwLDAuOS0wLjUsMC45LTAuOUMxNy43LDYuNiwxNy4yLDYuMiwxNi43LDYuMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcblxuaWNvbnMuc2VjdGlvbkhlYWRlciA9IDxzdmcgdmVyc2lvbj1cIjEuMVwiICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCIjM0MxQTVCXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiWE1MSURfMl9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzNfXCIgZD1cIk0xNywyLjJ2MTUuNmgtNC4zdi02LjNINy40djYuM0gzVjIuMmg0LjNWOGg1LjNWMi4ySDE3elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+O1xuXG5pY29ucy5zZXJ2aWNlcyA9IDxzdmcgd2lkdGg9JzIwcHgnIGhlaWdodD0nMjBweCcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmcgYmxvY2tzcGFyZS1zdmctc2VydmljZXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cIlhNTElEXzFfXCIgY3g9XCI0LjVcIiBjeT1cIjVcIiByPVwiMy40XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD1cIlhNTElEXzlfXCIgY3g9XCIxNS41XCIgY3k9XCI1XCIgcj1cIjMuNFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfMl9cIiB5PVwiMTBcIiB3aWR0aD1cIjlcIiBoZWlnaHQ9XCIxLjdcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD1cIlhNTElEXzhfXCIgeD1cIjExXCIgeT1cIjkuOFwiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjEuN1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfNF9cIiB5PVwiMTMuM1wiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjYuN1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPVwiWE1MSURfN19cIiB4PVwiMTFcIiB5PVwiMTMuMVwiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjYuOVwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cblxuaWNvbnMuZW1wdHlTcGFjZXMgPSA8c3ZnIHZlcnNpb249XCIxLjFcIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN2Z1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cblxuICAgIDxyZWN0IGNsYXNzTmFtZT1cImNscy0xXCIgeD1cIjEuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIi8+XG48L3N2Zz5cblxuXG5pY29ucy5sYXlvdXRzID0gPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9JyMzMzMzMzMnICBkPVwiTTAuNCwxNS4xVjAuN2MwLTAuMiwwLjEtMC4zLDAuMy0wLjNoOC44YzAuMiwwLDAuMywwLjEsMC4zLDAuM3YxNC40YzAsMC4yLTAuMSwwLjMtMC4zLDAuM0gwLjdcbiAgICAgICAgICAgICAgICAgICAgQzAuNiwxNS40LDAuNCwxNS4zLDAuNCwxNS4xelwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9JyMzMzMzMzMnIGQ9XCJNMTAuMiw3LjJWMC43YzAtMC4yLDAuMS0wLjMsMC4zLTAuM2g4LjhjMC4yLDAsMC4zLDAuMSwwLjMsMC4zdjYuNWMwLDAuMi0wLjEsMC4zLTAuMywwLjNoLTguOFxuICAgICAgICAgICAgICAgICAgICBDMTAuMyw3LjUsMTAuMiw3LjMsMTAuMiw3LjJ6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD0nIzMzMzMzMycgZD1cIk0xMC4zLDE1LjFWOC4yYzAtMC4yLDAuMS0wLjMsMC4zLTAuM2gzLjhjMC4yLDAsMC4zLDAuMSwwLjMsMC4zdjYuOWMwLDAuMi0wLjEsMC4zLTAuMywwLjNoLTMuOFxuICAgICAgICAgICAgICAgICAgICBDMTAuNCwxNS40LDEwLjMsMTUuMywxMC4zLDE1LjF6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD0nIzMzMzMzMycgZD1cIk0wLjgsMTUuOGgxOC40YzAuMiwwLDAuMywwLjEsMC4zLDAuM3YzLjNjMCwwLjItMC4xLDAuMy0wLjMsMC4zSDAuOGMtMC4yLDAtMC4zLTAuMS0wLjMtMC4zXG4gICAgICAgICAgICAgICAgICAgIHYtMy4zQzAuNSwxNS45LDAuNywxNS44LDAuOCwxNS44elwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9JyMzMzMzMzMnIGQ9XCJNMTUuMiwxNS4xVjguMmMwLTAuMiwwLjEtMC4zLDAuMy0wLjNoMy43YzAuMiwwLDAuMywwLjEsMC4zLDAuM3Y2LjljMCwwLjItMC4xLDAuMy0wLjMsMC4zaC0zLjdcbiAgICAgICAgICAgICAgICAgICAgQzE1LjMsMTUuNCwxNS4yLDE1LjMsMTUuMiwxNS4xelwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz47XG5cbmljb25zLmZsaXBYID0gPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJtMTEgMThoM3YtMmgtM3ptMy0xMmgydi0yaC0yem0tMTQtMnYxMmMwIDEuMS45IDIgMiAyaDN2LTJoLTN2LTEyaDN2LTJoLTNjLTEuMSAwLTIgLjktMiAyem0xNC0ydjJoMmMwLTEuMS0uOS0yLTItMnptLTcgMThoMnYtMjBoLTJ6bTctNGgydi0yaC0yem0tMy0xMmgzdi0yaC0zem0zIDhoMnYtNGgtMnptMCA2YzEuMSAwIDItLjkgMi0yaC0yelwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyKVwiIC8+PC9zdmc+O1xuXG5pY29ucy5mbGlwWSA9IDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwibTEzIDE2aDN2LTJoLTN6bTMtMTJoMnYtMmgtMnptLTE0LTJ2MTJjMCAxLjEuOSAyIDIgMmgzdi0yaC0zdi0xMmgzdi0yaC0zYy0xLjEgMC0yIC45LTIgMnptMTQtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS03IDE4aDJ2LTIwaC0yem03LTRoMnYtMmgtMnptLTMtMTJoM3YtMmgtM3ptMyA4aDJ2LTRoLTJ6bTAgNmMxLjEgMCAyLS45IDItMmgtMnpcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMCAxIC0xIDAgMTggMClcIiAvPjwvc3ZnPjtcblxuICAgIGljb25zLmVkaXQgPSc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PFBhdGggZD1cIm0xMSA1LjkxMjVjLTIuNzg0Mzc1IDAtNS4wMTg3NSAyLjI2ODc1LTUuMDE4NzUgNS4wMTg3NSAwIDIuNzg0Mzc1IDIuMjY4NzUgNS4wMTg3NSA1LjAxODc1IDUuMDE4NzUgMi43ODQzNzUgMCA1LjAxODc1LTIuMjY4NzUgNS4wMTg3NS01LjAxODc1cy0yLjIzNDM3NS01LjAxODc1LTUuMDE4NzUtNS4wMTg3NXptLjM3ODEyNSA2LjMyNS0xLjEzNDM3NSAxLjEzNDM3NS0xLjEzNDM3NS0xLjEzNDM3NS0xLjEtMS4xIDEuMTM0Mzc1LTEuMTM0Mzc1IDEuMSAxLjEgMi42MTI1LTIuNjEyNSAxLjEzNDM3NSAxLjEzNDM3NXptOS42NTkzNzUtMi43MTU2MjVjLS40NDY4NzUtLjQxMjUtLjYxODc1LTEuMDY1NjI1LS4zNzgxMjUtMS42MTU2MjVsLjIwNjI1LS41MTU2MjVjLjM0Mzc1LS43OTA2MjUtLjEwMzEyNS0xLjY4NDM3NS0uOTI4MTI1LTEuOTI1bC0uNTUtLjEzNzVjLS41ODQzNzUtLjE3MTg3NS0uOTk2ODc1LS42ODc1LTEuMDMxMjUtMS4zMDYyNXYtLjU4NDM3NWMtLjAzNDM3NS0uODU5Mzc1LS44MjUtMS40NzgxMjUtMS42NS0xLjM0MDYyNWwtLjU1LjEwMzEyNWMtLjYxODc1LjEwMzEyNS0xLjIwMzEyNS0uMTcxODc1LTEuNDc4MTI1LS43MjE4NzVsLS4yNzUtLjQ4MTI1Yy0uNDEyNS0uNzU2MjUtMS4zNzUtLjk2MjUtMi4wNjI1LS40ODEyNWwtLjQ0Njg3NS4zMDkzNzVjLS40ODEyNS4zNDM3NS0xLjE2ODc1LjM0Mzc1LTEuNjUgMGwtLjQ0Njg3NS0uMzQzNzVjLS42ODc1LS41MTU2MjUtMS42ODQzNzUtLjI3NS0yLjA5Njg3NS40ODEyNWwtLjI3NS40ODEyNWMtLjMwOTM3NS41NS0uODkzNzUuODI1LTEuNTEyNS43MjE4NzVsLS41NS0uMTAzMTI1Yy0uODU5Mzc1LS4xMzc1LTEuNjE1NjI1LjQ4MTI1LTEuNjg0Mzc1IDEuMzQwNjI1bC0uMDM0Mzc1LjU1Yy0uMDM0Mzc1LjYxODc1LS40NDY4NzUgMS4xMzQzNzUtMS4wMzEyNSAxLjMwNjI1bC0uNTUuMTcxODc1Yy0uODI1LjI0MDYyNS0xLjI3MTg3NSAxLjEzNDM3NS0uOTI4MTI1IDEuOTI1bC4yMDYyNS41MTU2MjVjLjI0MDYyNS41NS4wNjg3NSAxLjIwMzEyNS0uMzc4MTI1IDEuNjE1NjI1bC0uNDEyNS4zNzgxMjVjLS42NTMxMjUuNTUtLjY1MzEyNSAxLjU4MTI1IDAgMi4xMzEyNWwuNDEyNS4zNzgxMjVjLjQ0Njg3NS40MTI1LjYxODc1IDEuMDY1NjI1LjM3ODEyNSAxLjYxNTYyNWwtLjIwNjI1LjUxNTYyNWMtLjM0Mzc1Ljc5MDYyNS4xMDMxMjUgMS42ODQzNzUuOTI4MTI1IDEuOTI1bC41NS4xMzc1Yy41ODQzNzUuMTcxODc1Ljk5Njg3NS42ODc1IDEuMDMxMjUgMS4zMDYyNWwuMDM0Mzc1LjU1Yy4wMzQzNzUuODU5Mzc1LjgyNSAxLjQ3ODEyNSAxLjY1IDEuMzQwNjI1bC41NS0uMTAzMTI1Yy42MTg3NS0uMTAzMTI1IDEuMjAzMTI1LjE3MTg3NSAxLjQ3ODEyNS43MjE4NzVsLjI3NS40ODEyNWMuNDEyNS43NTYyNSAxLjM3NS45NjI1IDIuMDYyNS40ODEyNWwuNDQ2ODc1LS4zMDkzNzVjLjQ4MTI1LS4zNDM3NSAxLjE2ODc1LS4zNDM3NSAxLjY1IDBsLjQ0Njg3NS4zNDM3NWMuNjg3NS41MTU2MjUgMS42ODQzNzUuMjc1IDIuMDk2ODc1LS40ODEyNWwuMjc1LS40ODEyNWMuMzA5Mzc1LS41NS44OTM3NS0uODI1IDEuNTEyNS0uNzIxODc1bC41NS4xMDMxMjVjLjg1OTM3NS4xMzc1IDEuNjE1NjI1LS40ODEyNSAxLjY4NDM3NS0xLjM0MDYyNWwuMDM0Mzc1LS41NWMuMDM0Mzc1LS42MTg3NS40NDY4NzUtMS4xMzQzNzUgMS4wMzEyNS0xLjMwNjI1bC41NS0uMTM3NWMuODI1LS4yNDA2MjUgMS4yNzE4NzUtMS4xMzQzNzUuOTI4MTI1LTEuOTI1bC0uMjA2MjUtLjUxNTYyNWMtLjI0MDYyNS0uNTUtLjA2ODc1LTEuMjAzMTI1LjM3ODEyNS0xLjYxNTYyNWwuNDEyNS0uMzc4MTI1Yy42NTMxMjUtLjU1LjY1MzEyNS0xLjU4MTI1IDAtMi4xMzEyNXptLTEwLjAzNzUgOC4zODc1Yy0zLjg1IDAtNi45NDM3NS0zLjEyODEyNS02Ljk0Mzc1LTYuOTQzNzUgMC0zLjg1IDMuMTI4MTI1LTYuOTQzNzUgNi45NDM3NS02Ljk0Mzc1IDMuODUgMCA2Ljk0Mzc1IDMuMTI4MTI1IDYuOTQzNzUgNi45NDM3NXMtMy4wOTM3NSA2Ljk0Mzc1LTYuOTQzNzUgNi45NDM3NXpcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMSAxKVwiIC8+PC9zdmc+OydcblxuaWNvbnMuYmxvY2tzcGFyZV9wbGFjZWhvbGRlciA9IDxzdmcgdmlld0JveD1cIjAgMCAzODQgMzg0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxwYXRoIGQ9XCJNMjAzLjMsMzg0Yy03LjUsMC0xNSwwLTIyLjUsMGMtNy45LTEuMS0xNS44LTEuOS0yMy43LTMuM0M3OC43LDM2Ni42LDE2LjQsMzAzLjgsMywyMjUuNGMtMS4yLTcuMS0yLTE0LjMtMy0yMS40IGMwLTgsMC0xNiwwLTI0YzAuMi0xLDAuNi0xLjksMC42LTIuOWMxLjQtMTguOCw1LjctMzYuOSwxMi40LTU0LjVjMC42LTEuNSwwLjYtMy4zLDAuOS00LjdjMS0xLjUsMi4zLTIuOSwzLTQuNSBDMjYsOTMuMywzOCw3NS4yLDUzLjQsNTkuM0M4Mi43LDI5LDExOC4xLDEwLjEsMTU5LjYsMi45YzcuMi0xLjIsMTQuNi0yLDIxLjktMi45YzcuMywwLDE0LjUsMCwyMS44LDBjMSwwLjIsMS45LDAuNCwyLjksMC42IGMxMi4zLDIuMSwyNSwyLjgsMzYuOCw2LjVjNzUuOCwyMy4zLDEyMiw3NC4xLDEzOC4xLDE1MS45YzEuNCw2LjksMiwxNCwzLDIxLjFjMCw4LDAsMTYsMCwyNGMtMC4yLDEtMC41LDEuOS0wLjYsMi45IGMtMS4zLDguOC0yLjEsMTcuNi0zLjksMjYuM2MtMTUuNyw3NS4xLTc4LjgsMTM1LjUtMTU0LjQsMTQ3LjlDMjE3LjgsMzgyLjMsMjEwLjUsMzgzLDIwMy4zLDM4NHogTTIwLjgsMTQwLjMgYy0yMi41LDY4LjcsMS41LDE2Mi43LDg1LjIsMjA4LjhjODAuNiw0NC4zLDE3OC4zLDE5LjEsMjI5LjItNDkuOWMtMy40LTMuMi02LjYtNi43LTEwLjItOS44Yy0zLjktMy4zLTUuNS03LTUuMS0xMi4xIGMwLjQtNS41LDAuMi0xMSwwLTE2LjVjLTAuMS0yLTAuNS00LjItMS40LTYuMWMtNS0xMC4yLTkuNi0yMC42LTE1LjQtMzAuNGMtNy0xMS44LTEwLjQtMjQuMS04LjktMzcuOGMwLjItMS42LTAuNS00LjItMS42LTQuOCBjLTQuOS0yLjYtOC4zLTguMS0xNC43LTcuOGMtMC41LDAtMSwwLjItMS41LDAuM2MtNi4xLDEuNS0xMi4xLDMuMS0xOC4yLDQuNGMtMS43LDAuNC0zLjgsMC40LTUuNC0wLjMgYy0xNC42LTYuMS0yOS4yLTEyLjMtNDMuNy0xOC44Yy0xLjktMC45LTQuMS0zLjQtNC40LTUuNGMtMi40LTE0LjQtNC4yLTI4LjktNi4zLTQzLjRjLTAuNC0zLDAuNC01LjMsMi41LTcuNCBjNS45LTUuOCwxMS42LTExLjgsMTcuNi0xNy40YzEuNi0xLjUsNC4xLTIuNiw2LjItMi42YzEyLjEtMC4yLDI0LjItMC4xLDM2LjQtMC4xYzMsMCw1LjIsMS4yLDYuOSwzLjdjMyw0LjYsNiw5LjIsOS4yLDEzLjcgYzAuOSwxLjMsMi42LDIuNCw0LjEsMi43YzYsMS4yLDEyLDIuMSwxOC4xLDMuMWM0LjcsMC43LDkuNywyLjgsMTQsMS43YzEwLjQtMi41LDIwLjQtNi41LDMxLjQtMTAuMmMtNi43LTguOS0xMy0xNy4zLTE5LjMtMjUuOCBjLTUsMy40LTkuMyw2LjQtMTMuOCw5LjFjLTEuOCwxLjEtNC4zLDItNi4yLDEuNmMtMTUuOC0zLjItMzEuOC01LjMtNDYuOS0xMS4yYy0xLjctMC43LTMuOS0wLjctNS44LTAuMyBjLTYuMywxLjQtMTIuNiwzLjItMTguOSw0LjZjLTIuMSwwLjUtNC41LDAuNi02LjYsMGMtNS45LTEuNy0xMS43LTMuNy0xNy40LTUuN2MtNS0xLjctNi40LTUuMy00LjEtMTBjMy45LTgsNy45LTE1LjgsMTEuOC0yMy44IGMxLjYtMy4yLDMuOS00LjUsNy41LTQuNGM1LjksMC4xLDExLjgtMC4zLDE3LjYsMC4xYzYuNCwwLjQsMTAuOS0zLjMsMTYuNC01LjhjLTI3LjctMTUuNS05My45LTE3LjktMTIyLjUtNC4yIGMzLjUsMS42LDYuMiwzLjQsOS4yLDRjMTEsMi4xLDIyLjEsMy44LDMzLjIsNS44YzUuNywxLDcuNSw0LjIsNS43LDkuOGMtMS44LDUuNi0zLjcsMTEuMS01LjUsMTYuN2MtMC45LDIuOS0yLjYsNC43LTUuNSw1LjYgYy00LjIsMS4zLTguNCwyLjUtMTIuNCw0LjNjLTIsMC45LTQuMSwyLjMtNS4zLDQuMWMtNS4yLDguMi0xMCwxNi43LTE1LjIsMjVjLTEuMywyLTMuMSwzLjktNS4yLDUuMmMtOS4zLDUuOC0xOC44LDExLjQtMjguMywxNyBjLTEuOCwxLTMuOSwxLjgtNS45LDIuMWMtMTEuNSwxLjgtMjMsMy41LTM0LjUsNWMtMi42LDAuMy0zLjEsMS40LTMuMywzLjhjLTAuNSw1LjQsMC44LDkuNyw1LjMsMTNjMS43LDEuMiwzLjQsMi44LDQuNSw0LjUgYzEuNCwyLjIsMi41LDQuNywzLDcuM2MwLjUsMi40LDAuMSw1LDAuMSw3LjZjMC4zLDAuMSwwLjcsMC4yLDEsMC4zYzIuMS0yLjIsNC4yLTQuNiw2LjQtNi43YzQuNC00LjMsOC45LTMuNiwxMS43LDIgYzMuMSw2LDYuMSwxMiw5LDE4LjFjMSwyLjEsMi4yLDIuOCw0LjYsMi44YzExLjktMC4xLDIzLjcsMC4xLDM1LjYtMC4xYzQuMS0wLjEsNi43LDEuNSw4LjgsNS4xYzQuNiw4LDkuNiwxNS44LDE0LjEsMjMuOCBjMS40LDIuNSwzLjEsMy40LDYsMy4zYzUuNC0wLjIsMTAuNy0wLjEsMTYuMS0wLjFjNi43LDAsOSwyLjgsNy44LDkuNWMtMC44LDQuNC0yLjMsOC44LTIuNiwxMy4yYy0wLjgsMTMuNy02LjgsMjQuNC0xNy42LDMyLjYgYy0wLjMsMC4yLTAuNSwwLjYtMC44LDAuOGMtOC43LDYuMi0xMi4zLDE0LjQtMTAuNSwyNWMwLjYsMy42LTEuMSw2LjItNCw4LjNjLTYuNSw0LjctMTIuOSw5LjUtMTkuMiwxNC40Yy0xLjIsMS0yLjIsMy0yLjIsNC42IGMtMC4yLDguMiwwLDE2LjUtMC4xLDI0LjdjLTAuMSw2LTMuOCw4LjctOS41LDYuOGMtNS42LTEuOC0xMS4xLTMuNy0xNi43LTUuNWMtMy0wLjktNC44LTIuNy02LTUuN2MtMy43LTkuNS03LjYtMTktMTEuMy0yOC41IGMtMC44LTIuMi0xLjMtNC42LTEuMy02LjlDOTYsMjg3LjMsOTYsMjY5LjksOTYsMjUyLjZjMC0xLjMsMC0yLjcsMC00LjFjLTguMi0xLjYtMTYtMy4zLTIzLjgtNC43Yy00LjItMC43LTctMi41LTguOC02LjUgYy0yLTQuNy00LjItOS40LTYuOS0xMy43Yy00LjQtNy4yLTUuNi0xNC44LTUuNi0yMy4yYzAtNy41LDEuMi0xMy44LDcuNi0xOC4zYzAuNi0wLjQsMS0xLjEsMS43LTEuOWMtMS4zLTAuOS0yLjQtMS43LTMuNS0yLjQgYy04LjgtNS45LTE3LjgtMTEuNi0yNi40LTE3LjhjLTIuMS0xLjUtMy44LTMuOS00LjgtNi4zQzIzLjYsMTQ5LjUsMjIuNCwxNDUuMSwyMC44LDE0MC4zeiBNMzQyLjMsMjg4LjggYzM2LjYtNTQuMSwzNy4xLTEyOCw4LjMtMTc5LjFjLTEwLjgsMy42LTIxLjcsNy4zLTMyLjYsMTAuOGMtMi4yLDAuNy00LjcsMS4xLTYuOSwwLjhjLTEwLjUtMS41LTIwLjktMy43LTMxLjQtNSBjLTUuOC0wLjgtOS45LTMtMTIuOC04LjNjLTIuMi00LjEtNC41LTkuMy04LjItMTEuM2MtMy43LTItOS4zLTAuNi0xNC0wLjZjLTYsMC0xMi42LTEuNS0xNy44LDAuN2MtNS4xLDIuMS04LjcsOC0xMywxMi4yIGMtMC4yLDAuMi0wLjQsMC4zLTAuNSwwLjVjLTAuNSwxLjQtMS40LDIuOS0xLjIsNC4yYzEuNCwxMC45LDMuMSwyMS44LDQuNSwzMi43YzAuMywyLjIsMS4yLDMuMiwzLjEsNGMxMS41LDQuOCwyMi45LDkuOSwzNC40LDE0LjcgYzEuNSwwLjYsMy40LDAuNyw1LDAuNGM2LjUtMS40LDEyLjktMy4xLDE5LjItNC44YzMtMC44LDUuNi0wLjQsOC4xLDEuNGM1LjQsMy44LDEwLjksNy41LDE2LjUsMTFjMi45LDEuOSw0LjIsNC40LDQuMiw3LjggYy0wLjEsNi4yLTAuMiwxMi41LDAuMSwxOC43YzAuMSwyLjQsMC42LDUsMS43LDcuMWM0LjYsOS43LDksMTkuNiwxNC41LDI4LjhjNy41LDEyLjYsMTEuMiwyNS43LDkuNCw0MC4zYy0wLjEsMC41LTAuMSwxLDAsMS41IGMwLjQsMS4xLDAuNywyLjQsMS40LDMuMkMzMzYuOCwyODMuMiwzMzkuNCwyODUuOCwzNDIuMywyODguOHogTTg3LjgsMTcwLjhjLTcuOCw3LjgtMTUuMiwxNS4xLTIyLjQsMjIuNmMtMC45LDAuOS0xLjMsMi42LTEuNCw0IGMtMC45LDgsMC41LDE1LjYsNSwyMi41YzEuOCwyLjcsMi43LDUuOSw0LjUsOC42YzEsMS40LDIuNywyLjksNC40LDMuMmM4LDEuOCwxNi4xLDMuMywyNC4yLDVjNS4yLDEuMSw2LjcsMi45LDYuNyw4LjIgYzAsMTIsMC43LDI0LTAuMiwzNmMtMS4yLDE3LjEsMiwzMyw5LjMsNDguNWMyLjMsNC44LDUuNCw2LjIsMTAuMiw3YzAtNi4zLDAuNC0xMi41LTAuMS0xOC41Yy0wLjQtNS41LDEuNS05LjMsNi4yLTEyLjEgYzIuOS0xLjcsNS40LTQsOC4xLTZjMy43LTIuOCw4LjgtNC45LDEwLjYtOC42YzEuOS0zLjgsMC44LTkuMywwLjctMTRjLTAuMS0zLjMsMS01LjcsMy4zLTcuOWM3LTYuOCwxMy44LTEzLjcsMjAuNy0yMC42IGMwLjctMC43LDEuOC0xLjQsMS45LTIuMmMxLjYtNy4yLDMtMTQuNSw0LjYtMjIuMmMtNS44LDAtMTAuOS0wLjEtMTYsMGMtMy44LDAuMS02LjMtMS40LTguMi00LjdjLTQuOC04LjMtOS45LTE2LjUtMTQuNy0yNC44IGMtMS4xLTItMi40LTIuNy00LjctMi43Yy0xMi4xLDAuMS0yNC4yLDAtMzYuNCwwLjFjLTQsMC02LjYtMS41LTguMy01LjFDOTMuNCwxODEuNyw5MC43LDE3Ni41LDg3LjgsMTcwLjh6IE0xNzAuNyw0My43IGMtMS43LTAuMy0zLjEtMC43LTQuNi0wLjljLTE0LjYtMi42LTMwLTIuOC00MS44LTE0Yy0xLjUtMS41LTMuMS0xLjQtNS4xLTAuNWMtNDEuMiwxOC45LTcxLjMsNDguOS05MC40LDkwIGMtMC42LDEuMy0wLjcsMy4yLTAuMyw0LjVjMi42LDguMiw1LjMsMTYuNCw4LjIsMjQuNWMwLjUsMS40LDEuNiwyLjgsMi45LDMuNmM3LjEsNC45LDE0LjMsOS42LDIxLjUsMTQuNGMwLjgsMC41LDEuNiwwLjksMi42LDEuMyBjMS4xLTkuNywxLjEtOS43LTUuMS0xNS45Yy0xLjUtMS41LTMuMy0yLjgtNC40LTQuNmMtMS4zLTIuMS0yLjYtNC42LTIuOC03Yy0wLjQtNS4xLTAuMS0xMC4yLTAuMS0xNS40YzAtNi4xLDEuNi04LDcuNy04LjkgYzcuOC0xLjEsMTUuNi0yLjIsMjMuNC0zLjNjMTAtMS40LDE5LjQtMy4zLDI4LjYtOC41YzEzLjItNy42LDI0LjEtMTYuNSwzMC4xLTMwLjdjNC41LTEwLjYsMTIuMS0xNywyMy41LTE4LjggYzAuNi0wLjEsMS4zLTAuMiwxLjgtMC42YzAuNy0wLjYsMS42LTEuMiwxLjktMkMxNjkuMSw0OC43LDE2OS44LDQ2LjMsMTcwLjcsNDMuN3ogTTIyMC40LDYwYzcuOSwzLjgsOS42LDQsMTcuMywyLjEgYzUuMS0xLjMsMTAuMS0yLjcsMTUuMi0zLjdjMi0wLjQsNC4zLTAuNSw2LjIsMC4yYzE0LjIsNS40LDI5LDguMSw0My44LDExYzEuMywwLjIsMi45LDAuMywzLjktMC4yYzMuMS0xLjgsNi0zLjksOS41LTYuMiBjLTEuMi0xLjEtMi4yLTEuOS0zLjEtMi43Yy0xMC44LTkuOS0yMi42LTE4LjQtMzUuNC0yNS41Yy0yLjMtMS4zLTQuMi0xLjUtNi41LTAuMWMtMTIuNCw3LjktMjUuNywxMi4zLTQwLjcsMTAuMiBjLTAuNC0wLjEtMC44LTAuMS0xLjEsMGMtMC44LDAuNC0xLjksMC44LTIuMywxLjRDMjI0LjksNTAuOSwyMjIuNyw1NS40LDIyMC40LDYwelwiICAvPjwvc3ZnPjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGljb25zO1xuIiwiLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cblxuaW1wb3J0IGljb25zIGZyb20gJy4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCAgIGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7IGdldENhdGVnb3JpZXMsIHNldENhdGVnb3JpZXMgfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5cblxuc2V0Q2F0ZWdvcmllcyggW1xuICAgIHtcbiAgICAgICAgaWNvbjppY29ucy5jYXRlZ29yeSxcbiAgICAgICAgc2x1ZzogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAndGl0bGUnOiBfXygnQmxvY2tzcGFyZScsICdibG9ja3NwYXJlJyksXG5cbiAgICB9LFxuICAgIC4uLmdldENhdGVnb3JpZXMoKS5maWx0ZXIoICggeyBzbHVnIH0gKSA9PiBzbHVnICE9PSAnYmxvY2tzcGFyZScgKSxcblxuXSApO1xuIiwiXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHsgYWRkRmlsdGVyIH0gPSB3cC5ob29rcztcbmNvbnN0IHsgY3JlYXRlSGlnaGVyT3JkZXJDb21wb25lbnQgfSA9ICB3cC5jb21wb3NlO1xuXG5jb25zdCBhbGxvd2VkQmxvY2tzID0gWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNoYXBlLWRpdmlkZXInXTtcblxuZnVuY3Rpb24gYWRkQXR0cmlidXRlcyggc2V0dGluZ3MgKSB7XG4gICAgLy8gQWRkIGN1c3RvbSBzZWxlY3Rvci9pZFxuICAgIGlmICggYWxsb3dlZEJsb2Nrcy5pbmNsdWRlcyggc2V0dGluZ3MubmFtZSApICYmIHR5cGVvZiBzZXR0aW5ncy5hdHRyaWJ1dGVzICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgc2V0dGluZ3MuYXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oIHNldHRpbmdzLmF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgIGJsb2Nrc3BhcmU6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcbn1cblxuY29uc3Qgd2l0aEF0dHJpYnV0ZXMgPSBjcmVhdGVIaWdoZXJPcmRlckNvbXBvbmVudChcbiAgICBCbG9ja0VkaXQgPT4gcHJvcHMgPT4ge1xuICAgICAgICBjb25zdCB7IG5hbWU6IGJsb2NrTmFtZSB9ID0gcHJvcHM7XG5cbiAgICAgICAgaWYgKCBhbGxvd2VkQmxvY2tzLmluY2x1ZGVzKCBibG9ja05hbWUgKSApIHtcbiAgICAgICAgICAgIHByb3BzLmF0dHJpYnV0ZXMuYmxvY2tzcGFyZSA9IHByb3BzLmF0dHJpYnV0ZXMuYmxvY2tzcGFyZSB8fCB7fTtcblxuICAgICAgICAgICAgaWYgKCB0eXBlb2YgcHJvcHMuYXR0cmlidXRlcy5ibG9ja3NwYXJlLmlkID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5hdHRyaWJ1dGVzLmJsb2Nrc3BhcmUgPSBPYmplY3QuYXNzaWduKCB7fSwgcHJvcHMuYXR0cmlidXRlcy5ibG9ja3NwYXJlLCB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnJyArIGQuZ2V0TW9udGgoKSArIGQuZ2V0RGF0ZSgpICsgZC5nZXRIb3VycygpICsgZC5nZXRNaW51dGVzKCkgKyBkLmdldFNlY29uZHMoKSArIGQuZ2V0TWlsbGlzZWNvbmRzKCksXG4gICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxCbG9ja0VkaXQgeyAuLi5wcm9wcyB9IC8+O1xuICAgIH0sXG4gICAgJ3dpdGhBdHRyaWJ1dGVzJ1xuKTtcblxuYWRkRmlsdGVyKFxuICAgICdibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGUnLFxuICAgICdibG9ja3NwYXJlL2N1c3RvbS9hdHRyaWJ1dGVzJyxcbiAgICBhZGRBdHRyaWJ1dGVzXG4pO1xuXG5hZGRGaWx0ZXIoXG4gICAgJ2VkaXRvci5CbG9ja0VkaXQnLFxuICAgICdibG9ja3NwYXJlL2F0dHJpYnV0ZXMnLFxuICAgIHdpdGhBdHRyaWJ1dGVzXG4pO1xuIiwiZXhwb3J0IGRlZmF1bHQgW1xuICAgICdmYSBmYS1wbHVzJywnZmEgZmEtcGx1cy1jaXJjbGUnLCdmYXMgZmEtYXJyb3ctdXAnXG5dIiwiLy9pbXBvcnQgJy4uL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuXG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnRcblxuaW1wb3J0IEljb25MaXN0RGF0YSBmcm9tICcuLi8uLi8uLi9pbmMvaWNvbi1saWIvYWNjb3JkaW9uLWljb24tbGlzdCc7XG5cbmNsYXNzIEljb25MaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaXNPcGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGZpbHRlclRleHQ6ICcnLFxuICAgICAgICAgICAgc2hvd0ljb25zOiBmYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBkaXNhYmxlVG9nZ2xlLCBjb2xvclNldHRpbmdzLCBpY29uQ29sb3IsIG9uQ29sb3JDaGFuZ2UgfSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJUZXh0IH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIHZhciBmaW5hbERhdGEgPSBbXTtcbiAgICAgICAgaWYgKGZpbHRlclRleHQubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgSWNvbkxpc3REYXRhLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUuaW5jbHVkZXMoZmlsdGVyVGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxEYXRhLnB1c2gobmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluYWxEYXRhID0gSWNvbkxpc3REYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtZmllbGQgYmxvY2tzcGFyZS1maWVsZC1pY29uLWxpc3QgJHtkaXNhYmxlVG9nZ2xlID8gJycgOiAnYmxvY2tzcGFyZS10b2dnbGUtZW5hYmxlZCd9YH0+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMubGFiZWwgJiZcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIHshZGlzYWJsZVRvZ2dsZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlIGxhYmVsPXt0aGlzLnByb3BzLmxhYmVsfSBjbGFzc05hbWU9eydibG9ja3NwYXJlLWljb24tbGlzdC10b2dnbGUnfSB2YWx1ZT17dGhpcy5wcm9wcy52YWx1ZSA/IHRydWUgOiBmYWxzZX0gb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy52YWx1ZSA/ICcnIDogJyAnKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge2NvbG9yU2V0dGluZ3MgJiYgPENvbG9yIGxhYmVsPXtfXygnIENvbG9yJyl9IHZhbHVlPXtpY29uQ29sb3IgfHwgJyNjY2MnfSBvbkNoYW5nZT17KGNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKGNvbG9yKX0gLz59XG5cbiAgICAgICAgICAgICAgICB7KGRpc2FibGVUb2dnbGUgfHwgdGhpcy5wcm9wcy52YWx1ZSAhPSAnJykgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaWNvbi1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3RoaXMuc3RhdGUuZmlsdGVyVGV4dH0gcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBvbkNoYW5nZT17ZSA9PiB0aGlzLnNldFN0YXRlKHsgZmlsdGVyVGV4dDogZS50YXJnZXQudmFsdWUgfSl9IGF1dG9Db21wbGV0ZT1cIm9mZlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pY29uLWxpc3QtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaW5hbERhdGEubWFwKG5hbWUgPT4geyByZXR1cm4gKDxzcGFuIGNsYXNzTmFtZT17dmFsdWUgPT0gbmFtZSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ30gb25DbGljaz17ZSA9PiB7IHRoaXMucHJvcHMub25DaGFuZ2UobmFtZSkgfX0+PHNwYW4gY2xhc3NOYW1lPXtuYW1lfSAvPjwvc3Bhbj4pIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEljb25MaXN0IiwiaW1wb3J0IEljb25MaXN0IGZyb20gXCIuL0ljb25MaXN0LmpzXCI7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge2NvbXBvc2V9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHt3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2h9ID0gd3AuZGF0YTtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7QnV0dG9uLFBhbmVsQm9keSxTZWxlY3RDb250cm9sLFJhbmdlQ29udHJvbH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge0lubmVyQmxvY2tzLCBSaWNoVGV4dCxJbnNwZWN0b3JDb250cm9scyxQYW5lbENvbG9yU2V0dGluZ3N9ID0gd3AuYmxvY2tFZGl0b3I7XG5cblxuY2xhc3MgQWNjb3JkaW9uSXRlbUJsb2NrRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuZmluZFBhcmVudEFjY29yZGlvbiA9IHRoaXMuZmluZFBhcmVudEFjY29yZGlvbi5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge2RldmljZTogJ21kJ31cbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXMsIGNsaWVudElkLCBhdHRyaWJ1dGVzOiB7dW5pcXVlSWR9fSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KVxuICAgICAgICBpZiAoIXVuaXF1ZUlkKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHt1bmlxdWVJZDogX2NsaWVudH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3VuaXF1ZUlkOiBfY2xpZW50fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kUGFyZW50QWNjb3JkaW9uKHJvb3RCbG9jaykge1xuICAgICAgICBjb25zdCB7YmxvY2t9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBpZiAocm9vdEJsb2NrLmlubmVyQmxvY2tzICYmIHJvb3RCbG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJvb3RCbG9jay5pbm5lckJsb2Nrcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgaXRlbS5jbGllbnRJZCA9PT0gYmxvY2suY2xpZW50SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcm9vdEJsb2NrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24oaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBzZXRHbG9iYWxTZXR0aW5ncyh0eXBlLCB2YWwpIHtcbiAgICAgICAgY29uc3Qge3VwZGF0ZUJsb2NrQXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBwYXJlbnRBY2NvcmRpb24gPSB0aGlzLmZpbmRQYXJlbnRBY2NvcmRpb24odGhpcy5wcm9wcy5yb290QmxvY2spO1xuICAgICAgICBpZiAocGFyZW50QWNjb3JkaW9uLmlubmVyQmxvY2tzICYmIHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzKGl0ZW0uY2xpZW50SWQsIHtbdHlwZV06IHZhbH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVSb290QmxvY2sodHlwZSwgdmFsKSB7XG4gICAgICAgIGNvbnN0IHt1cGRhdGVCbG9ja0F0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgcGFyZW50QWNjb3JkaW9uID0gdGhpcy5maW5kUGFyZW50QWNjb3JkaW9uKHRoaXMucHJvcHMucm9vdEJsb2NrKTtcbiAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzKHBhcmVudEFjY29yZGlvbi5jbGllbnRJZCwge1t0eXBlXTogdmFsfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSXRlbU51bWJlcihpbmRleCkge1xuICAgICAgICBjb25zdCB7dXBkYXRlQmxvY2tBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHBhcmVudEFjY29yZGlvbiA9IHRoaXMuZmluZFBhcmVudEFjY29yZGlvbih0aGlzLnByb3BzLnJvb3RCbG9jayk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IHBhcmVudEFjY29yZGlvbi5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyhwYXJlbnRBY2NvcmRpb24uaW5uZXJCbG9ja3NbaW5kZXhdLmNsaWVudElkLCB7aXRlbU51bWJlcjogcGFyZW50QWNjb3JkaW9uLmlubmVyQmxvY2tzW2luZGV4XS5hdHRyaWJ1dGVzLml0ZW1OdW1iZXIgLSAxfSk7XG4gICAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfb25DbGlja0xhYmVsKCkge1xuICAgICAgICBjb25zdCB7Y2xpZW50SWQsIHJvb3RCbG9jaywgYXR0cmlidXRlcywgc2V0QXR0cmlidXRlcywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHBhcmVudEFjY29yZGlvbiA9IHRoaXMuZmluZFBhcmVudEFjY29yZGlvbih0aGlzLnByb3BzLnJvb3RCbG9jayk7XG4gICAgICAgIGNvbnN0IHtpdGVtVG9nZ2xlfSA9IHJvb3RCbG9jay5hdHRyaWJ1dGVzO1xuICAgICAgICBpZiAoaXRlbVRvZ2dsZSkge1xuICAgICAgICAgICAgcGFyZW50QWNjb3JkaW9uLmlubmVyQmxvY2tzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSAoaXRlbS5jbGllbnRJZCAhPSBjbGllbnRJZCkgPyBmYWxzZSA6ICFhdHRyaWJ1dGVzLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMoaXRlbS5jbGllbnRJZCwge2FjdGl2ZTogdmFsfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe2FjdGl2ZTogIWF0dHJpYnV0ZXMuYWN0aXZlfSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICByb290QmxvY2ssIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcixcbiAgICAgICAgICAgICAgICBkZWZhdWx0VGV4dCxcbiAgICAgICAgICAgICAgICBmaWxsVHlwZSxcbiAgICAgICAgICAgICAgICBoZWFkaW5nLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHBhbmVsQ29sb3IsXG4gICAgICAgICAgICAgICAgcGFuZWxBY3RpdmVDb2xvcixcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBwYW5lbEJhY2tHcm91bmRDb2xvclxuICAgICAgICAgICAgfSwgc2V0QXR0cmlidXRlcywgaXNTZWxlY3RlZCwgaXNTZWxlY3RlZEJsb2NrSW5Sb290XG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGxldCBwYW5lbF9hY3RfY29sb3IgPScnO1xuICAgICAgICBpZihwYW5lbEFjdGl2ZUNvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2FjdF9jb2xvciA9IHBhbmVsQWN0aXZlQ29sb3JcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBwYW5lbF9hY3RfY29sb3IgPSBcIiM4YjI0OWNcIlxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhbmVsX2NvbG9yID0gJyMzYzFhNWInO1xuICAgICAgICBpZihwYW5lbENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2NvbG9yID0gcGFuZWxDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RfcGFuZWxfdGV4dF9jb2xvciA9IFwiI2ZmZlwiO1xuXG4gICAgICAgIGlmKGFjdGl2ZVRleHRDb2xvcil7XG4gICAgICAgICAgICBhY3RfcGFuZWxfdGV4dF9jb2xvciA9IGFjdGl2ZVRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYW5lbF90ZXh0X2NvbG9yID0gXCIjZmZmXCI7XG4gICAgICAgIGlmICh0ZXh0Q29sb3Ipe1xuICAgICAgICAgICAgcGFuZWxfdGV4dF9jb2xvciA9dGV4dENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhbmVsX2JvZHlfYmcgPSBcIiNmZmZcIjtcbiAgICAgICAgaWYocGFuZWxCYWNrR3JvdW5kQ29sb3Ipe1xuICAgICAgICAgICAgcGFuZWxfYm9keV9iZyA9cGFuZWxCYWNrR3JvdW5kQ29sb3I7XG4gICAgICAgIH1cblxuXG5cblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBgYmxvY2tzcGFyZS1hY2NvcmRpb24taXRlbSBibG9ja3NwYXJlLXR5cGUtJHtmaWxsVHlwZX0gJHsoYWN0aXZlKSA/IGBibG9ja3NwYXJlLWFjY29yZGlvbi1hY3RpdmVgIDogYGB9YDtcblxuICAgICAgICBjb25zdCBwYW5lbFN0eWxlID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOihhY3RpdmU9PXRydWUpP3BhbmVsX2FjdF9jb2xvcjpwYW5lbF9jb2xvclxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGljb25Qb3NpdGlvbk9wdGlvbiA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGVmdCcsIGxhYmVsOiBfXygnTGVmdCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1yaWdodCcsIGxhYmVsOiBfXygnUmlnaHQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcGFuZWxHYXAgPSB7XG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206bWFyZ2luQm90dG9tICsgJ3B4J1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIHNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbCA9PiB0aGlzLnNldEdsb2JhbFNldHRpbmdzKCd0ZXh0Q29sb3InLCB2YWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aXZlVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbCA9PiB0aGlzLnNldEdsb2JhbFNldHRpbmdzKCdhY3RpdmVUZXh0Q29sb3InLCB2YWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdBY3RpdmUgVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYW5lbEFjdGl2ZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbCA9PiB0aGlzLnNldEdsb2JhbFNldHRpbmdzKCdwYW5lbEFjdGl2ZUNvbG9yJywgdmFsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFBhbmVsIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhbmVsQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdmFsID0+IHRoaXMuc2V0R2xvYmFsU2V0dGluZ3MoJ3BhbmVsQ29sb3InLCB2YWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdQYW5lbCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdJY29uIHNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IHRoaXMuc2V0R2xvYmFsU2V0dGluZ3MoJ25hbWUnLCB2YWwpfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWB9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSAgc3R5bGU9e3BhbmVsR2FwfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1hY2NvcmRpb24tcGFuZWwgJHtpY29uUG9zaXRpb259YH0gc3R5bGU9e3BhbmVsU3R5bGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLXBhbmVsLWhhbmRsZXJcIiBvbkNsaWNrPXsoKSA9PiB0aGlzLl9vbkNsaWNrTGFiZWwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogKGFjdGl2ZSk/YWN0X3BhbmVsX3RleHRfY29sb3I6cGFuZWxfdGV4dF9jb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KG5hbWUpICYmIDxzcGFuIGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYWNjb3JkaW9uLWljb24gICR7bmFtZX1gfS8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnQWRkIEFjY29yZGlvbiBJdGVtLi4nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLXBhbmVsLWhhbmRsZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkaW5nOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9e1snYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMudXBkYXRlTGFiZWwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGlzU2VsZWN0ZWRCbG9ja0luUm9vdCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEFjY29yZGlvbiA9IHRoaXMuZmluZFBhcmVudEFjY29yZGlvbih0aGlzLnByb3BzLnJvb3RCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50QWNjb3JkaW9uICYmIHBhcmVudEFjY29yZGlvbi5jbGllbnRJZCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJdGVtTnVtYmVyKGl0ZW1OdW1iZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMucmVtb3ZlQmxvY2sodGhpcy5wcm9wcy5jbGllbnRJZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50QWNjb3JkaW9uLmlubmVyQmxvY2tzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMucmVtb3ZlQmxvY2socGFyZW50QWNjb3JkaW9uLmNsaWVudElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLWl0ZW0tcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzTmFtZT1cImZhIGZhLXRpbWVzXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1ib2R5XCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6cGFuZWxfYm9keV9iZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0gZGF0YS1iZz17cGFuZWxfYm9keV9iZ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXsoZGVmYXVsdFRleHQpID8gW1snY29yZS9wYXJhZ3JhcGgnLCB7Y29udGVudDogZGVmYXVsdFRleHQsY3VzdG9tRm9udFNpemU6MTh9XV0gOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3Qge2NsaWVudElkfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7Z2V0QmxvY2tIaWVyYXJjaHlSb290Q2xpZW50SWQsIGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9ja30gPSBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogZ2V0QmxvY2soY2xpZW50SWQpLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290OiBpc0Jsb2NrU2VsZWN0ZWQoY2xpZW50SWQpIHx8IGhhc1NlbGVjdGVkSW5uZXJCbG9jayhjbGllbnRJZCwgdHJ1ZSksXG4gICAgICAgICAgICByb290QmxvY2s6IGNsaWVudElkID8gZ2V0QmxvY2soZ2V0QmxvY2tIaWVyYXJjaHlSb290Q2xpZW50SWQoY2xpZW50SWQpKSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgfSksXG4gICAgd2l0aERpc3BhdGNoKChkaXNwYXRjaCkgPT4ge1xuICAgICAgICBjb25zdCB7cmVtb3ZlQmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlc30gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbW92ZUJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShBY2NvcmRpb25JdGVtQmxvY2tFZGl0KTtcbiIsImNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcywgUmljaFRleHQgfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdW5pcXVlSWQsIGl0ZW1OdW1iZXIsIGhlYWRpbmcsIG5hbWUsIGljb25Qb3NpdGlvbiwgZmlsbFR5cGUsXG4gICAgICAgICAgICBhY3RpdmUsIG9wZW5GaXJzdEl0ZW0scGFuZWxDb2xvcixwYW5lbEFjdGl2ZUNvbG9yLHRleHRDb2xvcixtYXJnaW5Cb3R0b20sYWN0aXZlVGV4dENvbG9yLHBhbmVsQmFja0dyb3VuZENvbG9yLCBkZWZhdWx0VGV4dFNpemUgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcblxuXG4gICAgICAgIGxldCBwYW5lbF9hY3RfY29sb3IgPScnO1xuICAgICAgICBpZihwYW5lbEFjdGl2ZUNvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2FjdF9jb2xvciA9IHBhbmVsQWN0aXZlQ29sb3JcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBwYW5lbF9hY3RfY29sb3IgPSBcIiM4YjI0OWNcIlxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhbmVsX2NvbG9yID0gJyMzYzFhNWInO1xuICAgICAgICBpZihwYW5lbENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2NvbG9yID0gcGFuZWxDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RfcGFuZWxfdGV4dF9jb2xvciA9IFwiI2ZmZlwiO1xuXG4gICAgICAgIGlmKGFjdGl2ZVRleHRDb2xvcil7XG4gICAgICAgICAgICBhY3RfcGFuZWxfdGV4dF9jb2xvciA9IGFjdGl2ZVRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYW5lbF90ZXh0X2NvbG9yID0gXCIjZmZmXCI7XG4gICAgICAgIGlmICh0ZXh0Q29sb3Ipe1xuICAgICAgICAgICAgcGFuZWxfdGV4dF9jb2xvciA9dGV4dENvbG9yO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBgYmxvY2tzcGFyZS1hY2NvcmRpb24taXRlbSBibG9ja3NwYXJlLXR5cGUtJHtmaWxsVHlwZX0gYDtcblxuXG4gICAgICAgICAgICBjb25zdCBwYW5lbFN0eWxlID0ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpwYW5lbF9jb2xvclxuICAgICAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwYW5lbEdhcCA9IHtcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTptYXJnaW5Cb3R0b20rJ3B4J1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBwYW5lbF9ib2R5X2JnID0gXCIjZmZmXCI7XG4gICAgICAgIGlmKHBhbmVsQmFja0dyb3VuZENvbG9yKXtcbiAgICAgICAgICAgIHBhbmVsX2JvZHlfYmcgPXBhbmVsQmFja0dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrLSR7dW5pcXVlSWR9YH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gZGF0YS1hY3QtY29sb3I9e2FjdF9wYW5lbF90ZXh0X2NvbG9yfSBkYXRhLXR4dC1jb2xvcj17cGFuZWxfdGV4dF9jb2xvcn0gZGF0YS1hY3RpdmU9e3BhbmVsX2FjdF9jb2xvcn0gZGF0YS1wYW49e3BhbmVsX2NvbG9yfSBzdHlsZT17cGFuZWxHYXB9ID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWFjY29yZGlvbi1wYW5lbCAgJHtpY29uUG9zaXRpb259YH0gc3R5bGU9e3BhbmVsU3R5bGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hY2NvcmRpb24tcGFuZWwtaGFuZGxlclwiIHJvbGU9XCJidXR0b25cIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYW5lbF90ZXh0X2NvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KG5hbWUgKSAmJiA8c3BhbiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWFjY29yZGlvbi1pY29uICR7bmFtZX1gfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudCB0YWdOYW1lPVwic3BhblwiIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWNjb3JkaW9uLXBhbmVsLWhhbmRsZXItbGFiZWxcIiB2YWx1ZT17aGVhZGluZ30gLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWFjY29yZGlvbi1ib2R5XCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpwYW5lbF9ib2R5X2JnXG4gICAgICAgICAgICAgICAgICAgIH0gfSBkYXRhLWJnPXtwYW5lbF9ib2R5X2JnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU2F2ZSIsImltcG9ydCAnLi4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCAnLi4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9FZGl0J1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9TYXZlJztcblxuY29uc3Qge19ffSA9IHdwLmkxOG5cbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbmNvbnN0IHtjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5leHBvcnQgY29uc3QgYWNjb3JkaW9uSXRlbVNldHRpbmdzID0ge1xuICAgIHRpdGxlOiBfXygnQWNjb3JkaW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0Rpc3BsYXkgY3JlYXRpdmUgY29sbGFwc2libGUgdGV4dHMgQWNjb3JkaW9uLicsICdibG9ja3NwYXJlJyksXG4gICAgcGFyZW50OiBbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1hY2NvcmRpb24nXSxcbiAgICBpY29uOiAnbGluaycsXG4gICAgY2F0ZWdvcnksXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGluc2VydGVyOiBmYWxzZSxcbiAgICAgICAgcmV1c2FibGU6IGZhbHNlLFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6IEVkaXQsXG4gICAgc2F2ZTogU2F2ZVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2Jsb2Nrc3BhcmUvYWNjb3JkaW9uLWl0ZW0nLCBhY2NvcmRpb25JdGVtU2V0dGluZ3MpO1xuIiwiY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgSWNvbkJ1dHRvbiB9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHsgIElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgY3JlYXRlQmxvY2sgfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgd2l0aFNlbGVjdCwgd2l0aERpc3BhdGNoIH0gPSB3cC5kYXRhO1xuXG5pbXBvcnQgeyBhY2NvcmRpb25JdGVtU2V0dGluZ3MgfSBmcm9tICcuL2lubmVyLWl0ZW0nO1xuXG5jbGFzcyBBY2NvcmRpb25CbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgY29uc3QgeyBzZXRBdHRyaWJ1dGVzLCBjbGllbnRJZCwgYXR0cmlidXRlczogeyB1bmlxdWVJZCB9IH0gPSB0aGlzLnByb3BzXG4gICAgICAgIGNvbnN0IF9jbGllbnQgPSBjbGllbnRJZC5zdWJzdHIoMCwgNilcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydEFjY29yZGlvbkl0ZW0oKSB7XG4gICAgICAgIGxldCBuZXdCbG9ja0F0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQsIGluc2VydEJsb2NrLCBibG9jayB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGJsb2NrLmlubmVyQmxvY2tzICYmIGJsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEJsb2NrQXR0cmlidXRlcyA9IGJsb2NrLmlubmVyQmxvY2tzW2Jsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCAtIDFdLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBjb25zdCBpdGVtTnVtYmVyID0gbGFzdEJsb2NrQXR0cmlidXRlcy5pdGVtTnVtYmVyICsgMTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBhY2NvcmRpb25JdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIGxhc3RCbG9ja0F0dHJpYnV0ZXMsIHsgaXRlbU51bWJlciwgaGVhZGluZywgYWN0aXZlOiBmYWxzZSwgZGVmYXVsdFRleHQ6ICcnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gYWNjb3JkaW9uSXRlbVNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJsb2NrKGNyZWF0ZUJsb2NrKCdibG9ja3NwYXJlL2FjY29yZGlvbi1pdGVtJywgbmV3QmxvY2tBdHRyaWJ1dGVzKSwgdW5kZWZpbmVkLCBjbGllbnRJZCk7XG4gICAgfVxuXG4gICAgZ2V0QWNjb3JkaW9uVGVtcGxhdGUgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXVxuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbXMgPSBhdHRyaWJ1dGVzLmRlZmF1bHRJdGVtcztcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBkZWZhdWx0SXRlbXM7IGsrKykge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9ICdJcHNhbSBwZXIgZG9sb3JlcyBtaW51cyBuYXRvcXVlPyBSdXRydW0gZG9sb3JlbSB2b2x1cHRhdGVzIGV1aXNtb2QgcGhhcmV0cmEhIFJob25jdXMgZGlzdGluY3RpbyBjdXBpZGl0YXRlIGFjY3VzYW50aXVtLiBDaWxsdW0gYWxpcXVpZC4nO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goWydibG9ja3NwYXJlL2FjY29yZGlvbi1pdGVtJywgeyBpdGVtTnVtYmVyOiBrLCBkZWZhdWx0VGV4dDogY29udGVudCxjdXN0b21Gb250U2l6ZToxOCB9XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IHVuaXF1ZUlkLCB9IH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cblxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrLWFjY29yZGlvbiBibG9ja3NwYXJlLWJsb2NrLSR7dW5pcXVlSWR9YH0+XG4gICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e3RoaXMuZ2V0QWNjb3JkaW9uVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvYWNjb3JkaW9uLWl0ZW0nXX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hY2NvcmRpb24tYWRkLWl0ZW0gYmxvY2tzcGFyZS1hZGQtbW9yZS1pdGVtXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249eydpbnNlcnQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEFjY29yZGlvbkl0ZW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnQWRkIEFjY29yZGlvbiBJdGVtJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0ZyYWdtZW50ID5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRJZCB9ID0gb3duUHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZ2V0QmxvY2ssIGlzQmxvY2tTZWxlY3RlZCwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrIH0gPSBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogZ2V0QmxvY2soY2xpZW50SWQpLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290OiBpc0Jsb2NrU2VsZWN0ZWQoY2xpZW50SWQpIHx8IGhhc1NlbGVjdGVkSW5uZXJCbG9jayhjbGllbnRJZCwgdHJ1ZSksXG4gICAgICAgIH07XG4gICAgfSksXG4gICAgd2l0aERpc3BhdGNoKChkaXNwYXRjaCkgPT4ge1xuICAgICAgICBjb25zdCB7IGluc2VydEJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMgfSA9IGRpc3BhdGNoKCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5zZXJ0QmxvY2ssXG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICB9KSxcbl0pKEFjY29yZGlvbkJsb2NrKVxuIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHVuaXF1ZUlkLCBpdGVtVG9nZ2xlfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25DbGFzcyA9ICdibG9ja3NwYXJlLWJsb2NrJztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYmxvY2stYWNjb3JkaW9uICR7aW50ZXJhY3Rpb25DbGFzc30gYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfWA7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSB9IGRhdGEtaXRlbS10b2dnbGU9e2l0ZW1Ub2dnbGV9PlxuICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTYXZlOyIsIlxuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBBY2NvcmRpb25CbG9jayBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuaW1wb3J0IGljb25zIGZyb20gJy4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmNvbnN0IHsgbmFtZSwgY2F0ZWdvcnksYXR0cmlidXRlcyB9ID0gbWV0YWRhdGE7XG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBBY2NvcmRpb24nLCdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdEaXNwbGF5IGNyZWF0aXZlIGNvbGxhcHNpYmxlIEFjY29yZGlvbi4nLCdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgIGljb246aWNvbnMuYWNjb3JkaW9uLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdhY2NvcmRpb24nLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29sbGFwc2libGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29sbGFwc2UnLCAnYmxvY2tzcGFyZScpXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBodG1sOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiBmYWxzZSxcbiAgICAgICAgYWxpZ246IFsnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCddLFxuICAgIH0sXG5cbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcbiAgICBlZGl0OkFjY29yZGlvbkJsb2NrLFxuICAgIHNhdmU6U2F2ZVxufSk7IiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJTQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXsge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IHRoaXMucHJvcHMuYXR0cmlidXRlcy5zZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWJ1dHRvbidcbiAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSIsImNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge1xuICAgIFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCU2J1dHRvblNldHRpbmdzKCBwcm9wcyApIHtcbiAgICBjb25zdCB7XG4gICAgICAgIGVuYWJsZUJ1dHRvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICBvbkNoYW5nZUJ1dHRvbkNvbG9yID0gKCkgPT4ge30sXG5cbiAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICBvbkNoYW5nZUJ1dHRvblRleHRDb2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ1dHRvblNpemUsXG4gICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgIG9uQ2hhbmdlQnV0dG9uU2l6ZSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ1dHRvblNoYXBlLFxuICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgb25DaGFuZ2VCdXR0b25TaGFwZSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ1dHRvblN0eWxlLFxuICAgICAgICBidXR0b25TdHlsZSxcbiAgICAgICAgb25DaGFuZ2VCb3JkZXJTdHlsZSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ1dHRvblRhcmdldCxcbiAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICBvbkNoYW5nZUJ1dHRvblRhcmdldCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICBvbmNoYW5nZUJvcmRlckNvbG9yID0gKCkgPT4ge30sXG5cbiAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yLFxuICAgICAgICBvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ0bkJvcmRlcldpZHRoLFxuICAgICAgICBidG5Cb3JkZXJXaWR0aCxcbiAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZUJ0bkZvbnRXZWlnaHQsXG4gICAgICAgIGJ0bkZvbnRXZWlnaHQsXG4gICAgICAgIG9uY2hhbmdlQnRuRm9udFdlaWdodCA9ICgpID0+e30sXG5cblxuICAgIH0gPSBwcm9wcztcblxuICAgIC8vIEJ1dHRvbiBzaXplIHZhbHVlc1xuICAgIGNvbnN0IGJ1dHRvblNpemVPcHRpb25zID0gW1xuICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1idXR0b24tc2l6ZS1zbWFsbCcsIGxhYmVsOiBfXyggJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnICkgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtYnV0dG9uLXNpemUtbWVkaXVtJywgbGFiZWw6IF9fKCAnTWVkaXVtJywgJ2Jsb2Nrc3BhcmUnICkgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtYnV0dG9uLXNpemUtbGFyZ2UnLCBsYWJlbDogX18oICdMYXJnZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdibG9ja3NwYXJlLWJ1dHRvbi1zaXplLWV4dHJhbGFyZ2UnLCBsYWJlbDogX18oICdFeHRyYSBMYXJnZScsICdibG9ja3NwYXJlJyApIH1cbiAgICBdO1xuXG4gICAgLy8gQnV0dG9uIHNoYXBlXG4gICAgY29uc3QgYnV0dG9uU2hhcGVPcHRpb25zID0gW1xuICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1idXR0b24tc2hhcGUtc3F1YXJlJywgbGFiZWw6IF9fKCAnU3F1YXJlJywgJ2Jsb2Nrc3BhcmUnICkgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtYnV0dG9uLXNoYXBlLXJvdW5kZWQnLCBsYWJlbDogX18oICdSb3VuZGVkIFNxdWFyZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdibG9ja3NwYXJlLWJ1dHRvbi1zaGFwZS1jaXJjdWxhcicsIGxhYmVsOiBfXyggJ0NpcmN1bGFyJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgIF07XG5cbiAgICBjb25zdCBidXR0b25TdHlsZU9wdGlvbnMgPSBbXG4gICAgICAgIHsgdmFsdWU6ICdub25lJywgbGFiZWw6IF9fKCAnRmlsbCcsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgIHsgdmFsdWU6ICdzb2xpZCcsIGxhYmVsOiBfXyggJ0JvcmRlcicsICdibG9ja3NwYXJlJyApIH0sXG5cbiAgICBdO1xuXG4gICAgY29uc3QgYnRuRm9udFdpZ2h0T3B0aW9ucyA9IFtcbiAgICAgICAge3ZhbHVlOiAgJ25vcm1hbCcsIGxhYmVsOl9fKCdOb3JtYWwnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICAnYm9sZCcsIGxhYmVsOl9fKCdCb2xkJywnYmxvY2tzcGFyZScpfVxuICAgIF1cblxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICB7IGZhbHNlICE9IGVuYWJsZUJ1dHRvblRhcmdldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ09wZW4gbGluayBpbiBuZXcgd2luZG93JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgYnV0dG9uVGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZUJ1dHRvblRhcmdldCB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgeyBmYWxzZSAhPSBlbmFibGVCdXR0b25TaXplICYmIChcbiAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQnV0dG9uIFNpemUnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uU2l6ZSB9XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBidXR0b25TaXplT3B0aW9ucy5tYXAoICh7IHZhbHVlLCBsYWJlbCB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIH0pICkgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlQnV0dG9uU2l6ZSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgeyBmYWxzZSAhPSBlbmFibGVCdXR0b25TaGFwZSAmJiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0J1dHRvbiBTaGFwZScsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBidXR0b25TaGFwZU9wdGlvbnMubWFwKCAoeyB2YWx1ZSwgbGFiZWwgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICB9KSApIH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZUJ1dHRvblNoYXBlIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG5cbiAgICAgICAgICAgIHtmYWxzZSAhPSBlbmFibGVCdXR0b25TdHlsZSAmJlxuXG4gICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQm9yZGVyIFN0eWxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17YnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17YnV0dG9uU3R5bGVPcHRpb25zLm1hcCgoe3ZhbHVlLCBsYWJlbH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUJvcmRlclN0eWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAge2ZhbHNlICE9IGVuYWJsZUJ0bkJvcmRlcldpZHRoICYmICBidXR0b25TdHlsZT09PSdzb2xpZCcmJiAoXG5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQm9yZGVyIFdpZHRoJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2J0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgICAgIG1heD17NX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uY2hhbmdlYnRuQm9yZGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtmYWxzZSAhPWVuYWJsZUJ0bkZvbnRXZWlnaHQgJiZcbiAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0ZvbnQgV2VpZ2h0JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgIHZhbHVlPXsgYnRuRm9udFdlaWdodCB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17IGJ0bkZvbnRXaWdodE9wdGlvbnMubWFwKCAoeyB2YWx1ZSwgbGFiZWwgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICB9KSApIH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uY2hhbmdlQnRuRm9udFdlaWdodCB9XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB7IGZhbHNlICE9IGVuYWJsZUJ1dHRvbkJhY2tncm91bmRDb2xvciAmJiBidXR0b25TdHlsZT09PSdub25lJyYmIChcbiAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdCdXR0b24gQ29sb3IgT3B0aW9ucycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQnV0dG9uQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCdXR0b24gQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCdXR0b24gVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICB7ICBidXR0b25TdHlsZT09PSdzb2xpZCcmJiAoXG4gICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXsgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25jaGFuZ2VCb3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCb3JkZXIgQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYm9yZGVyQnRuVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdUZXh0cyBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0gfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICkgfVxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG59XG4iLCJjb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7XG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEdyYWRpZW50Q29sb3JzIChwcm9wcykge1xuICAgIGNvbnN0IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yMixcbiAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgIGNvbG9yTG9jYXRpb24yLFxuXG4gICAgICAgIG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMSA9ICgpID0+IHtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjIgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VHcmFkaWVudEFuZ2xlID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjEgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMiA9ICgpID0+IHt9XG4gICAgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcblxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdHcmFkaWVudCBDb2xvciBPcHRpb24gJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvciAjMScsICdibG9ja3NwYXJlJylcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yICMyJywgJ2Jsb2Nrc3BhcmUnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG4gICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgbGFiZWw9e19fKCdHcmFkaWVudCBBbmdsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlR3JhZGllbnRBbmdsZX1cbiAgICAgICAgICAgICAgICBtaW49ey0xODB9XG4gICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICBtYXg9ezE4MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgbGFiZWw9e19fKCdMb2NhdGlvbiAjMScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUNvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnTG9jYXRpb24gIzInLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VDb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG5cbiAgICApO1xufSIsImltcG9ydCBCU2J1dHRvblNldHRpbmdzIGZyb20gXCIuL2J1dHRvbi1zZXR0aW5nc1wiO1xuaW1wb3J0IEdyYWRpZW50Q29sb3JzIGZyb20gXCIuLi91dGlscy9jb21wb25lbnQvZ3JhZGllbnRcIjtcblxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24xLFxuICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGhcbiAgICAgICAgfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgeyBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQnV0dG9uIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTYnV0dG9uU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW4gaW4gbmV3IHdpbmRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblRhcmdldD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0PXsgYnV0dG9uVGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRhcmdldD17IHZhbHVlID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyBidXR0b25UYXJnZXQ6ICEgYnV0dG9uVGFyZ2V0IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgPSB7ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VHcmFkaWVudCA9eyBlbmFibGVHcmFkaWVudCA9PiBzZXRBdHRyaWJ1dGVzKHtlbmFibGVHcmFkaWVudH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaXplPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemU9eyBidXR0b25TaXplIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblNpemU9eyBidXR0b25TaXplID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaXplIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNoYXBlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlPXsgYnV0dG9uU2hhcGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2hhcGUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvbkNvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIHRleHQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0Q29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU3R5bGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlclN0eWxlPXtidXR0b25TdHlsZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU3R5bGUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj17Ym9yZGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCb3JkZXJDb2xvcj17Ym9yZGVyQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQnRuVGV4dENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Cb3JkZXJXaWR0aD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGg9e2J0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlYnRuQm9yZGVyV2lkdGggPSB7YnRuQm9yZGVyV2lkdGggPT4gc2V0QXR0cmlidXRlcyh7YnRuQm9yZGVyV2lkdGh9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkZvbnRXZWlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCdG5Gb250V2VpZ2h0PXtidG5Gb250V2VpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoe2J0bkZvbnRXZWlnaHR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICB7YnV0dG9uU3R5bGU9PT0nbm9uZScmJlxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VuYWJsZSBHcmFkaWVudCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50OiAhZW5hYmxlR3JhZGllbnR9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50ICYmIGJ1dHRvblN0eWxlPT09J25vbmUnJiZcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmFkaWVudENvbG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjE9e2JhY2tncm91bmRDb2xvcjEgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMj17YmFja2dyb3VuZENvbG9yMiA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3IyfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VHcmFkaWVudEFuZ2xlPXtncmFkaWVudEFuZ2xlID0+IHNldEF0dHJpYnV0ZXMoe2dyYWRpZW50QW5nbGV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMT17Y29sb3JMb2NhdGlvbjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yTG9jYXRpb24xfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjI9e2NvbG9yTG9jYXRpb24yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMiA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMn0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiY29uc3QgYnV0dG9uU3R5bGVPcHRpb24gPSAoYXR0cmlidXRlcyk9PntcbiAgICBsZXQgYnV0dG9uU3R5bGVzID0gJyc7XG5cbiAgICBpZiAoYXR0cmlidXRlcy5idXR0b25TdHlsZT09PSdub25lJyl7XG5cbiAgICAgICAgaWYoYXR0cmlidXRlcy5lbmFibGVHcmFkaWVudCAgPT0gdHJ1ZSl7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGF0dHJpYnV0ZXMuZ3JhZGllbnRBbmdsZSsnZGVnJztcbiAgICAgICAgICAgIGNvbnN0IGxvY2ExICA9IGF0dHJpYnV0ZXMuY29sb3JMb2NhdGlvbjErJyUnO1xuICAgICAgICAgICAgY29uc3QgbG9jYTIgID0gYXR0cmlidXRlcy5jb2xvckxvY2F0aW9uMisnJSc7XG4gICAgICAgICAgICBidXR0b25TdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOmBsaW5lYXItZ3JhZGllbnQoJHthbmdsZX0sJHthdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjE/YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IxOicjM0IxQTVCJ30gJHtsb2NhMX0sJHthdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjI/YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IyOicjOEIyNDlDJ30gJHtsb2NhMn0pYCxcbiAgICAgICAgICAgICAgICBjb2xvcjogKGF0dHJpYnV0ZXMuYnV0dG9uVGV4dENvbG9yKT9hdHRyaWJ1dGVzLmJ1dHRvblRleHRDb2xvcjonI2ZmZicsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDphdHRyaWJ1dGVzLmJ0bkZvbnRXZWlnaHQsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6YXR0cmlidXRlcy5idG5Cb3JkZXJXaWR0aCtcInB4XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBidXR0b25TdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IChhdHRyaWJ1dGVzLmJ1dHRvblRleHRDb2xvcik/YXR0cmlidXRlcy5idXR0b25UZXh0Q29sb3I6JyNmZmYnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjooYXR0cmlidXRlcy5idXR0b25CYWNrZ3JvdW5kQ29sb3IpP2F0dHJpYnV0ZXMuYnV0dG9uQmFja2dyb3VuZENvbG9yOicjM2MxYTViJyxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OmF0dHJpYnV0ZXMuYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDphdHRyaWJ1dGVzLmJ0bkJvcmRlcldpZHRoK1wicHhcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgIH1lbHNle1xuICAgICAgICBidXR0b25TdHlsZXMgPXtcbiAgICAgICAgICAgIGNvbG9yOihhdHRyaWJ1dGVzLmJvcmRlckJ0blRleHRDb2xvcik/YXR0cmlidXRlcy5ib3JkZXJCdG5UZXh0Q29sb3I6JyM0MDQwNDAnLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOid0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogKGF0dHJpYnV0ZXMuYm9yZGVyQ29sb3IpP2F0dHJpYnV0ZXMuYm9yZGVyQ29sb3I6JyMzYzFhNWInLFxuICAgICAgICAgICAgYm9yZGVyU3R5bGU6YXR0cmlidXRlcy5idXR0b25TdHlsZSxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6YXR0cmlidXRlcy5idG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6YXR0cmlidXRlcy5idG5Cb3JkZXJXaWR0aCtcInB4XCJcblxuXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHJldHVybiBidXR0b25TdHlsZXM7XG59XG5leHBvcnQgZGVmYXVsdCBidXR0b25TdHlsZU9wdGlvbjsiLCJjb25zdCBidXR0b25BdHRyaWJ1dGVzID17XG5cbiAgICBzZWN0aW9uQWxpZ25tZW50OntcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJjZW50ZXJcIlxuICAgIH0sXG5cbiAgICBidXR0b25UZXh0OiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiR2V0IFN0YXJ0ZWRcIlxuICAgIH0sXG4gICAgYnV0dG9uVXJsOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIHNvdXJjZTogXCJhdHRyaWJ1dGVcIixcbiAgICAgICAgc2VsZWN0b3I6IFwiYVwiLFxuICAgICAgICBhdHRyaWJ1dGU6IFwiaHJlZlwiXG4gICAgfSxcblxuICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiMzYzFhNWJcIlxuICAgIH0sXG4gICAgYnV0dG9uVGV4dENvbG9yOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiI2ZmZlwiXG4gICAgfSxcbiAgICBidXR0b25TaXplOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiYmxvY2tzcGFyZS1idXR0b24tc2l6ZS1zbWFsbFwiXG4gICAgfSxcbiAgICBidXR0b25TaGFwZToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImJsb2Nrc3BhcmUtYnV0dG9uLXNoYXBlLXJvdW5kZWRcIlxuICAgIH0sXG4gICAgYnV0dG9uVGFyZ2V0OiB7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG5cbiAgICBidXR0b25TdHlsZToge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIm5vbmVcIlxuICAgIH0sXG4gICAgYm9yZGVyQ29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjM2MxYTViXCJcbiAgICB9LFxuICAgIGJvcmRlckJ0blRleHRDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiM0MDQwNDBcIlxuICAgIH0sXG4gICAgZW5hYmxlR3JhZGllbnQ6IHtcbiAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kQ29sb3IxOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiIzNCMUE1QlwiXG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kQ29sb3IyOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiIzhCMjQ5Q1wiXG4gICAgfSxcbiAgICBncmFkaWVudEFuZ2xlOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IC05MFxuICAgIH0sXG4gICAgY29sb3JMb2NhdGlvbjE6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMzBcbiAgICB9LFxuICAgIGNvbG9yTG9jYXRpb24yOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDcwXG4gICAgfVxuICAgICxidG5Cb3JkZXJXaWR0aDp7XG4gICAgICAgIHR5cGU6XCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDoxXG4gICAgfSxcbiAgICBidG5Gb250V2VpZ2h0OntcbiAgICAgICAgdHlwZTpcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0Olwibm9ybWFsXCJcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ1dHRvbkF0dHJpYnV0ZXM7IiwiaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgQlNCdXR0b24gZnJvbSAnLi9lZGl0JztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vaW5zcGVjdG9yXCI7XG5pbXBvcnQgYnV0dG9uU3R5bGVPcHRpb24gZnJvbSAnLi4vdXRpbHMvc3R5bGVzJztcbmNvbnN0IHtuYW1lLGNhdGVnb3J5fSA9bWV0YWRhdGE7XG5pbXBvcnQgYnV0dG9uQXR0cmlidXRlcyBmcm9tICAnLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBVUkxJbnB1dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3Qge1xuICAgIEljb25CdXR0b24sXG4gICAgRGFzaGljb25cbn0gPSB3cC5jb21wb25lbnRzO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNsYXNzIEJTQnV0dG9uQmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlID0ge1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24gKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybltcbiAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBzZWN0aW9uQWxpZ25tZW50IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHNlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPixcbiAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgLz4sXG5cbiAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnRoaXMucHJvcHMgfT5cbiAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnQnV0dG9uIHRleHQuLi4nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9eyBbXSB9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBidG5TdHlsZSB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0OiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQlNCdXR0b24+LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAga2V5PVwiZm9ybS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgYGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7c2VjdGlvbkFsaWdubWVudH1gfVxuICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkgfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxVUkxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnV0dG9uLXVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVXJsOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdG9yLWJyZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdCdXknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG59XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIEJ1dHRvbicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdQcm9tcHQgdmlzaXRvcnMgdG8gdGFrZSBhY3Rpb24gd2l0aCBtdWx0aXBsZSBidXR0b25zLCBzaWRlIGJ5IHNpZGUuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuYnV0dG9uLFxuICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAuLi5idXR0b25BdHRyaWJ1dGVzXG4gICAgfSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYnV0dG9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2N0YScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjYWxsIHRvIGFjdGlvbicsICdibG9ja3NwYXJlJyksXG4gICAgXSxcbiAgICBleGFtcGxlOntcbiAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50OlwiY2VudGVyXCIsXG4gICAgICAgICAgICBidXR0b25UZXh0Ol9fKFwiR2V0IFN0YXJ0ZWRcIixcImJsb2Nrc3BhcmVcIiksXG4gICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I6XCIjM2MxYTViXCIsXG4gICAgICAgICAgICBidXR0b25UZXh0Q29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICBidXR0b25TaXplOlwiYmxvY2tzcGFyZS1idXR0b24tc2l6ZS1zbWFsbFwiLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGU6XCJibG9ja3NwYXJlLWJ1dHRvbi1zaGFwZS1yb3VuZGVkXCJcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZWRpdDogQlNCdXR0b25CbG9jayxcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cblxuICAgICAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uIChwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QlNCdXR0b24geyAuLi5wcm9wcyB9PlxuICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD17IGJ1dHRvblRhcmdldCA/ICdfYmxhbmsnIDogbnVsbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPXsgYnV0dG9uVGFyZ2V0ID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogbnVsbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBidG5TdHlsZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICk7XG4gICAgfSxcblxufSk7IiwiY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IFJhbmdlQ29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFkZGluZyggcHJvcHMgKSB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIC8vIFBhZGRpbmcgcHJvcHNcbiAgICAgICAgcGFkZGluZyxcbiAgICAgICAgcGFkZGluZ1RpdGxlLFxuICAgICAgICBwYWRkaW5nSGVscCxcbiAgICAgICAgcGFkZGluZ01pbixcbiAgICAgICAgcGFkZGluZ01heCxcbiAgICAgICAgcGFkZGluZ0VuYWJsZSxcbiAgICAgICAgb25DaGFuZ2VQYWRkaW5nID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyB0b3AgcHJvcHNcbiAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgcGFkZGluZ1RvcE1pbixcbiAgICAgICAgcGFkZGluZ1RvcE1heCxcbiAgICAgICAgcGFkZGluZ0VuYWJsZVRvcCxcbiAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyByaWdodCBwcm9wc1xuICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgIHBhZGRpbmdSaWdodE1pbixcbiAgICAgICAgcGFkZGluZ1JpZ2h0TWF4LFxuICAgICAgICBwYWRkaW5nRW5hYmxlUmlnaHQsXG4gICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0ID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyBib3R0b20gcHJvcHNcbiAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgcGFkZGluZ0JvdHRvbU1pbixcbiAgICAgICAgcGFkZGluZ0JvdHRvbU1heCxcbiAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbSxcbiAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyBsZWZ0IHByb3BzXG4gICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICBwYWRkaW5nTGVmdE1pbixcbiAgICAgICAgcGFkZGluZ0xlZnRNYXgsXG4gICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0LFxuICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0ID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyB2ZXJ0aWNhbCBwcm9wc1xuICAgICAgICBwYWRkaW5nVmVydGljYWwsXG4gICAgICAgIHBhZGRpbmdFbmFibGVWZXJ0aWNhbCxcbiAgICAgICAgcGFkZGluZ1ZlcnRpY2FsTWluLFxuICAgICAgICBwYWRkaW5nVmVydGljYWxNYXgsXG4gICAgICAgIG9uQ2hhbmdlUGFkZGluZ1ZlcnRpY2FsID0gKCkgPT4ge30sXG5cbiAgICAgICAgLy8gUGFkZGluZyBob3Jpem9udGFsIHByb3BzXG4gICAgICAgIHBhZGRpbmdIb3Jpem9udGFsLFxuICAgICAgICBwYWRkaW5nRW5hYmxlSG9yaXpvbnRhbCxcbiAgICAgICAgcGFkZGluZ0hvcml6b250YWxNaW4sXG4gICAgICAgIHBhZGRpbmdIb3Jpem9udGFsTWF4LFxuICAgICAgICBvbkNoYW5nZVBhZGRpbmdIb3Jpem9udGFsID0gKCkgPT4ge31cbiAgICB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICB7IHBhZGRpbmdFbmFibGUgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBwYWRkaW5nVGl0bGUgPyBwYWRkaW5nVGl0bGUgOiBfXyggJ1BhZGRpbmcnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGhlbHA9eyBwYWRkaW5nSGVscCA/IHBhZGRpbmdIZWxwIDogbnVsbCB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZyB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdNaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBwYWRkaW5nTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZVBhZGRpbmcgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZVRvcCAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnUGFkZGluZyBUb3AnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZ1RvcCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdUb3BNaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBwYWRkaW5nVG9wTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZVBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZVJpZ2h0ICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdQYWRkaW5nIFJpZ2h0JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHBhZGRpbmdSaWdodCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdSaWdodE1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IHBhZGRpbmdSaWdodE1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VQYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZUJvdHRvbSAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnUGFkZGluZyBCb3R0b20nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZ0JvdHRvbSB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdCb3R0b21NaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBwYWRkaW5nQm90dG9tTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZVBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZUxlZnQgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1BhZGRpbmcgTGVmdCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwYWRkaW5nTGVmdCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdMZWZ0TWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgcGFkZGluZ0xlZnRNYXggfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlUGFkZGluZ0xlZnQgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZVZlcnRpY2FsICYmIChcbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdQYWRkaW5nIFZlcnRpY2FsJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHBhZGRpbmdWZXJ0aWNhbCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdWZXJ0aWNhbE1pbiB9XG4gICAgICAgICAgICAgICAgICAgIG1heD17IHBhZGRpbmdWZXJ0aWNhbE1heCB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgb25DaGFuZ2VQYWRkaW5nVmVydGljYWwgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgICAgIHsgcGFkZGluZ0VuYWJsZUhvcml6b250YWwgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1BhZGRpbmcgSG9yaXpvbnRhbCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwYWRkaW5nSG9yaXpvbnRhbCB9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17IHBhZGRpbmdIb3Jpem9udGFsTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgcGFkZGluZ0hvcml6b250YWxNYXggfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlUGFkZGluZ0hvcml6b250YWwgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIH1cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xufVxuIiwiY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IFJhbmdlQ29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFyZ2luKCBwcm9wcyApIHtcbiAgICBjb25zdCB7XG5cbiAgICAgICAgLy8gUGFkZGluZyBwcm9wc1xuICAgICAgICBtYXJnaW4sXG4gICAgICAgIG1hcmdpblRpdGxlLFxuICAgICAgICBtYXJnaW5IZWxwLFxuICAgICAgICBtYXJnaW5NaW4sXG4gICAgICAgIG1hcmdpbk1heCxcbiAgICAgICAgbWFyZ2luRW5hYmxlLFxuICAgICAgICBvbkNoYW5nZU1hcmdpbiA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIE1hcmdpbiB0b3AgcHJvcHNcbiAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICBtYXJnaW5Ub3BNaW4sXG4gICAgICAgIG1hcmdpblRvcE1heCxcbiAgICAgICAgbWFyZ2luRW5hYmxlVG9wLFxuICAgICAgICBvbkNoYW5nZU1hcmdpblRvcCA9ICgpID0+IHt9LFxuXG4gICAgICAgIC8vIE1hcmdpbiBib3R0b20gcHJvcHNcbiAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICBtYXJnaW5Cb3R0b21NaW4sXG4gICAgICAgIG1hcmdpbkJvdHRvbU1heCxcbiAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tLFxuICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbSA9ICgpID0+IHt9LFxuXG5cbiAgICB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICB7IG1hcmdpbkVuYWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IG1hcmdpblRpdGxlID8gbWFyZ2luVGl0bGUgOiBfXyggJ01hcmdpbicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaGVscD17IG1hcmdpbkhlbHAgPyBtYXJnaW5IZWxwIDogbnVsbCB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgbWFyZ2luIH1cbiAgICAgICAgICAgICAgICAgICAgbWluPXsgbWFyZ2luTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgbWFyZ2luTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZU1hcmdpbiB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgeyBtYXJnaW5FbmFibGVUb3AgJiYgKFxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01hcmdpbiBUb3AnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgbWFyZ2luVG9wIH1cbiAgICAgICAgICAgICAgICAgICAgbWluPXsgbWFyZ2luVG9wTWluIH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsgbWFyZ2luVG9wTWF4IH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyBvbkNoYW5nZU1hcmdpblRvcCB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICB7IG1hcmdpbkVuYWJsZUJvdHRvbSAmJiAoXG4gICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTWFyZ2luIEJvdHRvbScsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBtYXJnaW5Cb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICBtaW49eyBtYXJnaW5Cb3R0b21NaW4gfVxuICAgICAgICAgICAgICAgICAgICBtYXg9eyBtYXJnaW5Cb3R0b21NYXggfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IG9uQ2hhbmdlTWFyZ2luQm90dG9tIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSB9XG5cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xufVxuIiwiY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7RnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcblxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHtcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG5cbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQlNIZWFkZXJTZXR0aW5ncyhwcm9wcykge1xuICAgIGNvbnN0IHtcblxuICAgICAgICBlbmFibGVCbG9ja0dhcHMsXG5cbiAgICAgICAgZW5hYmxlaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGUgPSAoKSA9PiB7fSxcblxuICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICBvbkNoYW5nZXRpdGxlRm9udFNpemUgPSAoKSA9Pnt9LFxuXG4gICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZSA9ICgpID0+e30sXG5cbiAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICBvbkNoYW5nZUhlYWRlclRhZyA9ICgpID0+IHt9LFxuXG4gICAgICAgIGVuYWJsZWhlYWRlcmJveENvbG9yLFxuICAgICAgICBoZWFkZXJib3hDb2xvcixcbiAgICAgICAgb25DaGFuZ2Vib3hjb2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgb25DaGFuZ2VEYXNoQ29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3IgPSAoKSA9PiB7fSxcblxuICAgICAgICB0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nVG9wID0gKCkgPT4ge30sXG5cbiAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3IsXG4gICAgICAgIG9uQ2hhbmdlc3VidGl0bGVjb2xvciA9ICgpID0+IHt9LFxuXG4gICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3AgPSAoKSA9PiB7fSxcblxuICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tID0gKCkgPT4ge30sXG5cbiAgICAgICAgaGVhZGVycGFkZGluZ1RvcCxcbiAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nVG9wID0gKCkgPT4ge30sXG5cbiAgICAgICAgaGVhZGVycGFkZGluZ1JpZ2h0LFxuICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdSaWdodCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcnBhZGRpbmdCb3R0b20sXG4gICAgICAgIG9uQ2hhbmdlaGVhZGVycGFkZGluZ0JvdHRvbSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcnBhZGRpbmdMZWZ0LFxuICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0ID0gKCkgPT4ge30sXG5cbiAgICAgICAgaGVhZGVybWFyZ2luVG9wLFxuICAgICAgICBvbkNoYW5nZWhlYWRlcm1hcmdpblRvcCA9ICgpID0+IHt9LFxuXG4gICAgICAgIGhlYWRlcm1hcmdpbkJvdHRvbSxcbiAgICAgICAgb25DaGFuZ2VoZWFkZXJtYXJnaW5Cb3R0b20gPSAoKSA9PiB7fVxuXG5cbiAgICB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBoZWFkZXJTdHlsZU9wdGlvbiA9IFtcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTEnLCBsYWJlbDogX18oJ0xheW91dCAxJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc3R5bGUyJywgbGFiZWw6IF9fKCdMYXlvdXQgMicsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXN0eWxlMycsIGxhYmVsOiBfXygnTGF5b3V0IDMnLCAnYmxvY2tzcGFyZScpfVxuICAgIF07XG5cbiAgICBjb25zdCBoZWFkZXJUYWdTZWxlY3RPcHRpb24gPSBbXG4gICAgICAgIHt2YWx1ZTogJ2gxJywgbGFiZWw6IF9fKCdoMScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdoMicsIGxhYmVsOiBfXygnaDInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnaDMnLCBsYWJlbDogX18oJ2gzJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2g0JywgbGFiZWw6IF9fKCdoNCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdoNScsIGxhYmVsOiBfXygnaDUnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnaDYnLCBsYWJlbDogX18oJ2g2JywgJ2Jsb2Nrc3BhcmUnKX0sXG5cbiAgICBdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAge2ZhbHNlICE9IGVuYWJsZWhlYWRlcmxheW91dE9wdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0xheW91dHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdIZWFkZXIgU3R5bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2hlYWRlclN0eWxlT3B0aW9uLm1hcCgoe3ZhbHVlLCBsYWJlbH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSGVhZGVyU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1RleHQgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUgVGFnJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aGVhZGVyVGFnU2VsZWN0T3B0aW9uLm1hcCgoe3ZhbHVlLCBsYWJlbH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VIZWFkZXJUYWd9XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZSBGb250IFNpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdldGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgbWluPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgc3RlcD17Mn1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXs2MH1cbiAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZXRpdGxlY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdUaXRsZSBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXNoQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlRGFzaENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnRGFzaCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cbiAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbnRlbnQgR2FwIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1RpdGxlIEdhcHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnUGFkZGluZyBUb3AnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1BhZGRpbmcgQm90dG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdTdWJ0aXRsZSBHYXBzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1BhZGRpbmcgVG9wJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdQYWRkaW5nIEJvdHRvbScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3VidGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgIHshZmFsc2UgPT0gZW5hYmxlQmxvY2tHYXBzICYmKFxuICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGFkZGluZyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSGVhZGVyIFBhZGRpbmcgVG9wJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlcnBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZWhlYWRlcnBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnSGVhZGVyIFBhZGRpbmcgTGVmdCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlaGVhZGVycGFkZGluZ0xlZnR9XG4gICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdIZWFkZXIgUGFkZGluZyBCb3R0b20nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVycGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlaGVhZGVycGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdIZWFkZXIgUGFkZGluZyBSaWdodCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJwYWRkaW5nUmlnaHR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZWhlYWRlcnBhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTWFyZ2luIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdNYXJnaW4gVG9wJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJtYXJnaW5Ub3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdNYXJnaW4gQm90dG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJtYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VoZWFkZXJtYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICApfVxuXG5cblxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG59XG4iLCJjb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7XG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJveFNoYWRvdyAocHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICAgIHhPZmZzZXQsXG4gICAgICAgIHlPZmZzZXQsXG4gICAgICAgIGJsdXIsXG4gICAgICAgIHNwcmVhZCxcbiAgICAgICAgc2hhZG93Q29sb3IsXG5cbiAgICAgICAgb25DaGFuZ2VYT2Zmc2V0ID0gKCkgPT4ge1xuICAgICAgICB9LFxuXG4gICAgICAgIG9uQ2hhbmdlWU9mZnNldCA9ICgpID0+IHtcbiAgICAgICAgfSxcblxuICAgICAgICBvbkNoYW5nZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VTcHJlYWQgPSAoKSA9PiB7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb25DaGFuZ2VTaGFkb3dDb2xvciA9ICgpID0+IHt9XG4gICAgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcblxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCb3ggU2hhZG93IE9wdGlvbiAnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlU2hhZG93Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1NoYWRvdyBDb2xvcicsICdibG9ja3NwYXJlJylcbiAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnWCBPZmZzZXQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt4T2Zmc2V0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVhPZmZzZXR9XG4gICAgICAgICAgICAgICAgbWluPXstMTAwfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgbWF4PXsxODB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnWSBPZmZzZXQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt5T2Zmc2V0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVlPZmZzZXR9XG4gICAgICAgICAgICAgICAgbWluPXstMTAwfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgbGFiZWw9e19fKCdCbHVyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Ymx1cn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VCbHVyfVxuICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnU3ByZWFkJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17c3ByZWFkfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVNwcmVhZH1cbiAgICAgICAgICAgICAgICBtaW49ey0xMDB9XG4gICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG5cbiAgICApO1xufSIsImltcG9ydCBQYWRkaW5nIGZyb20gJy4vLi4vLi4vdXRpbHMvcGFkZGluZyc7XG5pbXBvcnQgTWFyZ2luIGZyb20gJy4vLi4vLi4vdXRpbHMvbWFyZ2luJztcbmltcG9ydCBCU0hlYWRlclNldHRpbmdzIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlci1zZXR0aW5nc1wiO1xuaW1wb3J0IEJTYnV0dG9uU2V0dGluZ3MgZnJvbSBcIi4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3NcIjtcbmltcG9ydCBHcmFkaWVudENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2dyYWRpZW50XCI7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFBhbmVsQm9keSxcbiAgICBJY29uQnV0dG9uLFxuICAgIFRvZ2dsZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuXG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgb3BhY2l0eVJhdGlvLFxuICAgICAgICAgICAgY3RhQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgc2hvd0ltYWdlLFxuICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgaW1nSUQsXG4gICAgICAgICAgICBpbWdBbHQsXG4gICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBidXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU3R5bGUsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3IsXG4gICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgaGVhZGVyYm94Q29sb3IsXG4gICAgICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgIGJhY2tncm91bmRGaXgsXG4gICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24xLFxuICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICBzaGFkb3dDb2xvcixcbiAgICAgICAgICAgIGJ0bkZvbnRXZWlnaHQsXG4gICAgICAgICAgICBidG5Cb3JkZXJXaWR0aFxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIC8vIENoYW5nZSB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3Qgb25TZWxlY3RJbWFnZSA9IGltZyA9PiB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICBpbWdJRDogaW1nLmlkLFxuICAgICAgICAgICAgICAgIGltZ1VSTDogaW1nLnVybCxcbiAgICAgICAgICAgICAgICBpbWdBbHQ6IGltZy5hbHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBDbGVhciB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3Qgb25SZW1vdmVJbWFnZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgIGltZ0lEOiBudWxsLFxuICAgICAgICAgICAgICAgIGltZ1VSTDogbnVsbCxcbiAgICAgICAgICAgICAgICBpbWdBbHQ6IG51bGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjdGFCYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSGVhZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemU9e3RpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbj17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyVGFnPXtoZWFkZXJUYWdPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGFnT3B0aW9ufSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2Vib3hjb2xvcj17aGVhZGVyYm94Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyYm94Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hDb2xvcj17ZGFzaENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yPXtoZWFkZXJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVjb2xvcj17aGVhZGVydGl0bGVDb2xvciA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b209e3RpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbT0ge3RpdGxlUGFkZGluZ0JvdHRvbSA9PnNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcj17aGVhZGVyc3VidGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3I9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnN1YnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ0JvdHRvbX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQnV0dG9uIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNidXR0b25TZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbiBpbiBuZXcgd2luZG93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uVGFyZ2V0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UYXJnZXQ9eyBidXR0b25UYXJnZXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGFyZ2V0PXsgdmFsdWUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRhcmdldDogISBidXR0b25UYXJnZXQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCA9IHtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50ID17IGVuYWJsZUdyYWRpZW50ID0+IHNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNpemU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNpemUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2hhcGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaGFwZT17IGJ1dHRvblNoYXBlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaGFwZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gdGV4dCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TdHlsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyU3R5bGU9e2J1dHRvblN0eWxlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TdHlsZSB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJvcmRlckNvbG9yPXtib3JkZXJDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJCdG5UZXh0Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkJvcmRlcldpZHRoPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aD17YnRuQm9yZGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9IHtidG5Cb3JkZXJXaWR0aCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Cb3JkZXJXaWR0aH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuRm9udFdlaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHQgPT4gc2V0QXR0cmlidXRlcyh7YnRuRm9udFdlaWdodH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2J1dHRvblN0eWxlPT09J25vbmUnJiZcblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0VuYWJsZSBHcmFkaWVudCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnQ6ICFlbmFibGVHcmFkaWVudH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50ICYmIGJ1dHRvblN0eWxlPT09J25vbmUnJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnR3JhZGllbnQgT3B0aW9uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmFkaWVudENvbG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3IxfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudEFuZ2xlPXtncmFkaWVudEFuZ2xlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VHcmFkaWVudEFuZ2xlPXtncmFkaWVudEFuZ2xlID0+IHNldEF0dHJpYnV0ZXMoe2dyYWRpZW50QW5nbGV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMT17Y29sb3JMb2NhdGlvbjEgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjI9e2NvbG9yTG9jYXRpb24yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmFja2dyb3VuZCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzaG93SW1hZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7c2hvd0ltYWdlOiAhc2hvd0ltYWdlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdEltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2ltZ0lEfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHtvcGVufSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZnQtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFZGl0IGltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZm9ybWF0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnU2VsZWN0IEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnUmVtb3ZlIEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRpc21pc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblJlbW92ZUltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdSZW1vdmUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01lZGlhVXBsb2FkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtpbWdVUkx9IHdpZHRoPVwiMTAwcHhcIiBoZWlnaHQ9XCIxMDBweFwiIGFsdD17aW1nQWx0fS8+KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge2ltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdJbWFnZSBPcGFjaXR5JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wYWNpdHlSYXRpb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtvcGFjaXR5UmF0aW86IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezEwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY3RhQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1BhZGRpbmcgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYWRkaW5nXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17cGFkZGluZ1RvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wPXtwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSaWdodCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdSaWdodH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVmdCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdD17cGFkZGluZ0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nTGVmdD17cGFkZGluZ0xlZnQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0xlZnR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ01hcmdpbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1hcmdpblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wPXttYXJnaW5Ub3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiY29uc3QgYm94U2hhZG93U3R5bGVzPSAoYXR0cmlidXRlcykgPT57XG4gICAgbGV0IGJveFN0eWxlcyA9ICcnO1xuICAgIGlmKGF0dHJpYnV0ZXMuZW5hYmxlQm94U2hhZG93KSB7XG4gICAgICAgIGJveFN0eWxlcyA9IHtcblxuICAgICAgICAgICAgYm94U2hhZG93OiBhdHRyaWJ1dGVzLnhPZmZzZXQgKyBcInB4IFwiICsgYXR0cmlidXRlcy55T2Zmc2V0ICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuYmx1ciArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNwcmVhZCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNoYWRvd0NvbG9yXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYm94U3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgYm94U2hhZG93U3R5bGVzIiwiY29uc3QgbWFyZ2luUGFkZGluZ1N0eWxlcyA9IChhdHRyaWJ1dGVzKT0+e1xuXG4gICAgbGV0IGJveFN0eWxlcyA9Jyc7XG4gICAgYm94U3R5bGVzICA9IHtcblxuICAgICAgICB0ZXh0QWxpZ246IGF0dHJpYnV0ZXMuc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgcGFkZGluZ1RvcDogYXR0cmlidXRlcy5wYWRkaW5nVG9wID8gYXR0cmlidXRlcy5wYWRkaW5nVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIHBhZGRpbmdSaWdodDogYXR0cmlidXRlcy5wYWRkaW5nUmlnaHQgPyBhdHRyaWJ1dGVzLnBhZGRpbmdSaWdodCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiBhdHRyaWJ1dGVzLnBhZGRpbmdCb3R0b20gPyBhdHRyaWJ1dGVzLnBhZGRpbmdCb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgcGFkZGluZ0xlZnQ6IGF0dHJpYnV0ZXMucGFkZGluZ0xlZnQgPyBhdHRyaWJ1dGVzLnBhZGRpbmdMZWZ0ICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIG1hcmdpblRvcDogYXR0cmlidXRlcy5tYXJnaW5Ub3AgPyBhdHRyaWJ1dGVzLm1hcmdpblRvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBtYXJnaW5Cb3R0b206IGF0dHJpYnV0ZXMubWFyZ2luQm90dG9tID8gYXR0cmlidXRlcy5tYXJnaW5Cb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICB9XG5cbiAgICByZXR1cm4gYm94U3R5bGVzXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1hcmdpblBhZGRpbmdTdHlsZXMiLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzICBmcm9tICAnLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nJ1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsbFRvQWN0aW9uIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmF0dHJpYnV0ZXMuY3RhQmFja0dyb3VuZENvbG9yP2F0dHJpYnV0ZXMuY3RhQmFja0dyb3VuZENvbG9yOlwiIzBlMGUwZVwiLFxuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzID8gYXR0cmlidXRlcy5ib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jdGEtd3JhcHBlciBibG9ja3NwYXJlLWJsb2NrcycsXG4gICAgICAgICAgICAgICAgJ2FsaWduJythdHRyaWJ1dGVzLmFsaWduLFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzLmltZ1VSTCAmJiAhIWF0dHJpYnV0ZXMuaW1nVVJMLmxlbmd0aCAmJiBhdHRyaWJ1dGVzLmJhY2tncm91bmRGaXggKT8nYmxvY2tzcGFyZS1iYWNrZ3JvdW5kLWZpeCc6XCJcIlxuXG4gICAgICAgICAgICApfSBzdHlsZT17ZWRpdFN0eWxlc30+eyB0aGlzLnByb3BzLmNoaWxkcmVuIH08L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJjb25zdCBwYWRkaW5nTWFyZ2luID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICBsZXQgYmxvY2tTdHlsZXMgPSAnJztcbiAgICBibG9ja1N0eWxlcyA9e1xuICAgICAgICB0ZXh0QWxpZ246IGF0dHJpYnV0ZXMuc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgcGFkZGluZ1RvcDogYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nVG9wID8gYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIHBhZGRpbmdSaWdodDogYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nUmlnaHQgPyBhdHRyaWJ1dGVzLmhlYWRlcnBhZGRpbmdSaWdodCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiBhdHRyaWJ1dGVzLmhlYWRlcnBhZGRpbmdCb3R0b20gPyBhdHRyaWJ1dGVzLmhlYWRlcnBhZGRpbmdCb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgbWFyZ2luVG9wOiBhdHRyaWJ1dGVzLmhlYWRlcm1hcmdpblRvcCA/IGF0dHJpYnV0ZXMuaGVhZGVybWFyZ2luVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogYXR0cmlidXRlcy5oZWFkZXJtYXJnaW5Cb3R0b20gPyBhdHRyaWJ1dGVzLmhlYWRlcm1hcmdpbkJvdHRvbSArICdweCcgOiBcIjBweFwiLFxuICAgICAgICBwYWRkaW5nTGVmdDogYXR0cmlidXRlcy5oZWFkZXJwYWRkaW5nTGVmdCA/IGF0dHJpYnV0ZXMuaGVhZGVycGFkZGluZ0xlZnQgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBhdHRyaWJ1dGVzLmhlYWRlcmJveENvbG9yID8gYXR0cmlidXRlcy5oZWFkZXJib3hDb2xvciA6ICd0cmFuc3BhcmVudCdcbiAgICB9XG4gICAgcmV0dXJuIGJsb2NrU3R5bGVzXG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhZGRpbmdNYXJnaW47IiwiXG5cbi8qKlxuICogQnV0dG9uIFdyYXBwZXJcbiAqL1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgcGFkZGluZ01hcmdpbiBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvcGFkZGluZy1tYXJnaW4nXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCU0hlYWRlciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgaXNTZWxlY3RlZFxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5wYWRkaW5nTWFyZ2luKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLXNlY3Rpb24taGVhZGVyLXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3NcIixcbiAgICAgICAgICAgICAgICBcImFsaWduXCIrYWxpZ25cbiAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtJyArIHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59IiwiY29uc3Qgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgPXtcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIlxuICAgIH0sXG5cblxuICAgIGFsaWduOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiY2VudGVyXCJcbiAgICB9LFxuXG4gICAgc2VjdGlvbkFsaWdubWVudDoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImNlbnRlclwiXG4gICAgfSxcblxuXG4gICAgaGVhZGVyVGl0bGU6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCJFbnRlciBUaXRsZVwiXG5cbiAgICB9LFxuXG4gICAgdGl0bGVGb250U2l6ZToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAzMlxuICAgIH0sXG5cbiAgICBzdWJ0aXRsZUZvbnRTaXplOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDE4XG4gICAgfSxcblxuICAgIGhlYWRlclN1YlRpdGxlOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiRW50ZXIgU3VidGl0bGVcIlxuXG4gICAgfSxcbiAgICBoZWFkZXJib3hDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcInRyYW5zcGFyZW50XCJcbiAgICB9LFxuXG4gICAgaGVhZGVydGl0bGVDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiM0MDQwNDBcIlxuICAgIH0sXG4gICAgaGVhZGVyc3VidGl0bGVDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcIiM2ZDZkNmRcIlxuICAgIH0sXG4gICAgaGVhZGVydGl0bGVEYXNoQ29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjNmQ2ZDZkXCJcbiAgICB9LFxuICAgIGhlYWRlcnBhZGRpbmdUb3A6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMTBcbiAgICB9LFxuICAgIGhlYWRlcnBhZGRpbmdSaWdodDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAyMFxuICAgIH0sXG4gICAgaGVhZGVycGFkZGluZ0JvdHRvbToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAxMFxuICAgIH0sXG4gICAgaGVhZGVycGFkZGluZ0xlZnQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMjBcbiAgICB9LFxuICAgIGhlYWRlcm1hcmdpblRvcDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAzMFxuICAgIH0sXG5cbiAgICBoZWFkZXJtYXJnaW5Cb3R0b206IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMzBcbiAgICB9LFxuICAgIGhlYWRlcmxheW91dE9wdGlvbjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImJsb2Nrc3BhcmUtc3R5bGUxXCJcbiAgICB9LFxuXG4gICAgaGVhZGVyVGFnT3B0aW9uOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiaDJcIlxuICAgIH0sXG5cbiAgICB0aXRsZVBhZGRpbmdUb3A6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogNVxuICAgIH0sXG4gICAgdGl0bGVQYWRkaW5nQm90dG9tOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDVcbiAgICB9LFxuXG4gICAgc3VidGl0bGVQYWRkaW5nVG9wOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDVcbiAgICB9LFxuICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA1XG4gICAgfSxcbiAgICBkYXNoQ29sb3I6e1xuICAgICAgICB0eXBlOlwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6XCIjOGIyNDljXCJcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzOyIsImNvbnN0IG1hcmdpblBhZGRpbmcgPXtcbiAgICBwYWRkaW5nVG9wOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDIwXG4gICAgfSxcbiAgICBwYWRkaW5nUmlnaHQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMjBcbiAgICB9LFxuICAgIHBhZGRpbmdCb3R0b206IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMjBcbiAgICB9LFxuICAgIHBhZGRpbmdMZWZ0OiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDIwXG4gICAgfSxcbiAgICBtYXJnaW5Ub3A6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMzBcbiAgICB9LFxuXG4gICAgbWFyZ2luQm90dG9tOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDMwXG4gICAgfSxcblxufVxuXG5leHBvcnQgZGVmYXVsdCBtYXJnaW5QYWRkaW5nOyIsImNvbnN0IGRhc2hDb2xvcnMgID0gKGF0dHJpYnV0ZXMpID0+e1xuICAgIGxldCBkYXNoU3R5bGUgPSAnJztcblxuICAgIGRhc2hTdHlsZT17XG4gICAgICAgIGJvcmRlckNvbG9yOiBhdHRyaWJ1dGVzLmRhc2hDb2xvcj9hdHRyaWJ1dGVzLmRhc2hDb2xvcjonIzhiMjQ5YycsXG4gICAgfVxuICAgIHJldHVybiBkYXNoU3R5bGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhc2hDb2xvcnM7XG5cbiIsIiBjb25zdCB0aXRsZUNvbG9yID0gKGF0dHJpYnV0ZXMpPT4ge1xuICAgIGxldCB0aXRsZVN0eWxlcyA9ICcnO1xuICAgICB0aXRsZVN0eWxlcyA9e1xuICAgICAgICAgICAgY29sb3I6IGF0dHJpYnV0ZXMuaGVhZGVydGl0bGVDb2xvcj9hdHRyaWJ1dGVzLmhlYWRlcnRpdGxlQ29sb3I6JyM0MDQwNDAnLFxuICAgICAgICAgICAgZm9udFNpemU6IGF0dHJpYnV0ZXMudGl0bGVGb250U2l6ZSArIFwicHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IGF0dHJpYnV0ZXMudGl0bGVQYWRkaW5nVG9wID8gYXR0cmlidXRlcy50aXRsZVBhZGRpbmdUb3AgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IGF0dHJpYnV0ZXMudGl0bGVQYWRkaW5nQm90dG9tID8gYXR0cmlidXRlcy50aXRsZVBhZGRpbmdCb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aXRsZVN0eWxlc1xufVxuZXhwb3J0IGRlZmF1bHQgIHRpdGxlQ29sb3I7IiwiY29uc3Qgc3VidGl0bGVDb2xvciA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gbGV0IHN1YnRpdGxlU3R5bGVzID0gJyc7XG4gICAgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgIGZvbnRTaXplOiBhdHRyaWJ1dGVzLnN1YnRpdGxlRm9udFNpemUgKyBcInB4XCIsXG4gICAgICAgIGNvbG9yOiBhdHRyaWJ1dGVzLmhlYWRlcnN1YnRpdGxlQ29sb3I/YXR0cmlidXRlcy5oZWFkZXJzdWJ0aXRsZUNvbG9yOicjNmQ2ZDZkJyxcbiAgICAgICAgcGFkZGluZ1RvcDogYXR0cmlidXRlcy5zdWJ0aXRsZVBhZGRpbmdUb3AgPyBhdHRyaWJ1dGVzLnN1YnRpdGxlUGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgIHBhZGRpbmdCb3R0b206IGF0dHJpYnV0ZXMuc3VidGl0bGVQYWRkaW5nQm90dG9tID8gYXR0cmlidXRlcy5zdWJ0aXRsZVBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICByZXR1cm4gc3VidGl0bGVTdHlsZXNcblxufVxuXG5leHBvcnQgZGVmYXVsdCBzdWJ0aXRsZUNvbG9yO1xuIiwiY29uc3QgYm94U2hhZG93QXR0cmlidXRlcyA9IHtcblxuICAgIGVuYWJsZUJveFNoYWRvdzoge1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHhPZmZzZXQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMFxuICAgIH0sXG4gICAgeU9mZnNldDoge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiA2XG4gICAgfSxcbiAgICBibHVyOiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDEyXG4gICAgfSxcbiAgICBzcHJlYWQ6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogLTEwXG4gICAgfSxcbiAgICBzaGFkb3dDb2xvcjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiAnIzAwMCdcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJveFNoYWRvd0F0dHJpYnV0ZXMiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQlNCdXR0b24gZnJvbSAnLi8uLi9idXR0b24vZWRpdCc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gXCIuL2NvbXBvbmVudHMvaW5zcGVjdG9yXCI7XG5pbXBvcnQgQ2FsbFRvQWN0aW9uIGZyb20gXCIuL2NvbXBvbmVudHMvZWRpdFwiO1xuaW1wb3J0IEJTSGVhZGVyIGZyb20gXCIuLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlcnNcIjtcbmNvbnN0IHByZXZfaW1nID0gYmxvY2tzcGFyZV9nbG9iYWxzO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgYnV0dG9uQXR0cmlidXRlcyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL2J1dHRvbic7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9zZWN0aW9uLWhlYWRlcic7XG5pbXBvcnQgbWFyZ2luUGFkZGluZyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgaW5jb3MgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gXCIuLi91dGlscy9hdHRyaWJ1dGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtDb21wb25lbnQsRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBBbGlnbm1lbnRUb29sYmFyLFxuICAgIFVSTElucHV0LFxuICAgIEJsb2NrQ29udHJvbHMsXG4gICAgQmxvY2tBbGlnbm1lbnRUb29sYmFyLFxuICAgIFJpY2hUZXh0XG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcblxuICAgIEljb25CdXR0b24sXG4gICAgRGFzaGljb24sXG59ID0gd3AuY29tcG9uZW50cztcblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuLy8gUmVnaXN0ZXIgYWxpZ25tZW50c1xuY29uc3QgYWxpZ25tZW50T3B0aW9ucyA9IFsnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCddO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY2xhc3MgQlNDYWxsVG9BY3Rpb25CbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBidXR0b25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgICAgIG9wYWNpdHlSYXRpbyxcbiAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuICAgICAgICBjb25zdCBidG5TdHlsZSA9IHtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uIChhdHRyaWJ1dGVzKVxuICAgICAgICB9XG4gICAgICAgIC8vY29uc3QgYmFja2dyb3VuZEltZyA9ICd1cmwoJytpbWdVUkwrJyknO1xuXG4gICAgICAgIGxldCBwbGFjZV9ob2xkZXJfaW1hZ2UgPSAndXJsKCcrcHJldl9pbWcuaW1nKycpJyA7XG4gICAgICAgIGlmKGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGgpe1xuICAgICAgICAgICAgcGxhY2VfaG9sZGVyX2ltYWdlID0gJ3VybCgnK2ltZ1VSTCsnKSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4oXG5cbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEJsb2NrQWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGFsaWduIH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyggeyBhbGlnbjogdmFsdWUgfSApO1xuICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM9eyBbICdjZW50ZXInLCAnd2lkZScsICdmdWxsJyBdIH1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuXG4gICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgPENhbGxUb0FjdGlvbiB7Li4udGhpcy5wcm9wc30gPlxuICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1pbWFnZS13cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY3RhLWJhY2tncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5UmF0aW9Ub0NsYXNzKG9wYWNpdHlSYXRpbyksXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdoYXMtYmFja2dyb3VuZC1vcGFjaXR5JzogMCAhPT0gb3BhY2l0eVJhdGlvXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3VuZEltYWdlOnBsYWNlX2hvbGRlcl9pbWFnZX19PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgICAgICFpbWdVUkwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlbXB0eS1wbGNhZWhvbGRlci1kaXZcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICA8QlNCdXR0b24geyAuLi50aGlzLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyBfXyggJ0J1dHRvbiB0ZXh0Li4uJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRGb3JtYXRzPXsgW10gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtidG5TdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0OiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwiZm9ybS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGBibG9ja3MtYnV0dG9uX19pbmxpbmUtbGluayBibG9ja3NwYXJlLWJ1dHRvbi0ke2J1dHRvbkFsaWdubWVudH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hpY29uIGljb249eyAnYWRtaW4tbGlua3MnIH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxVUkxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVXJsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVXJsOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdG9yLWJyZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQXBwbHknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICA8L0NhbGxUb0FjdGlvbj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5jb25zdCBhdHRyaWJ1dGVzID17XG5cbiAgICAuLi5zZWN0aW9uSGVhZGVyQXR0cmlidXRlcyxcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXMsXG4gICAgLi4ubWFyZ2luUGFkZGluZyxcbiAgICAuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzXG59XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIENhbGwgdG8gQWN0aW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0JTIGNhbGwgdG8gYWN0aW9uIGFsbG93IHlvdSB0byBhZGQgdGl0bGUsc3VidGl0bGUsdGV4dCBidXR0b24gYW5kIGJhY2tncm91bmQgaW1hZ2UvY29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSxcbiAgICBpY29uOiBpbmNvcy5jdGEsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnY2FsbCB0byBhY3Rpb24nLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY3RhJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xpbmsnLCAnYmxvY2tzcGFyZScpLFxuICAgIF0sXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnQmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBnZXRFZGl0V3JhcHBlclByb3BzKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgY29uc3Qge2FsaWdufSA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIGlmICgtMSAhPT0gYWxpZ25tZW50T3B0aW9ucy5pbmRleE9mKGFsaWduKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsnZGF0YS1hbGlnbic6IGFsaWdufTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBlZGl0OiBCU0NhbGxUb0FjdGlvbkJsb2NrLFxuICAgIHNhdmU6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBvcGFjaXR5UmF0aW8sXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgc2hvd0ltYWdlLFxuICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcblxuXG5cbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlID0ge1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24gKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBwbGFjZV9ob2xkZXJfaW1hZ2UgPSAndXJsKCcrcHJldl9pbWcuaW1nKycpJyA7XG4gICAgICAgIGlmKGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGgpe1xuICAgICAgICAgICAgcGxhY2VfaG9sZGVyX2ltYWdlID0gJ3VybCgnK2ltZ1VSTCsnKSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENhbGxUb0FjdGlvbiB7Li4ucHJvcHN9ID5cbiAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ1VSTCAmJlxuICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtaW1hZ2Utd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWN0YS1iYWNrZ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVJhdGlvVG9DbGFzcyhvcGFjaXR5UmF0aW8pLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnaGFzLWJhY2tncm91bmQtb3BhY2l0eSc6IDAgIT09IG9wYWNpdHlSYXRpb1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRJbWFnZTpwbGFjZV9ob2xkZXJfaW1hZ2V9fT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgICAgICAhaW1nVVJMICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHktcGxjYWVob2xkZXItZGl2XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXNlY3Rpb24taGVhZC13cmFwXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L0JTSGVhZGVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9eyBidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICA8L0JTQnV0dG9uPlxuICAgICAgICAgICAgPC9DYWxsVG9BY3Rpb24+XG4gICAgICAgICk7XG4gICAgfVxufSk7XG5mdW5jdGlvbiBvcGFjaXR5UmF0aW9Ub0NsYXNzKHJhdGlvKSB7XG4gICAgcmV0dXJuICgwID09PSByYXRpbykgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHktJyArICgxMCAqIE1hdGgucm91bmQocmF0aW8gLyAxMCkpO1xufSIsImNvbnN0IGJsb2dQb3N0U3R5bGVzPSAoYXR0cmlidXRlcykgPT57XG4gICAgbGV0IGJsb2dTdHlsZXMgPSAnJztcblxuICAgIGlmKCBhdHRyaWJ1dGVzLmRlc2lnbiAhPSAnc3R5bGUtMycpe1xuICAgICAgICBibG9nU3R5bGVzID0ge1xuICAgICAgICAgICAgYm94U2hhZG93OiAoYXR0cmlidXRlcy5lbmFibGVCb3hTaGFkb3cpP2F0dHJpYnV0ZXMueE9mZnNldCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnlPZmZzZXQgKyBcInB4IFwiICsgYXR0cmlidXRlcy5ibHVyICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuc3ByZWFkICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuc2hhZG93Q29sb3I6XCJcIixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogYXR0cmlidXRlcy5ib3JkZXJSYWRpdXMgPyBhdHRyaWJ1dGVzLmJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGF0dHJpYnV0ZXMuZW5hYmxlQmFja2dyb3VuZENvbG9yID8gYXR0cmlidXRlcy5iYWNrR3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHJldHVybiBibG9nU3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmxvZ1Bvc3RTdHlsZXMiLCIvKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG4vL2ltcG9ydCB7IHNyY1VybCB9IGZyb20gJ2Jsb2Nrc3BhcmUnO1xuXG5sZXQgc3JjVXJsID0gYmxvY2tzcGFyZV9nbG9iYWxzLnNyY1VybCsnL2Rpc3QnO1xuXG5mdW5jdGlvbiBEZXNpZ25QYW5lbEl0ZW0oIHtcblx0aW1hZ2VGaWxlLFxuXHRpbWFnZUhvdmVyRmlsZSxcblx0aW1hZ2VXaWR0aCA9ICcnLFxuXHRpbWFnZUhlaWdodCA9ICcnLFxuXHRsYWJlbCxcbn0gKSB7XG5cdGNvbnN0IHNyYyA9ICEgaW1hZ2VGaWxlID8gJycgOlxuXHQgICAgICAgICAgICBpbWFnZUZpbGUubWF0Y2goIC9odHRwcz86L2kgKSA/IGltYWdlRmlsZSA6XG5cdCAgICAgICAgICAgIHNyY1VybCA/IGAkeyBzcmNVcmwgfS8keyBpbWFnZUZpbGUgfWAgOlxuXHQgICAgICAgICAgICBpbWFnZUZpbGVcblxuXHRjb25zdCBzcmNIb3ZlciA9ICEgaW1hZ2VIb3ZlckZpbGUgPyBudWxsIDpcblx0ICAgICAgICAgICAgICAgICBpbWFnZUhvdmVyRmlsZS5tYXRjaCggL2h0dHBzPzovaSApID8gaW1hZ2VIb3ZlckZpbGUgOlxuXHQgICAgICAgICAgICAgICAgIHNyY1VybCA/IGAkeyBzcmNVcmwgfS8keyBpbWFnZUhvdmVyRmlsZSB9YCA6XG5cdCAgICAgICAgICAgICAgICAgaW1hZ2VIb3ZlckZpbGVcblxuXG5cdHJldHVybiAoXG5cdFx0PHNwYW4gY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1kZXNpZ24tcGFuZWwtaXRlbVwiPlxuXHRcdFx0eyBzcmNIb3ZlciAmJlxuXHRcdFx0XHQ8aW1nIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzaWduLXBhbmVsLWl0ZW1fX2hvdmVyLWltYWdlXCIgc3JjPXsgc3JjSG92ZXIgfSBhbHQ9eyBsYWJlbCB9IHdpZHRoPXsgaW1hZ2VXaWR0aCB9IGhlaWdodD17IGltYWdlSGVpZ2h0IH0gLz5cblx0XHRcdH1cblx0XHRcdHsgc3JjICYmXG5cdFx0XHRcdDxpbWcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1kZXNpZ24tcGFuZWwtaXRlbV9faW1hZ2VcIiBzcmM9eyBzcmMgfSBhbHQ9eyBsYWJlbCB9IHdpZHRoPXsgaW1hZ2VXaWR0aCB9IGhlaWdodD17IGltYWdlSGVpZ2h0IH0gLz5cblx0XHRcdH1cblx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cImRlc2lnbi1sYWJlbFwiPlxuXHRcdFx0XHR7IGxhYmVsIH1cblx0XHRcdDwvc3Bhbj5cblx0XHQ8L3NwYW4+XG5cdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVzaWduUGFuZWxJdGVtXG4iLCIvKipcbiAqIEEgQ29udHJvbCBmb3Igc2VsZWN0aW5nIGRlc2lnbnMuXG4gKi9cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IERlc2lnblBhbmVsSXRlbSB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IG9taXQgfSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBSYWRpb0NvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIERlc2lnbkNvbnRyb2woIHByb3BzICkge1xuXHRjb25zdCB7XG5cdFx0c2VsZWN0ZWQsIG9wdGlvbnMsIG9uQ2hhbmdlLCBjbGFzc05hbWUgPSAnJyxcblx0fSA9IHByb3BzXG5cblxuXHQvLyBDb252ZXJ0IHRoZSBvcHRpb25zLlxuXHRjb25zdCBmaXhlZE9wdGlvbnMgPSBvcHRpb25zLm1hcCggb3B0aW9uID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ub3B0aW9uLFxuXHRcdFx0bGFiZWw6IDxEZXNpZ25QYW5lbEl0ZW0gaW1hZ2VGaWxlPXsgb3B0aW9uLmltYWdlIH0gaW1hZ2VIb3ZlckZpbGU9eyBvcHRpb24uaG92ZXJJbWFnZSB9IGltYWdlV2lkdGg9eyBvcHRpb24uaW1hZ2VXaWR0aCB9IGltYWdlSGVpZ2h0PXsgb3B0aW9uLmltYWdlSGVpZ2h0IH0gaXNQcm89eyBvcHRpb24uaXNQcm8gfSBsYWJlbD17IG9wdGlvbi5sYWJlbCB9IC8+LFxuXHRcdFx0dGl0bGU6IG9wdGlvbi5sYWJlbCxcblx0XHRcdHZhbHVlOiBvcHRpb24udmFsdWUsXG5cdFx0fVxuXHR9IClcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyggY2xhc3NOYW1lLCAnYmxvY2tzcGFyZS1kZXNpZ24tY29udHJvbC13cmFwcGVyIGNvbXBvbmVudHMtYmFzZS1jb250cm9sJyApIH0+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImNvbXBvbmVudHMtYmFzZS1jb250cm9sX19sYWJlbFwiPnsgcHJvcHMubGFiZWwgfTwvZGl2PlxuXHRcdFx0PFJhZGlvQ29udHJvbFxuXHRcdFx0XHR7IC4uLm9taXQoIHByb3BzLCBbICdsYWJlbCcgXSApIH1cblx0XHRcdFx0Y2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1kZXNpZ24tY29udHJvbFwiXG5cdFx0XHRcdHNlbGVjdGVkPXsgc2VsZWN0ZWQgfVxuXHRcdFx0XHRvcHRpb25zPXsgZml4ZWRPcHRpb25zIH1cblx0XHRcdFx0b25DaGFuZ2U9eyBvbkNoYW5nZSB9XG5cdFx0XHQvPlxuXHRcdDwvZGl2PlxuXHQpXG59XG5cbmV4cG9ydCBkZWZhdWx0IERlc2lnbkNvbnRyb2xcbiIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IERlc2lnbkNvbnRyb2wgfSBmcm9tICcuLi9pbmRleCdcblxuaW1wb3J0IEltYWdlRGVzaWduRG91YmxlV2F2ZSBmcm9tICcuL2ltYWdlcy9kb3VibGUtd2F2ZS5wbmcnO1xuaW1wb3J0IEltYWdlRGVzaWdud2F2eSBmcm9tICcuL2ltYWdlcy93YXZ5LnBuZyc7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TbG9wZWQgZnJvbSAnLi9pbWFnZXMvc2xvcGVkLnBuZyc7XG5pbXBvcnQgSW1hZ2VEZXNpZ25Hcm93IGZyb20gJy4vaW1hZ2VzL2dyb3cucG5nJztcbmltcG9ydCBJbWFnZURlc2lnbkFuZ2xlZCBmcm9tICcuL2ltYWdlcy9hbmdsZWQucG5nJztcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHtcblx0X18sXG59ID0gd3AuaTE4bjtcbmNvbnN0IHsgQmFzZUNvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHNcbmNvbnN0IHsgYXBwbHlGaWx0ZXJzIH0gPSB3cC5ob29rc1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJ2xvZGFzaCdcblxuY29uc3QgZGVzaWducyA9IHtcblxuXHQnZG91YmxlLXdhdmUnOiB7XG5cdFx0aW1hZ2U6IEltYWdlRGVzaWduRG91YmxlV2F2ZSwgbGFiZWw6ICBfXyggJ0RvdWJsZSBXYXZlJywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnZG91YmxlLXdhdmUnLFxuXHR9LFxuXG5cdCd3YXZ5Jzoge1xuXHRcdGltYWdlOiBJbWFnZURlc2lnbndhdnksIGxhYmVsOiAgX18oICdXYXZ5JywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnd2F2eScsXG5cdH0sXG5cblx0J3Nsb3BlZCc6IHtcblx0XHRpbWFnZTogSW1hZ2VEZXNpZ25TbG9wZWQsIGxhYmVsOiAgX18oICdTbG9wZWQnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdzbG9wZWQnLFxuXHR9LFxuXHQnZ3Jvdyc6IHtcblx0XHRpbWFnZTogSW1hZ2VEZXNpZ25Hcm93LCBsYWJlbDogIF9fKCAnR3JvdycsICdibG9ja3NwYXJlJyApLCB2YWx1ZTogJ2dyb3cnLFxuXHR9LFxuXHQnYW5nbGVkJzoge1xuXHRcdGltYWdlOiBJbWFnZURlc2lnbkFuZ2xlZCwgbGFiZWw6ICBfXyggJ0FuZ2xlZCcsICdibG9ja3NwYXJlJyApLCB2YWx1ZTogJ2FuZ2xlZCcsXG5cdH0sXG59XG5cbmNvbnN0IERlc2lnblNlcGFyYXRvckNvbnRyb2wgPSBwcm9wcyA9PiB7XG5cblx0Y29uc3Qgb3B0aW9ucyA9IE9iamVjdC5rZXlzKCBkZXNpZ25zIClcblx0XHQuZmlsdGVyKCBkZXNpZ24gPT4gISBwcm9wcy5leGNsdWRlRGVzaWducy5pbmNsdWRlcyggZGVzaWduICkgKVxuXHRcdC5tYXAoIGRlc2lnbiA9PiBkZXNpZ25zWyBkZXNpZ24gXSApXG5cblxuXHRyZXR1cm4gKFxuXHRcdDxCYXNlQ29udHJvbFxuXHRcdFx0Y2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2xcIlxuXHRcdFx0aWQ9XCJibG9ja3NwYXJlLWRlc2lnbi1zZXBhcmF0b3ItY29udHJvbFwiXG5cdFx0XHRsYWJlbD17IHByb3BzLmxhYmVsIH1cblx0XHRcdGhlbHA9eyBwcm9wcy5oZWxwIH1cblx0XHQ+XG5cdFx0XHQ8RGVzaWduQ29udHJvbFxuXHRcdFx0XHRvcHRpb25zPXsgYXBwbHlGaWx0ZXJzKCAnYmxvY2tzcGFyZS5zZXBhcmF0b3IuZWRpdC5sYXlvdXRzJywgb3B0aW9ucywgcHJvcHMgKSB9XG5cdFx0XHRcdHsgLi4ub21pdCggcHJvcHMsIFsgJ2xhYmVsJywgJ2hlbHAnIF0gKSB9XG5cdFx0XHQvPlxuXHRcdDwvQmFzZUNvbnRyb2w+XG5cdClcbn1cblxuRGVzaWduU2VwYXJhdG9yQ29udHJvbC5kZWZhdWx0UHJvcHMgPSB7XG5cdGxhYmVsOiAnJyxcblx0aGVscDogJycsXG5cdGV4Y2x1ZGVEZXNpZ25zOiBbXSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVzaWduU2VwYXJhdG9yQ29udHJvbFxuIiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvZG91YmxlLXdhdmUucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvd2F2eS5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9zbG9wZWQucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvZ3Jvdy5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9hbmdsZWQucG5nXCI7IiwiLyoqXG4gKiBBIFBhbmVsIGZvciBzZWxlY3RpbmcgZGVzaWduc1xuICovXG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IERlc2lnbkNvbnRyb2wgfSBmcm9tICcuLi9pbmRleCdcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHsgaTE4biB9ID0gJ2Jsb2Nrc3BhcmUnXG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAnbG9kYXNoJ1xuY29uc3QgeyBQYW5lbEJvZHkgfSA9IHdwLmNvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIERlc2lnblBhbmVsQm9keSggcHJvcHMgKSB7XG5cdGNvbnN0IHtcblx0XHRvcHRpb25zLFxuXHRcdHNlbGVjdGVkLFxuXHRcdHRpdGxlID0gX18oICdMYXlvdXQnLCBpMThuICksXG5cdFx0c2VsZWN0ZWRPcHRpb25JblRpdGxlID0gdHJ1ZSxcblx0XHRoZWxwID0gJycsXG5cdFx0Y2xhc3NOYW1lID0gJycsXG5cdFx0aW5pdGlhbE9wZW4gPSB0cnVlLFxuXHR9ID0gcHJvcHNcblx0Y29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBvcHRpb25zID8gb3B0aW9ucy5maW5kKCBvcHQgPT4gb3B0LnZhbHVlID09PSBzZWxlY3RlZCApIDogbnVsbFxuXHRjb25zdCBwYW5lbFRpdGxlID0gc2VsZWN0ZWRPcHRpb24gPyBgJHsgdGl0bGUgfSDigJMgJHsgc2VsZWN0ZWRPcHRpb24ubGFiZWwgfWAgOiB0aXRsZVxuXHRjb25zdCBtYWluQ2xhc3NlcyA9IGNsYXNzbmFtZXMoIFsgJ2Jsb2Nrc3BhcmUtZGVzaWduLXBhbmVsLWJvZHknLCBjbGFzc05hbWUgXSApXG5cblx0cmV0dXJuIChcblx0XHQ8UGFuZWxCb2R5XG5cdFx0XHR0aXRsZT17IHNlbGVjdGVkT3B0aW9uSW5UaXRsZSA/IDxzcGFuPnsgcGFuZWxUaXRsZSB9PC9zcGFuPiA6IHRpdGxlIH1cblx0XHRcdGNsYXNzTmFtZT17IG1haW5DbGFzc2VzIH1cblx0XHRcdGluaXRpYWxPcGVuPXsgaW5pdGlhbE9wZW4gfVxuXHRcdFx0eyAuLi5vbWl0KCBwcm9wcywgWyAnaGVscCcgXSApIH1cblx0XHQ+XG5cdFx0XHR7IGhlbHAgJiZcblx0XHRcdFx0PHAgY2xhc3NOYW1lPVwiY29tcG9uZW50cy1iYXNlLWNvbnRyb2xfX2hlbHBcIj57IGhlbHAgfTwvcD5cblx0XHRcdH1cblx0XHRcdHsgb3B0aW9ucyAmJlxuXHRcdFx0XHQ8RGVzaWduQ29udHJvbCB7IC4uLm9taXQoIHByb3BzLCBbICdoZWxwJywgJ3RpdGxlJyBdICkgfSAvPlxuXHRcdFx0fVxuXHRcdFx0eyBwcm9wcy5jaGlsZHJlbiB9XG5cdFx0PC9QYW5lbEJvZHk+XG5cdClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVzaWduUGFuZWxCb2R5XG4iLCJcbmltcG9ydCBCdXR0b25TZXR0aW5ncyBmcm9tICcuLy4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3MnO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5pbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tICcuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlci1zZXR0aW5ncyc7XG5pbXBvcnQgRGVzaWduUGFuZWxCb2R5IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWJvZHlcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMSBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtMS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtMi5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtMy5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNCBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtNC5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNSBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtNS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtNi5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvc3R5bGUtNy5wbmdcIjtcbmltcG9ydCBHcmFkaWVudENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2dyYWRpZW50XCI7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5pbXBvcnQgQlNidXR0b25TZXR0aW5ncyBmcm9tIFwiLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5nc1wiO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGFwcGx5RmlsdGVycyB9ID0gd3AuaG9va3M7XG5cblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBQYW5lbEJvZHksXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBJY29uQnV0dG9uLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2Vib3hjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tHcm91bmRDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VkZXNjcmlwdGlvY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtkZXNjcmlwdGlvbkNvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIGNvbnN0IGltZ1NoYXBlT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJycsIGxhYmVsOiBfXygnRGVmYXVsdCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTEnLCBsYWJlbDogX18oJ1N0eWxlIDEnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc3R5bGUyJywgbGFiZWw6IF9fKCdTdHlsZSAyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXVxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGltYWdlU2hhcGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgICBpbWdJRCxcbiAgICAgICAgICAgICAgICBpbWdVUkwsXG4gICAgICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgICAgIHNob3dDb250ZW50SW1nLFxuICAgICAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgICAgICAgICAgYnV0dG9uU3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHNob3dCdXR0b24sXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgICAgICAgICBkZXNpZ24gPSAnc3R5bGUtMScsXG4gICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgLy8gQ2hhbmdlIHRoZSBpbWFnZVxuICAgICAgICBjb25zdCBvblNlbGVjdEltYWdlID0gaW1nID0+IHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgIGltZ0lEOiBpbWcuaWQsXG4gICAgICAgICAgICAgICAgaW1nVVJMOiBpbWcudXJsLFxuICAgICAgICAgICAgICAgIGltZ0FsdDogaW1nLmFsdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENsZWFyIHRoZSBpbWFnZVxuICAgICAgICBjb25zdCBvblJlbW92ZUltYWdlID0gKCkgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgaW1nSUQ6IG51bGwsXG4gICAgICAgICAgICAgICAgaW1nVVJMOiBudWxsLFxuICAgICAgICAgICAgICAgIGltZ0FsdDogbnVsbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPERlc2lnblBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXsgZGVzaWduIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXsgYXBwbHlGaWx0ZXJzKCAnYmxvY2tzcGFyZS5jdGEuZWRpdC5sYXlvdXRzJywgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdMYXlvdXQgMScsICdibG9ja3NwYXJlJyApLCB2YWx1ZTogJ3N0eWxlLTEnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ0xheW91dCAyJywgJ2Jsb2Nrc3BhcmUnICksIHZhbHVlOiAnc3R5bGUtMicsIGltYWdlOiBJbWFnZURlc2lnblN0eWxlMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnTGF5b3V0IDMnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdzdHlsZS0zJywgaW1hZ2U6IEltYWdlRGVzaWduU3R5bGUzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IGRlc2lnbiA9PiBzZXRBdHRyaWJ1dGVzKCB7IGRlc2lnbiB9ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EZXNpZ25QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IEJ1dHRvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2hvd0J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtzaG93QnV0dG9uOiAhc2hvd0J1dHRvbn0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1JldmVyc2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2xheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtsYXlvdXRPcHRpb246ICFsYXlvdXRPcHRpb259KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbnRlbnRJbWcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdEltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2ltZ0lEfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KHtvcGVufSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZnQtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFZGl0IGltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZm9ybWF0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnU2VsZWN0IEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnUmVtb3ZlIEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRpc21pc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblJlbW92ZUltYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdSZW1vdmUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01lZGlhVXBsb2FkPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge2ltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2ltZ1VSTH0gd2lkdGg9XCIxMDBweFwiIGhlaWdodD1cIjEwMHB4XCIgYWx0PXtpbWdBbHR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdDaG9vc2UgSW1hZ2UgU2hhcGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2ltZ1NoYXBlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW1hZ2VTaGFwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2ltYWdlU2hhcGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Rlc2lnbiAhPSdzdHlsZS0zJyAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8IFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZWJveGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXJTZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yPXtoZWFkZXJib3hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaENvbG9yPXtkYXNoQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VEYXNoQ29sb3I9e2Rhc2hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtkYXNoQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZWNvbG9yPXtoZWFkZXJ0aXRsZUNvbG9yID0+c2V0QXR0cmlidXRlcyh7aGVhZGVydGl0bGVDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbT17dGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVjb2xvcj17aGVhZGVyc3VidGl0bGVDb2xvcj0+c2V0QXR0cmlidXRlcyh7aGVhZGVyc3VidGl0bGVDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZWRlc2NyaXB0aW9jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdEZXNjcmlwdGlvbiBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIHsgc2hvd0J1dHRvbiAmJlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCdXR0b24gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPEJTYnV0dG9uU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbiBpbiBuZXcgd2luZG93XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25UYXJnZXQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0PXsgYnV0dG9uVGFyZ2V0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGFyZ2V0PXsgdmFsdWUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGFyZ2V0OiAhIGJ1dHRvblRhcmdldCB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCA9IHtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnQgPXsgZW5hYmxlR3JhZGllbnQgPT4gc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnR9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNpemU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplPXsgYnV0dG9uU2l6ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblNpemU9eyBidXR0b25TaXplID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaXplIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaGFwZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlPXsgYnV0dG9uU2hhcGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaGFwZT17IGJ1dHRvblNoYXBlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaGFwZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiB0ZXh0IGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblN0eWxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPXtidXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyU3R5bGU9e2J1dHRvblN0eWxlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TdHlsZSB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9e2JvcmRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VCb3JkZXJDb2xvcj17Ym9yZGVyQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2JvcmRlckJ0blRleHRDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Cb3JkZXJXaWR0aD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aD17YnRuQm9yZGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZWJ0bkJvcmRlcldpZHRoID0ge2J0bkJvcmRlcldpZHRoID0+IHNldEF0dHJpYnV0ZXMoe2J0bkJvcmRlcldpZHRofSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkZvbnRXZWlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Gb250V2VpZ2h0fSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAge2J1dHRvblN0eWxlPT09J25vbmUnJiZcblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUgR3JhZGllbnQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtlbmFibGVHcmFkaWVudDogIWVuYWJsZUdyYWRpZW50fSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCAmJiBidXR0b25TdHlsZT09PSdub25lJyYmICBzaG93QnV0dG9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdHcmFkaWVudCBPcHRpb24nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyYWRpZW50Q29sb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjE9e2JhY2tncm91bmRDb2xvcjF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3IxfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMj17YmFja2dyb3VuZENvbG9yMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjJ9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkaWVudEFuZ2xlPXtncmFkaWVudEFuZ2xlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGUgPT4gc2V0QXR0cmlidXRlcyh7Z3JhZGllbnRBbmdsZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMT17Y29sb3JMb2NhdGlvbjEgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29sb3JMb2NhdGlvbjI9e2NvbG9yTG9jYXRpb24yID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yTG9jYXRpb24yfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICB9XG5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvc3R5bGUtMS5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9zdHlsZS0yLnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL3N0eWxlLTMucG5nXCI7IiwiaW1wb3J0IGJsb2dQb3N0U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvY29udGVudC1ib3gtc3R5bGVzXCI7XG5cbi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHByZXZfaW1nID0gYmxvY2tzcGFyZV9nbG9iYWxzO1xuaW1wb3J0ICcuLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4uL3N0eWxlcy9lZGl0b3Iuc2NzcycgO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQlNCdXR0b24gZnJvbSAnLi4vLi4vYnV0dG9uL2VkaXQnXG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gXCIuL2luc3BlY3RvclwiO1xuaW1wb3J0IEJTSGVhZGVyIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlcnNcIjtcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgbWFyZ2luUGFkZGluZ1N0eWxlcyAgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZ1wiO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cblxuY29uc3Qge1xuICAgIEJsb2NrQ29udHJvbHMsXG4gICAgUmljaFRleHQsXG4gICAgVVJMSW5wdXQsXG4gICAgQWxpZ25tZW50VG9vbGJhclxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgSWNvbkJ1dHRvbixcbiAgICBEYXNoaWNvbixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBzaG93QnV0dG9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIHNob3dDb250ZW50SW1nLFxuICAgICAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgICAgICBpbWdBbHQsXG4gICAgICAgICAgICAgICAgaW1hZ2VTaGFwZSxcbiAgICAgICAgICAgICAgICBsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgLi4ubWFyZ2luUGFkZGluZ1N0eWxlcyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG5cbiAgICAgICAgY29uc3QgYnRuU3R5bGUgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uIChhdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBwbGFjZV9ob2xkZXJfaW1hZ2UgPSAgcHJldl9pbWcuaW1nO1xuICAgICAgICBpZihpbWdVUkwgJiYgISFpbWdVUkwubGVuZ3RoKXtcbiAgICAgICAgICAgIHBsYWNlX2hvbGRlcl9pbWFnZSA9IGltZ1VSTDtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c2VjdGlvbkFsaWdubWVudDogdmFsdWV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jb250ZW50LXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3MnLFxuICAgICAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ24sXG4gICAgICAgICAgICAgICAgICAgIChsYXlvdXRPcHRpb249PXRydWUpPydyZXZlcnNlLWltZyc6JycsXG4gICAgICAgICAgICAgICAgICAgIChkZXNpZ24gIT0gJ3N0eWxlLTMnKT8naGFzLWJhY2tncm91bmQnOicnLFxuICAgICAgICAgICAgICAgICAgICBkZXNpZ25cbiAgICAgICAgICAgICAgICApfSBzdHlsZT17ZWRpdFN0eWxlc30+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb250ZW50SW1nICYmIGltZ1VSTCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2NvbnRlbnQtaW1nLXdyYXAnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtwbGFjZV9ob2xkZXJfaW1hZ2V9IGFsdD17aW1nQWx0fSBjbGFzc05hbWU9e2ltYWdlU2hhcGV9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgIWltZ1VSTCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlbXB0eS1wbGNhZWhvbGRlci1kaXZcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNlY3Rpb24td3JhcHBlcicgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgLi4uYmxvZ1Bvc3RTdHlsZXMoYXR0cmlidXRlcylcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1zdWJ0aXRsZS13cmFwJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyU3ViVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtZGVzYy1idG4td3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdEZXNjcmlwdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25EZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGRlc2NyaXB0aW9uQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7c2VjdGlvbkRlc2NyaXB0aW9uOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0J1dHRvbiAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0J1dHRvbiB0ZXh0Li4uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9e1tdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtidXR0b25UZXh0OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNTZWxlY3RlZCAmJiBzaG93QnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BibG9ja3MtYnV0dG9uX19pbmxpbmUtbGluayBibG9ja3NwYXJlLWJ1dHRvbi0ke2J1dHRvbkFsaWdubWVudH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2V2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsnYWRtaW4tbGlua3MnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VVJMSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b24tdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YnV0dG9uVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2J1dHRvblVybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0b3ItYnJlYWtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQXBwbHknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgQ29udGVudEJveCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgQlNCdXR0b24gZnJvbSBcIi4vLi4vYnV0dG9uL2VkaXRcIjtcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXInO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuaW1wb3J0IG1hcmdpblBhZGRpbmcgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgbWFyZ2luUGFkZGluZ1N0eWxlcyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nXCI7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCBibG9nUG9zdFN0eWxlcyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL2NvbnRlbnQtYm94LXN0eWxlc1wiO1xuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7XG4gICAgUmljaFRleHRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHByZXZfaW1nID0gYmxvY2tzcGFyZV9nbG9iYWxzO1xuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzPXtcbiAgICAuLi5tYXJnaW5QYWRkaW5nLFxuICAgIC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzLFxuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlcyxcbiAgICAuLi5idXR0b25BdHRyaWJ1dGVzXG59O1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBDb250ZW50IEJveCcsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdZb3UgY2FuIGNyZWF0ZSBhIHZhcmlldHkgb2YgbGF5b3V0cyB1c2luZyB0aGlzIGJsb2NrLicsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmNvbnRlbnRib3gsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29udGFpbmVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbnRlbnQnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYm94JywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmFsc2UsXG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZGVzaWduOlwic3R5bGUtMVwiXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBlZGl0OiBDb250ZW50Qm94LFxuICAgIHNhdmU6IGZ1bmN0aW9uIChwcm9wcykge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uQ29sb3IsXG4gICAgICAgICAgICBzZWN0aW9uRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgc2hvd0J1dHRvbixcbiAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgIHNob3dDb250ZW50SW1nLFxuICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgaW1hZ2VTaGFwZSxcbiAgICAgICAgICAgIGxheW91dE9wdGlvbixcbiAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG4gICAgICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBlbmFibGVCYWNrZ3JvdW5kQ29sb3JcblxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuXG4gICAgICAgIGNvbnN0IGJvcmRlckNvbG9yID0ge1xuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGRhc2hDb2xvcixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBidG5TdHlsZXMgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnMocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgcGxhY2VfaG9sZGVyX2ltYWdlID0gIHByZXZfaW1nLmltZztcbiAgICAgICAgaWYoaW1nVVJMICYmICEhaW1nVVJMLmxlbmd0aCl7XG4gICAgICAgICAgICBwbGFjZV9ob2xkZXJfaW1hZ2UgPSBpbWdVUkw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY29udGVudC13cmFwcGVyIGJsb2Nrc3BhcmUtYmxvY2tzJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ24sXG4gICAgICAgICAgICAgICAgKGxheW91dE9wdGlvbj09dHJ1ZSk/J3JldmVyc2UtaW1nJzonJyxcbiAgICAgICAgICAgICAgICAoZGVzaWduICE9ICdzdHlsZS0zJyk/J2hhcy1iYWNrZ3JvdW5kJzonJyxcbiAgICAgICAgICAgICAgICBkZXNpZ25cbiAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dDb250ZW50SW1nICYmIGltZ1VSTCAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nY29udGVudC1pbWctd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17cGxhY2VfaG9sZGVyX2ltYWdlfSBhbHQ9e2ltZ0FsdH0gY2xhc3NOYW1lPXtpbWFnZVNoYXBlfS8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICAgICAgIWltZ1VSTCAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5LXBsY2FlaG9sZGVyLWRpdlwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLXdyYXBwZXJcIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAuLi5ibG9nUG9zdFN0eWxlcyhwcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICAgIH19PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdibG9ja3NwYXJlLXNlY3Rpb24taGVhZGVyLXdyYXBwZXInKX0gc3R5bGU9e2JvcmRlckNvbG9yfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcFwiLCBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtJyArIHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXN1YnRpdGxlLXdyYXAnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJUaXRsZSAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclN1YlRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtZGVzYy1idG4td3JhcCc+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZGVzY3JpcHRpb25Db2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkRlc2NyaXB0aW9ufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dCdXR0b24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNCdXR0b24gey4uLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1x0Ly8gQ2hlY2sgaWYgdGhlcmUgaXMgYnV0dG9uIHRleHQgYW5kIG91dHB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17YnV0dG9uVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9e2J1dHRvblRhcmdldCA/ICdfYmxhbmsnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPXtidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufSk7IiwiY29uc3Qgc2VwYXJhdG9yQXR0cmlidXRlcyA9IHtcbiAgICBhbGlnbjoge1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBkZWZhdWx0OiBcImZ1bGxcIlxuICAgIH0sXG4gICAgZGVzaWduOiB7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGRlZmF1bHQ6IFwiZG91YmxlLXdhdmVcIlxuICAgIH0sXG4gICAgbGF5ZXIxU2hhZG93OiB7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogMVxuICAgIH0sXG4gICAgaGVpZ2h0OiB7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGRlZmF1bHQ6IDE1MFxuICAgIH0sXG4gICAgY29sb3I6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjM2MxYTViXCJcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlcGFyYXRvckF0dHJpYnV0ZXMiLCJjb25zdCBiZ0dyYWRpZW50ID0gKGF0dHJpYnV0ZXMpID0+e1xuXG4gICAgbGV0IGJnR3JhZGllbnRTdHlsZXMgPSAnJztcblxuICAgIGlmKGF0dHJpYnV0ZXMuZW5hYmxlR3JhZGllbnQgID09IHRydWUpe1xuICAgICAgICBjb25zdCBhbmdsZSA9IGF0dHJpYnV0ZXMuZ3JhZGllbnRBbmdsZSsnZGVnJztcbiAgICAgICAgY29uc3QgbG9jYTEgID0gYXR0cmlidXRlcy5jb2xvckxvY2F0aW9uMSsnJSc7XG4gICAgICAgIGNvbnN0IGxvY2EyICA9IGF0dHJpYnV0ZXMuY29sb3JMb2NhdGlvbjIrJyUnO1xuICAgICAgICBiZ0dyYWRpZW50U3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOmBsaW5lYXItZ3JhZGllbnQoJHthbmdsZX0sJHthdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjE/YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IxOicjM0IxQTVCJ30gJHtsb2NhMX0sJHthdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcjI/YXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IyOicjOEIyNDlDJ30gJHtsb2NhMn0pYFxuXG4gICAgICAgIH1cbiAgICB9ZWxzZSB7XG4gICAgICAgIGJnR3JhZGllbnRTdHlsZXMgPXtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjphdHRyaWJ1dGVzLmJhY2tHcm91bmRDb2xvcj9hdHRyaWJ1dGVzLmJhY2tHcm91bmRDb2xvcjonI2ZmZicsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYmdHcmFkaWVudFN0eWxlc1xuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGJnR3JhZGllbnQ7IiwiY29uc3QgYmdHcmFkaWVudEF0dHJpYnV0ZXMgPSB7XG5cbiAgICBlbmFibGVHcmFkaWVudDoge1xuICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjE6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjM0IxQTVCXCJcbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjI6IHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZGVmYXVsdDogXCIjOEIyNDlDXCJcbiAgICB9LFxuICAgIGdyYWRpZW50QW5nbGU6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogLTkwXG4gICAgfSxcbiAgICBjb2xvckxvY2F0aW9uMToge1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBkZWZhdWx0OiAzMFxuICAgIH0sXG4gICAgY29sb3JMb2NhdGlvbjI6IHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgZGVmYXVsdDogNzBcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJnR3JhZGllbnRBdHRyaWJ1dGVzIiwiaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuaW1wb3J0IERlc2lnblBhbmVsQm9keSBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1wYW5lbC1ib2R5XCI7XG5pbXBvcnQgRGVzaWduU2VwYXJhdG9yQ29udHJvbCBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbFwiO1xuaW1wb3J0IEdyYWRpZW50Q29sb3JzIGZyb20gJy4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudCc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFBhbmVsQm9keSxcbiAgICBJY29uQnV0dG9uLFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgU2VsZWN0Q29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG9wYWNpdHlSYXRpbyxcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIGltZ1VSTCxcbiAgICAgICAgICAgIGltZ0lELFxuICAgICAgICAgICAgaW1nQWx0LFxuICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgIGJhY2tncm91bmRGaXgsXG4gICAgICAgICAgICBzZXBhcmF0b3JFbmFibGUsXG4gICAgICAgICAgICBkZXNpZ249J3dhdmUtMScsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgc2hvd0Zyb250LFxuICAgICAgICAgICAgemluZGV4RGl2aWRlcixcbiAgICAgICAgICAgIGRpdmlkZXJQb3NpdGlvbixcbiAgICAgICAgICAgIHRvcERpdmlkZXJNYXJnaW4sXG4gICAgICAgICAgICBib3R0b21EaXZpZGVyTWFyZ2luLFxuICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMixcbiAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICBlbmFibGVHYXBcbiAgICAgICAgfT10aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBkaXZpZGVyUG9zaXRpb25PcHRpcG4gPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdoYXMtc2VwYXJhdG9yLXRvcCcsIGxhYmVsOiBfXygnVG9wJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdoYXMtc2VwYXJhdG9yLWJvdHRvbScsIGxhYmVsOiBfXygnQm90dG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICAvLyBDaGFuZ2UgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uU2VsZWN0SW1hZ2UgPSBpbWcgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgaW1nSUQ6IGltZy5pZCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IGltZy51cmwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBpbWcuYWx0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGltYWdlXG4gICAgICAgIGNvbnN0IG9uUmVtb3ZlSW1hZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICBpbWdJRDogbnVsbCxcbiAgICAgICAgICAgICAgICBpbWdVUkw6IG51bGwsXG4gICAgICAgICAgICAgICAgaW1nQWx0OiBudWxsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VTaGFwZXNjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yOiB2YWx1ZX0pO1xuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBHYXBzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGFkZGluZyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJpZ2h0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUxlZnQ9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTWFyZ2luIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gbWFyZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApXG5cbiAgICB9XG59IiwiaW1wb3J0IFNWR0RvdWJsZVdhdmUgZnJvbSAnLi9pbWFnZXMvZG91YmxlLXdhdmUuc3ZnJztcbmltcG9ydCBTVkdGYW4gZnJvbSAnLi9pbWFnZXMvZmFuLnN2Zyc7XG5pbXBvcnQgU1ZHV2F2eSBmcm9tICcuL2ltYWdlcy93YXZ5LnN2Zyc7XG5pbXBvcnQgU1ZHV2F2ZXMgZnJvbSAnLi9pbWFnZXMvd2F2ZXMuc3ZnJztcbmltcG9ydCBTVkdTbG9wZWQgZnJvbSAnLi9pbWFnZXMvc2xvcGVkLnN2Zyc7XG5pbXBvcnQgU1ZHQ3VydmUgZnJvbSAnLi9pbWFnZXMvY3VydmUuc3ZnJztcbmltcG9ydCBTVkdTaGFwZU9jZWFuIGZyb20gJy4vaW1hZ2VzL3NoYXBlb2NlYW4uc3ZnJztcbmltcG9ydCBTVkdHcm93IGZyb20gJy4vaW1hZ2VzL2dyb3cuc3ZnJztcbmltcG9ydCBTVkdDbG91ZHMgZnJvbSAnLi9pbWFnZXMvY2xvdWRzLnN2Zyc7XG5pbXBvcnQgU1ZHQW5nbGVkIGZyb20gJy4vaW1hZ2VzL2FuZ2xlZC5zdmcnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdG9ycyA9IHtcblx0J3dhdnknOiBTVkdXYXZ5LFxuXHQnd2F2ZXMnOiBTVkdXYXZlcyxcblx0J2RvdWJsZS13YXZlJzpTVkdEb3VibGVXYXZlLFxuXHQnZmFuJzpTVkdGYW4sXG5cdCdzbG9wZWQnOlNWR1Nsb3BlZCxcblx0J2N1cnZlJzpTVkdDdXJ2ZSxcblx0J3NoYXBlb2NlYW4nOlNWR1NoYXBlT2NlYW4sXG5cdCdncm93JzpTVkdHcm93LFxuXHQnY2xvdWRzJzpTVkdDbG91ZHMsXG5cdCdhbmdsZWQnOiBTVkdBbmdsZWRcbn1cblxuXG4iLCIvKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IHsgc2VwYXJhdG9ycyB9IGZyb20gJy4vc2VwYXJhdG9ycydcblxuLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuY29uc3QgU2VwYXJhdG9yID0gcHJvcHMgPT4ge1xuXG5cdGNvbnN0IFNlcGFyYXRvckNvbXAgPSBzZXBhcmF0b3JzWyBwcm9wcy5kZXNpZ24gXVxuXG5cblx0Y29uc3QgbWFpbkNsYXNzZXMgPSBjbGFzc25hbWVzKCBbXG5cdFx0cHJvcHMuY2xhc3NOYW1lLFxuXHRcdCdibG9ja3NwYXJlLXNlcGFyYXRvci13cmFwcGVyJyxcblx0XSApXG5cblx0cmV0dXJuIChcblx0XHQ8ZGl2IGNsYXNzTmFtZT17IG1haW5DbGFzc2VzIH0+XG5cdFx0XHQ8U2VwYXJhdG9yQ29tcFxuXHRcdFx0XHRjbGFzc05hbWU9e3Byb3BzLmRlc2lnbn1cblx0XHRcdFx0cHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIlxuXHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIlxuXHRcdFx0Lz5cblx0XHRcdHsgcHJvcHMuY2hpbGRyZW4gfVxuXHRcdDwvZGl2PlxuXHQpXG59XG5cblNlcGFyYXRvci5kZWZhdWx0UHJvcHMgPSB7XG5cdGNsYXNzTmFtZTogJycsXG5cdGRlc2lnbjogJ2RvdWJsZS13YXZlJyxcblx0c2hhZG93OiBmYWxzZSxcbn1cblxuU2VwYXJhdG9yLlNhdmUgPSBwcm9wcyA9PiA8U2VwYXJhdG9yIHsgLi4ucHJvcHMgfSAvPlxuXG5leHBvcnQgZGVmYXVsdCBTZXBhcmF0b3JcbiIsIi8qKlxyXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcclxuICovXHJcbmltcG9ydCBpY29ucyBmcm9tICcuLy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleC5qcyc7XHJcblxyXG4vKipcclxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xyXG4gKi9cclxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcclxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xyXG5jb25zdCB7IEJsb2NrQ29udHJvbHMsQmxvY2tBbGlnbm1lbnRUb29sYmFyfSA9IHdwLmJsb2NrRWRpdG9yO1xyXG5jb25zdCB7IFRvb2xiYXIgfSA9IHdwLmNvbXBvbmVudHM7XHJcblxyXG5jbGFzcyBDb250cm9scyBleHRlbmRzIENvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxyXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxyXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGhvcml6b250YWxGbGlwLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXHJcbiAgICAgICAgfSA9IGF0dHJpYnV0ZXM7XHJcblxyXG5cclxuXHJcbiAgICAgICAgY29uc3QgdG9vbGJhckNvbnRyb2xzID0gWyB7XHJcbiAgICAgICAgICAgIGljb246IGljb25zLmZsaXBZLFxyXG4gICAgICAgICAgICB0aXRsZTogX18oICdGbGlwIGhvcml6dG9uYWxseScsICdibG9ja3NwYXJlJyApLFxyXG4gICAgICAgICAgICBpc0FjdGl2ZTogISEgdmVydGljYWxGbGlwLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRBdHRyaWJ1dGVzKCB7IHZlcnRpY2FsRmxpcDogISB2ZXJ0aWNhbEZsaXAgfSApLFxyXG4gICAgICAgIH1dO1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XHJcbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scz5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbGJhciBjb250cm9scz17IHRvb2xiYXJDb250cm9scyB9IC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxyXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IENvbnRyb2xzOyIsImltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSAgJy4uLy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgU2VwYXJhdG9yIGZyb20gXCIuLi8uLi91dGlscy9zZXBhcmF0b3JcIjtcbmltcG9ydCBDb250cm9scyBmcm9tIFwiLi4vLi4vc2hhcGUtZGl2aWRlci9jb250cm9sc1wiO1xuaW1wb3J0IGJnR3JhZGllbnQgZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL2JnLWdyYWRpZW50JztcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIElubmVyQmxvY2tzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBlZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcblxuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIG9wYWNpdHlSYXRpbyxcbiAgICAgICAgICAgICAgICBpbWdVUkwsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEZpeCxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yRW5hYmxlLFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgc2hvd0Zyb250LFxuICAgICAgICAgICAgICAgIHppbmRleERpdmlkZXIsXG4gICAgICAgICAgICAgICAgZGl2aWRlclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHRvcERpdmlkZXJNYXJnaW4sXG4gICAgICAgICAgICAgICAgYm90dG9tRGl2aWRlck1hcmdpbixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgZW5hYmxlR2FwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cblxuXG5cbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIC4uLmJnR3JhZGllbnQoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAuLi5tYXJnaW5QYWRkaW5nU3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGJhY2tncm91bmRJbWcgPScnO1xuICAgICAgICAgICAgaWYoaW1nVVJMKXtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1nID0gJ3VybCgnK2ltZ1VSTCsnKSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBjbGFzc25hbWVzKFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc3ZnLXdyYXBwZXInLFxuICAgICAgICAgICAgd2lkdGhSYXRpbyh3aWR0aCksXG5cbiAgICAgICAgICAgIGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgICAgICdpcy12ZXJ0aWNhbGx5LWZsaXBwZWQnOiB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgJ2lzLWhvcml6b250YWxseS1mbGlwcGVkJzogaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgbGV0IHNlcFN0eWxlcyA9Jyc7XG4gICAgICAgIGlmKHNlcGFyYXRvckVuYWJsZSl7XG5cbiAgICAgICAgICAgIGlmKGRpdmlkZXJQb3NpdGlvbiA9PT0naGFzLXNlcGFyYXRvci10b3AnKXtcbiAgICAgICAgICAgICAgICBzZXBTdHlsZXMgPXtcbiAgICAgICAgICAgICAgICAgICAgdG9wOnRvcERpdmlkZXJNYXJnaW4rXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IHNob3dGcm9udD8gemluZGV4RGl2aWRlcjonJ1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfWVsc2UgaWYoZGl2aWRlclBvc2l0aW9uID09PSdoYXMtc2VwYXJhdG9yLWJvdHRvbScpe1xuICAgICAgICAgICAgICAgIHNlcFN0eWxlcyA9e1xuICAgICAgICAgICAgICAgICAgICBib3R0b206Ym90dG9tRGl2aWRlck1hcmdpbitcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogc2hvd0Zyb250PyB6aW5kZXhEaXZpZGVyOicnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgc2VwU3R5bGVzID0nJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiYgc2VwYXJhdG9yRW5hYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPENvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWNvbnRhaW5lci13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FsaWduJyArIGFsaWduLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVHYXA/J2hhcy1nYXAtZW5hYmxlJzonJyxcbiAgICAgICAgICAgICAgICAgICAgKGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgYmFja2dyb3VuZEZpeCApPydibG9ja3NwYXJlLWJhY2tncm91bmQtZml4JzpcIlwiLFxuICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3JFbmFibGU/ZGl2aWRlclBvc2l0aW9uOicnXG4gICAgICAgICAgICAgICAgKX0gc3R5bGU9e2VkaXRTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY29udGFpbmVyLWJhY2tncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWltYWdlLXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHlSYXRpb1RvQ2xhc3Mob3BhY2l0eVJhdGlvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMtYmFja2dyb3VuZC1vcGFjaXR5JzogMCAhPT0gb3BhY2l0eVJhdGlvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JhY2tncm91bmRJbWFnZTpiYWNrZ3JvdW5kSW1nfX0+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtzZXBhcmF0b3JFbmFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJsb2Nrc3BhcmUtdG9wLXNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGcm9udD9cImJsb2Nrc3BhcmUtc3ZnLXNob3ctZnJvbnRcIjonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKX0gc3R5bGU9e3NlcFN0eWxlc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXN9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb2xvciA/IGNvbG9yIDogXCIjM2MxYTViXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbj17ZGVzaWdufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnLXN2Zy1pbm5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWlubmVyLWJsb2Nrcyc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTG9jaz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcGVuZGVyPXsoKSA9PiAhdGhpcy5wcm9wcy5oYXNJbm5lckJsb2NrcyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQnV0dG9uQmxvY2tBcHBlbmRlci8+IDogPElubmVyQmxvY2tzLkRlZmF1bHRCbG9ja0FwcGVuZGVyLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cblxuICAgICAgICApXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcGFjaXR5UmF0aW9Ub0NsYXNzKHJhdGlvKSB7XG4gICAgcmV0dXJuICgwID09PSByYXRpbykgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHktJyArICgxMCAqIE1hdGgucm91bmQocmF0aW8gLyAxMCkpO1xufVxuXG5mdW5jdGlvbiB3aWR0aFJhdGlvKHdpZHRoKSB7XG4gICAgdmFyIHN0ciA9IHdpZHRoLnRvU3RyaW5nKCk7XG4gICAgdmFyIG5ld1dpZHRoID0gc3RyLnJlcGxhY2UoJy4nLCctJyk7XG4gICAgcmV0dXJuICdoYXMtd2lkdGgtJytuZXdXaWR0aDtcbn0iLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2NzcycgO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgbWFyZ2luUGFkZGluZyBmcm9tICcuLi91dGlscy9hdHRyaWJ1dGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzIGZyb20gICcuLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmcnO1xuaW1wb3J0IHNlcGFyYXRvckF0dHJpYnV0ZXMgZnJvbSAgJy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VwYXJhdG9yJztcbmltcG9ydCBiZ0dyYWRpZW50IGZyb20gJy4uL3V0aWxzL3N0eWxlcy9iZy1ncmFkaWVudCc7XG5pbXBvcnQgYmdHcmFkaWVudEF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9iZy1ncmFkaWVudCc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG5cbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmltcG9ydCBlZGl0IGZyb20gJy4vY29tcG9uZW50cy9lZGl0JztcbmltcG9ydCBTZXBhcmF0b3IgZnJvbSBcIi4uL3V0aWxzL3NlcGFyYXRvclwiO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlLGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgLi4uYmdHcmFkaWVudEF0dHJpYnV0ZXMsXG4gICAgLi4ubWFyZ2luUGFkZGluZyxcbiAgICAuLi5zZXBhcmF0b3JBdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcblxufTtcbmNvbnN0IGFsaWdubWVudE9wdGlvbnMgPSBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIENvbnRhaW5lcicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdCUyBhZGQgY29udGFpbmVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuY29udGFpbmVyLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbnRhaW5lcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdncm91cCcsJ2Jsb2Nrc3BhcmUnKVxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWydjZW50ZXInLCAnd2lkZScsICdmdWxsJ10sXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGNvdmVyOiAnaHR0cHM6Ly9ibG9ja3NwYXJlLmNvbScsXG4gICAgICAgICAgICBhdXRob3I6ICdCbG9ja3NwYXJlJyxcbiAgICAgICAgICAgIHBhZ2VzOiA1MDBcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGVkaXQsXG4gICAgc2F2ZTogZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgb3BhY2l0eVJhdGlvLFxuICAgICAgICAgICAgaW1nVVJMLFxuICAgICAgICAgICAgYmFja2dyb3VuZEZpeCxcbiAgICAgICAgICAgIHZlcnRpY2FsRmxpcCxcbiAgICAgICAgICAgIGhvcml6b250YWxGbGlwLFxuICAgICAgICAgICAgc2VwYXJhdG9yRW5hYmxlLFxuICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIHNob3dGcm9udCxcbiAgICAgICAgICAgIHppbmRleERpdmlkZXIsXG4gICAgICAgICAgICBkaXZpZGVyUG9zaXRpb24sXG4gICAgICAgICAgICB0b3BEaXZpZGVyTWFyZ2luLFxuICAgICAgICAgICAgYm90dG9tRGl2aWRlck1hcmdpbixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGVuYWJsZUdhcFxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmJnR3JhZGllbnQocHJvcHMuYXR0cmlidXRlcyksXG4gICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMocHJvcHMuYXR0cmlidXRlcyksXG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgICAgICAgICAuLi5tYXJnaW5QYWRkaW5nU3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHNlcFN0eWxlcyA9Jyc7XG4gICAgICAgIGlmKHNlcGFyYXRvckVuYWJsZSl7XG5cbiAgICAgICAgICAgIGlmKGRpdmlkZXJQb3NpdGlvbiA9PT0naGFzLXNlcGFyYXRvci10b3AnKXtcbiAgICAgICAgICAgICAgICBzZXBTdHlsZXMgPXtcbiAgICAgICAgICAgICAgICAgICAgdG9wOnRvcERpdmlkZXJNYXJnaW4rXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IHNob3dGcm9udD8gemluZGV4RGl2aWRlcjonJ1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfWVsc2UgaWYoZGl2aWRlclBvc2l0aW9uID09PSdoYXMtc2VwYXJhdG9yLWJvdHRvbScpe1xuICAgICAgICAgICAgICAgIHNlcFN0eWxlcyA9e1xuICAgICAgICAgICAgICAgICAgICBib3R0b206Ym90dG9tRGl2aWRlck1hcmdpbitcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogc2hvd0Zyb250PyB6aW5kZXhEaXZpZGVyOicnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgc2VwU3R5bGVzID0nJ1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBiYWNrZ3JvdW5kSW1nID0nJztcbiAgICAgICAgaWYoaW1nVVJMKXtcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWcgPSAndXJsKCcraW1nVVJMKycpJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLXN2Zy13cmFwcGVyJyxcbiAgICAgICAgICAgIHdpZHRoUmF0aW8od2lkdGgpLFxuICAgICAgICAgICAgY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICAgICAgJ2lzLXZlcnRpY2FsbHktZmxpcHBlZCc6IHZlcnRpY2FsRmxpcCxcbiAgICAgICAgICAgICAgICAnaXMtaG9yaXpvbnRhbGx5LWZsaXBwZWQnOiBob3Jpem9udGFsRmxpcCxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWNvbnRhaW5lci13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICBlbmFibGVHYXA/J2hhcy1nYXAtZW5hYmxlJzonJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ24sXG4gICAgICAgICAgICAgICAgKGltZ1VSTCAmJiAhIWltZ1VSTC5sZW5ndGggJiYgYmFja2dyb3VuZEZpeCApPydibG9ja3NwYXJlLWJhY2tncm91bmQtZml4JzpcIlwiLFxuICAgICAgICAgICAgICAgIHNlcGFyYXRvckVuYWJsZT9kaXZpZGVyUG9zaXRpb246JydcbiAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWNvbnRhaW5lci1iYWNrZ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWltYWdlLXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eVJhdGlvVG9DbGFzcyhvcGFjaXR5UmF0aW8pLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMtYmFja2dyb3VuZC1vcGFjaXR5JzogMCAhPT0gb3BhY2l0eVJhdGlvXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3VuZEltYWdlOmJhY2tncm91bmRJbWd9fT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAge3NlcGFyYXRvckVuYWJsZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcImJsb2Nrc3BhcmUtdG9wLXNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgICAgICBlbmFibGVHYXA/J2hhcy1nYXAtZW5hYmxlJzonJyxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0Zyb250P1wiYmxvY2tzcGFyZS1zdmctc2hvdy1mcm9udFwiOicnXG4gICAgICAgICAgICAgICAgKX0gc3R5bGU9e3NlcFN0eWxlc30+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbG9yID8gY29sb3IgOiBcIiMzYzFhNWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbj17ZGVzaWdufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmctc3ZnLWlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VwYXJhdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWlubmVyLWJsb2NrcyBibG9ja3NwYXJlLWlubmVyLXdyYXBwZXItYmxvY2tzJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9LFxuICAgIHRyYW5zZm9ybXM6IHtcbiAgICAgICAgZnJvbTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jaycsXG4gICAgICAgICAgICAgICAgaXNNdWx0aUJsb2NrOiB0cnVlLFxuICAgICAgICAgICAgICAgIGJsb2NrczogWyAnKicgXSxcbiAgICAgICAgICAgICAgICBfX2V4cGVyaW1lbnRhbENvbnZlcnQoIGJsb2NrcyApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIGJsb2Nrcy5sZW5ndGggPT09IDEgJiYgYmxvY2tzWyAwIF0ubmFtZSA9PT0gJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1jb250YWluZXInICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlnbm1lbnRzID0gWyAnd2lkZScsICdmdWxsJyBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgd2lkZXN0IHNldHRpbmcgb2YgYWxsIHRoZSBibG9ja3MgdG8gYmUgZ3JvdXBlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRlc3RBbGlnbm1lbnQgPSBibG9ja3MucmVkdWNlKCAoIHJlc3VsdCwgYmxvY2sgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGFsaWduIH0gPSBibG9jay5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxpZ25tZW50cy5pbmRleE9mKCBhbGlnbiApID4gYWxpZ25tZW50cy5pbmRleE9mKCByZXN1bHQgKSA/IGFsaWduIDogcmVzdWx0XG4gICAgICAgICAgICAgICAgICAgIH0sIHVuZGVmaW5lZCApO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbm5lckJsb2NrcyA9IGJsb2Nrcy5tYXAoIGJsb2NrID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVCbG9jayggYmxvY2submFtZSwgYmxvY2suYXR0cmlidXRlcywgYmxvY2suaW5uZXJCbG9ja3MgKVxuICAgICAgICAgICAgICAgICAgICB9ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2NrKCAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWNvbnRhaW5lcicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduOiB3aWRlc3RBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgICAgIH0sIGdyb3VwSW5uZXJCbG9ja3MgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgIF0sXG4gICAgfSxcbn0pO1xuXG5mdW5jdGlvbiBvcGFjaXR5UmF0aW9Ub0NsYXNzKHJhdGlvKSB7XG4gICAgcmV0dXJuICgwID09PSByYXRpbykgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kLW9wYWNpdHktJyArICgxMCAqIE1hdGgucm91bmQocmF0aW8gLyAxMCkpO1xufVxuXG5mdW5jdGlvbiB3aWR0aFJhdGlvKHdpZHRoKSB7XG4gICAgdmFyIHN0ciA9IHdpZHRoLnRvU3RyaW5nKCk7XG4gICAgdmFyIG5ld1dpZHRoID0gc3RyLnJlcGxhY2UoJy4nLCctJyk7XG4gICAgcmV0dXJuICdoYXMtd2lkdGgtJytuZXdXaWR0aDtcbn0iLCJleHBvcnQgZGVmYXVsdCBbXG4gICAgJ2ZhcyBmYS1hZCcsJ2ZhcyBmYS1hZGRyZXNzLWJvb2snLCdmYXMgZmEtYWRkcmVzcy1jYXJkJywnZmFzIGZhLWFkanVzdCcsJ2ZhcyBmYS1haXItZnJlc2hlbmVyJywnZmFzIGZhLWFsaWduLWNlbnRlcicsJ2ZhcyBmYS1hbGlnbi1qdXN0aWZ5JywnZmFzIGZhLWFsaWduLWxlZnQnLCdmYXMgZmEtYWxpZ24tcmlnaHQnLCdmYXMgZmEtYWxsZXJnaWVzJywnZmFzIGZhLWFtYnVsYW5jZScsJ2ZhcyBmYS1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZycsJ2ZhcyBmYS1hbmNob3InLCdmYXMgZmEtYW5nbGUtZG91YmxlLWRvd24nLCdmYXMgZmEtYW5nbGUtZG91YmxlLWxlZnQnLCdmYXMgZmEtYW5nbGUtZG91YmxlLXJpZ2h0JywnZmFzIGZhLWFuZ2xlLWRvdWJsZS11cCcsJ2ZhcyBmYS1hbmdsZS1kb3duJywnZmFzIGZhLWFuZ2xlLWxlZnQnLCdmYXMgZmEtYW5nbGUtcmlnaHQnLCdmYXMgZmEtYW5nbGUtdXAnLCdmYXMgZmEtYW5ncnknLCdmYXMgZmEtYW5raCcsJ2ZhcyBmYS1hcHBsZS1hbHQnLCdmYXMgZmEtYXJjaGl2ZScsJ2ZhcyBmYS1hcmNod2F5JywnZmFzIGZhLWFycm93LWFsdC1jaXJjbGUtZG93bicsJ2ZhcyBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQnLCdmYXMgZmEtYXJyb3ctYWx0LWNpcmNsZS1yaWdodCcsJ2ZhcyBmYS1hcnJvdy1hbHQtY2lyY2xlLXVwJywnZmFzIGZhLWFycm93LWNpcmNsZS1kb3duJywnZmFzIGZhLWFycm93LWNpcmNsZS1sZWZ0JywnZmFzIGZhLWFycm93LWNpcmNsZS1yaWdodCcsJ2ZhcyBmYS1hcnJvdy1jaXJjbGUtdXAnLCdmYXMgZmEtYXJyb3ctZG93bicsJ2ZhcyBmYS1hcnJvdy1sZWZ0JywnZmFzIGZhLWFycm93LXJpZ2h0JywnZmFzIGZhLWFycm93LXVwJywnZmFzIGZhLWFycm93cy1hbHQnLCdmYXMgZmEtYXJyb3dzLWFsdC1oJywnZmFzIGZhLWFycm93cy1hbHQtdicsJ2ZhcyBmYS1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXMnLCdmYXMgZmEtYXN0ZXJpc2snLCdmYXMgZmEtYXQnLCdmYXMgZmEtYXRsYXMnLCdmYXMgZmEtYXRvbScsJ2ZhcyBmYS1hdWRpby1kZXNjcmlwdGlvbicsJ2ZhcyBmYS1hd2FyZCcsJ2ZhcyBmYS1iYWJ5JywnZmFzIGZhLWJhYnktY2FycmlhZ2UnLCdmYXMgZmEtYmFja3NwYWNlJywnZmFzIGZhLWJhY2t3YXJkJywnZmFzIGZhLWJhbGFuY2Utc2NhbGUnLCdmYXMgZmEtYmFuJywnZmFzIGZhLWJhbmQtYWlkJywnZmFzIGZhLWJhcmNvZGUnLCdmYXMgZmEtYmFycycsJ2ZhcyBmYS1iYXNlYmFsbC1iYWxsJywnZmFzIGZhLWJhc2tldGJhbGwtYmFsbCcsJ2ZhcyBmYS1iYXRoJywnZmFzIGZhLWJhdHRlcnktZW1wdHknLCdmYXMgZmEtYmF0dGVyeS1mdWxsJywnZmFzIGZhLWJhdHRlcnktaGFsZicsJ2ZhcyBmYS1iYXR0ZXJ5LXF1YXJ0ZXInLCdmYXMgZmEtYmF0dGVyeS10aHJlZS1xdWFydGVycycsJ2ZhcyBmYS1iZWQnLCdmYXMgZmEtYmVlcicsJ2ZhcyBmYS1iZWxsJywnZmFzIGZhLWJlbGwtc2xhc2gnLCdmYXMgZmEtYmV6aWVyLWN1cnZlJywnZmFzIGZhLWJpYmxlJywnZmFzIGZhLWJpY3ljbGUnLCdmYXMgZmEtYmlub2N1bGFycycsJ2ZhcyBmYS1iaW9oYXphcmQnLCdmYXMgZmEtYmlydGhkYXktY2FrZScsJ2ZhcyBmYS1ibGVuZGVyJywnZmFzIGZhLWJsZW5kZXItcGhvbmUnLCdmYXMgZmEtYmxpbmQnLCdmYXMgZmEtYmxvZycsJ2ZhcyBmYS1ib2xkJywnZmFzIGZhLWJvbHQnLCdmYXMgZmEtYm9tYicsJ2ZhcyBmYS1ib25lJywnZmFzIGZhLWJvbmcnLCdmYXMgZmEtYm9vaycsJ2ZhcyBmYS1ib29rLWRlYWQnLCdmYXMgZmEtYm9vay1vcGVuJywnZmFzIGZhLWJvb2stcmVhZGVyJywnZmFzIGZhLWJvb2ttYXJrJywnZmFzIGZhLWJvd2xpbmctYmFsbCcsJ2ZhcyBmYS1ib3gnLCdmYXMgZmEtYm94LW9wZW4nLCdmYXMgZmEtYm94ZXMnLCdmYXMgZmEtYnJhaWxsZScsJ2ZhcyBmYS1icmFpbicsJ2ZhcyBmYS1icmllZmNhc2UnLCdmYXMgZmEtYnJpZWZjYXNlLW1lZGljYWwnLCdmYXMgZmEtYnJvYWRjYXN0LXRvd2VyJywnZmFzIGZhLWJyb29tJywnZmFzIGZhLWJydXNoJywnZmFzIGZhLWJ1ZycsJ2ZhcyBmYS1idWlsZGluZycsJ2ZhcyBmYS1idWxsaG9ybicsJ2ZhcyBmYS1idWxsc2V5ZScsJ2ZhcyBmYS1idXJuJywnZmFzIGZhLWJ1cycsJ2ZhcyBmYS1idXMtYWx0JywnZmFzIGZhLWJ1c2luZXNzLXRpbWUnLCdmYXMgZmEtY2FsY3VsYXRvcicsJ2ZhcyBmYS1jYWxlbmRhcicsJ2ZhcyBmYS1jYWxlbmRhci1hbHQnLCdmYXMgZmEtY2FsZW5kYXItY2hlY2snLCdmYXMgZmEtY2FsZW5kYXItZGF5JywnZmFzIGZhLWNhbGVuZGFyLW1pbnVzJywnZmFzIGZhLWNhbGVuZGFyLXBsdXMnLCdmYXMgZmEtY2FsZW5kYXItdGltZXMnLCdmYXMgZmEtY2FsZW5kYXItd2VlaycsJ2ZhcyBmYS1jYW1lcmEnLCdmYXMgZmEtY2FtZXJhLXJldHJvJywnZmFzIGZhLWNhbXBncm91bmQnLCdmYXMgZmEtY2FuZHktY2FuZScsJ2ZhcyBmYS1jYW5uYWJpcycsJ2ZhcyBmYS1jYXBzdWxlcycsJ2ZhcyBmYS1jYXInLCdmYXMgZmEtY2FyLWFsdCcsJ2ZhcyBmYS1jYXItYmF0dGVyeScsJ2ZhcyBmYS1jYXItY3Jhc2gnLCdmYXMgZmEtY2FyLXNpZGUnLCdmYXMgZmEtY2FyZXQtZG93bicsJ2ZhcyBmYS1jYXJldC1sZWZ0JywnZmFzIGZhLWNhcmV0LXJpZ2h0JywnZmFzIGZhLWNhcmV0LXNxdWFyZS1kb3duJywnZmFzIGZhLWNhcmV0LXNxdWFyZS1sZWZ0JywnZmFzIGZhLWNhcmV0LXNxdWFyZS1yaWdodCcsJ2ZhcyBmYS1jYXJldC1zcXVhcmUtdXAnLCdmYXMgZmEtY2FyZXQtdXAnLCdmYXMgZmEtY2Fycm90JywnZmFzIGZhLWNhcnQtYXJyb3ctZG93bicsJ2ZhcyBmYS1jYXJ0LXBsdXMnLCdmYXMgZmEtY2FzaC1yZWdpc3RlcicsJ2ZhcyBmYS1jYXQnLCdmYXMgZmEtY2VydGlmaWNhdGUnLCdmYXMgZmEtY2hhaXInLCdmYXMgZmEtY2hhbGtib2FyZCcsJ2ZhcyBmYS1jaGFsa2JvYXJkLXRlYWNoZXInLCdmYXMgZmEtY2hhcmdpbmctc3RhdGlvbicsJ2ZhcyBmYS1jaGFydC1hcmVhJywnZmFzIGZhLWNoYXJ0LWJhcicsJ2ZhcyBmYS1jaGFydC1saW5lJywnZmFzIGZhLWNoYXJ0LXBpZScsJ2ZhcyBmYS1jaGVjaycsJ2ZhcyBmYS1jaGVjay1jaXJjbGUnLCdmYXMgZmEtY2hlY2stZG91YmxlJywnZmFzIGZhLWNoZWNrLXNxdWFyZScsJ2ZhcyBmYS1jaGVzcycsJ2ZhcyBmYS1jaGVzcy1iaXNob3AnLCdmYXMgZmEtY2hlc3MtYm9hcmQnLCdmYXMgZmEtY2hlc3Mta2luZycsJ2ZhcyBmYS1jaGVzcy1rbmlnaHQnLCdmYXMgZmEtY2hlc3MtcGF3bicsJ2ZhcyBmYS1jaGVzcy1xdWVlbicsJ2ZhcyBmYS1jaGVzcy1yb29rJywnZmFzIGZhLWNoZXZyb24tY2lyY2xlLWRvd24nLCdmYXMgZmEtY2hldnJvbi1jaXJjbGUtbGVmdCcsJ2ZhcyBmYS1jaGV2cm9uLWNpcmNsZS1yaWdodCcsJ2ZhcyBmYS1jaGV2cm9uLWNpcmNsZS11cCcsJ2ZhcyBmYS1jaGV2cm9uLWRvd24nLCdmYXMgZmEtY2hldnJvbi1sZWZ0JywnZmFzIGZhLWNoZXZyb24tcmlnaHQnLCdmYXMgZmEtY2hldnJvbi11cCcsJ2ZhcyBmYS1jaGlsZCcsJ2ZhcyBmYS1jaHVyY2gnLCdmYXMgZmEtY2lyY2xlJywnZmFzIGZhLWNpcmNsZS1ub3RjaCcsJ2ZhcyBmYS1jaXR5JywnZmFzIGZhLWNsaXBib2FyZCcsJ2ZhcyBmYS1jbGlwYm9hcmQtY2hlY2snLCdmYXMgZmEtY2xpcGJvYXJkLWxpc3QnLCdmYXMgZmEtY2xvY2snLCdmYXMgZmEtY2xvbmUnLCdmYXMgZmEtY2xvc2VkLWNhcHRpb25pbmcnLCdmYXMgZmEtY2xvdWQnLCdmYXMgZmEtY2xvdWQtZG93bmxvYWQtYWx0JywnZmFzIGZhLWNsb3VkLW1lYXRiYWxsJywnZmFzIGZhLWNsb3VkLW1vb24nLCdmYXMgZmEtY2xvdWQtbW9vbi1yYWluJywnZmFzIGZhLWNsb3VkLXJhaW4nLCdmYXMgZmEtY2xvdWQtc2hvd2Vycy1oZWF2eScsJ2ZhcyBmYS1jbG91ZC1zdW4nLCdmYXMgZmEtY2xvdWQtc3VuLXJhaW4nLCdmYXMgZmEtY2xvdWQtdXBsb2FkLWFsdCcsJ2ZhcyBmYS1jb2NrdGFpbCcsJ2ZhcyBmYS1jb2RlJywnZmFzIGZhLWNvZGUtYnJhbmNoJywnZmFzIGZhLWNvZmZlZScsJ2ZhcyBmYS1jb2cnLCdmYXMgZmEtY29ncycsJ2ZhcyBmYS1jb2lucycsJ2ZhcyBmYS1jb2x1bW5zJywnZmFzIGZhLWNvbW1lbnQnLCdmYXMgZmEtY29tbWVudC1hbHQnLCdmYXMgZmEtY29tbWVudC1kb2xsYXInLCdmYXMgZmEtY29tbWVudC1kb3RzJywnZmFzIGZhLWNvbW1lbnQtc2xhc2gnLCdmYXMgZmEtY29tbWVudHMnLCdmYXMgZmEtY29tbWVudHMtZG9sbGFyJywnZmFzIGZhLWNvbXBhY3QtZGlzYycsJ2ZhcyBmYS1jb21wYXNzJywnZmFzIGZhLWNvbXByZXNzJywnZmFzIGZhLWNvbXByZXNzLWFycm93cy1hbHQnLCdmYXMgZmEtY29uY2llcmdlLWJlbGwnLCdmYXMgZmEtY29va2llJywnZmFzIGZhLWNvb2tpZS1iaXRlJywnZmFzIGZhLWNvcHknLCdmYXMgZmEtY29weXJpZ2h0JywnZmFzIGZhLWNvdWNoJywnZmFzIGZhLWNyZWRpdC1jYXJkJywnZmFzIGZhLWNyb3AnLCdmYXMgZmEtY3JvcC1hbHQnLCdmYXMgZmEtY3Jvc3MnLCdmYXMgZmEtY3Jvc3NoYWlycycsJ2ZhcyBmYS1jcm93JywnZmFzIGZhLWNyb3duJywnZmFzIGZhLWN1YmUnLCdmYXMgZmEtY3ViZXMnLCdmYXMgZmEtY3V0JywnZmFzIGZhLWRhdGFiYXNlJywnZmFzIGZhLWRlYWYnLCdmYXMgZmEtZGVtb2NyYXQnLCdmYXMgZmEtZGVza3RvcCcsJ2ZhcyBmYS1kaGFybWFjaGFrcmEnLCdmYXMgZmEtZGlhZ25vc2VzJywnZmFzIGZhLWRpY2UnLCdmYXMgZmEtZGljZS1kMjAnLCdmYXMgZmEtZGljZS1kNicsJ2ZhcyBmYS1kaWNlLWZpdmUnLCdmYXMgZmEtZGljZS1mb3VyJywnZmFzIGZhLWRpY2Utb25lJywnZmFzIGZhLWRpY2Utc2l4JywnZmFzIGZhLWRpY2UtdGhyZWUnLCdmYXMgZmEtZGljZS10d28nLCdmYXMgZmEtZGlnaXRhbC10YWNob2dyYXBoJywnZmFzIGZhLWRpcmVjdGlvbnMnLCdmYXMgZmEtZGl2aWRlJywnZmFzIGZhLWRpenp5JywnZmFzIGZhLWRuYScsJ2ZhcyBmYS1kb2cnLCdmYXMgZmEtZG9sbGFyLXNpZ24nLCdmYXMgZmEtZG9sbHknLCdmYXMgZmEtZG9sbHktZmxhdGJlZCcsJ2ZhcyBmYS1kb25hdGUnLCdmYXMgZmEtZG9vci1jbG9zZWQnLCdmYXMgZmEtZG9vci1vcGVuJywnZmFzIGZhLWRvdC1jaXJjbGUnLCdmYXMgZmEtZG92ZScsJ2ZhcyBmYS1kb3dubG9hZCcsJ2ZhcyBmYS1kcmFmdGluZy1jb21wYXNzJywnZmFzIGZhLWRyYWdvbicsJ2ZhcyBmYS1kcmF3LXBvbHlnb24nLCdmYXMgZmEtZHJ1bScsJ2ZhcyBmYS1kcnVtLXN0ZWVscGFuJywnZmFzIGZhLWRydW1zdGljay1iaXRlJywnZmFzIGZhLWR1bWJiZWxsJywnZmFzIGZhLWR1bXBzdGVyJywnZmFzIGZhLWR1bXBzdGVyLWZpcmUnLCdmYXMgZmEtZHVuZ2VvbicsJ2ZhcyBmYS1lZGl0JywnZmFzIGZhLWVqZWN0JywnZmFzIGZhLWVsbGlwc2lzLWgnLCdmYXMgZmEtZWxsaXBzaXMtdicsJ2ZhcyBmYS1lbnZlbG9wZScsJ2ZhcyBmYS1lbnZlbG9wZS1vcGVuJywnZmFzIGZhLWVudmVsb3BlLW9wZW4tdGV4dCcsJ2ZhcyBmYS1lbnZlbG9wZS1zcXVhcmUnLCdmYXMgZmEtZXF1YWxzJywnZmFzIGZhLWVyYXNlcicsJ2ZhcyBmYS1ldGhlcm5ldCcsJ2ZhcyBmYS1ldXJvLXNpZ24nLCdmYXMgZmEtZXhjaGFuZ2UtYWx0JywnZmFzIGZhLWV4Y2xhbWF0aW9uJywnZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZScsJ2ZhcyBmYS1leGNsYW1hdGlvbi10cmlhbmdsZScsJ2ZhcyBmYS1leHBhbmQnLCdmYXMgZmEtZXhwYW5kLWFycm93cy1hbHQnLCdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnLCdmYXMgZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0JywnZmFzIGZhLWV5ZScsJ2ZhcyBmYS1leWUtZHJvcHBlcicsJ2ZhcyBmYS1leWUtc2xhc2gnLCdmYXMgZmEtZmFzdC1iYWNrd2FyZCcsJ2ZhcyBmYS1mYXN0LWZvcndhcmQnLCdmYXMgZmEtZmF4JywnZmFzIGZhLWZlYXRoZXInLCdmYXMgZmEtZmVhdGhlci1hbHQnLCdmYXMgZmEtZmVtYWxlJywnZmFzIGZhLWZpZ2h0ZXItamV0JywnZmFzIGZhLWZpbGUnLCdmYXMgZmEtZmlsZS1hbHQnLCdmYXMgZmEtZmlsZS1hcmNoaXZlJywnZmFzIGZhLWZpbGUtYXVkaW8nLCdmYXMgZmEtZmlsZS1jb2RlJywnZmFzIGZhLWZpbGUtY29udHJhY3QnLCdmYXMgZmEtZmlsZS1jc3YnLFxuICAgICdmYXMgZmEtZmlsZS1kb3dubG9hZCcsJ2ZhcyBmYS1maWxlLWV4Y2VsJywnZmFzIGZhLWZpbGUtZXhwb3J0JywnZmFzIGZhLWZpbGUtaW1hZ2UnLCdmYXMgZmEtZmlsZS1pbXBvcnQnLCdmYXMgZmEtZmlsZS1pbnZvaWNlJywnZmFzIGZhLWZpbGUtaW52b2ljZS1kb2xsYXInLCdmYXMgZmEtZmlsZS1tZWRpY2FsJywnZmFzIGZhLWZpbGUtbWVkaWNhbC1hbHQnLCdmYXMgZmEtZmlsZS1wZGYnLCdmYXMgZmEtZmlsZS1wb3dlcnBvaW50JywnZmFzIGZhLWZpbGUtcHJlc2NyaXB0aW9uJywnZmFzIGZhLWZpbGUtc2lnbmF0dXJlJywnZmFzIGZhLWZpbGUtdXBsb2FkJywnZmFzIGZhLWZpbGUtdmlkZW8nLCdmYXMgZmEtZmlsZS13b3JkJywnZmFzIGZhLWZpbGwnLCdmYXMgZmEtZmlsbC1kcmlwJywnZmFzIGZhLWZpbG0nLCdmYXMgZmEtZmlsdGVyJywnZmFzIGZhLWZpbmdlcnByaW50JywnZmFzIGZhLWZpcmUnLCdmYXMgZmEtZmlyZS1hbHQnLCdmYXMgZmEtZmlyZS1leHRpbmd1aXNoZXInLCdmYXMgZmEtZmlyc3QtYWlkJywnZmFzIGZhLWZpc2gnLCdmYXMgZmEtZmlzdC1yYWlzZWQnLCdmYXMgZmEtZmxhZycsJ2ZhcyBmYS1mbGFnLWNoZWNrZXJlZCcsJ2ZhcyBmYS1mbGFnLXVzYScsJ2ZhcyBmYS1mbGFzaycsJ2ZhcyBmYS1mbHVzaGVkJywnZmFzIGZhLWZvbGRlcicsJ2ZhcyBmYS1mb2xkZXItbWludXMnLCdmYXMgZmEtZm9sZGVyLW9wZW4nLCdmYXMgZmEtZm9sZGVyLXBsdXMnLCdmYXMgZmEtZm9udCcsJ2ZhcyBmYS1mb290YmFsbC1iYWxsJywnZmFzIGZhLWZvcndhcmQnLCdmYXMgZmEtZnJvZycsJ2ZhcyBmYS1mcm93bicsJ2ZhcyBmYS1mcm93bi1vcGVuJywnZmFzIGZhLWZ1bm5lbC1kb2xsYXInLCdmYXMgZmEtZnV0Ym9sJywnZmFzIGZhLWdhbWVwYWQnLCdmYXMgZmEtZ2FzLXB1bXAnLCdmYXMgZmEtZ2F2ZWwnLCdmYXMgZmEtZ2VtJywnZmFzIGZhLWdlbmRlcmxlc3MnLCdmYXMgZmEtZ2hvc3QnLCdmYXMgZmEtZ2lmdCcsJ2ZhcyBmYS1naWZ0cycsJ2ZhcyBmYS1nbGFzcy1jaGVlcnMnLCdmYXMgZmEtZ2xhc3MtbWFydGluaScsJ2ZhcyBmYS1nbGFzcy1tYXJ0aW5pLWFsdCcsJ2ZhcyBmYS1nbGFzcy13aGlza2V5JywnZmFzIGZhLWdsYXNzZXMnLCdmYXMgZmEtZ2xvYmUnLCdmYXMgZmEtZ2xvYmUtYWZyaWNhJywnZmFzIGZhLWdsb2JlLWFtZXJpY2FzJywnZmFzIGZhLWdsb2JlLWFzaWEnLCdmYXMgZmEtZ2xvYmUtZXVyb3BlJywnZmFzIGZhLWdvbGYtYmFsbCcsJ2ZhcyBmYS1nb3B1cmFtJywnZmFzIGZhLWdyYWR1YXRpb24tY2FwJywnZmFzIGZhLWdyZWF0ZXItdGhhbicsJ2ZhcyBmYS1ncmVhdGVyLXRoYW4tZXF1YWwnLCdmYXMgZmEtZ3JpbWFjZScsJ2ZhcyBmYS1ncmluJywnZmFzIGZhLWdyaW4tYWx0JywnZmFzIGZhLWdyaW4tYmVhbScsJ2ZhcyBmYS1ncmluLWJlYW0tc3dlYXQnLCdmYXMgZmEtZ3Jpbi1oZWFydHMnLCdmYXMgZmEtZ3Jpbi1zcXVpbnQnLCdmYXMgZmEtZ3Jpbi1zcXVpbnQtdGVhcnMnLCdmYXMgZmEtZ3Jpbi1zdGFycycsJ2ZhcyBmYS1ncmluLXRlYXJzJywnZmFzIGZhLWdyaW4tdG9uZ3VlJywnZmFzIGZhLWdyaW4tdG9uZ3VlLXNxdWludCcsJ2ZhcyBmYS1ncmluLXRvbmd1ZS13aW5rJywnZmFzIGZhLWdyaW4td2luaycsJ2ZhcyBmYS1ncmlwLWhvcml6b250YWwnLCdmYXMgZmEtZ3JpcC1saW5lcycsJ2ZhcyBmYS1ncmlwLWxpbmVzLXZlcnRpY2FsJywnZmFzIGZhLWdyaXAtdmVydGljYWwnLCdmYXMgZmEtZ3VpdGFyJywnZmFzIGZhLWgtc3F1YXJlJywnZmFzIGZhLWhhbW1lcicsJ2ZhcyBmYS1oYW1zYScsJ2ZhcyBmYS1oYW5kLWhvbGRpbmcnLCdmYXMgZmEtaGFuZC1ob2xkaW5nLWhlYXJ0JywnZmFzIGZhLWhhbmQtaG9sZGluZy11c2QnLCdmYXMgZmEtaGFuZC1saXphcmQnLCdmYXMgZmEtaGFuZC1wYXBlcicsJ2ZhcyBmYS1oYW5kLXBlYWNlJywnZmFzIGZhLWhhbmQtcG9pbnQtZG93bicsJ2ZhcyBmYS1oYW5kLXBvaW50LWxlZnQnLCdmYXMgZmEtaGFuZC1wb2ludC1yaWdodCcsJ2ZhcyBmYS1oYW5kLXBvaW50LXVwJywnZmFzIGZhLWhhbmQtcG9pbnRlcicsJ2ZhcyBmYS1oYW5kLXJvY2snLCdmYXMgZmEtaGFuZC1zY2lzc29ycycsJ2ZhcyBmYS1oYW5kLXNwb2NrJywnZmFzIGZhLWhhbmRzJywnZmFzIGZhLWhhbmRzLWhlbHBpbmcnLCdmYXMgZmEtaGFuZHNoYWtlJywnZmFzIGZhLWhhbnVraWFoJywnZmFzIGZhLWhhc2h0YWcnLCdmYXMgZmEtaGF0LXdpemFyZCcsJ2ZhcyBmYS1oYXlrYWwnLCdmYXMgZmEtaGRkJywnZmFzIGZhLWhlYWRpbmcnLCdmYXMgZmEtaGVhZHBob25lcycsJ2ZhcyBmYS1oZWFkcGhvbmVzLWFsdCcsJ2ZhcyBmYS1oZWFkc2V0JywnZmFzIGZhLWhlYXJ0JywnZmFzIGZhLWhlYXJ0LWJyb2tlbicsJ2ZhcyBmYS1oZWFydGJlYXQnLCdmYXMgZmEtaGVsaWNvcHRlcicsJ2ZhcyBmYS1oaWdobGlnaHRlcicsJ2ZhcyBmYS1oaWtpbmcnLCdmYXMgZmEtaGlwcG8nLCdmYXMgZmEtaGlzdG9yeScsJ2ZhcyBmYS1ob2NrZXktcHVjaycsJ2ZhcyBmYS1ob2xseS1iZXJyeScsJ2ZhcyBmYS1ob21lJywnZmFzIGZhLWhvcnNlJywnZmFzIGZhLWhvcnNlLWhlYWQnLCdmYXMgZmEtaG9zcGl0YWwnLCdmYXMgZmEtaG9zcGl0YWwtYWx0JywnZmFzIGZhLWhvc3BpdGFsLXN5bWJvbCcsJ2ZhcyBmYS1ob3QtdHViJywnZmFzIGZhLWhvdGVsJywnZmFzIGZhLWhvdXJnbGFzcycsJ2ZhcyBmYS1ob3VyZ2xhc3MtZW5kJywnZmFzIGZhLWhvdXJnbGFzcy1oYWxmJywnZmFzIGZhLWhvdXJnbGFzcy1zdGFydCcsJ2ZhcyBmYS1ob3VzZS1kYW1hZ2UnLCdmYXMgZmEtaHJ5dm5pYScsJ2ZhcyBmYS1pLWN1cnNvcicsJ2ZhcyBmYS1pY2ljbGVzJywnZmFzIGZhLWlkLWJhZGdlJywnZmFzIGZhLWlkLWNhcmQnLCdmYXMgZmEtaWQtY2FyZC1hbHQnLCdmYXMgZmEtaWdsb28nLCdmYXMgZmEtaW1hZ2UnLCdmYXMgZmEtaW1hZ2VzJywnZmFzIGZhLWluYm94JywnZmFzIGZhLWluZGVudCcsJ2ZhcyBmYS1pbmR1c3RyeScsJ2ZhcyBmYS1pbmZpbml0eScsJ2ZhcyBmYS1pbmZvJywnZmFzIGZhLWluZm8tY2lyY2xlJywnZmFzIGZhLWl0YWxpYycsJ2ZhcyBmYS1qZWRpJywnZmFzIGZhLWpvaW50JywnZmFzIGZhLWpvdXJuYWwtd2hpbGxzJywnZmFzIGZhLWthYWJhJywnZmFzIGZhLWtleScsJ2ZhcyBmYS1rZXlib2FyZCcsJ2ZhcyBmYS1raGFuZGEnLCdmYXMgZmEta2lzcycsJ2ZhcyBmYS1raXNzLWJlYW0nLCdmYXMgZmEta2lzcy13aW5rLWhlYXJ0JywnZmFzIGZhLWtpd2ktYmlyZCcsJ2ZhcyBmYS1sYW5kbWFyaycsJ2ZhcyBmYS1sYW5ndWFnZScsJ2ZhcyBmYS1sYXB0b3AnLCdmYXMgZmEtbGFwdG9wLWNvZGUnLCdmYXMgZmEtbGF1Z2gnLCdmYXMgZmEtbGF1Z2gtYmVhbScsJ2ZhcyBmYS1sYXVnaC1zcXVpbnQnLCdmYXMgZmEtbGF1Z2gtd2luaycsJ2ZhcyBmYS1sYXllci1ncm91cCcsJ2ZhcyBmYS1sZWFmJywnZmFzIGZhLWxlbW9uJywnZmFzIGZhLWxlc3MtdGhhbicsJ2ZhcyBmYS1sZXNzLXRoYW4tZXF1YWwnLCdmYXMgZmEtbGV2ZWwtZG93bi1hbHQnLCdmYXMgZmEtbGV2ZWwtdXAtYWx0JywnZmFzIGZhLWxpZmUtcmluZycsJ2ZhcyBmYS1saWdodGJ1bGInLCdmYXMgZmEtbGluaycsJ2ZhcyBmYS1saXJhLXNpZ24nLCdmYXMgZmEtbGlzdCcsJ2ZhcyBmYS1saXN0LWFsdCcsJ2ZhcyBmYS1saXN0LW9sJywnZmFzIGZhLWxpc3QtdWwnLCdmYXMgZmEtbG9jYXRpb24tYXJyb3cnLCdmYXMgZmEtbG9jaycsJ2ZhcyBmYS1sb2NrLW9wZW4nLCdmYXMgZmEtbG9uZy1hcnJvdy1hbHQtZG93bicsJ2ZhcyBmYS1sb25nLWFycm93LWFsdC1sZWZ0JywnZmFzIGZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0JywnZmFzIGZhLWxvbmctYXJyb3ctYWx0LXVwJywnZmFzIGZhLWxvdy12aXNpb24nLCdmYXMgZmEtbHVnZ2FnZS1jYXJ0JywnZmFzIGZhLW1hZ2ljJywnZmFzIGZhLW1hZ25ldCcsJ2ZhcyBmYS1tYWlsLWJ1bGsnLCdmYXMgZmEtbWFsZScsJ2ZhcyBmYS1tYXAnLCdmYXMgZmEtbWFwLW1hcmtlZCcsJ2ZhcyBmYS1tYXAtbWFya2VkLWFsdCcsJ2ZhcyBmYS1tYXAtbWFya2VyJywnZmFzIGZhLW1hcC1tYXJrZXItYWx0JywnZmFzIGZhLW1hcC1waW4nLCdmYXMgZmEtbWFwLXNpZ25zJywnZmFzIGZhLW1hcmtlcicsJ2ZhcyBmYS1tYXJzJywnZmFzIGZhLW1hcnMtZG91YmxlJywnZmFzIGZhLW1hcnMtc3Ryb2tlJywnZmFzIGZhLW1hcnMtc3Ryb2tlLWgnLCdmYXMgZmEtbWFycy1zdHJva2UtdicsJ2ZhcyBmYS1tYXNrJywnZmFzIGZhLW1lZGFsJywnZmFzIGZhLW1lZGtpdCcsJ2ZhcyBmYS1tZWgnLCdmYXMgZmEtbWVoLWJsYW5rJywnZmFzIGZhLW1laC1yb2xsaW5nLWV5ZXMnLCdmYXMgZmEtbWVtb3J5JywnZmFzIGZhLW1lbm9yYWgnLCdmYXMgZmEtbWVyY3VyeScsJ2ZhcyBmYS1tZXRlb3InLCdmYXMgZmEtbWljcm9jaGlwJywnZmFzIGZhLW1pY3JvcGhvbmUnLCdmYXMgZmEtbWljcm9waG9uZS1hbHQnLCdmYXMgZmEtbWljcm9waG9uZS1hbHQtc2xhc2gnLCdmYXMgZmEtbWljcm9waG9uZS1zbGFzaCcsJ2ZhcyBmYS1taWNyb3Njb3BlJywnZmFzIGZhLW1pbnVzJywnZmFzIGZhLW1pbnVzLWNpcmNsZScsJ2ZhcyBmYS1taW51cy1zcXVhcmUnLCdmYXMgZmEtbWl0dGVuJywnZmFzIGZhLW1vYmlsZScsJ2ZhcyBmYS1tb2JpbGUtYWx0JywnZmFzIGZhLW1vbmV5LWJpbGwnLCdmYXMgZmEtbW9uZXktYmlsbC1hbHQnLCdmYXMgZmEtbW9uZXktYmlsbC13YXZlJywnZmFzIGZhLW1vbmV5LWJpbGwtd2F2ZS1hbHQnLCdmYXMgZmEtbW9uZXktY2hlY2snLCdmYXMgZmEtbW9uZXktY2hlY2stYWx0JywnZmFzIGZhLW1vbnVtZW50JywnZmFzIGZhLW1vb24nLCdmYXMgZmEtbW9ydGFyLXBlc3RsZScsJ2ZhcyBmYS1tb3NxdWUnLCdmYXMgZmEtbW90b3JjeWNsZScsJ2ZhcyBmYS1tb3VudGFpbicsJ2ZhcyBmYS1tb3VzZS1wb2ludGVyJywnZmFzIGZhLW11Zy1ob3QnLCdmYXMgZmEtbXVzaWMnLCdmYXMgZmEtbmV0d29yay13aXJlZCcsJ2ZhcyBmYS1uZXV0ZXInLCdmYXMgZmEtbmV3c3BhcGVyJywnZmFzIGZhLW5vdC1lcXVhbCcsJ2ZhcyBmYS1ub3Rlcy1tZWRpY2FsJywnZmFzIGZhLW9iamVjdC1ncm91cCcsJ2ZhcyBmYS1vYmplY3QtdW5ncm91cCcsJ2ZhcyBmYS1vaWwtY2FuJywnZmFzIGZhLW9tJywnZmFzIGZhLW90dGVyJywnZmFzIGZhLW91dGRlbnQnLCdmYXMgZmEtcGFpbnQtYnJ1c2gnLCdmYXMgZmEtcGFpbnQtcm9sbGVyJywnZmFzIGZhLXBhbGV0dGUnLCdmYXMgZmEtcGFsbGV0JywnZmFzIGZhLXBhcGVyLXBsYW5lJywnZmFzIGZhLXBhcGVyY2xpcCcsJ2ZhcyBmYS1wYXJhY2h1dGUtYm94JywnZmFzIGZhLXBhcmFncmFwaCcsJ2ZhcyBmYS1wYXJraW5nJywnZmFzIGZhLXBhc3Nwb3J0JywnZmFzIGZhLXBhc3RhZmFyaWFuaXNtJywnZmFzIGZhLXBhc3RlJywnZmFzIGZhLXBhdXNlJywnZmFzIGZhLXBhdXNlLWNpcmNsZScsJ2ZhcyBmYS1wYXcnLCdmYXMgZmEtcGVhY2UnLCdmYXMgZmEtcGVuJywnZmFzIGZhLXBlbi1hbHQnLCdmYXMgZmEtcGVuLWZhbmN5JywnZmFzIGZhLXBlbi1uaWInLCdmYXMgZmEtcGVuLXNxdWFyZScsJ2ZhcyBmYS1wZW5jaWwtYWx0JywnZmFzIGZhLXBlbmNpbC1ydWxlcicsJ2ZhcyBmYS1wZW9wbGUtY2FycnknLCdmYXMgZmEtcGVyY2VudCcsJ2ZhcyBmYS1wZXJjZW50YWdlJywnZmFzIGZhLXBlcnNvbi1ib290aCcsJ2ZhcyBmYS1waG9uZScsJ2ZhcyBmYS1waG9uZS1zbGFzaCcsJ2ZhcyBmYS1waG9uZS1zcXVhcmUnLCdmYXMgZmEtcGhvbmUtdm9sdW1lJywnZmFzIGZhLXBpZ2d5LWJhbmsnLCdmYXMgZmEtcGlsbHMnLCdmYXMgZmEtcGxhY2Utb2Ytd29yc2hpcCcsJ2ZhcyBmYS1wbGFuZScsJ2ZhcyBmYS1wbGFuZS1hcnJpdmFsJywnZmFzIGZhLXBsYW5lLWRlcGFydHVyZScsJ2ZhcyBmYS1wbGF5JywnZmFzIGZhLXBsYXktY2lyY2xlJywnZmFzIGZhLXBsdWcnLCdmYXMgZmEtcGx1cycsJ2ZhcyBmYS1wbHVzLWNpcmNsZScsJ2ZhcyBmYS1wbHVzLXNxdWFyZScsJ2ZhcyBmYS1wb2RjYXN0JywnZmFzIGZhLXBvbGwnLCdmYXMgZmEtcG9sbC1oJywnZmFzIGZhLXBvbycsJ2ZhcyBmYS1wb28tc3Rvcm0nLCdmYXMgZmEtcG9vcCcsJ2ZhcyBmYS1wb3J0cmFpdCcsJ2ZhcyBmYS1wb3VuZC1zaWduJywnZmFzIGZhLXBvd2VyLW9mZicsJ2ZhcyBmYS1wcmF5JywnZmFzIGZhLXByYXlpbmctaGFuZHMnLCdmYXMgZmEtcHJlc2NyaXB0aW9uJywnZmFzIGZhLXByZXNjcmlwdGlvbi1ib3R0bGUnLCdmYXMgZmEtcHJlc2NyaXB0aW9uLWJvdHRsZS1hbHQnLCdmYXMgZmEtcHJpbnQnLCdmYXMgZmEtcHJvY2VkdXJlcycsJ2ZhcyBmYS1wcm9qZWN0LWRpYWdyYW0nLFxuICAgICdmYXMgZmEtcHV6emxlLXBpZWNlJywnZmFzIGZhLXFyY29kZScsJ2ZhcyBmYS1xdWVzdGlvbicsJ2ZhcyBmYS1xdWVzdGlvbi1jaXJjbGUnLCdmYXMgZmEtcXVpZGRpdGNoJywnZmFzIGZhLXF1b3RlLWxlZnQnLCdmYXMgZmEtcXVvdGUtcmlnaHQnLCdmYXMgZmEtcXVyYW4nLCdmYXMgZmEtcmFkaWF0aW9uJywnZmFzIGZhLXJhZGlhdGlvbi1hbHQnLCdmYXMgZmEtcmFpbmJvdycsJ2ZhcyBmYS1yYW5kb20nLCdmYXMgZmEtcmVjZWlwdCcsJ2ZhcyBmYS1yZWN5Y2xlJywnZmFzIGZhLXJlZG8nLCdmYXMgZmEtcmVkby1hbHQnLCdmYXMgZmEtcmVnaXN0ZXJlZCcsJ2ZhcyBmYS1yZXBseScsJ2ZhcyBmYS1yZXBseS1hbGwnLCdmYXMgZmEtcmVwdWJsaWNhbicsJ2ZhcyBmYS1yZXN0cm9vbScsJ2ZhcyBmYS1yZXR3ZWV0JywnZmFzIGZhLXJpYmJvbicsJ2ZhcyBmYS1yaW5nJywnZmFzIGZhLXJvYWQnLCdmYXMgZmEtcm9ib3QnLCdmYXMgZmEtcm9ja2V0JywnZmFzIGZhLXJvdXRlJywnZmFzIGZhLXJzcycsJ2ZhcyBmYS1yc3Mtc3F1YXJlJywnZmFzIGZhLXJ1YmxlLXNpZ24nLCdmYXMgZmEtcnVsZXInLCdmYXMgZmEtcnVsZXItY29tYmluZWQnLCdmYXMgZmEtcnVsZXItaG9yaXpvbnRhbCcsJ2ZhcyBmYS1ydWxlci12ZXJ0aWNhbCcsJ2ZhcyBmYS1ydW5uaW5nJywnZmFzIGZhLXJ1cGVlLXNpZ24nLCdmYXMgZmEtc2FkLWNyeScsJ2ZhcyBmYS1zYWQtdGVhcicsJ2ZhcyBmYS1zYXRlbGxpdGUnLCdmYXMgZmEtc2F0ZWxsaXRlLWRpc2gnLCdmYXMgZmEtc2F2ZScsJ2ZhcyBmYS1zY2hvb2wnLCdmYXMgZmEtc2NyZXdkcml2ZXInLCdmYXMgZmEtc2Nyb2xsJywnZmFzIGZhLXNkLWNhcmQnLCdmYXMgZmEtc2VhcmNoJywnZmFzIGZhLXNlYXJjaC1kb2xsYXInLCdmYXMgZmEtc2VhcmNoLWxvY2F0aW9uJywnZmFzIGZhLXNlYXJjaC1taW51cycsJ2ZhcyBmYS1zZWFyY2gtcGx1cycsJ2ZhcyBmYS1zZWVkbGluZycsJ2ZhcyBmYS1zZXJ2ZXInLCdmYXMgZmEtc2hhcGVzJywnZmFzIGZhLXNoYXJlJywnZmFzIGZhLXNoYXJlLWFsdCcsJ2ZhcyBmYS1zaGFyZS1hbHQtc3F1YXJlJywnZmFzIGZhLXNoYXJlLXNxdWFyZScsJ2ZhcyBmYS1zaGVrZWwtc2lnbicsJ2ZhcyBmYS1zaGllbGQtYWx0JywnZmFzIGZhLXNoaXAnLCdmYXMgZmEtc2hpcHBpbmctZmFzdCcsJ2ZhcyBmYS1zaG9lLXByaW50cycsJ2ZhcyBmYS1zaG9wcGluZy1iYWcnLCdmYXMgZmEtc2hvcHBpbmctYmFza2V0JywnZmFzIGZhLXNob3BwaW5nLWNhcnQnLCdmYXMgZmEtc2hvd2VyJywnZmFzIGZhLXNodXR0bGUtdmFuJywnZmFzIGZhLXNpZ24nLCdmYXMgZmEtc2lnbi1pbi1hbHQnLCdmYXMgZmEtc2lnbi1sYW5ndWFnZScsJ2ZhcyBmYS1zaWduLW91dC1hbHQnLCdmYXMgZmEtc2lnbmFsJywnZmFzIGZhLXNpZ25hdHVyZScsJ2ZhcyBmYS1zaW0tY2FyZCcsJ2ZhcyBmYS1zaXRlbWFwJywnZmFzIGZhLXNrYXRpbmcnLCdmYXMgZmEtc2tpaW5nJywnZmFzIGZhLXNraWluZy1ub3JkaWMnLCdmYXMgZmEtc2t1bGwnLCdmYXMgZmEtc2t1bGwtY3Jvc3Nib25lcycsJ2ZhcyBmYS1zbGFzaCcsJ2ZhcyBmYS1zbGVpZ2gnLCdmYXMgZmEtc2xpZGVycy1oJywnZmFzIGZhLXNtaWxlJywnZmFzIGZhLXNtaWxlLWJlYW0nLCdmYXMgZmEtc21pbGUtd2luaycsJ2ZhcyBmYS1zbW9nJywnZmFzIGZhLXNtb2tpbmcnLCdmYXMgZmEtc21va2luZy1iYW4nLCdmYXMgZmEtc21zJywnZmFzIGZhLXNub3dib2FyZGluZycsJ2ZhcyBmYS1zbm93Zmxha2UnLCdmYXMgZmEtc25vd21hbicsJ2ZhcyBmYS1zbm93cGxvdycsJ2ZhcyBmYS1zb2NrcycsJ2ZhcyBmYS1zb2xhci1wYW5lbCcsJ2ZhcyBmYS1zb3J0JywnZmFzIGZhLXNvcnQtYWxwaGEtZG93bicsJ2ZhcyBmYS1zb3J0LWFscGhhLXVwJywnZmFzIGZhLXNvcnQtYW1vdW50LWRvd24nLCdmYXMgZmEtc29ydC1hbW91bnQtdXAnLCdmYXMgZmEtc29ydC1kb3duJywnZmFzIGZhLXNvcnQtbnVtZXJpYy1kb3duJywnZmFzIGZhLXNvcnQtbnVtZXJpYy11cCcsJ2ZhcyBmYS1zb3J0LXVwJywnZmFzIGZhLXNwYScsJ2ZhcyBmYS1zcGFjZS1zaHV0dGxlJywnZmFzIGZhLXNwaWRlcicsJ2ZhcyBmYS1zcGlubmVyJywnZmFzIGZhLXNwbG90Y2gnLCdmYXMgZmEtc3ByYXktY2FuJywnZmFzIGZhLXNxdWFyZScsJ2ZhcyBmYS1zcXVhcmUtZnVsbCcsJ2ZhcyBmYS1zcXVhcmUtcm9vdC1hbHQnLCdmYXMgZmEtc3RhbXAnLCdmYXMgZmEtc3RhcicsJ2ZhcyBmYS1zdGFyLWFuZC1jcmVzY2VudCcsJ2ZhcyBmYS1zdGFyLWhhbGYnLCdmYXMgZmEtc3Rhci1oYWxmLWFsdCcsJ2ZhcyBmYS1zdGFyLW9mLWRhdmlkJywnZmFzIGZhLXN0YXItb2YtbGlmZScsJ2ZhcyBmYS1zdGVwLWJhY2t3YXJkJywnZmFzIGZhLXN0ZXAtZm9yd2FyZCcsJ2ZhcyBmYS1zdGV0aG9zY29wZScsJ2ZhcyBmYS1zdGlja3ktbm90ZScsJ2ZhcyBmYS1zdG9wJywnZmFzIGZhLXN0b3AtY2lyY2xlJywnZmFzIGZhLXN0b3B3YXRjaCcsJ2ZhcyBmYS1zdG9yZScsJ2ZhcyBmYS1zdG9yZS1hbHQnLCdmYXMgZmEtc3RyZWFtJywnZmFzIGZhLXN0cmVldC12aWV3JywnZmFzIGZhLXN0cmlrZXRocm91Z2gnLCdmYXMgZmEtc3Ryb29wd2FmZWwnLCdmYXMgZmEtc3Vic2NyaXB0JywnZmFzIGZhLXN1YndheScsJ2ZhcyBmYS1zdWl0Y2FzZScsJ2ZhcyBmYS1zdWl0Y2FzZS1yb2xsaW5nJywnZmFzIGZhLXN1bicsJ2ZhcyBmYS1zdXBlcnNjcmlwdCcsJ2ZhcyBmYS1zdXJwcmlzZScsJ2ZhcyBmYS1zd2F0Y2hib29rJywnZmFzIGZhLXN3aW1tZXInLCdmYXMgZmEtc3dpbW1pbmctcG9vbCcsJ2ZhcyBmYS1zeW5hZ29ndWUnLCdmYXMgZmEtc3luYycsJ2ZhcyBmYS1zeW5jLWFsdCcsJ2ZhcyBmYS1zeXJpbmdlJywnZmFzIGZhLXRhYmxlJywnZmFzIGZhLXRhYmxlLXRlbm5pcycsJ2ZhcyBmYS10YWJsZXQnLCdmYXMgZmEtdGFibGV0LWFsdCcsJ2ZhcyBmYS10YWJsZXRzJywnZmFzIGZhLXRhY2hvbWV0ZXItYWx0JywnZmFzIGZhLXRhZycsJ2ZhcyBmYS10YWdzJywnZmFzIGZhLXRhcGUnLCdmYXMgZmEtdGFza3MnLCdmYXMgZmEtdGF4aScsJ2ZhcyBmYS10ZWV0aCcsJ2ZhcyBmYS10ZWV0aC1vcGVuJywnZmFzIGZhLXRlbXBlcmF0dXJlLWhpZ2gnLCdmYXMgZmEtdGVtcGVyYXR1cmUtbG93JywnZmFzIGZhLXRlbmdlJywnZmFzIGZhLXRlcm1pbmFsJywnZmFzIGZhLXRleHQtaGVpZ2h0JywnZmFzIGZhLXRleHQtd2lkdGgnLCdmYXMgZmEtdGgnLCdmYXMgZmEtdGgtbGFyZ2UnLCdmYXMgZmEtdGgtbGlzdCcsJ2ZhcyBmYS10aGVhdGVyLW1hc2tzJywnZmFzIGZhLXRoZXJtb21ldGVyJywnZmFzIGZhLXRoZXJtb21ldGVyLWVtcHR5JywnZmFzIGZhLXRoZXJtb21ldGVyLWZ1bGwnLCdmYXMgZmEtdGhlcm1vbWV0ZXItaGFsZicsJ2ZhcyBmYS10aGVybW9tZXRlci1xdWFydGVyJywnZmFzIGZhLXRoZXJtb21ldGVyLXRocmVlLXF1YXJ0ZXJzJywnZmFzIGZhLXRodW1icy1kb3duJywnZmFzIGZhLXRodW1icy11cCcsJ2ZhcyBmYS10aHVtYnRhY2snLCdmYXMgZmEtdGlja2V0LWFsdCcsJ2ZhcyBmYS10aW1lcycsJ2ZhcyBmYS10aW1lcy1jaXJjbGUnLCdmYXMgZmEtdGludCcsJ2ZhcyBmYS10aW50LXNsYXNoJywnZmFzIGZhLXRpcmVkJywnZmFzIGZhLXRvZ2dsZS1vZmYnLCdmYXMgZmEtdG9nZ2xlLW9uJywnZmFzIGZhLXRvaWxldCcsJ2ZhcyBmYS10b2lsZXQtcGFwZXInLCdmYXMgZmEtdG9vbGJveCcsJ2ZhcyBmYS10b29scycsJ2ZhcyBmYS10b290aCcsJ2ZhcyBmYS10b3JhaCcsJ2ZhcyBmYS10b3JpaS1nYXRlJywnZmFzIGZhLXRyYWN0b3InLCdmYXMgZmEtdHJhZGVtYXJrJywnZmFzIGZhLXRyYWZmaWMtbGlnaHQnLCdmYXMgZmEtdHJhaW4nLCdmYXMgZmEtdHJhbScsJ2ZhcyBmYS10cmFuc2dlbmRlcicsJ2ZhcyBmYS10cmFuc2dlbmRlci1hbHQnLCdmYXMgZmEtdHJhc2gnLCdmYXMgZmEtdHJhc2gtYWx0JywnZmFzIGZhLXRyZWUnLCdmYXMgZmEtdHJvcGh5JywnZmFzIGZhLXRydWNrJywnZmFzIGZhLXRydWNrLWxvYWRpbmcnLCdmYXMgZmEtdHJ1Y2stbW9uc3RlcicsJ2ZhcyBmYS10cnVjay1tb3ZpbmcnLCdmYXMgZmEtdHJ1Y2stcGlja3VwJywnZmFzIGZhLXRzaGlydCcsJ2ZhcyBmYS10dHknLCdmYXMgZmEtdHYnLCdmYXMgZmEtdW1icmVsbGEnLCdmYXMgZmEtdW1icmVsbGEtYmVhY2gnLCdmYXMgZmEtdW5kZXJsaW5lJywnZmFzIGZhLXVuZG8nLCdmYXMgZmEtdW5kby1hbHQnLCdmYXMgZmEtdW5pdmVyc2FsLWFjY2VzcycsJ2ZhcyBmYS11bml2ZXJzaXR5JywnZmFzIGZhLXVubGluaycsJ2ZhcyBmYS11bmxvY2snLCdmYXMgZmEtdW5sb2NrLWFsdCcsJ2ZhcyBmYS11cGxvYWQnLCdmYXMgZmEtdXNlcicsJ2ZhcyBmYS11c2VyLWFsdCcsJ2ZhcyBmYS11c2VyLWFsdC1zbGFzaCcsJ2ZhcyBmYS11c2VyLWFzdHJvbmF1dCcsJ2ZhcyBmYS11c2VyLWNoZWNrJywnZmFzIGZhLXVzZXItY2lyY2xlJywnZmFzIGZhLXVzZXItY2xvY2snLCdmYXMgZmEtdXNlci1jb2cnLCdmYXMgZmEtdXNlci1lZGl0JywnZmFzIGZhLXVzZXItZnJpZW5kcycsJ2ZhcyBmYS11c2VyLWdyYWR1YXRlJywnZmFzIGZhLXVzZXItaW5qdXJlZCcsJ2ZhcyBmYS11c2VyLWxvY2snLCdmYXMgZmEtdXNlci1tZCcsJ2ZhcyBmYS11c2VyLW1pbnVzJywnZmFzIGZhLXVzZXItbmluamEnLCdmYXMgZmEtdXNlci1wbHVzJywnZmFzIGZhLXVzZXItc2VjcmV0JywnZmFzIGZhLXVzZXItc2hpZWxkJywnZmFzIGZhLXVzZXItc2xhc2gnLCdmYXMgZmEtdXNlci10YWcnLCdmYXMgZmEtdXNlci10aWUnLCdmYXMgZmEtdXNlci10aW1lcycsJ2ZhcyBmYS11c2VycycsJ2ZhcyBmYS11c2Vycy1jb2cnLCdmYXMgZmEtdXRlbnNpbC1zcG9vbicsJ2ZhcyBmYS11dGVuc2lscycsJ2ZhcyBmYS12ZWN0b3Itc3F1YXJlJywnZmFzIGZhLXZlbnVzJywnZmFzIGZhLXZlbnVzLWRvdWJsZScsJ2ZhcyBmYS12ZW51cy1tYXJzJywnZmFzIGZhLXZpYWwnLCdmYXMgZmEtdmlhbHMnLCdmYXMgZmEtdmlkZW8nLCdmYXMgZmEtdmlkZW8tc2xhc2gnLCdmYXMgZmEtdmloYXJhJywnZmFzIGZhLXZvbGxleWJhbGwtYmFsbCcsJ2ZhcyBmYS12b2x1bWUtZG93bicsJ2ZhcyBmYS12b2x1bWUtbXV0ZScsJ2ZhcyBmYS12b2x1bWUtb2ZmJywnZmFzIGZhLXZvbHVtZS11cCcsJ2ZhcyBmYS12b3RlLXllYScsJ2ZhcyBmYS12ci1jYXJkYm9hcmQnLCdmYXMgZmEtd2Fsa2luZycsJ2ZhcyBmYS13YWxsZXQnLCdmYXMgZmEtd2FyZWhvdXNlJywnZmFzIGZhLXdhdGVyJywnZmFzIGZhLXdlaWdodCcsJ2ZhcyBmYS13ZWlnaHQtaGFuZ2luZycsJ2ZhcyBmYS13aGVlbGNoYWlyJywnZmFzIGZhLXdpZmknLCdmYXMgZmEtd2luZCcsJ2ZhcyBmYS13aW5kb3ctY2xvc2UnLCdmYXMgZmEtd2luZG93LW1heGltaXplJywnZmFzIGZhLXdpbmRvdy1taW5pbWl6ZScsJ2ZhcyBmYS13aW5kb3ctcmVzdG9yZScsJ2ZhcyBmYS13aW5lLWJvdHRsZScsJ2ZhcyBmYS13aW5lLWdsYXNzJywnZmFzIGZhLXdpbmUtZ2xhc3MtYWx0JywnZmFzIGZhLXdvbi1zaWduJywnZmFzIGZhLXdyZW5jaCcsJ2ZhcyBmYS14LXJheScsJ2ZhcyBmYS15ZW4tc2lnbicsJ2ZhcyBmYS15aW4teWFuZycsJ2ZhciBmYS1hZGRyZXNzLWJvb2snLCdmYXIgZmEtYWRkcmVzcy1jYXJkJywnZmFyIGZhLWFuZ3J5JywnZmFyIGZhLWFycm93LWFsdC1jaXJjbGUtZG93bicsJ2ZhciBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQnLCdmYXIgZmEtYXJyb3ctYWx0LWNpcmNsZS1yaWdodCcsJ2ZhciBmYS1hcnJvdy1hbHQtY2lyY2xlLXVwJywnZmFyIGZhLWJlbGwnLCdmYXIgZmEtYmVsbC1zbGFzaCcsJ2ZhciBmYS1ib29rbWFyaycsJ2ZhciBmYS1idWlsZGluZycsJ2ZhciBmYS1jYWxlbmRhcicsJ2ZhciBmYS1jYWxlbmRhci1hbHQnLCdmYXIgZmEtY2FsZW5kYXItY2hlY2snLCdmYXIgZmEtY2FsZW5kYXItbWludXMnLCdmYXIgZmEtY2FsZW5kYXItcGx1cycsJ2ZhciBmYS1jYWxlbmRhci10aW1lcycsJ2ZhciBmYS1jYXJldC1zcXVhcmUtZG93bicsJ2ZhciBmYS1jYXJldC1zcXVhcmUtbGVmdCcsJ2ZhciBmYS1jYXJldC1zcXVhcmUtcmlnaHQnLCdmYXIgZmEtY2FyZXQtc3F1YXJlLXVwJywnZmFyIGZhLWNoYXJ0LWJhcicsJ2ZhciBmYS1jaGVjay1jaXJjbGUnLCdmYXIgZmEtY2hlY2stc3F1YXJlJywnZmFyIGZhLWNpcmNsZScsJ2ZhciBmYS1jbGlwYm9hcmQnLCdmYXIgZmEtY2xvY2snLCdmYXIgZmEtY2xvbmUnLCdmYXIgZmEtY2xvc2VkLWNhcHRpb25pbmcnLCdmYXIgZmEtY29tbWVudCcsJ2ZhciBmYS1jb21tZW50LWFsdCcsJ2ZhciBmYS1jb21tZW50LWRvdHMnLCdmYXIgZmEtY29tbWVudHMnLCdmYXIgZmEtY29tcGFzcycsJ2ZhciBmYS1jb3B5JywnZmFyIGZhLWNvcHlyaWdodCcsJ2ZhciBmYS1jcmVkaXQtY2FyZCcsJ2ZhciBmYS1kaXp6eScsJ2ZhciBmYS1kb3QtY2lyY2xlJywnZmFyIGZhLWVkaXQnLCdmYXIgZmEtZW52ZWxvcGUnLCdmYXIgZmEtZW52ZWxvcGUtb3BlbicsJ2ZhciBmYS1leWUnLCdmYXIgZmEtZXllLXNsYXNoJywnZmFyIGZhLWZpbGUnLCdmYXIgZmEtZmlsZS1hbHQnLCdmYXIgZmEtZmlsZS1hcmNoaXZlJywnZmFyIGZhLWZpbGUtYXVkaW8nLCdmYXIgZmEtZmlsZS1jb2RlJywnZmFyIGZhLWZpbGUtZXhjZWwnLCdmYXIgZmEtZmlsZS1pbWFnZScsJ2ZhciBmYS1maWxlLXBkZicsJ2ZhciBmYS1maWxlLXBvd2VycG9pbnQnLCdmYXIgZmEtZmlsZS12aWRlbycsJ2ZhciBmYS1maWxlLXdvcmQnLCdmYXIgZmEtZmxhZycsJ2ZhciBmYS1mbHVzaGVkJywnZmFyIGZhLWZvbGRlcicsJ2ZhciBmYS1mb2xkZXItb3BlbicsJ2ZhciBmYS1mcm93bicsJ2ZhciBmYS1mcm93bi1vcGVuJywnZmFyIGZhLWZ1dGJvbCcsJ2ZhciBmYS1nZW0nLCdmYXIgZmEtZ3JpbWFjZScsJ2ZhciBmYS1ncmluJywnZmFyIGZhLWdyaW4tYWx0JywnZmFyIGZhLWdyaW4tYmVhbScsJ2ZhciBmYS1ncmluLWJlYW0tc3dlYXQnLCdmYXIgZmEtZ3Jpbi1oZWFydHMnLCdmYXIgZmEtZ3Jpbi1zcXVpbnQnLCdmYXIgZmEtZ3Jpbi1zcXVpbnQtdGVhcnMnLCdmYXIgZmEtZ3Jpbi1zdGFycycsJ2ZhciBmYS1ncmluLXRlYXJzJywnZmFyIGZhLWdyaW4tdG9uZ3VlJywnZmFyIGZhLWdyaW4tdG9uZ3VlLXNxdWludCcsJ2ZhciBmYS1ncmluLXRvbmd1ZS13aW5rJywnZmFyIGZhLWdyaW4td2luaycsJ2ZhciBmYS1oYW5kLWxpemFyZCcsJ2ZhciBmYS1oYW5kLXBhcGVyJywnZmFyIGZhLWhhbmQtcGVhY2UnLCdmYXIgZmEtaGFuZC1wb2ludC1kb3duJywnZmFyIGZhLWhhbmQtcG9pbnQtbGVmdCcsJ2ZhciBmYS1oYW5kLXBvaW50LXJpZ2h0JywnZmFyIGZhLWhhbmQtcG9pbnQtdXAnLCdmYXIgZmEtaGFuZC1wb2ludGVyJywnZmFyIGZhLWhhbmQtcm9jaycsJ2ZhciBmYS1oYW5kLXNjaXNzb3JzJywnZmFyIGZhLWhhbmQtc3BvY2snLCdmYXIgZmEtaGFuZHNoYWtlJywnZmFyIGZhLWhkZCcsJ2ZhciBmYS1oZWFydCcsJ2ZhciBmYS1ob3NwaXRhbCcsJ2ZhciBmYS1ob3VyZ2xhc3MnLCdmYXIgZmEtaWQtYmFkZ2UnLCdmYXIgZmEtaWQtY2FyZCcsJ2ZhciBmYS1pbWFnZScsJ2ZhciBmYS1pbWFnZXMnLCdmYXIgZmEta2V5Ym9hcmQnLCdmYXIgZmEta2lzcycsJ2ZhciBmYS1raXNzLWJlYW0nLCdmYXIgZmEta2lzcy13aW5rLWhlYXJ0JywnZmFyIGZhLWxhdWdoJywnZmFyIGZhLWxhdWdoLWJlYW0nLCdmYXIgZmEtbGF1Z2gtc3F1aW50JywnZmFyIGZhLWxhdWdoLXdpbmsnLCdmYXIgZmEtbGVtb24nLCdmYXIgZmEtbGlmZS1yaW5nJywnZmFyIGZhLWxpZ2h0YnVsYicsJ2ZhciBmYS1saXN0LWFsdCcsJ2ZhciBmYS1tYXAnLCdmYXIgZmEtbWVoJywnZmFyIGZhLW1laC1ibGFuaycsJ2ZhciBmYS1tZWgtcm9sbGluZy1leWVzJywnZmFyIGZhLW1pbnVzLXNxdWFyZScsJ2ZhciBmYS1tb25leS1iaWxsLWFsdCcsJ2ZhciBmYS1tb29uJywnZmFyIGZhLW5ld3NwYXBlcicsJ2ZhciBmYS1vYmplY3QtZ3JvdXAnLCdmYXIgZmEtb2JqZWN0LXVuZ3JvdXAnLCdmYXIgZmEtcGFwZXItcGxhbmUnLCdmYXIgZmEtcGF1c2UtY2lyY2xlJywnZmFyIGZhLXBsYXktY2lyY2xlJywnZmFyIGZhLXBsdXMtc3F1YXJlJywnZmFyIGZhLXF1ZXN0aW9uLWNpcmNsZScsJ2ZhciBmYS1yZWdpc3RlcmVkJywnZmFyIGZhLXNhZC1jcnknLCdmYXIgZmEtc2FkLXRlYXInLCdmYXIgZmEtc2F2ZScsJ2ZhciBmYS1zaGFyZS1zcXVhcmUnLCdmYXIgZmEtc21pbGUnLCdmYXIgZmEtc21pbGUtYmVhbScsJ2ZhciBmYS1zbWlsZS13aW5rJywnZmFyIGZhLXNub3dmbGFrZScsJ2ZhciBmYS1zcXVhcmUnLCdmYXIgZmEtc3RhcicsJ2ZhciBmYS1zdGFyLWhhbGYnLCdmYXIgZmEtc3RpY2t5LW5vdGUnLCdmYXIgZmEtc3RvcC1jaXJjbGUnLCdmYXIgZmEtc3VuJywnZmFyIGZhLXN1cnByaXNlJywnZmFyIGZhLXRodW1icy1kb3duJywnZmFyIGZhLXRodW1icy11cCcsJ2ZhciBmYS10aW1lcy1jaXJjbGUnLCdmYXIgZmEtdGlyZWQnLCdmYXIgZmEtdHJhc2gtYWx0JywnZmFyIGZhLXVzZXInLCdmYXIgZmEtdXNlci1jaXJjbGUnLCdmYXIgZmEtd2luZG93LWNsb3NlJywnZmFyIGZhLXdpbmRvdy1tYXhpbWl6ZScsJ2ZhciBmYS13aW5kb3ctbWluaW1pemUnLCdmYXIgZmEtd2luZG93LXJlc3RvcmUnLFxuICAgICdmYWIgZmEtNTAwcHgnLCdmYWIgZmEtYWNjZXNzaWJsZS1pY29uJywnZmFiIGZhLWFjY3Vzb2Z0JywnZmFiIGZhLWFjcXVpc2l0aW9ucy1pbmNvcnBvcmF0ZWQnLCdmYWIgZmEtYWRuJywnZmFiIGZhLWFkb2JlJywnZmFiIGZhLWFkdmVyc2FsJywnZmFiIGZhLWFmZmlsaWF0ZXRoZW1lJywnZmFiIGZhLWFsZ29saWEnLCdmYWIgZmEtYWxpcGF5JywnZmFiIGZhLWFtYXpvbicsJ2ZhYiBmYS1hbWF6b24tcGF5JywnZmFiIGZhLWFtaWxpYScsJ2ZhYiBmYS1hbmRyb2lkJywnZmFiIGZhLWFuZ2VsbGlzdCcsJ2ZhYiBmYS1hbmdyeWNyZWF0aXZlJywnZmFiIGZhLWFuZ3VsYXInLCdmYWIgZmEtYXBwLXN0b3JlJywnZmFiIGZhLWFwcC1zdG9yZS1pb3MnLCdmYWIgZmEtYXBwZXInLCdmYWIgZmEtYXBwbGUnLCdmYWIgZmEtYXBwbGUtcGF5JywnZmFiIGZhLWFydHN0YXRpb24nLCdmYWIgZmEtYXN5bW1ldHJpaycsJ2ZhYiBmYS1hdGxhc3NpYW4nLCdmYWIgZmEtYXVkaWJsZScsJ2ZhYiBmYS1hdXRvcHJlZml4ZXInLCdmYWIgZmEtYXZpYW5leCcsJ2ZhYiBmYS1hdmlhdG8nLCdmYWIgZmEtYXdzJywnZmFiIGZhLWJhbmRjYW1wJywnZmFiIGZhLWJlaGFuY2UnLCdmYWIgZmEtYmVoYW5jZS1zcXVhcmUnLCdmYWIgZmEtYmltb2JqZWN0JywnZmFiIGZhLWJpdGJ1Y2tldCcsJ2ZhYiBmYS1iaXRjb2luJywnZmFiIGZhLWJpdHknLCdmYWIgZmEtYmxhY2stdGllJywnZmFiIGZhLWJsYWNrYmVycnknLCdmYWIgZmEtYmxvZ2dlcicsJ2ZhYiBmYS1ibG9nZ2VyLWInLCdmYWIgZmEtYmx1ZXRvb3RoJywnZmFiIGZhLWJsdWV0b290aC1iJywnZmFiIGZhLWJ0YycsJ2ZhYiBmYS1idXJvbW9iZWxleHBlcnRlJywnZmFiIGZhLWJ1eXNlbGxhZHMnLCdmYWIgZmEtY2FuYWRpYW4tbWFwbGUtbGVhZicsJ2ZhYiBmYS1jYy1hbWF6b24tcGF5JywnZmFiIGZhLWNjLWFtZXgnLCdmYWIgZmEtY2MtYXBwbGUtcGF5JywnZmFiIGZhLWNjLWRpbmVycy1jbHViJywnZmFiIGZhLWNjLWRpc2NvdmVyJywnZmFiIGZhLWNjLWpjYicsJ2ZhYiBmYS1jYy1tYXN0ZXJjYXJkJywnZmFiIGZhLWNjLXBheXBhbCcsJ2ZhYiBmYS1jYy1zdHJpcGUnLCdmYWIgZmEtY2MtdmlzYScsJ2ZhYiBmYS1jZW50ZXJjb2RlJywnZmFiIGZhLWNlbnRvcycsJ2ZhYiBmYS1jaHJvbWUnLCdmYWIgZmEtY2xvdWRzY2FsZScsJ2ZhYiBmYS1jbG91ZHNtaXRoJywnZmFiIGZhLWNsb3VkdmVyc2lmeScsJ2ZhYiBmYS1jb2RlcGVuJywnZmFiIGZhLWNvZGllcGllJywnZmFiIGZhLWNvbmZsdWVuY2UnLCdmYWIgZmEtY29ubmVjdGRldmVsb3AnLCdmYWIgZmEtY29udGFvJywnZmFiIGZhLWNwYW5lbCcsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtYnknLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1uYycsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLW5jLWV1JywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanAnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1uZCcsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXBkJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtcGQtYWx0JywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtcmVtaXgnLCdmYWIgZmEtY3JlYXRpdmUtY29tbW9ucy1zYScsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmctcGx1cycsJ2ZhYiBmYS1jcmVhdGl2ZS1jb21tb25zLXNoYXJlJywnZmFiIGZhLWNyZWF0aXZlLWNvbW1vbnMtemVybycsJ2ZhYiBmYS1jcml0aWNhbC1yb2xlJywnZmFiIGZhLWNzczMnLCdmYWIgZmEtY3NzMy1hbHQnLCdmYWIgZmEtY3V0dGxlZmlzaCcsJ2ZhYiBmYS1kLWFuZC1kJywnZmFiIGZhLWQtYW5kLWQtYmV5b25kJywnZmFiIGZhLWRhc2hjdWJlJywnZmFiIGZhLWRlbGljaW91cycsJ2ZhYiBmYS1kZXBsb3lkb2cnLCdmYWIgZmEtZGVza3BybycsJ2ZhYiBmYS1kZXYnLCdmYWIgZmEtZGV2aWFudGFydCcsJ2ZhYiBmYS1kaGwnLCdmYWIgZmEtZGlhc3BvcmEnLCdmYWIgZmEtZGlnZycsJ2ZhYiBmYS1kaWdpdGFsLW9jZWFuJywnZmFiIGZhLWRpc2NvcmQnLCdmYWIgZmEtZGlzY291cnNlJywnZmFiIGZhLWRvY2h1YicsJ2ZhYiBmYS1kb2NrZXInLCdmYWIgZmEtZHJhZnQyZGlnaXRhbCcsJ2ZhYiBmYS1kcmliYmJsZScsJ2ZhYiBmYS1kcmliYmJsZS1zcXVhcmUnLCdmYWIgZmEtZHJvcGJveCcsJ2ZhYiBmYS1kcnVwYWwnLCdmYWIgZmEtZHlhbG9nJywnZmFiIGZhLWVhcmx5YmlyZHMnLCdmYWIgZmEtZWJheScsJ2ZhYiBmYS1lZGdlJywnZmFiIGZhLWVsZW1lbnRvcicsJ2ZhYiBmYS1lbGxvJywnZmFiIGZhLWVtYmVyJywnZmFiIGZhLWVtcGlyZScsJ2ZhYiBmYS1lbnZpcmEnLCdmYWIgZmEtZXJsYW5nJywnZmFiIGZhLWV0aGVyZXVtJywnZmFiIGZhLWV0c3knLCdmYWIgZmEtZXhwZWRpdGVkc3NsJywnZmFiIGZhLWZhY2Vib29rJywnZmFiIGZhLWZhY2Vib29rLWYnLCdmYWIgZmEtZmFjZWJvb2stbWVzc2VuZ2VyJywnZmFiIGZhLWZhY2Vib29rLXNxdWFyZScsJ2ZhYiBmYS1mYW50YXN5LWZsaWdodC1nYW1lcycsJ2ZhYiBmYS1mZWRleCcsJ2ZhYiBmYS1mZWRvcmEnLCdmYWIgZmEtZmlnbWEnLCdmYWIgZmEtZmlyZWZveCcsJ2ZhYiBmYS1maXJzdC1vcmRlcicsJ2ZhYiBmYS1maXJzdC1vcmRlci1hbHQnLCdmYWIgZmEtZmlyc3RkcmFmdCcsJ2ZhYiBmYS1mbGlja3InLCdmYWIgZmEtZmxpcGJvYXJkJywnZmFiIGZhLWZseScsJ2ZhYiBmYS1mb250LWF3ZXNvbWUnLCdmYWIgZmEtZm9udC1hd2Vzb21lLWFsdCcsJ2ZhYiBmYS1mb250LWF3ZXNvbWUtZmxhZycsJ2ZhYiBmYS1mb250aWNvbnMnLCdmYWIgZmEtZm9udGljb25zLWZpJywnZmFiIGZhLWZvcnQtYXdlc29tZScsJ2ZhYiBmYS1mb3J0LWF3ZXNvbWUtYWx0JywnZmFiIGZhLWZvcnVtYmVlJywnZmFiIGZhLWZvdXJzcXVhcmUnLCdmYWIgZmEtZnJlZS1jb2RlLWNhbXAnLCdmYWIgZmEtZnJlZWJzZCcsJ2ZhYiBmYS1mdWxjcnVtJywnZmFiIGZhLWdhbGFjdGljLXJlcHVibGljJywnZmFiIGZhLWdhbGFjdGljLXNlbmF0ZScsJ2ZhYiBmYS1nZXQtcG9ja2V0JywnZmFiIGZhLWdnJywnZmFiIGZhLWdnLWNpcmNsZScsJ2ZhYiBmYS1naXQnLCdmYWIgZmEtZ2l0LXNxdWFyZScsJ2ZhYiBmYS1naXRodWInLCdmYWIgZmEtZ2l0aHViLWFsdCcsJ2ZhYiBmYS1naXRodWItc3F1YXJlJywnZmFiIGZhLWdpdGtyYWtlbicsJ2ZhYiBmYS1naXRsYWInLCdmYWIgZmEtZ2l0dGVyJywnZmFiIGZhLWdsaWRlJywnZmFiIGZhLWdsaWRlLWcnLCdmYWIgZmEtZ29mb3JlJywnZmFiIGZhLWdvb2RyZWFkcycsJ2ZhYiBmYS1nb29kcmVhZHMtZycsJ2ZhYiBmYS1nb29nbGUnLCdmYWIgZmEtZ29vZ2xlLWRyaXZlJywnZmFiIGZhLWdvb2dsZS1wbGF5JywnZmFiIGZhLWdvb2dsZS1wbHVzJywnZmFiIGZhLWdvb2dsZS1wbHVzLWcnLCdmYWIgZmEtZ29vZ2xlLXBsdXMtc3F1YXJlJywnZmFiIGZhLWdvb2dsZS13YWxsZXQnLCdmYWIgZmEtZ3JhdGlwYXknLCdmYWIgZmEtZ3JhdicsJ2ZhYiBmYS1ncmlwZmlyZScsJ2ZhYiBmYS1ncnVudCcsJ2ZhYiBmYS1ndWxwJywnZmFiIGZhLWhhY2tlci1uZXdzJywnZmFiIGZhLWhhY2tlci1uZXdzLXNxdWFyZScsJ2ZhYiBmYS1oYWNrZXJyYW5rJywnZmFiIGZhLWhpcHMnLCdmYWIgZmEtaGlyZS1hLWhlbHBlcicsJ2ZhYiBmYS1ob29saScsJ2ZhYiBmYS1ob3JuYmlsbCcsJ2ZhYiBmYS1ob3RqYXInLCdmYWIgZmEtaG91enonLCdmYWIgZmEtaHRtbDUnLCdmYWIgZmEtaHVic3BvdCcsJ2ZhYiBmYS1pbWRiJywnZmFiIGZhLWluc3RhZ3JhbScsJ2ZhYiBmYS1pbnRlcmNvbScsJ2ZhYiBmYS1pbnRlcm5ldC1leHBsb3JlcicsJ2ZhYiBmYS1pbnZpc2lvbicsJ2ZhYiBmYS1pb3hob3N0JywnZmFiIGZhLWl0dW5lcycsJ2ZhYiBmYS1pdHVuZXMtbm90ZScsJ2ZhYiBmYS1qYXZhJywnZmFiIGZhLWplZGktb3JkZXInLCdmYWIgZmEtamVua2lucycsJ2ZhYiBmYS1qaXJhJywnZmFiIGZhLWpvZ2V0JywnZmFiIGZhLWpvb21sYScsJ2ZhYiBmYS1qcycsJ2ZhYiBmYS1qcy1zcXVhcmUnLCdmYWIgZmEtanNmaWRkbGUnLCdmYWIgZmEta2FnZ2xlJywnZmFiIGZhLWtleWJhc2UnLCdmYWIgZmEta2V5Y2RuJywnZmFiIGZhLWtpY2tzdGFydGVyJywnZmFiIGZhLWtpY2tzdGFydGVyLWsnLCdmYWIgZmEta29ydnVlJywnZmFiIGZhLWxhcmF2ZWwnLCdmYWIgZmEtbGFzdGZtJywnZmFiIGZhLWxhc3RmbS1zcXVhcmUnLCdmYWIgZmEtbGVhbnB1YicsJ2ZhYiBmYS1sZXNzJywnZmFiIGZhLWxpbmUnLCdmYWIgZmEtbGlua2VkaW4nLCdmYWIgZmEtbGlua2VkaW4taW4nLCdmYWIgZmEtbGlub2RlJywnZmFiIGZhLWxpbnV4JywnZmFiIGZhLWx5ZnQnLCdmYWIgZmEtbWFnZW50bycsJ2ZhYiBmYS1tYWlsY2hpbXAnLCdmYWIgZmEtbWFuZGFsb3JpYW4nLCdmYWIgZmEtbWFya2Rvd24nLCdmYWIgZmEtbWFzdG9kb24nLCdmYWIgZmEtbWF4Y2RuJywnZmFiIGZhLW1lZGFwcHMnLCdmYWIgZmEtbWVkaXVtJywnZmFiIGZhLW1lZGl1bS1tJywnZmFiIGZhLW1lZHJ0JywnZmFiIGZhLW1lZXR1cCcsJ2ZhYiBmYS1tZWdhcG9ydCcsJ2ZhYiBmYS1tZW5kZWxleScsJ2ZhYiBmYS1taWNyb3NvZnQnLCdmYWIgZmEtbWl4JywnZmFiIGZhLW1peGNsb3VkJywnZmFiIGZhLW1penVuaScsJ2ZhYiBmYS1tb2R4JywnZmFiIGZhLW1vbmVybycsJ2ZhYiBmYS1uYXBzdGVyJywnZmFiIGZhLW5lb3MnLCdmYWIgZmEtbmltYmxyJywnZmFiIGZhLW5pbnRlbmRvLXN3aXRjaCcsJ2ZhYiBmYS1ub2RlJywnZmFiIGZhLW5vZGUtanMnLCdmYWIgZmEtbnBtJywnZmFiIGZhLW5zOCcsJ2ZhYiBmYS1udXRyaXRpb25peCcsJ2ZhYiBmYS1vZG5va2xhc3NuaWtpJywnZmFiIGZhLW9kbm9rbGFzc25pa2ktc3F1YXJlJywnZmFiIGZhLW9sZC1yZXB1YmxpYycsJ2ZhYiBmYS1vcGVuY2FydCcsJ2ZhYiBmYS1vcGVuaWQnLCdmYWIgZmEtb3BlcmEnLCdmYWIgZmEtb3B0aW4tbW9uc3RlcicsJ2ZhYiBmYS1vc2knLCdmYWIgZmEtcGFnZTQnLCdmYWIgZmEtcGFnZWxpbmVzJywnZmFiIGZhLXBhbGZlZCcsJ2ZhYiBmYS1wYXRyZW9uJywnZmFiIGZhLXBheXBhbCcsJ2ZhYiBmYS1wZW5ueS1hcmNhZGUnLCdmYWIgZmEtcGVyaXNjb3BlJywnZmFiIGZhLXBoYWJyaWNhdG9yJywnZmFiIGZhLXBob2VuaXgtZnJhbWV3b3JrJywnZmFiIGZhLXBob2VuaXgtc3F1YWRyb24nLCdmYWIgZmEtcGhwJywnZmFiIGZhLXBpZWQtcGlwZXInLCdmYWIgZmEtcGllZC1waXBlci1hbHQnLCdmYWIgZmEtcGllZC1waXBlci1oYXQnLCdmYWIgZmEtcGllZC1waXBlci1wcCcsJ2ZhYiBmYS1waW50ZXJlc3QnLCdmYWIgZmEtcGludGVyZXN0LXAnLCdmYWIgZmEtcGludGVyZXN0LXNxdWFyZScsJ2ZhYiBmYS1wbGF5c3RhdGlvbicsJ2ZhYiBmYS1wcm9kdWN0LWh1bnQnLCdmYWIgZmEtcHVzaGVkJywnZmFiIGZhLXB5dGhvbicsJ2ZhYiBmYS1xcScsJ2ZhYiBmYS1xdWluc2NhcGUnLCdmYWIgZmEtcXVvcmEnLCdmYWIgZmEtci1wcm9qZWN0JywnZmFiIGZhLXJhc3BiZXJyeS1waScsJ2ZhYiBmYS1yYXZlbHJ5JywnZmFiIGZhLXJlYWN0JywnZmFiIGZhLXJlYWN0ZXVyb3BlJywnZmFiIGZhLXJlYWRtZScsJ2ZhYiBmYS1yZWJlbCcsJ2ZhYiBmYS1yZWQtcml2ZXInLCdmYWIgZmEtcmVkZGl0JywnZmFiIGZhLXJlZGRpdC1hbGllbicsJ2ZhYiBmYS1yZWRkaXQtc3F1YXJlJywnZmFiIGZhLXJlZGhhdCcsJ2ZhYiBmYS1yZW5yZW4nLCdmYWIgZmEtcmVwbHlkJywnZmFiIGZhLXJlc2VhcmNoZ2F0ZScsJ2ZhYiBmYS1yZXNvbHZpbmcnLCdmYWIgZmEtcmV2JywnZmFiIGZhLXJvY2tldGNoYXQnLCdmYWIgZmEtcm9ja3JtcycsJ2ZhYiBmYS1zYWZhcmknLCdmYWIgZmEtc2FzcycsJ2ZhYiBmYS1zY2hsaXgnLCdmYWIgZmEtc2NyaWJkJywnZmFiIGZhLXNlYXJjaGVuZ2luJywnZmFiIGZhLXNlbGxjYXN0JywnZmFiIGZhLXNlbGxzeScsJ2ZhYiBmYS1zZXJ2aWNlc3RhY2snLCdmYWIgZmEtc2hpcnRzaW5idWxrJywnZmFiIGZhLXNob3B3YXJlJywnZmFiIGZhLXNpbXBseWJ1aWx0JywnZmFiIGZhLXNpc3RyaXgnLCdmYWIgZmEtc2l0aCcsJ2ZhYiBmYS1za2V0Y2gnLCdmYWIgZmEtc2t5YXRsYXMnLCdmYWIgZmEtc2t5cGUnLCdmYWIgZmEtc2xhY2snLCdmYWIgZmEtc2xhY2staGFzaCcsJ2ZhYiBmYS1zbGlkZXNoYXJlJywnZmFiIGZhLXNuYXBjaGF0JywnZmFiIGZhLXNuYXBjaGF0LWdob3N0JywnZmFiIGZhLXNuYXBjaGF0LXNxdWFyZScsJ2ZhYiBmYS1zb3VuZGNsb3VkJywnZmFiIGZhLXNvdXJjZXRyZWUnLCdmYWIgZmEtc3BlYWthcCcsJ2ZhYiBmYS1zcG90aWZ5JywnZmFiIGZhLXNxdWFyZXNwYWNlJywnZmFiIGZhLXN0YWNrLWV4Y2hhbmdlJywnZmFiIGZhLXN0YWNrLW92ZXJmbG93JywnZmFiIGZhLXN0YXlsaW5rZWQnLCdmYWIgZmEtc3RlYW0nLCdmYWIgZmEtc3RlYW0tc3F1YXJlJywnZmFiIGZhLXN0ZWFtLXN5bWJvbCcsJ2ZhYiBmYS1zdGlja2VyLW11bGUnLCdmYWIgZmEtc3RyYXZhJywnZmFiIGZhLXN0cmlwZScsJ2ZhYiBmYS1zdHJpcGUtcycsJ2ZhYiBmYS1zdHVkaW92aW5hcmknLCdmYWIgZmEtc3R1bWJsZXVwb24nLCdmYWIgZmEtc3R1bWJsZXVwb24tY2lyY2xlJywnZmFiIGZhLXN1cGVycG93ZXJzJywnZmFiIGZhLXN1cHBsZScsJ2ZhYiBmYS1zdXNlJywnZmFiIGZhLXRlYW1zcGVhaycsJ2ZhYiBmYS10ZWxlZ3JhbScsJ2ZhYiBmYS10ZWxlZ3JhbS1wbGFuZScsJ2ZhYiBmYS10ZW5jZW50LXdlaWJvJywnZmFiIGZhLXRoZS1yZWQteWV0aScsJ2ZhYiBmYS10aGVtZWNvJywnZmFiIGZhLXRoZW1laXNsZScsJ2ZhYiBmYS10aGluay1wZWFrcycsJ2ZhYiBmYS10cmFkZS1mZWRlcmF0aW9uJywnZmFiIGZhLXRyZWxsbycsJ2ZhYiBmYS10cmlwYWR2aXNvcicsJ2ZhYiBmYS10dW1ibHInLCdmYWIgZmEtdHVtYmxyLXNxdWFyZScsJ2ZhYiBmYS10d2l0Y2gnLCdmYWIgZmEtdHdpdHRlcicsJ2ZhYiBmYS10d2l0dGVyLXNxdWFyZScsJ2ZhYiBmYS10eXBvMycsJ2ZhYiBmYS11YmVyJywnZmFiIGZhLXVidW50dScsJ2ZhYiBmYS11aWtpdCcsJ2ZhYiBmYS11bmlyZWdpc3RyeScsJ2ZhYiBmYS11bnRhcHBkJywnZmFiIGZhLXVwcycsJ2ZhYiBmYS11c2InLCdmYWIgZmEtdXNwcycsJ2ZhYiBmYS11c3N1bm5haCcsJ2ZhYiBmYS12YWFkaW4nLCdmYWIgZmEtdmlhY29pbicsJ2ZhYiBmYS12aWFkZW8nLCdmYWIgZmEtdmlhZGVvLXNxdWFyZScsJ2ZhYiBmYS12aWJlcicsJ2ZhYiBmYS12aW1lbycsJ2ZhYiBmYS12aW1lby1zcXVhcmUnLCdmYWIgZmEtdmltZW8tdicsJ2ZhYiBmYS12aW5lJywnZmFiIGZhLXZrJywnZmFiIGZhLXZudicsJ2ZhYiBmYS12dWVqcycsJ2ZhYiBmYS13ZWVibHknLCdmYWIgZmEtd2VpYm8nLCdmYWIgZmEtd2VpeGluJywnZmFiIGZhLXdoYXRzYXBwJywnZmFiIGZhLXdoYXRzYXBwLXNxdWFyZScsJ2ZhYiBmYS13aG1jcycsJ2ZhYiBmYS13aWtpcGVkaWEtdycsJ2ZhYiBmYS13aW5kb3dzJywnZmFiIGZhLXdpeCcsJ2ZhYiBmYS13aXphcmRzLW9mLXRoZS1jb2FzdCcsJ2ZhYiBmYS13b2xmLXBhY2stYmF0dGFsaW9uJywnZmFiIGZhLXdvcmRwcmVzcycsJ2ZhYiBmYS13b3JkcHJlc3Mtc2ltcGxlJywnZmFiIGZhLXdwYmVnaW5uZXInLCdmYWIgZmEtd3BleHBsb3JlcicsJ2ZhYiBmYS13cGZvcm1zJywnZmFiIGZhLXdwcmVzc3InLCdmYWIgZmEteGJveCcsJ2ZhYiBmYS14aW5nJywnZmFiIGZhLXhpbmctc3F1YXJlJywnZmFiIGZhLXktY29tYmluYXRvcicsJ2ZhYiBmYS15YWhvbycsJ2ZhYiBmYS15YW5kZXgnLCdmYWIgZmEteWFuZGV4LWludGVybmF0aW9uYWwnLCdmYWIgZmEteWFybicsJ2ZhYiBmYS15ZWxwJywnZmFiIGZhLXlvYXN0JywnZmFiIGZhLXlvdXR1YmUnLCdmYWIgZmEteW91dHViZS1zcXVhcmUnLCdmYWIgZmEtemhpaHUnLFxuXSIsImltcG9ydCAnLi4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG5cbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudFxuXG5pbXBvcnQgSWNvbkxpc3REYXRhIGZyb20gJy4uLy4uLy4uL2luYy9pY29uLWxpYi9pY29uTGlzdCc7XG5cbmNsYXNzIEljb25MaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKVxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaXNPcGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGZpbHRlclRleHQ6ICcnLFxuICAgICAgICAgICAgc2hvd0ljb25zOiBmYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBkaXNhYmxlVG9nZ2xlLCBjb2xvclNldHRpbmdzLCBpY29uQ29sb3IsIG9uQ29sb3JDaGFuZ2UgfSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJUZXh0IH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIHZhciBmaW5hbERhdGEgPSBbXTtcbiAgICAgICAgaWYgKGZpbHRlclRleHQubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgSWNvbkxpc3REYXRhLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUuaW5jbHVkZXMoZmlsdGVyVGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxEYXRhLnB1c2gobmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluYWxEYXRhID0gSWNvbkxpc3REYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtZmllbGQgYmxvY2tzcGFyZS1maWVsZC1pY29uLWxpc3QgJHtkaXNhYmxlVG9nZ2xlID8gJycgOiAnYmxvY2tzcGFyZS10b2dnbGUtZW5hYmxlZCd9YH0+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMubGFiZWwgJiZcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIHshZGlzYWJsZVRvZ2dsZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlIGxhYmVsPXt0aGlzLnByb3BzLmxhYmVsfSBjbGFzc05hbWU9eydibG9ja3NwYXJlLWljb24tbGlzdC10b2dnbGUnfSB2YWx1ZT17dGhpcy5wcm9wcy52YWx1ZSA/IHRydWUgOiBmYWxzZX0gb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy52YWx1ZSA/ICcnIDogJyAnKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge2NvbG9yU2V0dGluZ3MgJiYgPENvbG9yIGxhYmVsPXtfXygnIENvbG9yJyl9IHZhbHVlPXtpY29uQ29sb3IgfHwgJyNjY2MnfSBvbkNoYW5nZT17KGNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKGNvbG9yKX0gLz59XG5cbiAgICAgICAgICAgICAgICB7KGRpc2FibGVUb2dnbGUgfHwgdGhpcy5wcm9wcy52YWx1ZSAhPSAnJykgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaWNvbi1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3RoaXMuc3RhdGUuZmlsdGVyVGV4dH0gcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBvbkNoYW5nZT17ZSA9PiB0aGlzLnNldFN0YXRlKHsgZmlsdGVyVGV4dDogZS50YXJnZXQudmFsdWUgfSl9IGF1dG9Db21wbGV0ZT1cIm9mZlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pY29uLWxpc3QtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaW5hbERhdGEubWFwKG5hbWUgPT4geyByZXR1cm4gKDxzcGFuIGNsYXNzTmFtZT17dmFsdWUgPT0gbmFtZSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ30gb25DbGljaz17ZSA9PiB7IHRoaXMucHJvcHMub25DaGFuZ2UobmFtZSkgfX0+PHNwYW4gY2xhc3NOYW1lPXtuYW1lfSAvPjwvc3Bhbj4pIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEljb25MaXN0IiwiaW1wb3J0IEljb25MaXN0IGZyb20gJy4vSWNvbkxpc3QnO1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0ZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJTSWNvblNldHRpbmdzKCBwcm9wcyApIHtcblxuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBvbkNoYW5nZU5hbWUgPSAoKSA9PiB7fSxcbiAgICAgIGVuYWJsZWljb25TaXplLFxuICAgICAgaWNvblNpemUsXG4gICAgICBvbkNoYW5nZUljb25TaXplT3B0aW9ucyA9ICgpID0+IHt9LFxuICAgICAgZW5hYmxlaWNvblN0eWxlcyxcbiAgICAgIGljb25TdHlsZXMsXG4gICAgICBvbkNoYW5nZUljb25TdHlsZXMgPSAoKSA9PiB7fSxcbiAgICAgIGljb25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBvbkNoYW5nZUljb25CYWNrZ3JvdW5kQ29sb3IgPSAoKSA9PiB7fSxcbiAgICAgIGljb25Cb3JkZXJDb2xvcixcbiAgICAgIG9uQ2hhbmdlSWNvbkJvcmRlckNvbG9yID0gKCk9PiB7fSxcbiAgICAgIGljb25Db2xvcixcbiAgICAgIE9uQ2hhbmdlSWNvbkNvbG9yID0gKCkgPT57fSxcbiAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgIG9uQ2hhbmdlQm9yZGVyUmFkaXVzID0gKCkgPT4ge31cblxuICAgIH0gPSBwcm9wcztcblxuXG5cbiAgICBjb25zdCBpY29uU2l6ZU9wdGlvbnMgPSBbXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1zaXplLXNtYWxsJywgbGFiZWw6IF9fKCdTbWFsbCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWljb24tc2l6ZS1tZWRpdW0nLCBsYWJlbDogX18oJ01lZGl1bScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWljb24tc2l6ZS1sYXJnZScsIGxhYmVsOiBfXygnTGFyZ2UnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXNpemUtZXh0cmFsYXJnZScsIGxhYmVsOiBfXygnRXh0cmEgTGFyZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgIF07XG5cbiAgICBjb25zdCBpY29uU3R5bGVzT3B0aW9ucyA9IFtcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXN0eWxlMScsIGxhYmVsOiBfXygnTm9uZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWljb24tc3R5bGUyJywgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1zdHlsZTMnLCBsYWJlbDogX18oJ0JvcmRlcicsICdibG9ja3NwYXJlJyl9LFxuXG4gICAgXTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxJY29uTGlzdFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTmFtZX0vPlxuXG5cbiAgICAgICAgICAgIHtmYWxzZSAhPSBlbmFibGVpY29uU2l6ZSAmJihcbiAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgbGFiZWw9e19fKCdJY29uIFNpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtpY29uU2l6ZX1cbiAgICAgICAgICAgICAgICBvcHRpb25zPXtpY29uU2l6ZU9wdGlvbnMubWFwKCh7dmFsdWUsIGxhYmVsfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSWNvblNpemVPcHRpb25zfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtmYWxzZSAhPSBlbmFibGVpY29uU3R5bGVzICYmKFxuICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0ljb24gU3R5bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtpY29uU3R5bGVzfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e2ljb25TdHlsZXNPcHRpb25zLm1hcCgoe3ZhbHVlLCBsYWJlbH0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICAgICAgfSkpfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZUljb25TdHlsZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSWNvbiBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpY29uQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBPbkNoYW5nZUljb25Db2xvcixcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdJY29uIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICB9XX0+XG4gICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAge2ljb25TdHlsZXMgPT09ICdibG9ja3NwYXJlLWljb24tc3R5bGUyJyAmJlxuXG4gICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGljb25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUljb25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgfV19PlxuICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICB9XG5cblxuXG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApXG59IiwiaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSBcIi4uLy4uL3V0aWxzL21hcmdpblwiO1xuaW1wb3J0IEJTSWNvblNldHRpbmdzIGZyb20gJy4uLy4uL2ljb24tc2V0L2NvbXBvbmVudHMvaWNvbi1zZXR0aW5ncyc7XG5pbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3NcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIlxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2wsXG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgU2VsZWN0Q29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcblxuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgICAgY291bnRlckZvbnRDb2xvcixcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1nSWNvbk9wdGlvbixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBpY29uQm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcixcbiAgICAgICAgICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgICAgICAgICAgYmxvY2tCb3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBvbkNoYW5nZUNvdW50ZXJGb250Q29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjb3VudGVyRm9udENvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZWltZ0ljb25PcHRpb24gPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtpbWdJY29uT3B0aW9uOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUNvdW50ZXJTdHlsZSA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2Rlc2lnbjogdmFsdWV9KTtcbiAgICAgICAgY29uc3QgaW1nSWNvbk9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6J2ljb24nLGxhYmVsOl9fKCdJY29uJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonaW1hZ2UnLGxhYmVsOl9fKCdJbWFnZScsJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBsYXlvdXRPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1sYXlvdXQxJywgbGFiZWw6IF9fKCdMYXlvdXQgMScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1sYXlvdXQyJywgbGFiZWw6IF9fKCdMYXlvdXQgMicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayAgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IEljb24gJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Nob3dJbWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dJbWFnZTogIXNob3dJbWFnZX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICB7aW1nSWNvbk9wdGlvbiA9PSAnaWNvbicgJiYgc2hvd0ltYWdlICYmXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHkgdGl0bGU9e19fKCdJY29uIFNldHRpbmdzJyl9IGluaXRpYWxPcGVuPXtmYWxzZX0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCU0ljb25TZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VOYW1lPXtuYW1lID0+IHNldEF0dHJpYnV0ZXMoe25hbWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWljb25TaXplPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZT17aWNvblNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uU2l6ZU9wdGlvbnM9e2ljb25TaXplID0+IHNldEF0dHJpYnV0ZXMoe2ljb25TaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVpY29uU3R5bGVzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3R5bGVzPXtpY29uU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSWNvblN0eWxlcz17aWNvblN0eWxlcyA9PiBzZXRBdHRyaWJ1dGVzKHtpY29uU3R5bGVzfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZENvbG9yPXtpY29uQmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvcj17aWNvbkJhY2tncm91bmRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtpY29uQmFja2dyb3VuZENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQm9yZGVyQ29sb3I9e2ljb25Cb3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUljb25Cb3JkZXJDb2xvcj17aWNvbkJvcmRlckNvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2ljb25Cb3JkZXJDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtpY29uQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT25DaGFuZ2VJY29uQ29sb3I9e2ljb25Db2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtpY29uQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cz17Ym9yZGVyUmFkaXVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXMgPT4gc2V0QXR0cmlidXRlcyh7Ym9yZGVyUmFkaXVzfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdIZWFkZXIgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJsb2NrR2Fwcz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlRm9udFNpemU9e3RpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7dGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uPXtoZWFkZXJsYXlvdXRPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJUYWc9e2hlYWRlclRhZ09wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUYWdPcHRpb259KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yPXtoZWFkZXJib3hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaENvbG9yPXtkYXNoQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VEYXNoQ29sb3I9e2Rhc2hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtkYXNoQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZWNvbG9yPXtoZWFkZXJ0aXRsZUNvbG9yID0+c2V0QXR0cmlidXRlcyh7aGVhZGVydGl0bGVDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbT17dGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVjb2xvcj17aGVhZGVyc3VidGl0bGVDb2xvcj0+c2V0QXR0cmlidXRlcyh7aGVhZGVyc3VidGl0bGVDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuXG5cbiAgICB9XG59IiwiY29uc3QgaWNvbkNvbG9yT3B0aW9ucyA9IChhdHRyaWJ1dGVzKSA9PntcblxuICAgIGxldCBpY29uU3R5bGVzID0gJyc7XG5cbiAgICBpZiAoYXR0cmlidXRlcy5pY29uU3R5bGVzPT09J2Jsb2Nrc3BhcmUtaWNvbi1zdHlsZTInKXtcbiAgICAgICAgaWNvblN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjphdHRyaWJ1dGVzLmljb25CYWNrZ3JvdW5kQ29sb3I/YXR0cmlidXRlcy5pY29uQmFja2dyb3VuZENvbG9yOicjOGIyNDljJyxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOmF0dHJpYnV0ZXMuaWNvbkJvcmRlckNvbG9yP2F0dHJpYnV0ZXMuaWNvbkJvcmRlckNvbG9yOicjOGIyNDljJyxcbiAgICAgICAgICAgIGNvbG9yOmF0dHJpYnV0ZXMuaWNvbkNvbG9yP2F0dHJpYnV0ZXMuaWNvbkNvbG9yOicjZmZmJyxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czphdHRyaWJ1dGVzLmJvcmRlclJhZGl1cysnJScsXG5cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIGVsc2UgaWYoYXR0cmlidXRlcy5pY29uU3R5bGVzPT09J2Jsb2Nrc3BhcmUtaWNvbi1zdHlsZTMnKXtcbiAgICAgICAgaWNvblN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjondHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6YXR0cmlidXRlcy5pY29uQm9yZGVyQ29sb3I/YXR0cmlidXRlcy5pY29uQm9yZGVyQ29sb3I6JyM4YjI0OWMnLFxuICAgICAgICAgICAgY29sb3I6YXR0cmlidXRlcy5pY29uQ29sb3I/YXR0cmlidXRlcy5pY29uQ29sb3I6JyNmZmYnLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOmF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzKyclJyxcblxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGljb25TdHlsZXMgPXtcbiAgICAgICAgICAgIGNvbG9yOmF0dHJpYnV0ZXMuaWNvbkNvbG9yP2F0dHJpYnV0ZXMuaWNvbkNvbG9yOicjZmZmJ1xuXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgICAgICByZXR1cm4gaWNvblN0eWxlc1xufVxuXG5leHBvcnQgZGVmYXVsdCBpY29uQ29sb3JPcHRpb25zOyIsImltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmdcIlxuaW1wb3J0ICcuLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4uL3N0eWxlcy9lZGl0b3Iuc2NzcycgO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBDb3VudFVwIGZyb20gJ3JlYWN0LWNvdW50dXAnO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL2ljb24tY29sb3InO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge1xuICAgIFRvb2xiYXIsXG4gICAgUmFuZ2VDb250cm9sLFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHtcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIFJpY2hUZXh0LFxuICAgIElubmVyQmxvY2tzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cblxuY29uc3QgQUxMT1dFRF9CTE9DS1MgPSBbICdjb3JlL2ltYWdlJ107XG5jb25zdCBURU1QTEFURSA9IFtcbiAgICBbJ2NvcmUvaW1hZ2UnLHtcblxuICAgIH1dXG5dO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvdW50ZXJCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgICAgICBjb3VudGVyLFxuICAgICAgICAgICAgICAgIGNvdW50ZXJGb250Q29sb3IsXG4gICAgICAgICAgICAgICAgaW1nSWNvbk9wdGlvbixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOlwiI2ZmZlwiLFxuICAgICAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJsb2NrQm9yZGVyUmFkaXVzID8gYmxvY2tCb3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGljb25TdHlsZXNjc3MgPXtcbiAgICAgICAgICAgIC4uLmljb25Db2xvck9wdGlvbnMoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICA8VG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzX2Jhcl92YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvdW50ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBjb3VudGVyOiB2YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsxMDAwMDAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWNvdW50ZXItd3JhcHBlciBibG9ja3NwYXJlLWJsb2Nrc1wiIHN0eWxlPXtlZGl0U3R5bGVzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1jb3VudGVyLXNlY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICApfSA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmxvY2tzcGFyZS1jb3VudGVycy1pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ0ljb25PcHRpb24gPT0naW1hZ2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9eyBURU1QTEFURSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXsgQUxMT1dFRF9CTE9DS1MgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUluc2VydFVwZGF0ZXNTZWxlY3Rpb249eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ0ljb25PcHRpb24gPT0naWNvbicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWljb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdHlsZXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17aWNvblN0eWxlc2Nzc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e25hbWV9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY291bnRlcnNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY291bnRlclwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY291bnRlckZvbnRDb2xvcj9jb3VudGVyRm9udENvbG9yOlwiIzAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENvdW50VXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhY2NvdW50LWJhbGFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZD17Y291bnRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj17NC43NX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG9wYWNpdHlSYXRpb1RvQ2xhc3MoIHJhdGlvICkge1xuICAgIHJldHVybiAoIDAgPT09IHJhdGlvIHx8IDUwID09PSByYXRpbyApID9cbiAgICAgICAgbnVsbCA6XG4gICAgICAgICdoYXMtYmFja2dyb3VuZC1vcGFjaXR5LScgKyAoIDEwICogTWF0aC5yb3VuZCggcmF0aW8gLyAxMCApICk7XG59XG5cblxuXG5cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZ1wiO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9pY29uLWNvbG9yXCI7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1JpY2hUZXh0LElubmVyQmxvY2tzfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgICAgICBjb3VudGVyLFxuICAgICAgICAgICAgICAgIGNvdW50ZXJGb250Q29sb3IsXG4gICAgICAgICAgICAgICAgaW1nSWNvbk9wdGlvbixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYmxvY2tCb3JkZXJSYWRpdXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAuLi5tYXJnaW5QYWRkaW5nU3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBibG9ja0JvcmRlclJhZGl1cyA/IGJsb2NrQm9yZGVyUmFkaXVzIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaWNvblN0eWxlc2NzcyA9e1xuICAgICAgICAgICAgLi4uaWNvbkNvbG9yT3B0aW9ucyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnMoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4oXG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWNvdW50ZXItd3JhcHBlciBibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLXNlY3Rpb24tY291bnRlci1iYXJcIiBzdHlsZT17ZWRpdFN0eWxlc30+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtY291bnRlci1zZWN0aW9uJ1xuICAgICAgICAgICAgICAgICl9ID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmxvY2tzcGFyZS1jb3VudGVycy1pdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbil9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpbWFnZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ0ljb25PcHRpb24gPT0naWNvbicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWJsb2NrLWljb24td3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLWljb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17aWNvblN0eWxlc2Nzc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT17bmFtZX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtY291bnRlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1jb3VudGVyXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY291bnRlckZvbnRDb2xvcj9jb3VudGVyRm9udENvbG9yOlwiIzAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT57Y291bnRlcn08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIClcbiAgICB9XG59IiwiaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9zZWN0aW9uLWhlYWRlcidcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvdyc7XG5pbXBvcnQgbWFyZ2luUGFkZGluZyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9tYXJnaW4tcGFkZGluZ1wiXG5pbXBvcnQgQ291bnRlckJsb2NrIGZyb20gJy4vY29tcG9uZW50cy9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vY29tcG9uZW50cy9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5cbiBjb25zdCB7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuIGNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAgLi4uc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMsXG4gICAgIC4uLm1hcmdpblBhZGRpbmcsXG4gICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbiB9XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIENvdW50ZXInLCdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246X18oJ0FkZCBjb3VudGVyIGluIHlvdSBwYWdlIGFuZCBwb3N0JywnYmxvY2tzcGFyZWAnKSxcbiAgICBEZXNjcmlwdGlvbjonRGlzcGxheXMgQ291bnRlcicsXG4gICAgY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuY291bnRlcixcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjb3VudGVyJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ251bWJlcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdib3gnLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyAnd2lkZScsICdmdWxsJywgJ2NlbnRlcicgXSxcbiAgICAgICAgaHRtbDogdHJ1ZVxuICAgIH0sXG5cbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGNvdW50ZXI6IDEwMCxcbiAgICAgICAgICAgIGNvdW50ZXJGb250Q29sb3I6XCIjMDAwXCIsXG4gICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yOlwiIzAwMFwiLFxuICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I6XCIjMDAwXCIsXG4gICAgICAgICAgICBuYW1lOiBcImZhcyBmYS1jaGFydC1saW5lXCIsXG4gICAgICAgICAgICBoZWFkZXJUaXRsZTpcIkVudGVyIFRpdGxlXCJcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBlZGl0OkNvdW50ZXJCbG9jayxcbiAgICBzYXZlOlNhdmVcblxuXG59KTsiLCJcbmltcG9ydCBCU0ljb25TZXR0aW5ncyBmcm9tICcuL2ljb24tc2V0dGluZ3MnO1xuXG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBpY29uQm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBpY29uQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXNcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keSB0aXRsZT17X18oJ0ljb24gU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuICAgICAgICAgICAgICAgICAgICA8QlNJY29uU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU5hbWU9e25hbWUgPT4gc2V0QXR0cmlidXRlcyh7IG5hbWUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWljb25TaXplPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplPXtpY29uU2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSWNvblNpemVPcHRpb25zPXsgaWNvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7IGljb25TaXplIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlaWNvblN0eWxlcz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3R5bGVzPXtpY29uU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uU3R5bGVzPXtpY29uU3R5bGVzID0+IHNldEF0dHJpYnV0ZXMoeyBpY29uU3R5bGVzIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmRDb2xvcj17aWNvbkJhY2tncm91bmRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSWNvbkJhY2tncm91bmRDb2xvcj17aWNvbkJhY2tncm91bmRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgaWNvbkJhY2tncm91bmRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25Cb3JkZXJDb2xvcj17aWNvbkJvcmRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJY29uQm9yZGVyQ29sb3I9e2ljb25Cb3JkZXJDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHsgaWNvbkJvcmRlckNvbG9yIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uQ29sb3I9e2ljb25Db2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIE9uQ2hhbmdlSWNvbkNvbG9yPXtpY29uQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGljb25Db2xvciB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPXtib3JkZXJSYWRpdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlclJhZGl1cz17Ym9yZGVyUmFkaXVzID0+IHNldEF0dHJpYnV0ZXMoeyBib3JkZXJSYWRpdXMgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBpY29uQ29sb3JPcHRpb25zIGZyb20gICcuLi8uLi91dGlscy9zdHlsZXMvaWNvbi1jb2xvcidcbmNvbnN0IHtcbiAgICBBbGlnbm1lbnRUb29sYmFyLFxuICAgIEJsb2NrQ29udHJvbHNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNsYXNzIEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnN0YXRlID0geyBkZXZpY2U6ICdtZCcsIHNwYWNlcjogdHJ1ZSB9O1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICBjb25zdCB7IHNldEF0dHJpYnV0ZXMsIGNsaWVudElkLCBhdHRyaWJ1dGVzOiB7IHVuaXF1ZUlkIH0gfSA9IHRoaXMucHJvcHNcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KVxuICAgICAgICBpZiAoIXVuaXF1ZUlkKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pcXVlSWQgJiYgdW5pcXVlSWQgIT0gX2NsaWVudCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgaWNvblN0eWxlc0NzcyA9IHtcbiAgICAgICAgICAgIC4uLmljb25Db2xvck9wdGlvbnMoYXR0cmlidXRlcylcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHNlY3Rpb25BbGlnbm1lbnQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIG5leHRBbGlnbiApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgc2VjdGlvbkFsaWdubWVudDogbmV4dEFsaWduIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzJz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyJyBzdHlsZT17e3RleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50fX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1pY29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3R5bGVzXG4gICAgICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17aWNvblN0eWxlc0Nzc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtuYW1lfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRWRpdDsiLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9pY29uLWNvbG9yXCI7XG5cbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBuYW1lLCBpY29uU2l6ZSwgaWNvblN0eWxlcyxzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IGljb25TdHlsZXNDc3MgPSB7XG4gICAgICAgICAgICAuLi5pY29uQ29sb3JPcHRpb25zKHRoaXMucHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrYH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrLWljb24td3JhcHBlcmB9IHN0eWxlPXt7dGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnR9fT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1pY29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlc1xuICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17aWNvblN0eWxlc0Nzc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e25hbWV9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2F2ZSIsImltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9jb21wb25lbnRzL3NhdmUnXG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbmNvbnN0e25hbWUsY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuLy8gUmVnaXN0ZXIgYWxpZ25tZW50c1xuY29uc3QgYWxpZ25tZW50T3B0aW9ucyA9IFsnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCddO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIEljb24nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnT3VyIEljb24gYmxvY2sgYWxsb3dzIHlvdSB0byBjaG9vc2UgYW5kIHBsYWNlIHZhcmlvdXMgdHlwZSBvZiBpY29ucycsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuaWNvbmJsb2Nrc3BhcmUsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2ljb24nLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2V0JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2JveCcsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcbiAgICBlZGl0OiBFZGl0LFxuICAgIHNhdmU6U2F2ZVxufSk7XG4iLCJpbXBvcnQgY29tcGFjdCBmcm9tIFwibG9kYXNoL2NvbXBhY3RcIjtcbmltcG9ydCBtYXAgZnJvbSAnbG9kYXNoL21hcCc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIGltYWdlU2l6ZVNlbGVjdCgpIHtcbiAgICAgICAgY29uc3QgZ2V0U2V0dGluZ3MgPSB3cC5kYXRhLnNlbGVjdCggJ2NvcmUvZWRpdG9yJyApLmdldEVkaXRvclNldHRpbmdzKCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBhY3QoIG1hcCggZ2V0U2V0dGluZ3MuaW1hZ2VTaXplcywgKHsgbmFtZSwgc2x1ZyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBzbHVnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBuYW1lXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgbnVtYmVyb2ZTbGlkZSxcbiAgICAgICAgICAgICAgICBjYXJvdXNlbFNwZWVkLFxuICAgICAgICAgICAgICAgIHNob3dzbGlkZXJOZXh0UHJldixcbiAgICAgICAgICAgICAgICBjYXJvdXNlbE5leHRJY29uLFxuICAgICAgICAgICAgICAgIHNob3dEb3RzLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Db2xvcixcbiAgICAgICAgICAgICAgICBndXR0ZXJTcGFjZSxcbiAgICAgICAgICAgICAgICBjb2xvckZpbHRlcixcbiAgICAgICAgICAgICAgICBzaG93T3JpZ2luYWxPbkhvdmVyLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25TaXplLFxuICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9QbGF5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IGFiSW1hZ2VTaXplU2VsZWN0ID0ge1xuICAgICAgICAgICAgdmFsdWU6ICdzZWxlY3RpbWFnZScsXG4gICAgICAgICAgICBsYWJlbDogX18oICdTZWxlY3QgaW1hZ2Ugc2l6ZScgKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGltYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmltYWdlU2l6ZVNlbGVjdCgpO1xuICAgICAgICBpbWFnZVNpemVPcHRpb25zLnVuc2hpZnQoIGFiSW1hZ2VTaXplU2VsZWN0ICk7XG4gICAgICAgIC8vIENvbWJpbmUgdGhlIG9iamVjdHNcblxuXG5cbiAgICAgICAgY29uc3QgQXJyb3dPcHRpb24gPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdmYXMgZmEtY2hldnJvbi1yaWdodCcsIGxhYmVsOiBfXygnQ2hldnJvbicsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnZmFzIGZhLWFuZ2xlLXJpZ2h0JywgbGFiZWw6IF9fKCdBbmdsZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnZmFzIGZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0JywgbGFiZWw6IF9fKCdDaGV2cm9uIENpcmNsZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnZmFzIGZhLWNhcmV0LXJpZ2h0JywgbGFiZWw6IF9fKCdDYXJldCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnZmFzIGZhLWFycm93LWNpcmNsZS1yaWdodCcsIGxhYmVsOiBfXygnQ2lyY2xlJywgJ2Jsb2Nrc3BhcmUnKX1cblxuXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY29sb3JGaWx0ZXJPcHRpb24gPVtcbiAgICAgICAgICAgIHt2YWx1ZTonYmxvY2tzcGFyZS1vcmlnaW5hbCcsbGFiZWw6X18oJ09yaWdpbmFsJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonYmxvY2tzcGFyZS1ncmF5c2NhbGUnLGxhYmVsOl9fKCdHcmF5c2NhbGUnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLXNlcGlhJyxsYWJlbDpfXygnU2VwaWEnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLXNhdHVyYXRpb24nLGxhYmVsOl9fKCdTYXR1cmF0aW9uJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonYmxvY2tzcGFyZS1kaW0nLGxhYmVsOl9fKCdEaW0nLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLXZpbnRhZ2UnLGxhYmVsOl9fKCdWaW50YWdlJywnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25TaXplT3B0aW9uID0gW1xuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLW5hdmlnYXRpb24tc21hbGwnLGxhYmVsOl9fKCdTbWFsbCcsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6J2Jsb2Nrc3BhcmUtbmF2aWdhdGlvbi1tZWRpdW0nLGxhYmVsOl9fKCdNZWRpdW0nLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOidibG9ja3NwYXJlLW5hdmlnYXRpb24tbGFyZ2UnLGxhYmVsOl9fKCdMYXJnZScsJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIF07XG5cblxuICAgICAgICBjb25zdCBvbkNoYW5nZU9wdGlvbiA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2Nhcm91c2VsTmV4dEljb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlTmF2aWdhdGlvblNpemVPcHRpb24gPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtuYXZpZ2F0aW9uU2l6ZTogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VDb2xvck9wdGlvbiA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2NvbG9yRmlsdGVyOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZU5hdmlnYXRpb25Db2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe25hdmlnYXRpb25Db2xvcjogdmFsdWV9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Nhcm91c2VsIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ051bWJlciBvZiBzbGlkZSB0byBzaG93JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtudW1iZXJvZlNsaWRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7bnVtYmVyb2ZTbGlkZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17M31cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0d1dHRlciBTYXBjZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3V0dGVyU3BhY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtndXR0ZXJTcGFjZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17NX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUgQXV0b3BsYXknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZW5hYmxlQXV0b1BsYXl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtlbmFibGVBdXRvUGxheTogIWVuYWJsZUF1dG9QbGF5fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPXtfXygnVGhlIGVmZmVjdCB3aWxsIGFwcGxpY2FibGUgb24gZnJvbnRlbmQgb25seS4nLCdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IE5hdmlnYXRpb24nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2hvd3NsaWRlck5leHRQcmV2fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7c2hvd3NsaWRlck5leHRQcmV2OiAhc2hvd3NsaWRlck5leHRQcmV2fSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblxuXG4gICAgICAgICAgICAgICAgICAgIHtzaG93c2xpZGVyTmV4dFByZXYgJiZcbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnIE5hdmlnYXRpb24gU2l6ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bmF2aWdhdGlvblNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtuYXZpZ2F0aW9uU2l6ZU9wdGlvbi5tYXAoKHt2YWx1ZSwgbGFiZWx9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZU5hdmlnYXRpb25TaXplT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRGlzcGxheSBEb3RzJywgJ2Jsb2Nrc3BhcmUnKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2hvd0RvdHN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtzaG93RG90czogIXNob3dEb3RzfSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHtzaG93c2xpZGVyTmV4dFByZXYgJiZcblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ05hdmlnYXRpb24vRG90cyBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuYXZpZ2F0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlTmF2aWdhdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnTmF2aWdhdGlvbi9Eb3RzIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dfT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICk7XG4gICAgfVxuXG59IiwiLyoqXG4gKiBFeHRlcm5hbCBEZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuY29uc3QgeyBJY29uQnV0dG9uLCBTcGlubmVyLCBEYXNoaWNvbiB9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHsgUmljaFRleHQsIFVSTElucHV0IH0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgd2l0aFNlbGVjdCB9ID0gd3AuZGF0YTtcbmNvbnN0IHsgQkFDS1NQQUNFLCBERUxFVEUgfSA9IHdwLmtleWNvZGVzO1xuY29uc3QgeyBpc0Jsb2JVUkwgfSA9IHdwLmJsb2I7XG5cbmNsYXNzIEdhbGxlcnlJbWFnZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblxuICAgICAgICB0aGlzLm9uSW1hZ2VDbGljayA9IHRoaXMub25JbWFnZUNsaWNrLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENhcHRpb24gPSB0aGlzLm9uU2VsZWN0Q2FwdGlvbi5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuYmluZENvbnRhaW5lciA9IHRoaXMuYmluZENvbnRhaW5lci5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2F2ZUN1c3RvbUxpbmsgPSB0aGlzLnNhdmVDdXN0b21MaW5rLmJpbmQoIHRoaXMgKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgY2FwdGlvblNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzU2F2ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGJpbmRDb250YWluZXIoIHJlZiApIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSByZWY7XG4gICAgfVxuXG4gICAgb25TZWxlY3RDYXB0aW9uKCkge1xuICAgICAgICBpZiAoICEgdGhpcy5zdGF0ZS5jYXB0aW9uU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblNlbGVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhIHRoaXMucHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW1hZ2VDbGljaygpIHtcbiAgICAgICAgaWYgKCAhIHRoaXMucHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5zdGF0ZS5jYXB0aW9uU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgY2FwdGlvblNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjYXB0aW9uRm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlQ3VzdG9tTGluaygpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSggeyBpc1NhdmVkOiB0cnVlIH0gKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoIHByZXZQcm9wcyApIHtcbiAgICAgICAgY29uc3QgeyBpc1NlbGVjdGVkLCBpbWFnZSwgdXJsLCBpbWdMaW5rIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIGltYWdlICYmICEgdXJsICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgdXJsOiBpbWFnZS5zb3VyY2VfdXJsLFxuICAgICAgICAgICAgICAgIGFsdDogaW1hZ2UuYWx0X3RleHQsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuc3RhdGUuY2FwdGlvblNlbGVjdGVkICYmICEgaXNTZWxlY3RlZCAmJiBwcmV2UHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggaW1nTGluayAmJiAhIGlzU2VsZWN0ZWQgJiYgcHJldlByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7IGlzU2F2ZWQ6IGZhbHNlIH0gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWx0LFxuICAgICAgICAgICAgY2FwdGlvbixcbiAgICAgICAgICAgIGNhcHRpb25zLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBndXR0ZXIsXG4gICAgICAgICAgICBndXR0ZXJNb2JpbGUsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGlzRmlyc3RJdGVtLFxuICAgICAgICAgICAgaXNMYXN0SXRlbSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBsaW5rVG8sXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBtYXJnaW5MZWZ0LFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBvbk1vdmVCYWNrd2FyZCxcbiAgICAgICAgICAgIG9uTW92ZUZvcndhcmQsXG4gICAgICAgICAgICBvblJlbW92ZSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzaGFkb3csXG4gICAgICAgICAgICBzdXBwb3J0c0NhcHRpb24sXG4gICAgICAgICAgICBzdXBwb3J0c01vdmluZyA9IHRydWUsXG4gICAgICAgICAgICB2ZXJ0aWNhbE1vdmluZyA9IGZhbHNlLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgc2l6ZXMsXG4gICAgICAgICAgICBpbnNwZWN0b3JTaXplLFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICBpbWdMaW5rLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBsZXQgaW1ndXJsID0gJyc7XG4gICAgICAgIGlmKHNpemVzKSB7XG5cblxuICAgICAgICAgICAgaWYgKGluc3BlY3RvclNpemUgPT09ICdtZWRpdW0nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzaXplcy5tZWRpdW0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gdXJsXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzaXplcy5tZWRpdW0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ3VybCA9IHNpemVzLm1lZGl1bS51cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWd1cmwgPSB1cmw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpbnNwZWN0b3JTaXplID09PSAnZnVsbCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNpemVzLmxhcmdlID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gdXJsXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzaXplcy5mdWxsLnVybCA9PSBcInVuZGVmaW5lZFwiKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ3VybCA9IHNpemVzLmZ1bGwudXJsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1ndXJsID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW1ndXJsID0gdXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGltZ3VybCA9IHVybDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGltZ0NsYXNzZXMgPSBjbGFzc25hbWVzKCB7XG4gICAgICAgICAgICBbIGBoYXMtc2hhZG93LSR7IHNoYWRvdyB9YCBdOiBzaGFkb3cgIT09ICdub25lJyB8fCBzaGFkb3cgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgfSApO1xuXG4gICAgICAgIGNvbnN0IGltZyA9IChcblxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgc3JjPXsgaW1ndXJsIH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgaW1nQ2xhc3NlcyB9XG4gICAgICAgICAgICAgICAgICAgIGFsdD17IGFsdCB9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtaWQ9eyBpZCB9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtaW1nbGluaz17IGltZ0xpbmsgfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsgdGhpcy5vbkltYWdlQ2xpY2sgfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsgYXJpYUxhYmVsIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHsgaXNCbG9iVVJMKCB1cmwgKSAmJiA8U3Bpbm5lciAvPiB9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoIHtcbiAgICAgICAgICAgICdpcy1zZWxlY3RlZCc6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAnaXMtdHJhbnNpZW50JzogdXJsICYmIDAgPT09IHVybC5pbmRleE9mKCAnYmxvYjonICksXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLXRvcC0keyBndXR0ZXIgfWAgXTogbWFyZ2luVG9wICYmIGd1dHRlciA+IDAsXG4gICAgICAgICAgICBbIGBoYXMtbWFyZ2luLXRvcC1tb2JpbGUtJHsgZ3V0dGVyTW9iaWxlIH1gIF06IG1hcmdpblRvcCAmJiBndXR0ZXJNb2JpbGUgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1yaWdodC0keyBndXR0ZXIgfWAgXTogbWFyZ2luUmlnaHQgJiYgZ3V0dGVyID4gMCxcbiAgICAgICAgICAgIFsgYGhhcy1tYXJnaW4tcmlnaHQtbW9iaWxlLSR7IGd1dHRlck1vYmlsZSB9YCBdOiBtYXJnaW5SaWdodCAmJiBndXR0ZXJNb2JpbGUgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1ib3R0b20tJHsgZ3V0dGVyIH1gIF06IG1hcmdpbkJvdHRvbSAmJiBndXR0ZXIgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1ib3R0b20tbW9iaWxlLSR7IGd1dHRlck1vYmlsZSB9YCBdOiBtYXJnaW5Cb3R0b20gJiYgZ3V0dGVyTW9iaWxlID4gMCxcbiAgICAgICAgICAgIFsgYGhhcy1tYXJnaW4tbGVmdC0keyBndXR0ZXIgfWAgXTogbWFyZ2luTGVmdCAmJiBndXR0ZXIgPiAwLFxuICAgICAgICAgICAgWyBgaGFzLW1hcmdpbi1sZWZ0LW1vYmlsZS0keyBndXR0ZXJNb2JpbGUgfWAgXTogbWFyZ2luTGVmdCAmJiBndXR0ZXJNb2JpbGUgPiAwLFxuICAgICAgICB9ICk7XG5cbiAgICAgICAgY29uc3QgY2FwdGlvblN0eWxlcyA9IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZSA/IGZvbnRTaXplICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZmlndXJlIGNsYXNzTmFtZT17ICdibG9ja3NwYXJlLWdhbGxlcnktZmlndXJlICcgKyBjbGFzc05hbWUgfSB0YWJJbmRleD1cIi0xXCIgb25LZXlEb3duPXsgdGhpcy5vbktleURvd24gfSByZWY9eyB0aGlzLmJpbmRDb250YWluZXIgfT5cbiAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIHsgc3VwcG9ydHNNb3ZpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb21wb25lbnRzLWJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtX19tb3ZlLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IHZlcnRpY2FsTW92aW5nID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1sZWZ0JyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ICEgaXNGaXJzdEl0ZW0gJiYgb25Nb3ZlQmFja3dhcmQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01vdmUgSW1hZ2UgQmFja3dhcmQnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17IGlzRmlyc3RJdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ICEgaXNTZWxlY3RlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPXsgdmVydGljYWxNb3ZpbmcgPyAnYXJyb3ctZG93bicgOiAnYXJyb3ctcmlnaHQnIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsgISBpc0xhc3RJdGVtICYmIG9uTW92ZUZvcndhcmQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01vdmUgSW1hZ2UgRm9yd2FyZCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXsgaXNMYXN0SXRlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyAhIGlzU2VsZWN0ZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb21wb25lbnRzLWJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtX19yZW1vdmUtbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibm8tYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsgb25SZW1vdmUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1JlbW92ZSBJbWFnZScsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ICEgaXNTZWxlY3RlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgeyBsaW5rVG8gPT09ICdjdXN0b20nICYmXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb21wb25lbnRzLWJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtLWltYWdlLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyAoIGV2ZW50ICkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hpY29uIGljb249XCJhZG1pbi1saW5rc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VVJMSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGltZ0xpbmsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgaW1nTGluazogdmFsdWUgfSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBpY29uPXsgdGhpcy5zdGF0ZS5pc1NhdmVkID8gJ3NhdmVkJyA6ICdlZGl0b3ItYnJlYWsnIH0gbGFiZWw9eyB0aGlzLnN0YXRlLmlzU2F2ZWQgPyBfXyggJ1NhdmluZycsICdibG9ja3NwYXJlJyApIDogX18oICdBcHBseScsICdibG9ja3NwYXJlJyApIH0gb25DbGljaz17IHRoaXMuc2F2ZUN1c3RvbUxpbmsgfSB0eXBlPVwic3VibWl0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeyBpbWcgfVxuICAgICAgICAgICAgICAgIHsgKCBzdXBwb3J0c0NhcHRpb24gPT09IHRydWUgKSAmJiAoICEgUmljaFRleHQuaXNFbXB0eSggY2FwdGlvbiApIHx8IGlzU2VsZWN0ZWQgKSAmJiBjYXB0aW9ucyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZmlnY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnV3JpdGUgY2FwdGlvbuKApicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1jYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgY2FwdGlvblN0eWxlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGNhcHRpb24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17IHRoaXMuc3RhdGUuY2FwdGlvblNlbGVjdGVkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCBuZXdDYXB0aW9uICkgPT4gc2V0QXR0cmlidXRlcyggeyBjYXB0aW9uOiBuZXdDYXB0aW9uIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnN0YWJsZU9uRm9jdXM9eyB0aGlzLm9uU2VsZWN0Q2FwdGlvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGwgfVxuICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICk7XG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoIFtcbiAgICB3aXRoU2VsZWN0KCAoIHNlbGVjdCwgb3duUHJvcHMgKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZ2V0TWVkaWEgfSA9IHNlbGVjdCggJ2NvcmUnICk7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IG93blByb3BzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogaWQgPyBnZXRNZWRpYSggaWQgKSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgfSApLFxuXSApKCBHYWxsZXJ5SW1hZ2UgKTtcbiIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgZmluZEluZGV4IGZyb20gJ2xvZGFzaC9maW5kSW5kZXgnO1xuXG4vLyBTZXQgZGltIHJhdGlvLlxuZXhwb3J0IGZ1bmN0aW9uIG92ZXJsYXlUb0NsYXNzKCByYXRpbyApIHtcbiAgICByZXR1cm4gKCByYXRpbyA9PT0gMCB8fCByYXRpbyA9PT0gNTAgKSA/XG4gICAgICAgIG51bGwgOlxuICAgICAgICAnaGFzLWJhY2tncm91bmQtb3ZlcmxheS0nICsgKCAxMCAqIE1hdGgucm91bmQoIHJhdGlvIC8gMTAgKSApO1xufVxuXG4vLyBQaWNrIGltYWdlIG1lZGlhIGF0dHJpYnV0ZXMuXG5leHBvcnQgY29uc3QgcGlja1JlbGV2YW50TWVkaWFGaWxlcyA9ICggaW1hZ2UsIGltYWdlcyApID0+IHtcbiAgICBjb25zdCBpbWFnZVByb3BzID0gcGljayggaW1hZ2UsIFsgJ2FsdCcsICdpZCcsICdsaW5rJywgJ2NhcHRpb24nLCAnaW1nTGluaycsJ3NpemVzJyBdICk7XG4gICAgaW1hZ2VQcm9wcy51cmwgPSBnZXQoIGltYWdlLCBbICdzaXplcycsICdsYXJnZScsICd1cmwnIF0gKSB8fCBnZXQoIGltYWdlLCBbICdtZWRpYV9kZXRhaWxzJywgJ3NpemVzJywgJ2xhcmdlJywgJ3NvdXJjZV91cmwnIF0gKSB8fCBpbWFnZS51cmw7XG4gICAgY29uc3QgaW1nS2V5ID0gZmluZEluZGV4KCBpbWFnZXMsIGZ1bmN0aW9uKCBpbWcgKSB7XG4gICAgICAgIHJldHVybiBpbWcudXJsID09PSBpbWFnZVByb3BzLnVybDtcbiAgICB9ICk7XG4gICAgaW1hZ2VQcm9wcy5pbWdMaW5rID0gaW1nS2V5ID49IDAgPyBpbWFnZXNbIGltZ0tleSBdLmltZ0xpbmsgOiAnJztcbiAgICByZXR1cm4gaW1hZ2VQcm9wcztcbn07XG5cbi8vIERlZmluZSBhY2NlcHRlZCBtZWRpYSBmb3IgZ2FsbGVyeSBibG9ja3MuXG5leHBvcnQgY29uc3QgQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTID0gWyAnaW1hZ2UnIF07IiwiLyoqXG4gKiBFeHRlcm5hbCBEZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCAqIGFzIGhlbHBlciBmcm9tICcuLy4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXInO1xuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXywgc3ByaW50ZiB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBNZWRpYVBsYWNlaG9sZGVyLCBCbG9ja0ljb24gfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBHYWxsZXJ5UGxhY2Vob2xkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgICAgIHRoaXMub25TZWxlY3RJbWFnZXMgPSB0aGlzLm9uU2VsZWN0SW1hZ2VzLmJpbmQoIHRoaXMgKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdEltYWdlcyggaW1hZ2VzICkge1xuICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLm1hcCggKCBpbWFnZSApID0+IGhlbHBlci5waWNrUmVsZXZhbnRNZWRpYUZpbGVzKCBpbWFnZSApICksXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBndXR0ZXIsXG4gICAgICAgICAgICBndXR0ZXJNb2JpbGUsXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgbWFyZ2luTGVmdCxcbiAgICAgICAgICAgIG1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgbm90aWNlT3BlcmF0aW9ucyxcbiAgICAgICAgICAgIG5vdGljZVVJLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IGhhc0ltYWdlcyA9ICEhIGltYWdlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1nYWxsZXJ5LS1maWd1cmUnICk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NlcyB9PlxuICAgICAgICAgICAgICAgIDxNZWRpYVBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgIGFkZFRvR2FsbGVyeT17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgIGlzQXBwZW5kZXI9eyBoYXNJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICBkcm9wWm9uZVVJT25seT17IGhhc0ltYWdlcyAmJiAhIGlzU2VsZWN0ZWQgfVxuICAgICAgICAgICAgICAgICAgICBpY29uPXsgISBoYXNJbWFnZXMgJiYgPEJsb2NrSWNvbiBpY29uPXsgdGhpcy5wcm9wcy5pY29uIH0gLz4gfVxuICAgICAgICAgICAgICAgICAgICBsYWJlbHM9eyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogISBoYXNJbWFnZXMgJiYgc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogJXM6IFR5cGUgb2YgZ2FsbGVyeSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fKCAnJXMgR2FsbGVyeScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnM6ICEgaGFzSW1hZ2VzICYmIF9fKCAnVXBsb2FkIGFuIGltYWdlIGZpbGUsIHBpY2sgb25lIGZyb20geW91ciBtZWRpYSBsaWJyYXJ5LCBvciBhZGQgb25lIHdpdGggYSBVUkwuJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFR5cGVzPXsgaGVscGVyLkFMTE9XRURfR0FMTEVSWV9NRURJQV9UWVBFUyB9XG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaGFzSW1hZ2VzID8gaW1hZ2VzIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcj17IG5vdGljZU9wZXJhdGlvbnMuY3JlYXRlRXJyb3JOb3RpY2UgfVxuICAgICAgICAgICAgICAgICAgICBub3RpY2VzPXsgaGFzSW1hZ2VzID8gdW5kZWZpbmVkIDogbm90aWNlVUkgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdhbGxlcnlQbGFjZWhvbGRlcjtcbiIsIi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IG1lZGlhVXBsb2FkIH0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgRHJvcFpvbmUgfSA9IHdwLmNvbXBvbmVudHM7XG5cblxuaW1wb3J0ICogYXMgaGVscGVyIGZyb20gJy4vLi4vaGVscGVyL21lZGlhLWhlbHBlcic7XG5cbmNsYXNzIEdhbGxlcnlEcm9wWm9uZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblxuICAgICAgICB0aGlzLmFkZE1lZGlhRmlsZXMgPSB0aGlzLmFkZE1lZGlhRmlsZXMuYmluZCggdGhpcyApO1xuICAgIH1cblxuICAgIGFkZE1lZGlhRmlsZXMoIGZpbGVzICkge1xuICAgICAgICBjb25zdCBjdXJyZW50SW1hZ2VzID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyB8fCBbXTtcbiAgICAgICAgY29uc3QgeyBub3RpY2VPcGVyYXRpb25zLCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBtZWRpYVVwbG9hZCgge1xuICAgICAgICAgICAgYWxsb3dlZFR5cGVzOiBoZWxwZXIuQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTLFxuICAgICAgICAgICAgZmlsZXNMaXN0OiBmaWxlcyxcbiAgICAgICAgICAgIG9uRmlsZUNoYW5nZTogKCBpbWFnZXMgKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VzTm9ybWFsaXplZCA9IGltYWdlcy5tYXAoICggaW1hZ2UgKSA9PiBoZWxwZXIucGlja1JlbGV2YW50TWVkaWFGaWxlcyggaW1hZ2UgKSApO1xuICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBjdXJyZW50SW1hZ2VzLmNvbmNhdCggaW1hZ2VzTm9ybWFsaXplZCApLFxuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yOiBub3RpY2VPcGVyYXRpb25zLmNyZWF0ZUVycm9yTm90aWNlLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxEcm9wWm9uZVxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVzRHJvcD17IHRoaXMuYWRkTWVkaWFGaWxlcyB9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgdGhpcy5wcm9wcy5sYWJlbCB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHYWxsZXJ5RHJvcFpvbmU7XG4iLCJcbmltcG9ydCBmaWx0ZXIgZnJvbSAnbG9kYXNoL2ZpbHRlcic7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBTbGlkZXIgZnJvbSBcInJlYWN0LXNsaWNrXCI7XG4vKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5cbmltcG9ydCBHYWxsZXJ5SW1hZ2UgZnJvbSAnLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWltYWdlJztcbmltcG9ydCBHYWxsZXJ5UGxhY2Vob2xkZXIgZnJvbSAnLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LXBsYWNlaG9sZGVyJztcbmltcG9ydCBHYWxsZXJ5RHJvcFpvbmUgZnJvbSAnLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWRyb3B6b25lJztcbi8vXG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXJcIjtcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IF9fLCBzcHJpbnRmIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuY29uc3QgeyB3aXRoTm90aWNlcywgUmVzaXphYmxlQm94LFRvb2xiYXIsSWNvbkJ1dHRvbiB9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHtcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIE1lZGlhVXBsb2FkLFxuICAgIE1lZGlhVXBsb2FkQ2hlY2ssXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIEdhbGxlcnlDYXJvdXNlbEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdEltYWdlID0gdGhpcy5vblNlbGVjdEltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vblJlbW92ZUltYWdlID0gdGhpcy5vblJlbW92ZUltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVGb3J3YXJkID0gdGhpcy5vbk1vdmVGb3J3YXJkLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVCYWNrd2FyZCA9IHRoaXMub25Nb3ZlQmFja3dhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLnNldEltYWdlQXR0cmlidXRlcyA9IHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayA9IHRoaXMub25JdGVtQ2xpY2suYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcyA9IHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2U6IG51bGwsXG4gICAgICAgICAgICBjYXB0aW9uRm9jdXNlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIC8vIFRoaXMgYmxvY2sgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMuXG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgbGlnaHRib3g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpZ2h0Ym94U3R5bGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNoYWRvdzogdW5kZWZpbmVkLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCBwcmV2UHJvcHMgKSB7XG4gICAgICAgIC8vIERlc2VsZWN0IGltYWdlcyB3aGVuIGRlc2VsZWN0aW5nIHRoZSBibG9jay5cbiAgICAgICAgaWYgKCAhIHRoaXMucHJvcHMuaXNTZWxlY3RlZCAmJiBwcmV2UHJvcHMuaXNTZWxlY3RlZCApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBudWxsLFxuICAgICAgICAgICAgICAgIGNhcHRpb25TZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhIHRoaXMucHJvcHMuaXNTZWxlY3RlZCAmJiBwcmV2UHJvcHMuaXNTZWxlY3RlZCAmJiB0aGlzLnN0YXRlLmNhcHRpb25Gb2N1c2VkICkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmd1dHRlciA8PSAwICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgcmFkaXVzOiAwLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ3JpZFNpemUgPT09ICd4bHJnJyAmJiBwcmV2UHJvcHMuYXR0cmlidXRlcy5hbGlnbiA9PT0gdW5kZWZpbmVkICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgZ3V0dGVyOiAwLFxuICAgICAgICAgICAgICAgIGd1dHRlck1vYmlsZTogMCxcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0SW1hZ2UoIGluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCB0aGlzLnN0YXRlLnNlbGVjdGVkSW1hZ2UgIT09IGluZGV4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGNhcHRpb25Gb2N1c2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlKCBvbGRJbmRleCwgbmV3SW5kZXggKSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFsgLi4udGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyBdO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBuZXdJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgb2xkSW5kZXggXSApO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBvbGRJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgbmV3SW5kZXggXSApO1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG5ld0luZGV4IH0gKTtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGltYWdlcyB9ICk7XG4gICAgfVxuXG4gICAgb25Nb3ZlRm9yd2FyZCggb2xkSW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIG9sZEluZGV4ID09PSB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzLmxlbmd0aCAtIDEgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbk1vdmUoIG9sZEluZGV4LCBvbGRJbmRleCArIDEgKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbk1vdmVCYWNrd2FyZCggb2xkSW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIG9sZEluZGV4ID09PSAwICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlKCBvbGRJbmRleCwgb2xkSW5kZXggLSAxICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25SZW1vdmVJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZXMgPSBmaWx0ZXIoIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbWFnZXMsICggX2ltZywgaSApID0+IGluZGV4ICE9PSBpICk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG51bGwgfSApO1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHNldEltYWdlQXR0cmlidXRlcyggaW5kZXgsIGF0dHJpYnV0ZXMgKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlczogeyBpbWFnZXMgfSwgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCAhIGltYWdlc1sgaW5kZXggXSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAuLi5pbWFnZXMuc2xpY2UoIDAsIGluZGV4ICksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAuLi5pbWFnZXNbIGluZGV4IF0sXG4gICAgICAgICAgICAgICAgICAgIC4uLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5pbWFnZXMuc2xpY2UoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuXG4gICAgb25JdGVtQ2xpY2soKSB7XG4gICAgICAgIGlmICggISB0aGlzLnByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuc3RhdGUuY2FwdGlvbkZvY3VzZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgY2FwdGlvbkZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25FZGl0U2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICBpbWFnZXM6IGltYWdlcy5tYXAoICggaW1hZ2UgKSA9PiBoZWxwZXIucGlja1JlbGV2YW50TWVkaWFGaWxlcyggaW1hZ2UsIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbWFnZXMgKSApLFxuICAgICAgICB9ICk7XG5cbiAgICB9XG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgICAgIG51bWJlcm9mU2xpZGUsXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxTcGVlZCxcbiAgICAgICAgICAgICAgICBzaG93c2xpZGVyTmV4dFByZXYsXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxOZXh0SWNvbixcbiAgICAgICAgICAgICAgICBzaG93RG90cyxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgZ3V0dGVyU3BhY2UsXG4gICAgICAgICAgICAgICAgY29sb3JGaWx0ZXIsXG4gICAgICAgICAgICAgICAgc2hvd09yaWdpbmFsT25Ib3ZlcixcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uU2l6ZSxcbiAgICAgICAgICAgICAgICBlbmFibGVBdXRvUGxheVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBub3RpY2VVSSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3QgaGFzSW1hZ2VzID0gISEgaW1hZ2VzLmxlbmd0aDtcblxuICAgICAgICAvLyBBbiBhZGRpdGlvbmFsIGRyb3B6b25lIHRvIHdyYXAgdGhlIGVudGlyZSBnYWxsZXJ5IGluLlxuICAgICAgICBjb25zdCBkcm9wWm9uZSA9IChcbiAgICAgICAgICAgIDxHYWxsZXJ5RHJvcFpvbmVcbiAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcblxuXG4gICAgICAgIGlmICggISBoYXNJbWFnZXMgKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxHYWxsZXJ5UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0Nhcm91c2VsJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmV4dGFycm93ID0gJ2ZhcyBmYS1hbmdsZS1yaWdodCc7XG4gICAgICAgIHZhciBwcmV2YXJyb3cgPSAnZmFzIGZhLWFuZ2xlLWxlZnQnO1xuICAgICAgICBpZiAoY2Fyb3VzZWxOZXh0SWNvbiA9PT0gJ2ZhcyBmYS1hbmdsZS1yaWdodCcpIHtcbiAgICAgICAgICAgIG5leHRhcnJvdyA9IDxCc05leHRBcnJvdzEvPjtcbiAgICAgICAgICAgIHByZXZhcnJvdyA9IDxCc1ByZXZBcnJvdzEvPjtcbiAgICAgICAgfSBlbHNlIGlmIChjYXJvdXNlbE5leHRJY29uID09PSAnZmFzIGZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0Jykge1xuICAgICAgICAgICAgbmV4dGFycm93ID0gPEJzTmV4dEFycm93Mi8+O1xuICAgICAgICAgICAgcHJldmFycm93ID0gPEJzUHJldkFycm93Mi8+XG4gICAgICAgIH0gZWxzZSBpZiAoY2Fyb3VzZWxOZXh0SWNvbiA9PT0gJ2ZhcyBmYS1jYXJldC1yaWdodCcpIHtcbiAgICAgICAgICAgIG5leHRhcnJvdyA9IDxCc05leHRBcnJvdzMvPjtcbiAgICAgICAgICAgIHByZXZhcnJvdyA9IDxCc1ByZXZBcnJvdzMvPjtcbiAgICAgICAgfSBlbHNlIGlmIChjYXJvdXNlbE5leHRJY29uID09PSAnZmFzIGZhLWNoZXZyb24tcmlnaHQnKSB7XG4gICAgICAgICAgICBuZXh0YXJyb3cgPSA8QnNOZXh0QXJyb3c0Lz47XG4gICAgICAgICAgICBwcmV2YXJyb3cgPSA8QnNQcmV2QXJyb3c0Lz47XG4gICAgICAgIH0gZWxzZSBpZiAoY2Fyb3VzZWxOZXh0SWNvbiA9PT0gJ2ZhcyBmYS1hcnJvdy1jaXJjbGUtcmlnaHQnKSB7XG4gICAgICAgICAgICBuZXh0YXJyb3cgPSA8QnNOZXh0QXJyb3c1Lz47XG4gICAgICAgICAgICBwcmV2YXJyb3cgPSA8QnNQcmV2QXJyb3c1Lz47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0YXJyb3cgPSAnZmFzIGZhLWFuZ2xlLXJpZ2h0JztcbiAgICAgICAgICAgIHByZXZhcnJvdyA9ICdmYXMgZmEtYW5nbGUtbGVmdCc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIGRvdHM6c2hvd0RvdHMsXG4gICAgICAgICAgICBsb29wOnRydWUsXG4gICAgICAgICAgICBzcGVlZDpjYXJvdXNlbFNwZWVkLFxuICAgICAgICAgICAgYXJyb3dzOnNob3dzbGlkZXJOZXh0UHJldixcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogbnVtYmVyb2ZTbGlkZSxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dGFycm93LFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2YXJyb3dcblxuICAgICAgICB9O1xuXG5cblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICAgICAgeyBoYXNJbWFnZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZENoZWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9eyB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFR5cGVzPXsgaGVscGVyLkFMTE9XRURfR0FMTEVSWV9NRURJQV9UWVBFUyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBpbWFnZXMubWFwKCAoIGltZyApID0+IGltZy5pZCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyAoIHsgb3BlbiB9ICkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29tcG9uZW50cy10b29sYmFyX19jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdFZGl0IGdhbGxlcnknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsgb3BlbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lZGlhVXBsb2FkQ2hlY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgICAgIHsgZHJvcFpvbmUgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWNhcm91c2VsLXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcy1ndXR0ZXItc3BhY2UtJytndXR0ZXJTcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbG9yRmlsdGVyIT09J2Jsb2Nrc3BhcmUtb3JpZ2luYWwnICYmIHNob3dPcmlnaW5hbE9uSG92ZXIpPydoYXMtaG92ZXItZWZmZWN0JzonJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25TaXplXG4gICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBgYmxvY2tzcGFyZS1jYXJvdXNlbC1pdGVtc2AgfSBzdHlsZT17e2NvbG9yOiBuYXZpZ2F0aW9uQ29sb3J9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2xpZGVyIHsuLi5zZXR0aW5nc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaW1hZ2VzLm1hcCggKCBpbWcsIGluZGV4ICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogJTEkZCBpcyB0aGUgb3JkZXIgbnVtYmVyIG9mIHRoZSBpbWFnZSwgJTIkZCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGltYWdlcyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fKCAnaW1hZ2UgJTEkZCBvZiAlMiRkIGluIGdhbGxlcnknLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1cIiBrZXk9eyBpbWcuaWQgfHwgaW1nLnVybCB9IG9uQ2xpY2s9eyB0aGlzLm9uSXRlbUNsaWNrIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHYWxsZXJ5SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17IGltZy51cmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXsgaW1nLmFsdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17IGltZy5pZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17IGlzU2VsZWN0ZWQgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEltYWdlID09PSBpbmRleCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlbW92ZT17IHRoaXMub25SZW1vdmVJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzPXsgKCBhdHRycyApID0+IHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cnMgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPXsgaW1nLmNhcHRpb24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17IGFyaWFMYWJlbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0NhcHRpb249eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdmVCYWNrd2FyZD17IHRoaXMub25Nb3ZlQmFja3dhcmQoIGluZGV4ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3ZlRm9yd2FyZD17IHRoaXMub25Nb3ZlRm9yd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c01vdmluZz17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9e2ltZy5zaXplc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3RvclNpemU9e2BtZWRpdW1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hZGQtbW9yZS1zbGlkZSBibG9ja3NwYXJlLWFkZC1tb3JlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRDaGVjaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRUeXBlcz17IGhlbHBlci5BTExPV0VEX0dBTExFUllfTUVESUFfVFlQRVMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhbGxlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaW1hZ2VzLm1hcCggKCBpbWcgKSA9PiBpbWcuaWQgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyAoIHsgb3BlbiB9ICkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFmdC1jdGEtaW5zcGVjdG9yLW1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFZGl0IGltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBsdXMtYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnQWRkIEltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lZGlhVXBsb2FkQ2hlY2s+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NsaWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoIFtcbiAgICB3aXRoTm90aWNlcyxcbl0gKSggR2FsbGVyeUNhcm91c2VsRWRpdCApO1xuXG5mdW5jdGlvbiBCc1ByZXZBcnJvdzEocHJvcHMpIHtcblxuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrLH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLXByZXYgc2xpY2stYXJyb3cgZmFzIGZhLWFuZ2xlLWxlZnQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzTmV4dEFycm93MShwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2t9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtbmV4dCBzbGljay1hcnJvdyBmYXMgZmEtYW5nbGUtcmlnaHQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzUHJldkFycm93Mihwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2ssfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtcHJldiBzbGljay1hcnJvdyBmYXMgZmEtY2hldnJvbi1jaXJjbGUtbGVmdCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gQnNOZXh0QXJyb3cyKHByb3BzKSB7XG5cbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGlja30gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1uZXh0IHNsaWNrLWFycm93IGZhcyBmYS1jaGV2cm9uLWNpcmNsZS1yaWdodCdcbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gQnNQcmV2QXJyb3czKHByb3BzKSB7XG5cbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGljayx9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1wcmV2IHNsaWNrLWFycm93IGZhcyBmYS1jYXJldC1sZWZ0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc05leHRBcnJvdzMocHJvcHMpIHtcblxuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtbmV4dCBzbGljay1hcnJvdyBmYXMgZmEtY2FyZXQtcmlnaHQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIEJzUHJldkFycm93NChwcm9wcykge1xuXG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGUsIG9uQ2xpY2ssfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnc2xpZGUtcHJldiBzbGljay1hcnJvdyBmYXMgZmEtY2hldnJvbi1sZWZ0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc05leHRBcnJvdzQocHJvcHMpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGlja30gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1uZXh0IHNsaWNrLWFycm93IGZhcyBmYS1jaGV2cm9uLXJpZ2h0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc1ByZXZBcnJvdzUocHJvcHMpIHtcblxuICAgIGNvbnN0IHtjbGFzc05hbWUsIHN0eWxlLCBvbkNsaWNrLH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ3NsaWRlLXByZXYgc2xpY2stYXJyb3cgZmFzIGZhLWFycm93LWNpcmNsZS1sZWZ0J1xuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiBCc05leHRBcnJvdzUocHJvcHMpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZSwgb25DbGlja30gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdzbGlkZS1uZXh0IHNsaWNrLWFycm93IGZhcyBmYS1hcnJvdy1jaXJjbGUtcmlnaHQnXG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbiIsImNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudHtcblxuICAgIHJlbmRlcigpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgICAgICBudW1iZXJvZlNsaWRlLFxuICAgICAgICAgICAgICAgIGNhcm91c2VsU3BlZWQsXG4gICAgICAgICAgICAgICAgc2hvd3NsaWRlck5leHRQcmV2LFxuICAgICAgICAgICAgICAgIGNhcm91c2VsTmV4dEljb24sXG4gICAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGd1dHRlclNwYWNlLFxuICAgICAgICAgICAgICAgIGNvbG9yRmlsdGVyLFxuICAgICAgICAgICAgICAgIHNob3dPcmlnaW5hbE9uSG92ZXIsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvblNpemUsXG4gICAgICAgICAgICAgICAgZW5hYmxlQXV0b1BsYXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfT0gdGhpcy5wcm9wcztcblxuICAgICAgICBsZXQgbmV4dCA9IGNhcm91c2VsTmV4dEljb247XG4gICAgICAgIGxldCBwcmV2c3RyID0gY2Fyb3VzZWxOZXh0SWNvbi5yZXBsYWNlKFwiLXJpZ2h0XCIsIFwiLWxlZnRcIik7XG5cblxuXG4gICAgICAgIGxldCAgY2Fyb3VzZWxfYXJncyA9IHtcbiAgICAgICAgICAgIGxvb3A6dHJ1ZSxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBlbmFibGVBdXRvUGxheSxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogbnVtYmVyb2ZTbGlkZSxcbiAgICAgICAgICAgIHNwZWVkOiBjYXJvdXNlbFNwZWVkLFxuICAgICAgICAgICAgYXJyb3dzOiBzaG93c2xpZGVyTmV4dFByZXYsXG4gICAgICAgICAgICBkb3RzOiBzaG93RG90cyxcblxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGpzb25EYXRhID0gSlNPTi5zdHJpbmdpZnkoY2Fyb3VzZWxfYXJncyk7XG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWNhcm91c2VsLXdyYXAnLFxuICAgICAgICAgICAgICAgICdoYXMtZ3V0dGVyLXNwYWNlLScrZ3V0dGVyU3BhY2UsXG4gICAgICAgICAgICAgICAgY29sb3JGaWx0ZXIsXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvblNpemUsXG4gICAgICAgICAgICAgICAgKGNvbG9yRmlsdGVyIT09J2Jsb2Nrc3BhcmUtb3JpZ2luYWwnICYmIHNob3dPcmlnaW5hbE9uSG92ZXIpPydoYXMtaG92ZXItZWZmZWN0JzonJ1xuICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBgYmxvY2tzcGFyZS1jYXJvdXNlbC1pdGVtc2AgfSBkYXRhLW5leHQ9e25leHR9IGRhdGEtcHJldj17cHJldnN0cn0gZGF0YS1zbGljaz17anNvbkRhdGF9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2NvbG9yOiBuYXZpZ2F0aW9uQ29sb3J9fT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLm1hcCgoaW1nLGluZGV4KT0+e1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltZ3VybCA9Jyc7XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0eXBlb2YgaW1nLnNpemVzLm1lZGl1bSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ3VybCA9IGltZy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWd1cmwgPSBpbWcuc2l6ZXMubWVkaXVtLnVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtZ2FsbGVyeS1maWd1cmUgYH0+IDxpbWcgc3JjPXtpbWd1cmx9Lz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cblxufSIsImltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEdhbGxlcnlDYXJvdXNlbEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9jb21wb25lbnRzL3NhdmUnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgbmFtZSwgY2F0ZWdvcnksIGF0dHJpYnV0ZXMgfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgLyogdHJhbnNsYXRvcnM6IGJsb2NrIG5hbWUgKi9cbiAgICB0aXRsZTogX18oJ0JTIEltYWdlIENhcm91c2VsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAvKiB0cmFuc2xhdG9yczogYmxvY2sgZGVzY3JpcHRpb24gKi9cbiAgICBkZXNjcmlwdGlvbjogX18oJ0FkZCBsb2dvcywgYmFkZ2VzIGFuZCBpbWFnZXMgdG8gYnVpbGQgY2Fyb3VzZWwuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5pbWFnZWNhcm91c2VsLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2ltYWdlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2Nhcm91c2VsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3NsaWRlcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsnd2lkZScsICdmdWxsJywnY2VudGVyJ10sXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGFsaWduOiAnZnVsbCcsXG4gICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJldl9pbWcuaW1nLFxuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJldl9pbWcuaW1nLFxuXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJldl9pbWcuaW1nLFxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHNob3dzbGlkZXJOZXh0UHJldjp0cnVlLFxuICAgICAgICAgICAgc2hvd0RvdHM6dHJ1ZVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBlZGl0OkdhbGxlcnlDYXJvdXNlbEVkaXQsXG5cbiAgICBzYXZlOlNhdmVcbn0pO1xuXG4iLCJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW5lIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpbmRpY2F0b3I6IDAsXG4gICAgICAgICAgICBpc0FjdGl2ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRoaXMucHJvcHMucGVyY2VudCxcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IHRydWVcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIDEwMDBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5pc0FjdGl2ZSAmJiB0aGlzLnByb3BzLnBlcmNlbnQgIT09IG5leHRQcm9wcy5wZXJjZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaW5kaWNhdG9yOiBuZXh0UHJvcHMucGVyY2VudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBpbmRpY2F0b3IsIGlzQWN0aXZlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IGJhckNvbG9yLCBiYXJUaGlja25lc3MsIHBlcmNlbnQsYmFja2dyb3VuZENvbG9yLCBwZXJjZW50YWdlVGV4dENvbG9yIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBwcm9ncmVzc0JhclBhdGggPSBgTSAke2JhclRoaWNrbmVzcyAvIDJ9LCR7YmFyVGhpY2tuZXNzIC9cbiAgICAgICAgMn0gTCAkezEwMCAtIGJhclRoaWNrbmVzcyAvIDJ9LCR7YmFyVGhpY2tuZXNzIC8gMn1gO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3MtYmFyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaXNBY3RpdmUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnBlcmNlbnRhZ2VUZXh0Q29sb3I/cGVyY2VudGFnZVRleHRDb2xvcjpcIiM4YjI0OWNcIixcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwZXJjZW50fSVcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3MtYmFyLWxpbmVcIlxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PXtgMCAwIDEwMCAke2JhclRoaWNrbmVzc31gfVxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzcy1iYXItbGluZS10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkPXtwcm9ncmVzc0JhclBhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17YmFyVGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U6YmFja2dyb3VuZENvbG9yP2JhY2tncm91bmRDb2xvcjpcIiM4YjI0OWNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmVfcHJvZ3Jlc3MtYmFyLWxpbmUtcGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkPXtwcm9ncmVzc0JhclBhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9e2JhckNvbG9yP2JhckNvbG9yOlwiIzJEQjdGNVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9e2JhclRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlRGFzaG9mZnNldDogYCR7MTAwIC0gaW5kaWNhdG9yfXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSIsIlxuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgICBwZXJjZW50YWdlVGV4dENvbG9yLFxuICAgICAgICAgICAgdGV4dFNpemUsXG4gICAgICAgICAgICBiYXJDb2xvcixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGJhclRoaWNrbmVzc1xuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBvbkNoYW5nZUJhckNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFyQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVRleHRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3RleHRDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VQZXJjZW50YWdlVGV4dENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7cGVyY2VudGFnZVRleHRDb2xvcjogdmFsdWV9KTtcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHkgdGl0bGU9e19fKCdCbG9jayBTZXR0aW5ncycpfSBpbml0aWFsT3Blbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlIFNpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RleHRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHt0ZXh0U2l6ZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezMyfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17Mn1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYXJDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJhckNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYXIgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGVyY2VudGFnZVRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVBlcmNlbnRhZ2VUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1BlcmNlbnRhZ2UgVGV4dHMgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCBMaW5lIGZyb20gJy4vbGluZSc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtCbG9ja0NvbnRyb2xzLFJpY2hUZXh0LEFsaWdubWVudFRvb2xiYXJ9ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCB7XG4gICAgVG9vbGJhcixcbiAgICBSYW5nZUNvbnRyb2wsXG5cbn0gPSB3cC5jb21wb25lbnRzO1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudHtcblxuICAgIHJlbmRlcigpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHRTaXplLFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgICAgICAgYmFyQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFyVGhpY2tuZXNzLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9PXRoaXMucHJvcHM7XG5cblxuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzc19iYXJfdmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwZXJjZW50YWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgcGVyY2VudGFnZTogdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnRleHRDb2xvcj90ZXh0Q29sb3I6XCIjNDA0MDQwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTp0ZXh0U2l6ZSsncHgnXG4gICAgICAgICAgICAgICAgICAgIH19XG5cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICA8TGluZVxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50PXtwZXJjZW50YWdlfVxuICAgICAgICAgICAgICAgICAgICBiYXJDb2xvcj17YmFyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgIGJhclRoaWNrbmVzcz17YmFyVGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9e2JhY2tncm91bmRDb2xvcn1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApXG5cbiAgICB9XG59XG5cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1JpY2hUZXh0fSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJsb2NrSUQsXG4gICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBiYXJDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFyVGhpY2tuZXNzLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGxpbmVTdHlsZSA9e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhckNvbG9yP2JhckNvbG9yOlwiIzJEQjdGNVwiLFxuXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuKFxuXG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZV9wcm9ncmVzcy1iYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6dGV4dENvbG9yP3RleHRDb2xvcjpcIiM0MDQwNDBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRleHRTaXplK1wicHhcIlxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXNraWxsYmFyLWl0ZW1cIiBkYXRhLXBlcmNlbnQ9e3BlcmNlbnRhZ2V9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlX3Byb2dyZXNzLWJhci1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpwZXJjZW50YWdlVGV4dENvbG9yP3BlcmNlbnRhZ2VUZXh0Q29sb3I6XCIjOGIyNDljXCIsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID57cGVyY2VudGFnZX0lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2tpbGxiYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcnRoaWNrbmVzcy0nK2JhclRoaWNrbmVzc1xuICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6XCIjOGIyNDljXCJcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2tpbGxiYXItYmFyXCIgc3R5bGU9e2xpbmVTdHlsZX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICApXG4gICAgfVxufSIsImltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBFZGl0IGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBTYXZlIGZyb20gJy4vc2F2ZSdcbi8vIEludGVybmF0aW9uYWxpemF0aW9uXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuXG5cbmNvbnN0IHtuYW1lLCBhdHRyaWJ1dGVzLCBjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NJdGVtU2V0dGluZ3MgPSB7XG4gICAgdGl0bGU6IF9fKCdwcm9ncmVzcycsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdEaXNwbGF5IGNyZWF0aXZlIGNvbGxhcHNpYmxlIHRleHRzIEFjY29yZGlvbi4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2xpbmVhcnByb2dyZXNzYmFyJ10sXG4gICAgaWNvbjogJ2xpbmsnLFxuICAgIGNhdGVnb3J5LFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGh0bWw6IGZhbHNlLFxuICAgICAgICBpbnNlcnRlcjogZmFsc2UsXG4gICAgICAgIHJldXNhYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIGF0dHJpYnV0ZXMsXG5cbiAgICBlZGl0OiBFZGl0LFxuICAgIHNhdmU6IFNhdmVcbn07XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHByb2dyZXNzSXRlbVNldHRpbmdzKTsiLCJjb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJY29uQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyAgSW5uZXJCbG9ja3MgfSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5cbmltcG9ydCB7IHByb2dyZXNzSXRlbVNldHRpbmdzIH0gZnJvbSAnLi9wcm9ncmVzc2Jhcic7XG5cbmNsYXNzIExpbmVhclByb2dyZXNzQmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KVxuICAgICAgICBpZiAoIXVuaXF1ZUlkKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pcXVlSWQgJiYgdW5pcXVlSWQgIT0gX2NsaWVudCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5zZXJ0UHJvZ3Jlc3NiYXJJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCB0aXRsZTEgPSBwcm9ncmVzc0l0ZW1TZXR0aW5ncy50aXRsZTtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIHRpdGxlMSwgYWN0aXZlOiBmYWxzZSwgZGVmYXVsdFRleHQ6ICcnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gcHJvZ3Jlc3NJdGVtU2V0dGluZ3M7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0QmxvY2soY3JlYXRlQmxvY2soJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1za2lsbGJhcicsIG5ld0Jsb2NrQXR0cmlidXRlcyksIHVuZGVmaW5lZCwgY2xpZW50SWQpO1xuICAgIH1cblxuICAgIGdldFByb2dyZXNzYmFyVGVtcGxhdGUgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgY29uc3QgZGVmYXVsdEl0ZW1zID0gYXR0cmlidXRlcy5kZWZhdWx0SXRlbXM7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgZGVmYXVsdEl0ZW1zOyBrKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAnQ3JlYXRlIHN0eWxpc2ggTGluZWFyIHByb2dyZXNzYmFyLic7XG4gICAgICAgICAgICByZXN1bHQucHVzaChbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1za2lsbGJhcicsIHsgaXRlbU51bWJlcjogaywgZGVmYXVsdFRleHQ6IGNvbnRlbnQgfV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQsIH0gfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2stcHJvZ3Jlc3MtYmFyIGJsb2Nrc3BhcmUtYmxvY2stJHt1bmlxdWVJZH1gfT5cbiAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17dGhpcy5nZXRQcm9ncmVzc2JhclRlbXBsYXRlKGF0dHJpYnV0ZXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17WydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2tpbGxiYXInXX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQgPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aFNlbGVjdCgoc2VsZWN0LCBvd25Qcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7IGNsaWVudElkIH0gPSBvd25Qcm9wcztcbiAgICAgICAgY29uc3QgeyBnZXRCbG9jaywgaXNCbG9ja1NlbGVjdGVkLCBoYXNTZWxlY3RlZElubmVyQmxvY2sgfSA9IHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiBnZXRCbG9jayhjbGllbnRJZCksXG4gICAgICAgICAgICBpc1NlbGVjdGVkQmxvY2tJblJvb3Q6IGlzQmxvY2tTZWxlY3RlZChjbGllbnRJZCkgfHwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrKGNsaWVudElkLCB0cnVlKSxcbiAgICAgICAgfTtcbiAgICB9KSxcbiAgICB3aXRoRGlzcGF0Y2goKGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0QmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyB9ID0gZGlzcGF0Y2goJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnNlcnRCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoTGluZWFyUHJvZ3Jlc3NCbG9jaylcbiIsImNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBhbmltYXRpb24sIHVuaXF1ZUlkLCBpdGVtVG9nZ2xlLCBpbnRlcmFjdGlvbn0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uQ2xhc3MgPSAnYmxvY2tzcGFyZS1ibG9jay1pbnRlcmFjdGlvbic7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGBibG9ja3NwYXJlLWJsb2NrLXByb2dyZXNzLWJhciAke2ludGVyYWN0aW9uQ2xhc3N9IGJsb2Nrc3BhcmUtYmxvY2stJHt1bmlxdWVJZH1gO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgfT5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgU2F2ZTsiLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBMaW5lYXJQcm9ncmVzc0Jsb2NrIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL3NhdmUnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbmNvbnN0IHtuYW1lLGNhdGVnb3J5LGF0dHJpYnV0ZXN9ID0gbWV0YWRhdGE7XG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBQcm9ncmVzc2JhcicsJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0Rpc3BsYXkgY3JlYXRpdmUgTGluZWFyIFByb2dyZXNzYmFyLicsJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOmljb25zLnByb2dyZXNzQmFyLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3Byb2dyZXNzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2JhcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdudW1iZXInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY291bnRlcicsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGh0bWw6IGZhbHNlLFxuICAgICAgICBjbGFzc05hbWU6IGZhbHNlLFxuICAgICAgICBhbGlnbjogWydjZW50ZXInLCAnd2lkZScsICdmdWxsJ10sXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIH0sXG4gICAgZWRpdDpMaW5lYXJQcm9ncmVzc0Jsb2NrLFxuICAgIHNhdmU6U2F2ZVxufSk7IiwiZXhwb3J0IGRlZmF1bHQgW1xuICAgIFwiYmxvY2tzcGFyZS1saXN0LWNoZWNrXCIsXCJibG9ja3NwYXJlLWxpc3QtY2hlY2stc3F1YXJlXCIsXCJibG9ja3NwYXJlLWxpc3QtY2hlY2stc3F1YXJlLW91dGxpbmVcIixcImJsb2Nrc3BhcmUtbGlzdC1jaGVjay1kb3VibGVcIixcImJsb2Nrc3BhcmUtbGlzdC1jaGVjay1jaXJjbGVcIixcImJsb2Nrc3BhcmUtbGlzdC1jaGVjay1jaXJjbGUtb3V0bGluZVwiLFxuICAgIFwiYmxvY2tzcGFyZS1saXN0LXNxdWFyZVwiLFwiYmxvY2tzcGFyZS1saXN0LXNxdWFyZS1vdXRsaW5lXCJcbl0iLCJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG5cbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcblxuaW1wb3J0IEljb25MaXN0RGF0YSBmcm9tICcuLi8uLi9pbmMvaWNvbi1saWIvY3VzdG9tLWljb25zJztcblxuY2xhc3MgSWNvbkxpc3QgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc09wZW46IGZhbHNlLFxuICAgICAgICAgICAgZmlsdGVyVGV4dDogJycsXG4gICAgICAgICAgICBzaG93SWNvbnM6IGZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIGRpc2FibGVUb2dnbGUsIGNvbG9yU2V0dGluZ3MsIGljb25Db2xvciwgb25Db2xvckNoYW5nZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgICBjb25zdCB7IGZpbHRlclRleHQgfSA9IHRoaXMuc3RhdGVcbiAgICAgICAgdmFyIGZpbmFsRGF0YSA9IFtdO1xuICAgICAgICBpZiAoZmlsdGVyVGV4dC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBJY29uTGlzdERhdGEuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmFtZS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbERhdGEucHVzaChuYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5hbERhdGEgPSBJY29uTGlzdERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1maWVsZCBibG9ja3NwYXJlLWZpZWxkLWljb24tbGlzdCAke2Rpc2FibGVUb2dnbGUgPyAnJyA6ICdibG9ja3NwYXJlLXRvZ2dsZS1lbmFibGVkJ31gfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5sYWJlbCAmJlxuICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgeyFkaXNhYmxlVG9nZ2xlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGUgbGFiZWw9e3RoaXMucHJvcHMubGFiZWx9IGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtaWNvbi1saXN0LXRvZ2dsZSd9IHZhbHVlPXt0aGlzLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlfSBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLnZhbHVlID8gJycgOiAnICcpfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt0aGlzLnByb3BzLmxhYmVsfTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7Y29sb3JTZXR0aW5ncyAmJiA8Q29sb3IgbGFiZWw9e19fKCcgQ29sb3InKX0gdmFsdWU9e2ljb25Db2xvciB8fCAnI2NjYyd9IG9uQ2hhbmdlPXsoY29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoY29sb3IpfSAvPn1cblxuICAgICAgICAgICAgICAgIHsoZGlzYWJsZVRvZ2dsZSB8fCB0aGlzLnByb3BzLnZhbHVlICE9ICcnKSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pY29uLWxpc3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT17dGhpcy5zdGF0ZS5maWx0ZXJUZXh0fSBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIG9uQ2hhbmdlPXtlID0+IHRoaXMuc2V0U3RhdGUoeyBmaWx0ZXJUZXh0OiBlLnRhcmdldC52YWx1ZSB9KX0gYXV0b0NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWljb24tbGlzdC1pY29uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2ZpbmFsRGF0YS5tYXAobmFtZSA9PiB7IHJldHVybiAoPHNwYW4gY2xhc3NOYW1lPXt2YWx1ZSA9PSBuYW1lID8gJ2Jsb2Nrc3BhcmUtYWN0aXZlJyA6ICcnfSBvbkNsaWNrPXtlID0+IHsgdGhpcy5wcm9wcy5vbkNoYW5nZShuYW1lKSB9fT48c3BhbiBjbGFzc05hbWU9e25hbWV9IC8+PC9zcGFuPikgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgSWNvbkxpc3QiLCJpbXBvcnQgSWNvbkxpc3QgZnJvbSAnLi4vaWNvbi1saXN0JztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0ZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJTTGlzdEljb25TZXR0aW5ncyggcHJvcHMgKSB7XG5cbiAgICBjb25zdCB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIG9uQ2hhbmdlTmFtZSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGxpc3RUeXBlLFxuICAgICAgICBvbkNoYW5nZUxpc3RTdHlsZSA9KCkgPT57fSxcblxuICAgICAgICBvcmRlckxpc3RTdHlsZSxcbiAgICAgICAgb25DaGFuZ2VPcmRlckxpc3RTdHlsZSA9ICgpID0+IHt9LFxuXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBvbmNoYW5nZUNvbG9yPSAoKSA9PiB7fVxuXG5cbiAgICB9ID0gcHJvcHM7XG5cblxuICAgIGNvbnN0IGxpc3RUeXBlc09wdGlvbnMgPSBbXG4gICAgICAgIHt2YWx1ZTogJ3VsJywgbGFiZWw6IF9fKCdMaXN0IFdpdGggaWNvbicsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdvbCcsIGxhYmVsOiBfXygnT3JkZXJlZCBMaXN0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIHt2YWx1ZTogJ25vbmUnLCBsYWJlbDogX18oJ05vbmUnLCAnYmxvY2tzcGFyZScpfSxcblxuICAgIF07XG5cbiAgICBjb25zdCBvcmRlckxpc3RTdHlsZU9wdGlvbnMgPSBbXG4gICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc3R5bGUxJywgbGFiZWw6IF9fKCdTdHlsZTEnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zdHlsZTInLCBsYWJlbDogX18oJ1N0eWxlMicsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXN0eWxlMycsIGxhYmVsOiBfXygnU3R5bGUzJywgJ2Jsb2Nrc3BhcmUnKX0sXG5cbiAgICBdO1xuXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RnJhZ21lbnQ+XG5cblxuICAgICAgICAgICAge2xpc3RUeXBlID09ICd1bCcgJiZcbiAgICAgICAgICAgIDxJY29uTGlzdFxuICAgICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZU5hbWV9Lz5cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uY2hhbmdlQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnSWNvbiBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgfV19PlxuICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cblxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgIClcbn0iLCJpbXBvcnQgQlNMaXN0SWNvblNldHRpbmdzIGZyb20gJy4vaWNvbi1zZXR0aW5ncyc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuXG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbGlzdFR5cGUsXG4gICAgICAgICAgICBvcmRlckxpc3RTdHlsZSxcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgbGlzdEJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG5cblxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUJhY2tncm91bmRjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2xpc3RCYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keSB0aXRsZT17X18oJ0ljb24gU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuICAgICAgICAgICAgICAgICAgICA8QlNMaXN0SWNvblNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VOYW1lPXtuYW1lID0+IHNldEF0dHJpYnV0ZXMoeyBuYW1lIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0VHlwZT17bGlzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUxpc3RTdHlsZT17bGlzdFR5cGUgPT4gc2V0QXR0cmlidXRlcyh7bGlzdFR5cGV9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlPXtvcmRlckxpc3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlT3JkZXJMaXN0U3R5bGU9e29yZGVyTGlzdFN0eWxlID0+IHNldEF0dHJpYnV0ZXMoe29yZGVyTGlzdFN0eWxlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQ29sb3I9e2NvbG9yPT5zZXRBdHRyaWJ1dGVzKHtjb2xvcn0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJztcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtBbGlnbm1lbnRUb29sYmFyLFxuICAgIEJsb2NrQ29udHJvbHMsfSA9IHdwLmJsb2NrRWRpdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgbGlzdERhdGEsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBsaXN0VHlwZSxcbiAgICAgICAgICAgICAgICBvcmRlckxpc3RTdHlsZSxcbiAgICAgICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgICAgICBsaXN0QmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGxldCBjbGFzc2VzTmFtZSA9ICcnO1xuICAgICAgICBpZihsaXN0VHlwZT09J3VsJyl7XG4gICAgICAgICAgICBjbGFzc2VzTmFtZSA9bmFtZVxuICAgICAgICB9ZWxzZSBpZihsaXN0VHlwZT09J29sJyl7XG4gICAgICAgICAgICBpZihvcmRlckxpc3RTdHlsZSA9PSAnYmxvY2tzcGFyZS1zdHlsZTInKSB7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUzJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gJyc7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxpc3Qtd3JhcFwiLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpsaXN0QmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6bGlzdEJhY2tHcm91bmRDb2xvcj8nMjBweCc6JycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTpsaXN0QmFja0dyb3VuZENvbG9yPycyMHB4JzonJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDpsaXN0QmFja0dyb3VuZENvbG9yPycyMHB4JzonJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6bGlzdEJhY2tHcm91bmRDb2xvcj8nMjBweCc6JycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOmJvcmRlclJhZGl1cytcInB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17bGlzdFR5cGU9PSdub25lJz8ndWwnOmxpc3RUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPVwibGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bGlzdERhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtsaXN0RGF0YTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOmNvbG9yP2NvbG9yOlwiIzAwMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG5cbiAgICAgICAgKVxuICAgIH1cbn0iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtSaWNoVGV4dH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5jbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgbGlzdERhdGEsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBsaXN0VHlwZSxcbiAgICAgICAgICAgICAgICBvcmRlckxpc3RTdHlsZSxcbiAgICAgICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgICAgICBsaXN0QmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHNcblxuICAgICAgICBsZXQgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgaWYobGlzdFR5cGU9PSd1bCcpe1xuICAgICAgICAgICAgY2xhc3Nlc05hbWUgPW5hbWVcbiAgICAgICAgfWVsc2UgaWYobGlzdFR5cGU9PSdvbCcpe1xuICAgICAgICAgICAgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUyJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKG9yZGVyTGlzdFN0eWxlID09ICdibG9ja3NwYXJlLXN0eWxlMycpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9ICBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxpc3Qtd3JhcFwiLFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmxpc3RCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czpib3JkZXJSYWRpdXMrXCJweFwiLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOmxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOmxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDpsaXN0QmFja0dyb3VuZENvbG9yPycyMHB4JzonJyxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0Omxpc3RCYWNrR3JvdW5kQ29sb3I/JzIwcHgnOicnLFxuICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtsaXN0VHlwZT09J25vbmUnPyd1bCc6bGlzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG11bHRpbGluZT1cImxpXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2xpc3REYXRhfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXNOYW1lfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6Y29sb3I/Y29sb3I6XCIjMDAwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246c2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhdmU7IiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vc2F2ZSdcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5cbmNvbnN0e25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn1cblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBJY29uIExpc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnSWNvbiBMaXN0IGFsbG93IHlvdSB0byBhZGQgbGlzdCB3aXRoIHZhcmlvdXMgdHlwZSBvZiBpY29ucycsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnksXG4gICAgaWNvbjogaWNvbnMuaWNvbmxpc3QsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdpY29uJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsnd2lkZScsICdmdWxsJywnY2VudGVyJ10sXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGxpc3REYXRhOlwiPGxpPlZlc3RpYnVsdW0gYWMgZGlhbSBzaXQgYW1ldDwvbGk+IDxsaT5WZXN0aWJ1bHVtIGFjIGRpYW0gc2l0IGFtZXQ8L2xpPiA8bGk+VmVzdGlidWx1bSBhYyBkaWFtIHNpdCBhbWV0PC9saT5cIixcbiAgICAgICAgICAgIG5hbWU6XCJibG9ja3NwYXJlLWxpc3QtY2hlY2tcIixcbiAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQ6XCJjZW50ZXJcIlxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOlNhdmVcbn0pO1xuIiwiXG5jb25zdHtfX30gPSB3cC5pMThuO1xuaW1wb3J0IGZpbHRlciBmcm9tIFwibG9kYXNoL2ZpbHRlclwiO1xuaW1wb3J0IEdhbGxlcnlJbWFnZSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWltYWdlXCI7XG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXJcIjtcblxuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBSZXNpemFibGVCb3ggfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7IEJBQ0tTUEFDRSB9ID0gd3Aua2V5Y29kZXM7XG5cbmNsYXNzIExvZ29zIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgICAgICB0aGlzLm9uUmVtb3ZlSW1hZ2UgPSB0aGlzLm9uUmVtb3ZlSW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uU2VsZWN0SW1hZ2UgPSB0aGlzLm9uU2VsZWN0SW1hZ2UuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUZvcndhcmQgPSB0aGlzLm9uTW92ZUZvcndhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uTW92ZUJhY2t3YXJkID0gdGhpcy5vbk1vdmVCYWNrd2FyZC5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzID0gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcyA9IHRoaXMub25FZGl0U2VsZWN0SW1hZ2VzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2U6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ3JpZFNpemUgPT09ICd4bHJnJyApIHtcblxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgYWxpZ246ICd3aWRlJyxcbiAgICAgICAgICAgICAgICBncmlkU2l6ZTogJ2xyZycsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSggcHJldlByb3BzICkge1xuICAgICAgICAvLyBEZXNlbGVjdCBpbWFnZXMgd2hlbiBkZXNlbGVjdGluZyB0aGUgYmxvY2suXG4gICAgICAgIGlmICggISB0aGlzLnByb3BzLmlzU2VsZWN0ZWQgJiYgcHJldlByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSAhPT0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlKCBvbGRJbmRleCwgbmV3SW5kZXggKSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFsgLi4udGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyBdO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBuZXdJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgb2xkSW5kZXggXSApO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBvbGRJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgbmV3SW5kZXggXSApO1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG5ld0luZGV4IH0gKTtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGltYWdlcyB9ICk7XG4gICAgfVxuICAgIG9uTW92ZUZvcndhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcy5sZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlKCBvbGRJbmRleCwgb2xkSW5kZXggKyAxICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlQmFja3dhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZSggb2xkSW5kZXgsIG9sZEluZGV4IC0gMSApO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBvblJlbW92ZUltYWdlKCBpbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGZpbHRlciggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcywgKCBfaW1nLCBpICkgPT4gaW5kZXggIT09IGkgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbnVsbCB9ICk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cmlidXRlcyApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGltYWdlcyB9LCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoICEgaW1hZ2VzWyBpbmRleCBdICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggMCwgaW5kZXggKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmltYWdlc1sgaW5kZXggXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggaW5kZXggKyAxICksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgb25FZGl0U2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4gaGVscGVyLnBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgbGV0IGNvdW50O1xuXG4gICAgICAgIHN3aXRjaCAoIHRoaXMucHJvcHMuYXR0cmlidXRlcy5hbGlnbiApIHtcbiAgICAgICAgICAgIGNhc2UgJ3dpZGUnOlxuICAgICAgICAgICAgICAgIGNvdW50ID0gNDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgICAgICAgICAgIGNvdW50ID0gNTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY291bnQgPSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBjYXB0aW9ucyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGxpbmtUbyxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1sb2dvLXdyYXBcIj5cbiAgICAgICAgICAgICAgICB7IGltYWdlcy5tYXAoICggaW1nLCBpbmRleCApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYW5zbGF0b3JzOiAlMSRkIGlzIHRoZSBvcmRlciBudW1iZXIgb2YgdGhlIGltYWdlLCAlMiRkIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzICovXG4gICAgICAgICAgICAgICAgICAgICAgICBfXyggJ2ltYWdlICUxJGQgb2YgJTIkZCBpbiBnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1cIiBrZXk9eyBpbWcuaWQgfHwgaW1nLnVybCB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHYWxsZXJ5SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXsgaW1nLnVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD17IGltZy5hbHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17IGltZy5pZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0xpbms9eyBpbWcuaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUbz17IGxpbmtUbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlyc3RJdGVtPXsgaW5kZXggPT09IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RJdGVtPXsgKCBpbmRleCArIDEgKSA9PT0gaW1hZ2VzLmxlbmd0aCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9eyBpc1NlbGVjdGVkICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSA9PT0gaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkPXsgdGhpcy5vbk1vdmVCYWNrd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUZvcndhcmQ9eyB0aGlzLm9uTW92ZUZvcndhcmQoIGluZGV4ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlbW92ZT17IHRoaXMub25SZW1vdmVJbWFnZSggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXM9eyAoIGF0dHJzICkgPT4gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMoIGluZGV4LCBhdHRycyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj17IGltZy5jYXB0aW9uIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17IGFyaWFMYWJlbCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25zPXsgY2FwdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0NhcHRpb249eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9ICkgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9nb3M7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHBpY2tSZWxldmFudE1lZGlhRmlsZXMgfSBmcm9tICcuLy4uLy4uL3V0aWxzL2hlbHBlci9tZWRpYS1oZWxwZXInO1xuaW1wb3J0IEdhbGxlcnlEcm9wWm9uZSBmcm9tICcuLy4uLy4uL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1kcm9wem9uZSc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmltcG9ydCBMb2dvcyBmcm9tICcuL2xvZ29zJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IHdpdGhOb3RpY2VzIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBNZWRpYVBsYWNlaG9sZGVyLCBCbG9ja0ljb24gfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgICAgICB0aGlzLm9uU2VsZWN0SW1hZ2VzID0gdGhpcy5vblNlbGVjdEltYWdlcy5iaW5kKCB0aGlzICk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZXMoIGltYWdlcyApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICBpbWFnZXM6IGltYWdlcy5tYXAoIGltYWdlID0+IHBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgbm90aWNlT3BlcmF0aW9ucyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBub3RpY2VVSSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgaW1hZ2VzLCBncmF5c2NhbGUgfSA9IGF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgaGFzSW1hZ2VzID0gISEgaW1hZ2VzLmxlbmd0aDtcblxuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyggY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICAnaGFzLWZpbHRlci1ncmF5c2NhbGUnOiBncmF5c2NhbGUsXG4gICAgICAgIH0gKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEdhbGxlcnlEcm9wWm9uZSB7IC4uLnRoaXMucHJvcHMgfSAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxvZ29zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPExvZ29zIHsgLi4udGhpcy5wcm9wcyB9IGltYWdlcz17IGltYWdlcyB9IC8+XG5cbiAgICAgICAgICAgICAgICAgICAgeyAoICEgaGFzSW1hZ2VzIHx8IGlzU2VsZWN0ZWQgKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFQbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR2FsbGVyeT17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBcHBlbmRlcj17IGhhc0ltYWdlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IDxCbG9ja0ljb24gaWNvbj17IGljb25zLmVkaXQgfSAvPiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXsge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oICdMb2dvcyBHcmlkJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uczogX18oICdVcGxvYWQgYW4gaW1hZ2UgZmlsZSwgcGljayBvbmUgZnJvbSB5b3VyIG1lZGlhIGxpYnJhcnksIG9yIGFkZCBvbmUgd2l0aCBhIFVSTCcsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFR5cGVzPXsgWyAnaW1hZ2UnIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaGFzSW1hZ2VzID8gaW1hZ2VzIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yPXsgbm90aWNlT3BlcmF0aW9ucy5jcmVhdGVFcnJvck5vdGljZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWNlcz17IG5vdGljZVVJIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17IHRoaXMub25TZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoIHsgJ2lzLWFwcGVuZGVyJzogaGFzSW1hZ2VzIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKCBbIHdpdGhOb3RpY2VzIF0gKSggRWRpdCApOyIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5cblxuY29uc3QgeyBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHNhdmUgPSAoIHsgYXR0cmlidXRlcywgY2xhc3NOYW1lIH0gKSA9PiB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIGNhcHRpb25zLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGxpbmtUbyxcbiAgICAgICAgcmVsLFxuICAgICAgICB0YXJnZXQsXG4gICAgfSA9IGF0dHJpYnV0ZXM7XG5cblxuXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbG9nb3Mtd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtbG9nby13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIHsgaW1hZ2VzLm1hcCggKCBpbWFnZSApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBocmVmO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBsaW5rVG8gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVkaWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdHRhY2htZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGltYWdlLmxpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGltYWdlLmltZ0xpbmsgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGltYWdlLmltZ0xpbms7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IDxpbWcgc3JjPXsgaW1hZ2UudXJsIH0gYWx0PXsgaW1hZ2UuYWx0IH0gZGF0YS1pZD17IGltYWdlLmlkIH0gZGF0YS1pbWdsaW5rPXsgaW1hZ2UuaW1nTGluayB9IGRhdGEtbGluaz17IGltYWdlLmxpbmsgfSBjbGFzc05hbWU9eyBpbWFnZS5pZCA/IGB3cC1pbWFnZS0keyBpbWFnZS5pZCB9YCA6IG51bGwgfSAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXsgaW1hZ2UuaWQgfHwgaW1hZ2UudXJsIH0gY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktZmlndXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGhyZWYgPyA8YSBocmVmPXsgaHJlZiB9IHRhcmdldD17IHRhcmdldCB9IHJlbD17IHJlbCB9PnsgaW1nIH08L2E+IDogaW1nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FwdGlvbnMgJiYgaW1hZ2UuY2FwdGlvbiAmJiBpbWFnZS5jYXB0aW9uLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50IHRhZ05hbWU9XCJmaWdjYXB0aW9uXCIgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWNhcHRpb25cIiB2YWx1ZT17IGltYWdlLmNhcHRpb24gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlndXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9ICkgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzYXZlO1xuIiwiaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudC9lZGl0JztcbmltcG9ydCBzYXZlIGZyb20gJy4vY29tcG9uZW50L3NhdmUnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgbmFtZSwgY2F0ZWdvcnksIGF0dHJpYnV0ZXMgfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgLyogdHJhbnNsYXRvcnM6IGJsb2NrIG5hbWUgKi9cbiAgICB0aXRsZTogX18oJ0JTIExvZ28gR3JpZCcsICdibG9ja3NwYXJlJyksXG4gICAgLyogdHJhbnNsYXRvcnM6IGJsb2NrIGRlc2NyaXB0aW9uICovXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgbG9nb3MsIGJhZGdlcywgb3IgY2VydGlmaWNhdGlvbnMgdG8gYnVpbGQgY3JlZGliaWxpdHkuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5sb2dvYmFkZ2UsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbG9nbycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdicmFuZCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjbGllbnRzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2dyaWQnLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgICAgICBleGFtcGxlOiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYWxpZ246ICdmdWxsJyxcbiAgICAgICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDIwXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcHJldl9pbWcuaW1nLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQyMFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHByZXZfaW1nLmltZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MjBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmV2X2ltZy5pbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDIwXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIGVkaXQ6RWRpdCxcblxuICAgIHNhdmUsXG59KTtcblxuIiwiaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTEgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0yLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUzIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTMucG5nXCI7XG5cbmltcG9ydCBEZXNpZ25QYW5lbEJvZHkgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tcGFuZWwtYm9keS9cIjtcblxuY29uc3Qge2FkZEZpbHRlciwgYXBwbHlGaWx0ZXJzfSA9IHdwLmhvb2tzO1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBRdWVyeUNvbnRyb2xzLFxuICAgIFJhbmdlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sLFxuICAgIFRleHRDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wsXG5cblxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHthZGRRdWVyeUFyZ3N9ID0gd3AudXJsO1xuXG5jb25zdCB7YXBpRmV0Y2h9ID0gd3A7XG5cbmNvbnN0IE1BWF9QT1NUU19DT0xVTU5TID0gMztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjYXRlZ29yaWVzTGlzdDogW119XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMuc3RpbGxNb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mZXRjaFJlcXVlc3QgPSBhcGlGZXRjaCh7XG4gICAgICAgICAgICBwYXRoOiBhZGRRdWVyeUFyZ3MoJy93cC92Mi9jYXRlZ29yaWVzJywge3Blcl9wYWdlOiAtMX0pXG4gICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAoY2F0ZWdvcmllc0xpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGlsbE1vdW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcmllc0xpc3R9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RpbGxNb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2NhdGVnb3JpZXNMaXN0OiBbXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgdGhpcy5zdGlsbE1vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpbWFnZVNpemVTZWxlY3QoKSB7XG4gICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gd3AuZGF0YS5zZWxlY3QoJ2NvcmUvZWRpdG9yJykuZ2V0RWRpdG9yU2V0dGluZ3MoKTtcblxuICAgICAgICByZXR1cm4gY29tcGFjdChtYXAoZ2V0U2V0dGluZ3MuaW1hZ2VTaXplcywgKHtuYW1lLCBzbHVnfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2x1ZyxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIHBvc3RUeXBlLFxuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBkZXNpZ24gPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdFRpdGxlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RBdXRob3IsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RXhjZXJwdCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdExpbmssXG4gICAgICAgICAgICAgICAgZXhjZXJwdExlbmd0aCxcbiAgICAgICAgICAgICAgICByZWFkTW9yZVRleHQsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3csXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplLFxuICAgICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgICAgIG9yZGVyQnksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIGVxdWFsSW1hZ2VIZWlnaHQsXG4gICAgICAgICAgICAgICAgcG9zdFRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgcG9zdFRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgbGlua0NvbG9yLFxuICAgICAgICAgICAgICAgIGdlbmVyYWxDb2xvcixcbiAgICAgICAgICAgICAgICBlbmFibGVCb3hTaGFkb3csXG4gICAgICAgICAgICAgICAgeE9mZnNldCxcbiAgICAgICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgc3ByZWFkLFxuICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBsYXRlc3RQb3N0cyxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIGNvbnN0IHtjYXRlZ29yaWVzTGlzdH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGl0bGVjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3Bvc3RUaXRsZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUxpbmtjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2xpbmtDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VHZW5lcmFsY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtnZW5lcmFsQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRPZGVyT3B0aW9uID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0xJywgbGFiZWw6IF9fKCdEZWZhdWx0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdjb250ZW50LW9yZGVyLTInLCBsYWJlbDogX18oJ01ldGEg4oaSIFRpdGxlIOKGkiBDYXRlZ29yeSDihpIgQ29udGVudCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0zJywgbGFiZWw6IF9fKCdUaXRsZSDihpIgTWV0YSDihpIgQ2F0ZWdvcnkg4oaSIENvbnRlbnQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItNCcsIGxhYmVsOiBfXygnVGl0bGUg4oaSIENhdGVnb3J5IOKGkiBNZXRhIOKGkiBDb250ZW50JywgJ2Jsb2Nrc3BhcmUnKX0sXG5cbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIHBvc3RzXG4gICAgICAgIGNvbnN0IGhhc1Bvc3RzID0gQXJyYXkuaXNBcnJheShsYXRlc3RQb3N0cykgJiYgbGF0ZXN0UG9zdHMubGVuZ3RoO1xuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuXG4gICAgICAgIGNvbnN0IGltYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmltYWdlU2l6ZVNlbGVjdCgpO1xuXG5cbiAgICAgICAgY29uc3QgaW1hZ2VTaXplVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlU2l6ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTaXplT3B0aW9uc1tpXS52YWx1ZSA9PT0gaW1hZ2VTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbWFnZVNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICdmdWxsJztcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxEZXNpZ25QYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkZXNpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXthcHBseUZpbHRlcnMoJ2Jsb2Nrc3BhcmUuY3RhLmVkaXQubGF5b3V0cycsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU3R5bGUgMScsICdibG9ja3NwYXJlJyksIHZhbHVlOiAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xJywgaW1hZ2U6IEltYWdlRGVzaWduU3R5bGUxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1N0eWxlIDInLCAnYmxvY2tzcGFyZScpLCB2YWx1ZTogJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMicsIGltYWdlOiBJbWFnZURlc2lnblN0eWxlMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTdHlsZSAzJywgJ2Jsb2Nrc3BhcmUnKSwgdmFsdWU6ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTMnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBdKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtkZXNpZ24gPT4gc2V0QXR0cmlidXRlcyh7ZGVzaWdufSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9EZXNpZ25QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2lzUG9zdCA/IG51bGwgOiAnYmxvY2tzcGFyZS1oaWRlLXF1ZXJ5J31cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdDb2x1bW5zJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2x1bW5zOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyFoYXNQb3N0cyA/IE1BWF9QT1NUU19DT0xVTU5TIDogTWF0aC5taW4oTUFYX1BPU1RTX0NPTFVNTlMsIGxhdGVzdFBvc3RzLmxlbmd0aCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUaXRsZSBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUaXRsZWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RpdGxlIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlIEZvbnQgU2l6ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Bvc3RUaXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7cG9zdFRpdGxlRm9udFNpemU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezYwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Bvc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IENhdGVnb3J5JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdENhdGVnb3J5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0Q2F0ZWdvcnk6ICFkaXNwbGF5UG9zdENhdGVnb3J5fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgQXV0aG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdEF1dGhvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdEF1dGhvcjogIWRpc3BsYXlQb3N0QXV0aG9yfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgRGF0ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZGlzcGxheVBvc3REYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0RGF0ZTogIWRpc3BsYXlQb3N0RGF0ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAge2Rlc2lnbiAhPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTUnICAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNicgICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwgUGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCcgQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsaW5rQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VMaW5rY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0xpbmsgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ2VuZXJhbENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlR2VuZXJhbGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdHZW5lcmFsIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUG9zdCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2lzUG9zdCA/IG51bGwgOiAnYmxvY2tzcGFyZS1oaWRlLXF1ZXJ5J31cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeUNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLntvcmRlciwgb3JkZXJCeX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllc0xpc3Q9e2NhdGVnb3JpZXNMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2F0ZWdvcnlJZD17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNhdGVnb3J5Q2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2NhdGVnb3JpZXM6ICcnICE9PSB2YWx1ZSA/IHZhbHVlIDogdW5kZWZpbmVkfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25PcmRlckNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtvcmRlcjogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk9yZGVyQnlDaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7b3JkZXJCeTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtMS5wbmdcIjsiLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9ibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTIucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvYmxvY2tzcGFyZS1ncmlkLWxheW91dC0zLnBuZ1wiOyIsImNvbnN0IGJsb2dQb3N0U3R5bGVzPSAoYXR0cmlidXRlcykgPT57XG4gICAgbGV0IGJsb2dTdHlsZXMgPSAnJztcblxuXG4gICAgICAgIGJsb2dTdHlsZXMgPSB7XG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkXCIgKyBhdHRyaWJ1dGVzLmJvcmRlckNvbG9yID8gYXR0cmlidXRlcy5ib3JkZXJDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYXR0cmlidXRlcy5iYWNrR3JvdW5kQ29sb3IgPyBhdHRyaWJ1dGVzLmJhY2tHcm91bmRDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJveFNoYWRvdzogKGF0dHJpYnV0ZXMuZW5hYmxlQm94U2hhZG93KT9hdHRyaWJ1dGVzLnhPZmZzZXQgKyBcInB4IFwiICsgYXR0cmlidXRlcy55T2Zmc2V0ICsgXCJweCBcIiArIGF0dHJpYnV0ZXMuYmx1ciArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNwcmVhZCArIFwicHggXCIgKyBhdHRyaWJ1dGVzLnNoYWRvd0NvbG9yOlwiXCIsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGF0dHJpYnV0ZXMuYm9yZGVyUmFkaXVzPyBhdHRyaWJ1dGVzLmJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgIH1cblxuICAgIHJldHVybiBibG9nU3R5bGVzXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmxvZ1Bvc3RTdHlsZXMiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgcGlja0J5IGZyb20gJ2xvZGFzaC9waWNrQnknO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuXG5pbXBvcnQgYmxvZ1Bvc3RTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzXCI7XG5cbmNvbnN0IHtjb21wb3NlfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7ZGVjb2RlRW50aXRpZXN9ID0gd3AuaHRtbEVudGl0aWVzO1xuXG5jb25zdCB7XG4gICAgd2l0aFNlbGVjdCxcbn0gPSB3cC5kYXRhO1xuXG5jb25zdCB7XG4gICAgUGxhY2Vob2xkZXIsXG4gICAgU3Bpbm5lcixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5jbGFzcyBMYXRlc3RQb3N0c0Jsb2NrR3JpZCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdFRpdGxlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0Q2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RBdXRob3IsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RXhjZXJwdCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdExpbmssXG4gICAgICAgICAgICAgICAgZXhjZXJwdExlbmd0aCxcbiAgICAgICAgICAgICAgICByZWFkTW9yZVRleHQsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3csXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplID0gJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25UYWcsXG4gICAgICAgICAgICAgICAgZXF1YWxJbWFnZUhlaWdodCxcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBsaW5rQ29sb3IsXG4gICAgICAgICAgICAgICAgZ2VuZXJhbENvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIHBvc3RzXG4gICAgICAgIGNvbnN0IGhhc1Bvc3RzID0gQXJyYXkuaXNBcnJheShsYXRlc3RQb3N0cykgJiYgbGF0ZXN0UG9zdHMubGVuZ3RoO1xuXG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIHBvc3QgdHlwZVxuICAgICAgICBjb25zdCBpc1Bvc3QgPSBwb3N0VHlwZSA9PT0gJ3Bvc3QnO1xuXG4gICAgICAgIGlmICghaGFzUG9zdHMpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJhZG1pbi1wb3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQlMgQmxvY2tzIFBvc3RzIEdyaWQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IUFycmF5LmlzQXJyYXkobGF0ZXN0UG9zdHMpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3Bpbm5lci8+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXygnTm8gcG9zdHMgZm91bmQuJywgJ2Jsb2Nrc3BhcmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZpbmcgcG9zdHMgZnJvbSBkaXNwbGF5IHNob3VsZCBiZSBpbnN0YW50LlxuICAgICAgICBjb25zdCBkaXNwbGF5UG9zdHMgPSBsYXRlc3RQb3N0cy5sZW5ndGggPiBwb3N0c1RvU2hvdyA/XG4gICAgICAgICAgICBsYXRlc3RQb3N0cy5zbGljZSgwLCBwb3N0c1RvU2hvdykgOlxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBzZWN0aW9uIHRhZ1xuICAgICAgICBjb25zdCBTZWN0aW9uVGFnID0gc2VjdGlvblRhZyA/IHNlY3Rpb25UYWcgOiBcInNlY3Rpb25cIjtcblxuICAgICAgICAvLyBHZXQgdGhlIHNlY3Rpb24gc3R5bGVcbiAgICAgICAgbGV0IGl0ZW1TdHlsZSA9IHt9O1xuICAgICAgICBpZiAoZGVzaWduICE9PSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAmJiBkZXNpZ24gIT09ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTUnICYmIGRlc2lnbiAhPT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNicpIHtcbiAgICAgICAgICAgIGl0ZW1TdHlsZSA9IHtcblxuICAgICAgICAgICAgICAgIC4uLmJsb2dQb3N0U3R5bGVzKGF0dHJpYnV0ZXMpLFxuXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGlua2NvbG9yID0ge1xuICAgICAgICAgICAgY29sb3I6IGxpbmtDb2xvciA/IGxpbmtDb2xvciA6IFwiIzE5NzdhY1wiXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2VuZXJhbGNvbG9yID0ge1xuICAgICAgICAgICAgY29sb3I6IGdlbmVyYWxDb2xvciA/IGdlbmVyYWxDb2xvciA6ICcjMDAwJ1xuICAgICAgICB9O1xuXG5cbiAgICAgICAgLy8gR2V0IHRoZSBwb3N0IHRpdGxlIHRhZ1xuICAgICAgICBjb25zdCBQb3N0VGFnID0gXCJoNFwiO1xuICAgICAgICBjb25zdCBlZGl0Q29udGVudFBhZGRpbmcgPSB7XG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTZWN0aW9uVGFnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC13cmFwJ1xuICAgICAgICAgICAgICAgICAgICApfSBzdHlsZT17ZWRpdENvbnRlbnRQYWRkaW5nfT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtbGF0ZXN0LXBvc3Qtd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24sXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1pcy1ncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW4tJyArIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RzLm1hcCgocG9zdCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlZEltYWdlU3JjID0gKChwb3N0LmZlYXR1cmVkX2ltYWdlX3VybHMgJiYgcG9zdC5mZWF0dXJlZF9pbWFnZV91cmxzW2ltYWdlU2l6ZSB8fCAnbGFyZ2UnXSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlZEltYWdlID0gZmVhdHVyZWRJbWFnZVNyYztcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLXBvc3Qtc2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxJbWFnZUhlaWdodCA/IFwiaGFzLWltZy1lcXVhbC1oZWlnaHRcIiA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1ncmlkLWxheW91dC00JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtZ3JpZC1sYXlvdXQtNScgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWdyaWQtbGF5b3V0LTYnKSA/ICdoYXMtYmFja2dyb3VuZCcgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9IHN0eWxlPXtpdGVtU3R5bGV9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZEltYWdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtaW1nJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2ZlYXR1cmVkSW1hZ2V9IGFsdD17X18oJ2ZlYXR1cmVkJywgJ2Jsb2Nrc3BhcmUnKX0vPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC1jb250ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudE9yZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmctb3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tiYWNrZ3JvdW5kQ29sb3I6IGVuYWJsZUJhY2tncm91bmRDb2xvciA/IGJhY2tHcm91bmRDb2xvciA6ICcnfX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RDYXRlZ29yeSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtcG9zdC1jYXRlZ29yeSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IHBvc3QuY2F0ZWdvcnlfaW5mby5yZXBsYWNlKC9ocmVmPVsnXCJdLio/WydcIl0vZywgJycpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2xpbmtjb2xvcn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0VGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3N0VGFnIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLXRpdGxlXCIgc3R5bGU9e3tmb250U2l6ZTogcG9zdFRpdGxlRm9udFNpemUgKyAncHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBvc3RUaXRsZUNvbG9yID8gcG9zdFRpdGxlQ29sb3IgOiAnIzQwNDA0MCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJib29rbWFya1wiPntkZWNvZGVFbnRpdGllcyhwb3N0LnRpdGxlLnJlbmRlcmVkLnRyaW0oKSkgfHwgX18oJyhVbnRpdGxlZCknLCAnYmxvY2tzcGFyZScpfTwvYT48L1Bvc3RUYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJiAoZGlzcGxheVBvc3RBdXRob3IgfHwgZGlzcGxheVBvc3REYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1ieWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RBdXRob3IgJiYgcG9zdC5hdXRob3JfaW5mby5kaXNwbGF5X25hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWF1dGhvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT17bGlua2NvbG9yfSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXRleHQtbGlua1wiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QuYXV0aG9yX2luZm8uYXV0aG9yX2xpbmt9Pntwb3N0LmF1dGhvcl9pbmZvLmRpc3BsYXlfbmFtZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0RGF0ZSAmJiBwb3N0LmRhdGVfZ210ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRpbWUgZGF0ZVRpbWU9e21vbWVudChwb3N0LmRhdGVfZ210KS51dGMoKS5mb3JtYXQoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1kYXRlJ30gc3R5bGU9e2dlbmVyYWxjb2xvcn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQocG9zdC5kYXRlX2dtdCkubG9jYWwoKS5mb3JtYXQoJ01NTU0gREQsIFknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGltZT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhkaXNwbGF5UG9zdEV4Y2VycHQgfHwgZGlzcGxheVBvc3RMaW5rKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWV4Y2VycHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdEV4Y2VycHQgJiYgcG9zdC5leGNlcnB0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtnZW5lcmFsY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiB0cnVuY2F0ZShwb3N0LmV4Y2VycHQucmVuZGVyZWQsIGV4Y2VycHRMZW5ndGgpfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RMaW5rICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48YSBzdHlsZT17bGlua2NvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtbW9yZS1saW5rIGJsb2Nrc3BhcmUtdGV4dC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QubGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e3JlYWRNb3JlVGV4dH08L2E+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L1NlY3Rpb25UYWc+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aFNlbGVjdCgoc2VsZWN0LCBwcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBvcmRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXMsXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IHtnZXRFbnRpdHlSZWNvcmRzfSA9IHNlbGVjdCgnY29yZScpO1xuXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzUXVlcnkgPSBwaWNrQnkoe1xuICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgb3JkZXJieTogcHJvcHMuYXR0cmlidXRlcy5vcmRlckJ5LFxuICAgICAgICAgICAgcGVyX3BhZ2U6IHByb3BzLmF0dHJpYnV0ZXMucG9zdHNUb1Nob3csXG4gICAgICAgICAgICBvZmZzZXQ6IHByb3BzLmF0dHJpYnV0ZXMub2Zmc2V0LFxuICAgICAgICB9LCAodmFsdWUpID0+ICFpc1VuZGVmaW5lZCh2YWx1ZSkpO1xuXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzOiBnZXRFbnRpdHlSZWNvcmRzKCdwb3N0VHlwZScsIHByb3BzLmF0dHJpYnV0ZXMucG9zdFR5cGUsIGxhdGVzdFBvc3RzUXVlcnkpLFxuICAgICAgICB9O1xuICAgIH0pLFxuXSkoTGF0ZXN0UG9zdHNCbG9ja0dyaWQpO1xuXG4vLyBUcnVuY2F0ZSBleGNlcnB0XG5mdW5jdGlvbiB0cnVuY2F0ZShzdHIsIG5vX3dvcmRzKSB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdChcIiBcIikuc3BsaWNlKDAsIG5vX3dvcmRzKS5qb2luKFwiIFwiKTtcbn1cbiIsIi8qKlxuICogQkxPQ0s6IEFGVCBCbG9ja3MgUG9zdCBhbmQgUGFnZSBHcmlkXG4gKi9cblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IExhdGVzdFBvc3RzQmxvY2tHcmlkIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuXG4vLyBDb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuXG4vLyBSZWdpc3RlciBibG9jayBjb250cm9sc1xuY29uc3Qge1xuICAgIHJlZ2lzdGVyQmxvY2tUeXBlLFxufSA9IHdwLmJsb2NrcztcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1sYXRlc3QtcG9zdHMtZ3JpZCcsIHtcbiAgICB0aXRsZTogX18oICdCUyBQb3N0cyBHcmlkJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkIHBvc3RzIGdyaWQgZnJvbSBzZWxlY3RlZCBjYXRlZ29yaWVzLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5OiAnYmxvY2tzcGFyZScsXG4gICAgaWNvbjogaWNvbnMucG9zdGdyaWQsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3Bvc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYmxvZycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdhcmNoaXZlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2FydGljbGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdncmlkJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xhdGVzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdjYXRlZ29yeScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbJ3dpZGUnLCAnZnVsbCcsJ2NlbnRlciddLFxuICAgIH0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgZGVzaWduOlwiYmxvY2tzcGFyZS1ncmlkLWxheW91dC0xXCIsXG4gICAgICAgICAgICBwb3N0c1RvU2hvdzoyLFxuICAgICAgICAgICAgZGlzcGxheVBvc3RDYXRlZ29yeTpmYWxzZSxcbiAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yOmZhbHNlLFxuICAgICAgICAgICAgZGlzcGxheVBvc3REYXRlOmZhbHNlLFxuICAgICAgICAgICAgaW1hZ2VTaXplOlwibWVkaXVtXCIsXG4gICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZToxNlxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGVkaXQ6TGF0ZXN0UG9zdHNCbG9ja0dyaWQsXG4gICAgc2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbn0gKTtcbiIsIlxuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGUxIGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTIgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMi5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlMyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0zLnBuZ1wiO1xuaW1wb3J0IEltYWdlRGVzaWduU3R5bGU0IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXNlcGFyYXRvci1jb250cm9sL2ltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTQucG5nXCI7XG5pbXBvcnQgSW1hZ2VEZXNpZ25TdHlsZTUgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9kZXNpZ24tc2VwYXJhdG9yLWNvbnRyb2wvaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNS5wbmdcIjtcbmltcG9ydCBJbWFnZURlc2lnblN0eWxlNiBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbC9pbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC02LnBuZ1wiO1xuXG5pbXBvcnQgRGVzaWduUGFuZWxCb2R5IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvZGVzaWduLXBhbmVsLWJvZHlcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcblxuY29uc3QgeyBhZGRGaWx0ZXIsIGFwcGx5RmlsdGVycyB9ID0gd3AuaG9va3M7XG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFF1ZXJ5Q29udHJvbHMsXG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCxcblxuXG5cbn0gPSB3cC5jb21wb25lbnRzO1xuXG5jb25zdCB7YWRkUXVlcnlBcmdzfSA9IHdwLnVybDtcblxuY29uc3Qge2FwaUZldGNofSA9IHdwO1xuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7Y2F0ZWdvcmllc0xpc3Q6IFtdfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnN0aWxsTW91bnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZmV0Y2hSZXF1ZXN0ID0gYXBpRmV0Y2goe1xuICAgICAgICAgICAgcGF0aDogYWRkUXVlcnlBcmdzKCcvd3AvdjIvY2F0ZWdvcmllcycsIHtwZXJfcGFnZTogLTF9KVxuICAgICAgICB9KS50aGVuKFxuICAgICAgICAgICAgKGNhdGVnb3JpZXNMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RpbGxNb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2NhdGVnb3JpZXNMaXN0fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0aWxsTW91bnRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtjYXRlZ29yaWVzTGlzdDogW119KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMuc3RpbGxNb3VudGVkID0gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBpbWFnZVNpemVTZWxlY3QoKSB7XG4gICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gd3AuZGF0YS5zZWxlY3QoICdjb3JlL2VkaXRvcicgKS5nZXRFZGl0b3JTZXR0aW5ncygpO1xuXG4gICAgICAgIHJldHVybiBjb21wYWN0KCBtYXAoIGdldFNldHRpbmdzLmltYWdlU2l6ZXMsICh7IG5hbWUsIHNsdWcgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2x1ZyxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RUaXRsZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdEV4Y2VycHQsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RMaW5rLFxuICAgICAgICAgICAgICAgIGV4Y2VycHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgcmVhZE1vcmVUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2lnbj0nYmxvY2tzcGFyZS1saXN0LWxheW91dC0xJyxcbiAgICAgICAgICAgICAgICBwb3N0c1RvU2hvdyxcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgZW5hYmxlQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplLFxuICAgICAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgICAgIG9yZGVyQnksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICBnZW5lcmFsQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cbiAgICAgICAgY29uc3Qge2NhdGVnb3JpZXNMaXN0fSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGl0bGVjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3Bvc3RUaXRsZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZUxpbmtjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2xpbmtDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VHZW5lcmFsY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtnZW5lcmFsQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG5cblxuICAgICAgICBjb25zdCBpbWFnZVNpemVPcHRpb25zID0gdGhpcy5pbWFnZVNpemVTZWxlY3QoKTtcblxuXG4gICAgICAgIGNvbnN0IGltYWdlU2l6ZVZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgaW1hZ2VTaXplT3B0aW9ucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGltYWdlU2l6ZU9wdGlvbnNbaV0udmFsdWUgPT09IGltYWdlU2l6ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ2Z1bGwnO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuICAgICAgICBjb25zdCBjb250ZW50T2Rlck9wdGlvbiA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItMScsIGxhYmVsOiBfXygnRGVmYXVsdCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY29udGVudC1vcmRlci0yJywgbGFiZWw6IF9fKCdNZXRhIOKGkiBUaXRsZSDihpIgQ2F0ZWdvcnkg4oaSIENvbnRlbnQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2NvbnRlbnQtb3JkZXItMycsIGxhYmVsOiBfXygnVGl0bGUg4oaSIE1ldGEg4oaSIENhdGVnb3J5IOKGkiBDb250ZW50JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdjb250ZW50LW9yZGVyLTQnLCBsYWJlbDogX18oJ1RpdGxlIOKGkiBDYXRlZ29yeSDihpIgTWV0YSDihpIgQ29udGVudCcsICdibG9ja3NwYXJlJyl9LFxuXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxEZXNpZ25QYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9eyBkZXNpZ24gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17IGFwcGx5RmlsdGVycyggJ2Jsb2Nrc3BhcmUuY3RhLmVkaXQubGF5b3V0cycsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDEnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDInLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTInLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1N0eWxlIDMnLCAnYmxvY2tzcGFyZScgKSwgdmFsdWU6ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTMnLCBpbWFnZTogSW1hZ2VEZXNpZ25TdHlsZTMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgZGVzaWduID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzaWduIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9EZXNpZ25QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpc1Bvc3QgPyBudWxsIDogJ2Jsb2Nrc3BhcmUtaGlkZS1xdWVyeSd9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnVGl0bGUgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwb3N0VGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUaXRsZWNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVGl0bGUgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZSBGb250IFNpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Bvc3RUaXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwb3N0VGl0bGVGb250U2l6ZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezYwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG5cbiAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IENhdGVnb3J5JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2Rpc3BsYXlQb3N0Q2F0ZWdvcnl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdENhdGVnb3J5OiAhZGlzcGxheVBvc3RDYXRlZ29yeX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge2lzUG9zdCAmJlxuICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdEaXNwbGF5IEF1dGhvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdEF1dGhvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2Rpc3BsYXlQb3N0QXV0aG9yOiAhZGlzcGxheVBvc3RBdXRob3J9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7aXNQb3N0ICYmXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgRGF0ZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5UG9zdERhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtkaXNwbGF5UG9zdERhdGU6ICFkaXNwbGF5UG9zdERhdGV9KX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7ZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTYnICYmIGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC01JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNCcgJiZcblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUxpbmtjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnTGluayBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZW5lcmFsQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VHZW5lcmFsY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0dlbmVyYWwgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQb3N0IFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQb3N0ID8gbnVsbCA6ICdibG9ja3NwYXJlLWhpZGUtcXVlcnknfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5Q29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ue29yZGVyLCBvcmRlckJ5fX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzTGlzdD17Y2F0ZWdvcmllc0xpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDYXRlZ29yeUlkPXtjYXRlZ29yaWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2F0ZWdvcnlDaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7Y2F0ZWdvcmllczogJycgIT09IHZhbHVlID8gdmFsdWUgOiB1bmRlZmluZWR9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk9yZGVyQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe29yZGVyOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uT3JkZXJCeUNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtvcmRlckJ5OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBcImltYWdlcy9ibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTEucG5nXCI7IiwiZXhwb3J0IGRlZmF1bHQgXCJpbWFnZXMvYmxvY2tzcGFyZS1saXN0LWxheW91dC0yLnBuZ1wiOyIsImV4cG9ydCBkZWZhdWx0IFwiaW1hZ2VzL2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtMy5wbmdcIjsiLCJcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSAnbG9kYXNoL2lzVW5kZWZpbmVkJztcbmltcG9ydCBwaWNrQnkgZnJvbSAnbG9kYXNoL3BpY2tCeSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5pbXBvcnQgYmxvZ1Bvc3RTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9ibG9nLXBvc3Qtc3R5bGVzXCI7XG5cbmNvbnN0IHtjb21wb3NlfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7ZGVjb2RlRW50aXRpZXN9ID0gd3AuaHRtbEVudGl0aWVzO1xuXG5jb25zdCB7XG4gICAgd2l0aFNlbGVjdCxcbn0gPSB3cC5kYXRhO1xuXG5jb25zdCB7XG4gICAgUGxhY2Vob2xkZXIsXG4gICAgU3Bpbm5lcixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmNsYXNzIExhdGVzdFBvc3RzQmxvY2tMaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgcG9zdFR5cGUsXG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RUaXRsZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdEV4Y2VycHQsXG4gICAgICAgICAgICAgICAgZGlzcGxheVBvc3RMaW5rLFxuICAgICAgICAgICAgICAgIGV4Y2VycHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgcmVhZE1vcmVUZXh0LFxuICAgICAgICAgICAgICAgIGRlc2lnbixcbiAgICAgICAgICAgICAgICBwb3N0c1RvU2hvdyxcbiAgICAgICAgICAgICAgICBzZWN0aW9uVGFnLFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgaW1hZ2VTaXplID0gJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29udGVudE9yZGVyLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHBvc3RUaXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGxpbmtDb2xvcixcbiAgICAgICAgICAgICAgICBnZW5lcmFsQ29sb3IsXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBwb3N0c1xuICAgICAgICBjb25zdCBoYXNQb3N0cyA9IEFycmF5LmlzQXJyYXkobGF0ZXN0UG9zdHMpICYmIGxhdGVzdFBvc3RzLmxlbmd0aDtcblxuXG4gICAgICAgIC8vIENoZWNrIHRoZSBwb3N0IHR5cGVcbiAgICAgICAgY29uc3QgaXNQb3N0ID0gcG9zdFR5cGUgPT09ICdwb3N0JztcblxuICAgICAgICBpZiAoIWhhc1Bvc3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiYWRtaW4tcG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0JTIEJsb2NrcyBQb3N0cyBMaXN0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgeyFBcnJheS5pc0FycmF5KGxhdGVzdFBvc3RzKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXIvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX18oJ05vIHBvc3RzIGZvdW5kLicsICdibG9ja3NwYXJlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9QbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92aW5nIHBvc3RzIGZyb20gZGlzcGxheSBzaG91bGQgYmUgaW5zdGFudC5cbiAgICAgICAgY29uc3QgZGlzcGxheVBvc3RzID0gbGF0ZXN0UG9zdHMubGVuZ3RoID4gcG9zdHNUb1Nob3cgP1xuICAgICAgICAgICAgbGF0ZXN0UG9zdHMuc2xpY2UoMCwgcG9zdHNUb1Nob3cpIDpcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzO1xuXG4gICAgICAgIC8vIEFkZCB0b29sYmFyIGNvbnRyb2xzIHRvIGNoYW5nZSBsYXlvdXRcblxuXG4gICAgICAgIC8vIEdldCB0aGUgc2VjdGlvbiB0YWdcbiAgICAgICAgY29uc3QgU2VjdGlvblRhZyA9IHNlY3Rpb25UYWcgPyBzZWN0aW9uVGFnIDogXCJzZWN0aW9uXCI7XG5cblxuICAgICAgICAvLyBHZXQgdGhlIHNlY3Rpb24gc3R5bGVcbiAgICAgICAgbGV0ICBpdGVtU3R5bGUgPSB7fTtcbiAgICAgICAgaWYoZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTYnICYmIGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC01JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNCcpIHtcbiAgICAgICAgICAgIGl0ZW1TdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5ibG9nUG9zdFN0eWxlcyhhdHRyaWJ1dGVzKSxcblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gR2V0IHRoZSBwb3N0IHRpdGxlIHRhZ1xuICAgICAgICBjb25zdCBQb3N0VGFnID0gXCJoNFwiO1xuXG5cbiAgICAgICAgY29uc3QgZWRpdENvbnRlbnRQYWRkaW5nID0ge1xuICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGxpbmtjb2xvciA9IHtcbiAgICAgICAgICAgIGNvbG9yOmxpbmtDb2xvciA/IGxpbmtDb2xvciA6XCIjMTk3N2FjXCJcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZW5lcmFsY29sb3IgPXtcbiAgICAgICAgICAgIGNvbG9yOmdlbmVyYWxDb2xvcj9nZW5lcmFsQ29sb3I6JyMwMDAnXG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8U2VjdGlvblRhZ1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXBvc3Qtd3JhcCdcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2VkaXRDb250ZW50UGFkZGluZ30+XG5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWxhdGVzdC1wb3N0LXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1pcy1saXN0JyxcbiAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RzLm1hcCgocG9zdCwgaSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZWRJbWFnZVNyYyA9ICggKCBwb3N0LmZlYXR1cmVkX2ltYWdlX3VybHMgJiYgcG9zdC5mZWF0dXJlZF9pbWFnZV91cmxzWyBpbWFnZVNpemUgfHwgJ2xhcmdlJyBdICkgfHwgW10gKVsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVkSW1hZ2UgPSBmZWF0dXJlZEltYWdlU3JjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzc05hbWU9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXBvc3Qtc2luZ2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc2lnbiAhPSAnYmxvY2tzcGFyZS1saXN0LWxheW91dC02JyAmJiBkZXNpZ24gIT0gJ2Jsb2Nrc3BhcmUtbGlzdC1sYXlvdXQtNScgJiYgZGVzaWduICE9ICdibG9ja3NwYXJlLWxpc3QtbGF5b3V0LTQnKT8naGFzLWJhY2tncm91bmQnOicnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpdGVtU3R5bGV9PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVkSW1hZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtaW1nJyA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+PGltZyBzcmM9eyBmZWF0dXJlZEltYWdlIH0gYWx0PXsgX18oICdmZWF0dXJlZCcsICdibG9ja3NwYXJlJyApIH0gLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcG9zdC1jb250ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRPcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSA+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RDYXRlZ29yeSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXBvc3QtY2F0ZWdvcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e19faHRtbDogcG9zdC5jYXRlZ29yeV9pbmZvLnJlcGxhY2UoL2hyZWY9WydcIl0uKj9bJ1wiXS9nLCAnJyl9fSBzdHlsZT17bGlua2NvbG9yfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdFRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvc3RUYWcgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtdGl0bGVcIiBzdHlsZT17e2ZvbnRTaXplOnBvc3RUaXRsZUZvbnRTaXplKydweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnBvc3RUaXRsZUNvbG9yP3Bvc3RUaXRsZUNvbG9yOicjNDA0MDQwJyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fXRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e2RlY29kZUVudGl0aWVzKHBvc3QudGl0bGUucmVuZGVyZWQudHJpbSgpKSB8fCBfXygnKFVudGl0bGVkKScsICdibG9ja3NwYXJlJyl9PC9hPjwvUG9zdFRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Bvc3QgJiYgKGRpc3BsYXlQb3N0QXV0aG9yIHx8IGRpc3BsYXlQb3N0RGF0ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWJ5bGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVBvc3RBdXRob3IgJiYgcG9zdC5hdXRob3JfaW5mby5kaXNwbGF5X25hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWJsb2NrLXBvc3QtZ3JpZC1hdXRob3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHN0eWxlPXtsaW5rY29sb3J9IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGV4dC1saW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Bvc3QuYXV0aG9yX2luZm8uYXV0aG9yX2xpbmt9Pntwb3N0LmF1dGhvcl9pbmZvLmRpc3BsYXlfbmFtZX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0RGF0ZSAmJiBwb3N0LmRhdGVfZ210ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aW1lIGRhdGVUaW1lPXttb21lbnQocG9zdC5kYXRlX2dtdCkudXRjKCkuZm9ybWF0KCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLWRhdGUnfSBzdHlsZT17Z2VuZXJhbGNvbG9yfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQocG9zdC5kYXRlX2dtdCkubG9jYWwoKS5mb3JtYXQoJ01NTU0gREQsIFknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RpbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoZGlzcGxheVBvc3RFeGNlcnB0IHx8IGRpc3BsYXlQb3N0TGluaykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1ibG9jay1wb3N0LWdyaWQtZXhjZXJwdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5UG9zdEV4Y2VycHQgJiYgcG9zdC5leGNlcnB0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Z2VuZXJhbGNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IHRydW5jYXRlKHBvc3QuZXhjZXJwdC5yZW5kZXJlZCwgZXhjZXJwdExlbmd0aCl9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlQb3N0TGluayAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxhIHN0eWxlPXtsaW5rY29sb3J9IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmxvY2stcG9zdC1ncmlkLW1vcmUtbGluayBibG9ja3NwYXJlLXRleHQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17cG9zdC5saW5rfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cImJvb2ttYXJrXCI+e3JlYWRNb3JlVGV4dH08L2E+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU2VjdGlvblRhZz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIHByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3Qge2dldEVudGl0eVJlY29yZHN9ID0gc2VsZWN0KCdjb3JlJyk7XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHNRdWVyeSA9IHBpY2tCeSh7XG4gICAgICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICBvcmRlcmJ5OiBwcm9wcy5hdHRyaWJ1dGVzLm9yZGVyQnksXG4gICAgICAgICAgICBwZXJfcGFnZTogcHJvcHMuYXR0cmlidXRlcy5wb3N0c1RvU2hvdyxcbiAgICAgICAgICAgIG9mZnNldDogcHJvcHMuYXR0cmlidXRlcy5vZmZzZXQsXG4gICAgICAgIH0sICh2YWx1ZSkgPT4gIWlzVW5kZWZpbmVkKHZhbHVlKSk7XG5cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGdldEVudGl0eVJlY29yZHMoJ3Bvc3RUeXBlJywgcHJvcHMuYXR0cmlidXRlcy5wb3N0VHlwZSwgbGF0ZXN0UG9zdHNRdWVyeSksXG4gICAgICAgIH07XG4gICAgfSksXG5dKShMYXRlc3RQb3N0c0Jsb2NrTGlzdCk7XG5cbi8vIFRydW5jYXRlIGV4Y2VycHRcbmZ1bmN0aW9uIHRydW5jYXRlKHN0ciwgbm9fd29yZHMpIHtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiIFwiKS5zcGxpY2UoMCwgbm9fd29yZHMpLmpvaW4oXCIgXCIpO1xufVxuIiwiXG5pbXBvcnQgTGF0ZXN0UG9zdHNCbG9ja0xpc3QgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbi8vIENvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5cbi8vIFJlZ2lzdGVyIGJsb2NrIGNvbnRyb2xzXG5jb25zdCB7XG4gICAgcmVnaXN0ZXJCbG9ja1R5cGUsXG59ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciBhbGlnbm1lbnRzXG5jb25zdCBhbGlnbm1lbnRPcHRpb25zID0gWyAnY2VudGVyJywgJ3dpZGUnLCAnZnVsbCcgXTtcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1sYXRlc3QtcG9zdHMtbGlzdCcsIHtcbiAgICB0aXRsZTogX18oICdCUyBQb3N0cyBMaXN0JywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkIHBvc3RzIGxpc3QgZnJvbSBzZWxlY3RlZCBjYXRlZ29yaWVzLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5OiAnYmxvY2tzcGFyZScsXG4gICAgaWNvbjogaWNvbnMucG9zdGxpc3QsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3Bvc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbGlzdCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdibG9nJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2FyY2hpdmUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYXJ0aWNsZScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsYXRlc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY2F0ZWdvcnknLCAnYmxvY2tzcGFyZScpLFxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6e1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgZGVzaWduOlwiYmxvY2tzcGFyZS1saXN0LWxheW91dC0xXCIsXG4gICAgICAgICAgICAgICAgcG9zdHNUb1Nob3c6MyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5UG9zdENhdGVnb3J5OmZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0QXV0aG9yOmZhbHNlLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlQb3N0RGF0ZTpmYWxzZSxcbiAgICAgICAgICAgICAgICBpbWFnZVNpemU6XCJtZWRpdW1cIixcbiAgICAgICAgICAgICAgICBwb3N0VGl0bGVGb250U2l6ZToxNlxuICAgICAgICAgICAgfVxuICAgIH0sXG5cbiAgICBlZGl0OkxhdGVzdFBvc3RzQmxvY2tMaXN0LFxuICAgIHNhdmUoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG59ICk7XG4iLCIvKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcblxuLyoqXG4gKiBMaW5rIG9wdGlvbnMuXG4gKi9cbmNvbnN0IGNhcHRpb25PcHRpb25zID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6ICdkYXJrJyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnRGFyaycsICdibG9ja3NwYXJlJyApLFxuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogJ2xpZ2h0JyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnTGlnaHQnLCAnYmxvY2tzcGFyZScgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdmFsdWU6ICdub25lJyxcbiAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgbGFiZWw6IF9fKCAnTm9uZScsICdibG9ja3NwYXJlJyApLFxuICAgIH0sXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjYXB0aW9uT3B0aW9ucztcbiIsIlxuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgU2VsZWN0Q29udHJvbCwgVG9nZ2xlQ29udHJvbCwgUGFuZWxCb2R5LCBUZXh0Q29udHJvbCB9ID0gd3AuY29tcG9uZW50cztcblxuY2xhc3MgR2FsbGVyeUxpbmtTZXR0aW5ncyBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICAgICAgdGhpcy5zZXROZXdUYWIgPSB0aGlzLnNldE5ld1RhYi5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0TGlua1JlbCA9IHRoaXMuc2V0TGlua1JlbC5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc2V0TGlua1RvID0gdGhpcy5zZXRMaW5rVG8uYmluZCggdGhpcyApO1xuICAgIH1cblxuICAgIHNldExpbmtUbyggdmFsdWUgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyggeyBsaW5rVG86IHZhbHVlIH0gKTtcbiAgICB9XG5cbiAgICBzZXRMaW5rUmVsKCB2YWx1ZSApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IHJlbDogdmFsdWUgfSApO1xuICAgIH1cblxuICAgIHNldE5ld1RhYiggdmFsdWUgKSB7XG4gICAgICAgIGNvbnN0IHsgcmVsIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHZhbHVlID8gJ19ibGFuaycgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgbGV0IHVwZGF0ZWRSZWwgPSByZWw7XG4gICAgICAgIGlmICggdGFyZ2V0ICYmICEgcmVsICkge1xuICAgICAgICAgICAgdXBkYXRlZFJlbCA9ICdub3JlZmVycmVyIG5vb3BlbmVyJztcbiAgICAgICAgfSBlbHNlIGlmICggISB0YXJnZXQgJiYgcmVsID09PSAnbm9yZWZlcnJlciBub29wZW5lcicgKSB7XG4gICAgICAgICAgICB1cGRhdGVkUmVsID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICByZWw6IHVwZGF0ZWRSZWwsXG4gICAgICAgIH0gKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBsaWdodGJveCxcbiAgICAgICAgICAgIGxpbmtUbyxcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIHJlbCxcbiAgICAgICAgfSA9IGF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgbGlua09wdGlvbnMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnbm9uZScsIGxhYmVsOiBfXyggJ05vbmUnLCAnYmxvY2tzcGFyZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ21lZGlhJywgbGFiZWw6IF9fKCAnTWVkaWEgRmlsZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYXR0YWNobWVudCcsIGxhYmVsOiBfXyggJ0F0dGFjaG1lbnQgUGFnZScsICdibG9ja3NwYXJlJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCAnQ3VzdG9tIFVSTCcsICdibG9ja3NwYXJlJyApIH0sXG5cbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsgISBsaWdodGJveCAmJlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0xpbmsgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdMaW5rIFRvJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBsaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17IGxpbmtPcHRpb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgdGhpcy5zZXRMaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7IGxpbmtUbyAhPT0gJ25vbmUnICYmXG4gICAgICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ09wZW4gaW4gTmV3IFRhYicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHRoaXMuc2V0TmV3VGFiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgdGFyZ2V0ID09PSAnX2JsYW5rJyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHJhbnNsYXRvcnM6IGh0bWwgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0d28gcGFnZXMgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTGluayBSZWwnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyByZWwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgcmVsOiB2YWx1ZSB9ICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHYWxsZXJ5TGlua1NldHRpbmdzO1xuIiwiaW1wb3J0IGNhcHRpb25PcHRpb25zIGZyb20gJy4vLi4vLi4vdXRpbHMvZ2FsbGVyeS9jYXB0aW9uLW9wdGlvbnMnO1xuaW1wb3J0IEdhbGxlcnlMaW5rU2V0dGluZ3MgZnJvbSBcIi4vLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWxpbmstc2V0dGluZ3NcIjtcbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEluc3BlY3RvckNvbnRyb2xzIH0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgUGFuZWxCb2R5LCBSYW5nZUNvbnRyb2wsIFRvZ2dsZUNvbnRyb2wsIFNlbGVjdENvbnRyb2wgfSA9IHdwLmNvbXBvbmVudHM7XG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgICAgIHRoaXMuc2V0Q2FwdGlvblN0eWxlVG8gPSB0aGlzLnNldENhcHRpb25TdHlsZVRvLmJpbmQoIHRoaXMgKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmd1dHRlciA8PSAwICkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7XG4gICAgICAgICAgICAgICAgcmFkaXVzOiAwLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHNldENhcHRpb25TdHlsZVRvKCB2YWx1ZSApIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGNhcHRpb25TdHlsZTogdmFsdWUgfSApO1xuICAgIH1cblxuICAgIGdldENhcHRpb25zSGVscCggY2hlY2tlZCApIHtcbiAgICAgICAgcmV0dXJuIGNoZWNrZWQgPyBfXyggJ1Nob3dpbmcgY2FwdGlvbnMgZm9yIGVhY2ggbWVkaWEgaXRlbS4nLCAnYmxvY2tzcGFyZScgKSA6IF9fKCAnVG9nZ2xlIHRvIHNob3cgbWVkaWEgY2FwdGlvbnMuJywgJ2Jsb2Nrc3BhcmUnICk7XG4gICAgfVxuXG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNhcHRpb25zLFxuICAgICAgICAgICAgY2FwdGlvblN0eWxlLFxuICAgICAgICAgICAgZ3V0dGVyLFxuICAgICAgICAgICAgZ3JpZFNpemVcblxuXG4gICAgICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblNpemVzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnc21sJyxcbiAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogdmlzdWFsIHN0eWxlIG9wdGlvbiAqL1xuICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnbWVkJyxcbiAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogdmlzdWFsIHN0eWxlIG9wdGlvbiAqL1xuICAgICAgICAgICAgICAgIGxhYmVsOiBfXyggJ01lZGl1bScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2xyZycsXG4gICAgICAgICAgICAgICAgLyogdHJhbnNsYXRvcnM6IHZpc3VhbCBzdHlsZSBvcHRpb24gKi9cbiAgICAgICAgICAgICAgICBsYWJlbDogX18oICdMYXJnZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXsgX18oICdNYXNvbnJ5IFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnICkgfT5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0d1dHRlcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3V0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtndXR0ZXI6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezUwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17NX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnNwZWN0b3I7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBmaWx0ZXIgZnJvbSAnbG9kYXNoL2ZpbHRlcic7XG5pbXBvcnQgKiBhcyBoZWxwZXIgZnJvbSBcIi4vLi4vLi4vdXRpbHMvaGVscGVyL21lZGlhLWhlbHBlci5qc1wiO1xuaW1wb3J0IEdhbGxlcnlJbWFnZSBmcm9tICBcIi4uLy4uL3V0aWxzL2dhbGxlcnkvZ2FsbGVyeS1pbWFnZVwiO1xuaW1wb3J0IEdhbGxlcnlEcm9wWm9uZSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2FsbGVyeS9nYWxsZXJ5LWRyb3B6b25lXCI7XG5pbXBvcnQgR2FsbGVyeVBsYWNlaG9sZGVyIGZyb20gXCIuLi8uLi91dGlscy9nYWxsZXJ5L2dhbGxlcnktcGxhY2Vob2xkZXJcIjtcbmltcG9ydCBNYXNvbnJ5IGZyb20gJ3JlYWN0LW1hc29ucnktY29tcG9uZW50JztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vaW5zcGVjdG9yXCI7XG5cblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbmNvbnN0IHtDb21wb25lbnQsRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtjb21wb3NlfSA9d3AuY29tcG9zZTtcbmNvbnN0IHsgd2l0aFNlbGVjdCB9ID0gd3AuZGF0YTtcbmNvbnN0IHsgd2l0aE5vdGljZXMsVG9vbGJhcixJY29uQnV0dG9uIH0gPSB3cC5jb21wb25lbnRzO1xuXG5jb25zdCB7XG4gICAgQmxvY2tDb250cm9scyxcbiAgICBNZWRpYVVwbG9hZCxcbiAgICBNZWRpYVVwbG9hZENoZWNrLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNvbnN0IG1hc29ucnlPcHRpb25zID0ge1xuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogMCxcbiAgICBwZXJjZW50UG9zaXRpb246IHRydWUsXG59O1xuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICAgICAgdGhpcy5vblJlbW92ZUltYWdlID0gdGhpcy5vblJlbW92ZUltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdEltYWdlID0gdGhpcy5vblNlbGVjdEltYWdlLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVGb3J3YXJkID0gdGhpcy5vbk1vdmVGb3J3YXJkLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbk1vdmVCYWNrd2FyZCA9IHRoaXMub25Nb3ZlQmFja3dhcmQuYmluZCggdGhpcyApO1xuICAgICAgICB0aGlzLnNldEltYWdlQXR0cmlidXRlcyA9IHRoaXMuc2V0SW1hZ2VBdHRyaWJ1dGVzLmJpbmQoIHRoaXMgKTtcbiAgICAgICAgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgPSB0aGlzLm9uRWRpdFNlbGVjdEltYWdlcy5iaW5kKCB0aGlzICk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBudWxsLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmdyaWRTaXplID09PSAneGxyZycgKSB7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBncmlkU2l6ZTogJ2xyZycsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSggcHJldlByb3BzICkge1xuICAgICAgICAvLyBEZXNlbGVjdCBpbWFnZXMgd2hlbiBkZXNlbGVjdGluZyB0aGUgYmxvY2suXG4gICAgICAgIGlmICggISB0aGlzLnByb3BzLmlzU2VsZWN0ZWQgJiYgcHJldlByb3BzLmlzU2VsZWN0ZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBjYXB0aW9uU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RJbWFnZSggaW5kZXggKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuc3RhdGUuc2VsZWN0ZWRJbWFnZSAhPT0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBpbmRleCxcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlKCBvbGRJbmRleCwgbmV3SW5kZXggKSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFsgLi4udGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcyBdO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBuZXdJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgb2xkSW5kZXggXSApO1xuICAgICAgICBpbWFnZXMuc3BsaWNlKCBvbGRJbmRleCwgMSwgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlc1sgbmV3SW5kZXggXSApO1xuICAgICAgICB0aGlzLnNldFN0YXRlKCB7IHNlbGVjdGVkSW1hZ2U6IG5ld0luZGV4IH0gKTtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKCB7IGltYWdlcyB9ICk7XG4gICAgfVxuICAgIG9uTW92ZUZvcndhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcy5sZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlKCBvbGRJbmRleCwgb2xkSW5kZXggKyAxICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25Nb3ZlQmFja3dhcmQoIG9sZEluZGV4ICkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCBvbGRJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uTW92ZSggb2xkSW5kZXgsIG9sZEluZGV4IC0gMSApO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBvblJlbW92ZUltYWdlKCBpbmRleCApIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IGZpbHRlciggdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmltYWdlcywgKCBfaW1nLCBpICkgPT4gaW5kZXggIT09IGkgKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoIHsgc2VsZWN0ZWRJbWFnZTogbnVsbCB9ICk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VBdHRyaWJ1dGVzKCBpbmRleCwgYXR0cmlidXRlcyApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGltYWdlcyB9LCBzZXRBdHRyaWJ1dGVzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoICEgaW1hZ2VzWyBpbmRleCBdICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZXMoIHtcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggMCwgaW5kZXggKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmltYWdlc1sgaW5kZXggXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmltYWdlcy5zbGljZSggaW5kZXggKyAxICksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgb25FZGl0U2VsZWN0SW1hZ2VzKCBpbWFnZXMgKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcygge1xuICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4gaGVscGVyLnBpY2tSZWxldmFudE1lZGlhRmlsZXMoIGltYWdlLCB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW1hZ2VzICkgKSxcbiAgICAgICAgfSApO1xuICAgIH1cblxuXG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBub3RpY2VVSSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGNhcHRpb25zLFxuICAgICAgICAgICAgZ3JpZFNpemUsXG4gICAgICAgICAgICBndXR0ZXIsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICBsaW5rVG8sXG4gICAgICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICAgIGNvbnN0IGhhc0ltYWdlcyA9ICEhIGltYWdlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgZHJvcFpvbmUgPSAoXG4gICAgICAgICAgICA8R2FsbGVyeURyb3Bab25lXG4gICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG5cblxuXG4gICAgICAgIGNvbnN0IG1hc29ucnlDbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgICAgIGBoYXMtZ3JpZC0keyBncmlkU2l6ZSB9YCwge1xuICAgICAgICAgICAgICAgIFsgYGhhcy1ndXR0ZXItJHsgZ3V0dGVyIH1gIF06IGd1dHRlciA+IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICApO1xuXG4gICAgICAgIGlmICggISBoYXNJbWFnZXMgKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxHYWxsZXJ5UGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ01hc29ucnknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGljb249J2xpb25rJ1xuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIHsgaGFzSW1hZ2VzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVkaWFVcGxvYWRDaGVjaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZWRpYVVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRUeXBlcz17IGhlbHBlci5BTExPV0VEX0dBTExFUllfTUVESUFfVFlQRVMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgaW1hZ2VzLm1hcCggKCBpbWcgKSA9PiBpbWcuaWQgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsgKCB7IG9wZW4gfSApID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbXBvbmVudHMtdG9vbGJhcl9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnRWRpdCBnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17IG9wZW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZWRpYVVwbG9hZENoZWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLW1hc29ucnktd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgIHsgZHJvcFpvbmUgfVxuICAgICAgICAgICAgICAgICAgICA8TWFzb25yeVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFR5cGU9eyAndWwnIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IG1hc29ucnlDbGFzc2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9eyBtYXNvbnJ5T3B0aW9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlSW1hZ2VzTG9hZGVkPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlT25FYWNoSW1hZ2VMb2FkPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsgaW1hZ2VzLm1hcCggKCBpbWcsIGluZGV4ICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cmFuc2xhdG9yczogJTEkZCBpcyB0aGUgb3JkZXIgbnVtYmVyIG9mIHRoZSBpbWFnZSwgJTIkZCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGltYWdlcyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fKCAnaW1hZ2UgJTEkZCBvZiAlMiRkIGluIGdhbGxlcnknLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGluZGV4ICsgMSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1pdGVtXCIga2V5PXsgaW1nLmlkIHx8IGltZy51cmwgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXsgaW1nLnVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9eyBpbWcuYWx0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsgaW1nLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0xpbms9eyBpbWcuaW1nTGluayB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVG89eyBsaW5rVG8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXJzdEl0ZW09eyBpbmRleCA9PT0gMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RJdGVtPXsgKCBpbmRleCArIDEgKSA9PT0gaW1hZ2VzLmxlbmd0aCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXsgaXNTZWxlY3RlZCAmJiB0aGlzLnN0YXRlLnNlbGVjdGVkSW1hZ2UgPT09IGluZGV4IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vblNlbGVjdEltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW92ZUJhY2t3YXJkPXsgdGhpcy5vbk1vdmVCYWNrd2FyZCggaW5kZXggKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdmVGb3J3YXJkPXsgdGhpcy5vbk1vdmVGb3J3YXJkKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlPXsgdGhpcy5vblJlbW92ZUltYWdlKCBpbmRleCApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXM9eyAoIGF0dHJzICkgPT4gdGhpcy5zZXRJbWFnZUF0dHJpYnV0ZXMoIGluZGV4LCBhdHRycyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249eyBpbWcuY2FwdGlvbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXsgYXJpYUxhYmVsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25zPXsgY2FwdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNDYXB0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0gYmxvY2tzcGFyZS1nYWxsZXJ5LXVwbG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1hZGQtbW9yZS1zbGlkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkQ2hlY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lZGlhVXBsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXsgdGhpcy5vbkVkaXRTZWxlY3RJbWFnZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkVHlwZXM9eyBoZWxwZXIuQUxMT1dFRF9HQUxMRVJZX01FRElBX1RZUEVTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGltYWdlcy5tYXAoICggaW1nICkgPT4gaW1nLmlkICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyAoIHsgb3BlbiB9ICkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZnQtY3RhLWluc3BlY3Rvci1tZWRpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFZGl0IGltYWdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGx1cy1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge19fKCdBZGQgSW1hZ2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZWRpYVVwbG9hZENoZWNrPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9NYXNvbnJ5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cblxuXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZSggW1xuICAgIHdpdGhTZWxlY3QoICggc2VsZWN0ICkgPT4gKCB7XG4gICAgICAgIGVkaXRvclNpZGViYXJPcGVuZWQ6IHNlbGVjdCggJ2NvcmUvZWRpdC1wb3N0JyApLmlzRWRpdG9yU2lkZWJhck9wZW5lZCgpLFxuICAgICAgICBwbHVnaW5TaWRlYmFyT3BlbmVkOiBzZWxlY3QoICdjb3JlL2VkaXQtcG9zdCcgKS5pc1BsdWdpblNpZGViYXJPcGVuZWQoKSxcbiAgICAgICAgcHVibGlzaFNpZGViYXJPcGVuZWQ6IHNlbGVjdCggJ2NvcmUvZWRpdC1wb3N0JyApLmlzUHVibGlzaFNpZGViYXJPcGVuZWQoKSxcbiAgICAgICAgd2lkZUNvbnRyb2xzRW5hYmxlZDogc2VsZWN0KCAnY29yZS9lZGl0b3InICkuZ2V0RWRpdG9yU2V0dGluZ3MoKS5hbGlnbldpZGUsXG4gICAgfSApICksXG4gICAgd2l0aE5vdGljZXMsXG5dICkoIEVkaXQgKTtcbiIsIi8qKlxuICogRXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5cblxuY29uc3QgeyBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHNhdmUgPSAoIHsgYXR0cmlidXRlcywgY2xhc3NOYW1lIH0gKSA9PiB7XG4gICAgY29uc3Qge1xuXG4gICAgICAgIGNhcHRpb25zLFxuICAgICAgICBncmlkU2l6ZSxcbiAgICAgICAgZ3V0dGVyLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIGxpbmtUbyxcbiAgICAgICAgbGlnaHRib3gsXG4gICAgICAgIHJlbCxcbiAgICAgICAgdGFyZ2V0LFxuICAgIH0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgY29uc3QgaW5uZXJDbGFzc2VzID0gY2xhc3NuYW1lcyhcbiAgICAgICAgIHtcbiAgICAgICAgICAgICdoYXMtZ3V0dGVyJzogZ3V0dGVyID4gMCxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBtYXNvbnJ5Q2xhc3NlcyA9IGNsYXNzbmFtZXMoXG4gICAgICAgIGBoYXMtZ3JpZC0ke2dyaWRTaXplfWAsIHtcbiAgICAgICAgICAgIFsgYGhhcy1ndXR0ZXItJHsgZ3V0dGVyIH1gIF06IGd1dHRlciA+IDBcbiAgICAgICAgfVxuICAgICk7XG5cblxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbWFzb25yeS13cmFwcGVyJyA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGlubmVyQ2xhc3NlcyB9ID5cbiAgICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgbWFzb25yeUNsYXNzZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyBpbWFnZXMubWFwKCAoIGltYWdlICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWY7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoIGxpbmtUbyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZWRpYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBpbWFnZS51cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2F0dGFjaG1lbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UubGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW1hZ2UuaW1nTGluayApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaW1hZ2UuaW1nTGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gPGltZyBzcmM9eyBpbWFnZS51cmwgfSBhbHQ9eyBpbWFnZS5hbHQgfSBkYXRhLWlkPXsgaW1hZ2UuaWQgfSBkYXRhLWltZ2xpbms9eyBpbWFnZS5pbWdMaW5rIH0gZGF0YS1saW5rPXsgaW1hZ2UubGluayB9IGNsYXNzTmFtZT17IGltYWdlLmlkID8gYHdwLWltYWdlLSR7IGltYWdlLmlkIH1gIDogbnVsbCB9IC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9eyBpbWFnZS5pZCB8fCBpbWFnZS51cmwgfSBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZ2FsbGVyeS1maWd1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaHJlZiA/IDxhIGhyZWY9eyBocmVmIH0gdGFyZ2V0PXsgdGFyZ2V0IH0gcmVsPXsgcmVsIH0+eyBpbWcgfTwvYT4gOiBpbWcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYXB0aW9ucyAmJiBpbWFnZS5jYXB0aW9uICYmIGltYWdlLmNhcHRpb24ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnQgdGFnTmFtZT1cImZpZ2NhcHRpb25cIiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWdhbGxlcnktY2FwdGlvblwiIHZhbHVlPXsgaW1hZ2UuY2FwdGlvbiB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gKSB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2F2ZTtcbiIsIlxuY29uc3QgQnNHYWxsZXJ5QXR0cmlidXRlcyA9IHtcbiAgICBpbWFnZXM6IHtcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgIHNvdXJjZTogJ3F1ZXJ5JyxcbiAgICAgICAgc2VsZWN0b3I6ICcuYmxvY2tzcGFyZS1nYWxsZXJ5LWl0ZW0nLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnc3JjJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5rOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1saW5rJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWdMaW5rOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1pbWdsaW5rJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhbHQ6IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnaW1nJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdhbHQnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiAnYXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogJ2ltZycsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGF0YS1pZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FwdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICAgICAgc291cmNlOiAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnZmlnY2FwdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgbGlua1RvOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnbm9uZScsXG4gICAgfSxcbiAgICB0YXJnZXQ6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSxcbiAgICByZWw6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHQ6ICcnLFxuICAgIH0sXG4gICAgYWxpZ246IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfSxcbiAgICBndXR0ZXI6IHtcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHQ6IDE1LFxuICAgIH0sXG5cbiAgICBjYXB0aW9uczoge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gICAgY2FwdGlvblN0eWxlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnZGFyaycsXG4gICAgfSxcbiAgICBjYXB0aW9uQ29sb3I6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQnNHYWxsZXJ5QXR0cmlidXRlcztcbiIsImltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnXG5pbXBvcnQgc2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSc7XG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmltcG9ydCBCc0dhbGxlcnlBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2dhbGxlcnkvYXR0cmlidXRlcyc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IG5hbWUsIGNhdGVnb3J5IH0gPSBtZXRhZGF0YTtcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3QgYXR0cmlidXRlcz17XG4gICAgLi4uQnNHYWxsZXJ5QXR0cmlidXRlcyxcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzXG59O1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgSW1hZ2UgTWFzb25yeScsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgTWFzb25yeSBJdGVtcycsICdibG9ja3NwYXJlJyksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLm1hc29ucnksXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnaW1hZ2UnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbWFzb25yeScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdnYWxsZXJ5JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2NvbHVtbicsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdLFxuICAgICAgICBodG1sOiB0cnVlXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGdyaWRTaXplOiAnbHJnJyxcbiAgICAgICAgICAgIGd1dHRlcjogNSxcbiAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5tZW51X2ltZ191cmx9LFxuICAgICAgICAgICAgICAgIHsgdXJsOiBwcmV2X2ltZy5pbWd9XG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDpFZGl0LFxuICAgIHNhdmVcblxufSk7IiwiaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuaW1wb3J0IEJ1dHRvblNldHRpbmdzIGZyb20gJy4vLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5ncyc7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudFwiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuaW1wb3J0IEJTYnV0dG9uU2V0dGluZ3MgZnJvbSBcIi4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3NcIjtcblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgdGV4dHNDb2xvcixcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgIGJveEJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgIGVuYWJsZUJ1dHRvbixcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGVuYWJsZUdyYWRpZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICBncmFkaWVudEFuZ2xlLFxuICAgICAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgICAgICBjb2xvckxvY2F0aW9uMixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG5cblxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VUZXh0c2NvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7dGV4dHNDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtib3hCb3JkZXJDb2xvcjogdmFsdWV9KTtcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oXCJGb250IFNpemVcIixcImJsb2Nrc3BhcmVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGZvbnRTaXplOiB2YWx1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsyfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXszNn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUZXh0cyBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0ZXh0c0NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUZXh0c2NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RleHRzIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYm94Qm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJvcmRlcmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0Rhc2ggQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cblxuLyoqXG4gKiBDcmVhdGUgYSBCU05vdGljZUJhciB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCU05vdGljZUJhciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBib3hCb3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXNcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICAvL3RleHRBbGlnbjpcbiAgICAgICAgICAgIC4uLmJveFNoYWRvd1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJyxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOmJveEJvcmRlckNvbG9yP2JveEJvcmRlckNvbG9yOicjY2MwMDAwJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1hcmdpblRvcDogbWFyZ2luVG9wID8gbWFyZ2luVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czpib3JkZXJSYWRpdXMrXCJweFwiXG5cblxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ub3RpY2ViYXItd3JhcHBlciBibG9ja3NwYXJlLWJsb2Nrcycgc3R5bGU9e2VkaXRTdHlsZXN9PnsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9PC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSBcIi4vY29tcG9uZW50cy9pbnNwZWN0b3JcIjtcbmltcG9ydCBCU05vdGljZUJhciBmcm9tIFwiLi9jb21wb25lbnRzL2VkaXRcIjtcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgVVJMSW5wdXQsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBSZWdpc3RlciBjb21wb25lbnRzXG5jb25zdCB7XG5cbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uLFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cblxuY2xhc3MgQlNOb3RpY2VCYXJCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBidXR0b25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICBub3RpY2VDb250ZW50LFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgdGV4dHNDb2xvcixcbiAgICAgICAgICAgICAgICBlbmFibGVCdXR0b24sXG4gICAgICAgICAgICAgICAgZm9udFNpemUsXG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBidG5TdHlsZXMgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuXG4gICAgICAgICAgICAvLyBTaG93IHRoZSBhbGlnbm1lbnQgdG9vbGJhciBvbiBmb2N1c1xuICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz4sXG5cblxuICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAvPixcblxuICAgICAgICAgICAgPEJTTm90aWNlQmFyIHsuLi50aGlzLnByb3BzfSA+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1ub3RpY2Utd3JhcFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRleHRzQ29sb3IsXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0FkZCB5b3VyIG5vdGljZSBoZXJlLi4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25vdGljZUNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOmZvbnRTaXplICsgXCJweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7bm90aWNlQ29udGVudDogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgeyBlbmFibGVCdXR0b24gJiYgKFxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7Li4udGhpcy5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdCdXR0b24gdGV4dC4uLicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRGb3JtYXRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtidXR0b25UZXh0OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge2lzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7YnV0dG9uQWxpZ25tZW50fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hpY29uIGljb249eydhZG1pbi1saW5rcyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b24tdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtidXR0b25Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtidXR0b25Vcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWRpdG9yLWJyZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnQXBwbHknLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICA8L0JTQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JTTm90aWNlQmFyPlxuICAgICAgICBdO1xuICAgIH1cbn1cblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXMsXG4gICAgLi4uYm94U2hhZG93QXR0cmlidXRlc1xufTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIE5vdGljZSBCYXInLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQlMgTm90aWNlIEJhciBhbGxvdyB5b3UgdG8gYWRkIHZhcmlvdXMgdHlwZSBvZiBub3RpY2VzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5ub3RpY2UsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnbm90aWNlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2JhcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdhbm5vdW5jZW1lbnQnLCAnYmxvY2tzcGFyZScpLFxuXG5cbiAgICBdLFxuXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBlZGl0OiBCU05vdGljZUJhckJsb2NrLFxuICAgIHNhdmU6IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICBidXR0b25VcmwsXG4gICAgICAgICAgICBidXR0b25UYXJnZXQsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgbm90aWNlQ29udGVudCxcbiAgICAgICAgICAgIHRleHRzQ29sb3IsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBib3hCb3JkZXJDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBlbmFibGVCdXR0b24sXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1c1xuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJyxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBib3hCb3JkZXJDb2xvcj9ib3hCb3JkZXJDb2xvcjonI2NjMDAwMCcsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6Ym9yZGVyUmFkaXVzK1wicHhcIlxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ub3RpY2ViYXItd3JhcHBlcicsXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ25cbiAgICAgICAgICAgICl9IHN0eWxlPXtlZGl0U3R5bGVzfT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLW5vdGljZS13cmFwXCIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGV4dHNDb2xvcj90ZXh0c0NvbG9yOicjNGM0YzRjJyxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bm90aWNlQ29udGVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtbm90aWNlLWNvbnRlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtub3RpY2VDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6Zm9udFNpemUgK1wicHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7IGVuYWJsZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsuLi5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2J1dHRvblVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PXtidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD17YnV0dG9uVGFyZ2V0ID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YnV0dG9uVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmljaW5nTGlzdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGFsaWduXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc25hbWVzKFtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNlLWxpc3Qtc2VjdGlvbi1hZG1pbiBibG9ja3NwYXJlLXByaWNlLWxpc3QnXG4gICAgICAgIF0sIHtcbiAgICAgICAgICAgIFsgJ2FsaWduJyArYWxpZ24gXTogYWxpZ25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfT5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSIsImltcG9ydCBCU0ljb25TZXR0aW5ncyBmcm9tICcuLi8uLi8uLi9pY29uLXNldC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MnO1xuaW1wb3J0IFBhZGRpbmcgZnJvbSAnLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nJztcbmltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50fSA9IHdwLmVsZW1lbnQ7XG5cblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0UG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgICAgcHJpY2VUaXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIHByaWNlQ29sb3IsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHByaWNlRGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgICAgaW1nSWNvbk9wdGlvbixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgIGljb25TdHlsZXMsXG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICBpY29uQm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgICAgYmxvY2tCb3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgZW5hYmxlQm94U2hhZG93LFxuICAgICAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICAgICAgeU9mZnNldCxcbiAgICAgICAgICAgICAgICBibHVyLFxuICAgICAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcixcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBsaXN0TGF5b3V0T3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MScsIGxhYmVsOiBfXygnTGF5b3V0IDEnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MicsIGxhYmVsOiBfXygnTGF5b3V0IDInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGF5b3V0MycsIGxhYmVsOiBfXygnTGF5b3V0IDMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHByaWNlVW5pdFBvc2l0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYmVmb3JlLXByaWNlJywgbGFiZWw6IF9fKCdCZWZvcmUgUHJpY2UnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYWZ0ZXItcHJpY2UnLCBsYWJlbDogX18oJ0FmdGVyIFByaWNlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgaW1nSWNvbk9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6J2ljb24nLGxhYmVsOl9fKCdJY29uJywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTonaW1hZ2UnLGxhYmVsOl9fKCdJbWFnZScsJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBvbkNoYW5nZVRpdGxlQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZVRpdGxlQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVByaWNlQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZUNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZVByaWNlVW5pdENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2VVbml0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlUHJpY2VEb3RDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlRG90Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlUHJpY2VEZXNjcmlwdGlvbkNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2VEZXNjcmlwdGlvbkNvbG9yOiB2YWx1ZX0pO1xuICAgICAgICBjb25zdCBvbkNoYW5nZWltZ0ljb25PcHRpb24gPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtpbWdJY29uT3B0aW9uOiB2YWx1ZX0pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ0Rpc3BsYXkgSW1hZ2UgJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Nob3dJbWFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3Nob3dJbWFnZTogIXNob3dJbWFnZX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRGlzcGxheSBEb3RzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Nob3dEb3RzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7c2hvd0RvdHM6ICFzaG93RG90c30pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdDb2xvcnMnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcmljZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VQcmljZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1ByaWNlIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVByaWNlVW5pdENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VuaXQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGFkZGluZyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wPXtwYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9e3BhZGRpbmdUb3AgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXtwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ1JpZ2h0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17cGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdCb3R0b219KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlZnQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXtwYWRkaW5nTGVmdCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdNYXJnaW4gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXJnaW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlVG9wPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcD17bWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Ub3A9e21hcmdpblRvcCA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Ub3B9KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIG1hcmdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZUJvdHRvbT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luQm90dG9tfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICk7XG4gICAgfVxuXG59IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vY29tcG9uZW50cy9pbnNwZWN0b3InO1xuaW1wb3J0IHBhZGRpbmdNYXJnaW4gZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL21hcmdpbi1wYWRkaW5nJztcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgaWNvbkNvbG9yT3B0aW9ucyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2ljb24tY29sb3JcIlxuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5cbmNvbnN0IEFMTE9XRURfQkxPQ0tTID0gWyAnY29yZS9pbWFnZSddO1xuY29uc3QgVEVNUExBVEUgPSBbXG4gICAgWydjb3JlL2ltYWdlJyx7XG4gICAgICAgIHVybDpwcmV2X2ltZy5tZW51X2ltZ191cmwsXG4gICAgICAgIGNsYXNzTmFtZTonaXMtc3R5bGUtY2lyY2xlLW1hc2snLFxuICAgICAgICB3aWR0aDoxMjAsXG4gICAgICAgIGhlaWdodDoxMjAsXG4gICAgICAgIGFsaWduOidjZW50ZXInLFxuXG4gICAgfV1cbl07XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgSW5uZXJCbG9ja3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5cbi8qKlxuICogQmxvY2sgZWRpdCBmdW5jdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICAgIHByaWNlVGl0bGUsXG4gICAgICAgICAgICAgICAgcHJpY2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwcmljZVVuaXQsXG4gICAgICAgICAgICAgICAgbGF5b3V0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICBzaG93RG90cyxcbiAgICAgICAgICAgICAgICBwcmljZVRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgcHJpY2VDb2xvcixcbiAgICAgICAgICAgICAgICBwcmljZVVuaXRDb2xvcixcbiAgICAgICAgICAgICAgICBwcmljZURlc2NyaXB0aW9uQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHNob3dJbWFnZSxcbiAgICAgICAgICAgICAgICBpbWdJY29uT3B0aW9uLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlcyxcbiAgICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgaWNvblN0eWxlc2NzcyA9e1xuXG4gICAgICAgICAgIC4uLmljb25Db2xvck9wdGlvbnMoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciAgey4uLnRoaXMucHJvcHN9Lz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljZS1saXN0LXdyYXAnLFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvblxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgLi4ucGFkZGluZ01hcmdpbihhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogYmxvY2tCb3JkZXJSYWRpdXMgPyBibG9ja0JvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWltZy13cmFwcGVyYH0+XG5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdJY29uT3B0aW9uID09J2ltYWdlJyAmJlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXsgVEVNUExBVEUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17IEFMTE9XRURfQkxPQ0tTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTG9jaz17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtzaG93SW1hZ2UgJiYgaW1nSWNvbk9wdGlvbiA9PSdpY29uJyAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1ibG9jay1pY29uLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2staWNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uU3R5bGVzY3NzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e25hbWV9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2UtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLWhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJoNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtwcmljZVRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2VUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVGl0bGVDb2xvcj9wcmljZVRpdGxlQ29sb3I6XCIjNDA0MDQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93RG90cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtcHJpY2UtZGl2aWRlcicgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlRGVzY3JpcHRpb25Db2xvcj9wcmljZURlc2NyaXB0aW9uQ29sb3I6JyM2ZDZkNmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLXVuaXQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7cHJpY2U6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlQ29sb3I/cHJpY2VDb2xvcjpcIiNhZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnUHJpY2UnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS11bml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlVW5pdDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZVVuaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVW5pdENvbG9yP3ByaWNlVW5pdENvbG9yOlwiI2FmMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCckJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe3ByaWNlRGVzY3JpcHRpb246IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ByaWNlRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdEZXNjcmlwdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VEZXNjcmlwdGlvbkNvbG9yP3ByaWNlRGVzY3JpcHRpb25Db2xvcjpcIiM2ZDZkNmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cbn0iLCJpbXBvcnQgcGFkZGluZ01hcmdpbiBmcm9tICcuLi8uLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmcnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuaW1wb3J0IGljb25Db2xvck9wdGlvbnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9pY29uLWNvbG9yXCI7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG4gICAgUmljaFRleHRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnR7XG4gICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICBwcmljZVRpdGxlLFxuICAgICAgICAgICAgICBwcmljZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBwcmljZVVuaXQsXG4gICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICBsYXlvdXRPcHRpb25zLFxuICAgICAgICAgICAgICBwcmljZVVuaXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgc2hvd0RvdHMsXG4gICAgICAgICAgICAgIHByaWNlVGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgcHJpY2VDb2xvcixcbiAgICAgICAgICAgICAgcHJpY2VVbml0Q29sb3IsXG4gICAgICAgICAgICAgIHByaWNlRGVzY3JpcHRpb25Db2xvcixcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICBzaG93SW1hZ2UsXG4gICAgICAgICAgICAgIGltZ0ljb25PcHRpb24sXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICBpY29uU3R5bGVzLFxuICAgICAgICAgICAgICBibG9ja0JvcmRlclJhZGl1c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYXR0cmlidXRlc1xuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCBpY29uU3R5bGVzY3NzID17XG4gICAgICAgICAgICAuLi5pY29uQ29sb3JPcHRpb25zKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljZS1saXN0LXdyYXAnLFxuICAgICAgICAgICAgICAgIGxheW91dE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgcHJpY2VVbml0UG9zaXRpb25cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAuLi5wYWRkaW5nTWFyZ2luKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKGF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3I/YmFja2dyb3VuZENvbG9yOlwiI2ZmZlwiLFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBibG9ja0JvcmRlclJhZGl1cyA/IGJsb2NrQm9yZGVyUmFkaXVzIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgfX1cblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1pbWdlLXdyYXBwZXJgfT5cbiAgICAgICAgICAgICAgICB7c2hvd0ltYWdlICYmIGltZ0ljb25PcHRpb24gPT0naW1hZ2UnICYmXG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAge3Nob3dJbWFnZSAmJiBpbWdJY29uT3B0aW9uID09J2ljb24nICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2staWNvbi13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1pY29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0eWxlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2ljb25TdHlsZXNjc3N9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtuYW1lfS8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtcHJpY2UtY29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljZS1oZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiaDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZVRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlVGl0bGVDb2xvcj9wcmljZVRpdGxlQ29sb3I6XCIjNDA0MDQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93RG90cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXByaWNlLWRpdmlkZXInIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VEZXNjcmlwdGlvbkNvbG9yP3ByaWNlRGVzY3JpcHRpb25Db2xvcjonIzZkNmQ2ZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNlLXVuaXQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcmljZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlQ29sb3I/cHJpY2VDb2xvcjpcIiNhZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXVuaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJpY2VVbml0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6cHJpY2VVbml0Q29sb3I/cHJpY2VVbml0Q29sb3I6XCIjYWYwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3ByaWNlRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnByaWNlRGVzY3JpcHRpb25Db2xvcj9wcmljZURlc2NyaXB0aW9uQ29sb3I6XCIjNmQ2ZDZkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cblxuXG59IiwiaW1wb3J0ICcuL3N0eWxlcy9lZGl0b3Iuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1hcmdpblBhZGRpbmcgZnJvbSAnLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9tYXJnaW4tcGFkZGluZyc7XG5pbXBvcnQgIG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnXG5pbXBvcnQgU2F2ZSBmcm9tICcuL1NhdmUnO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuXG5jb25zdCB7X199ID0gd3AuaTE4blxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge2NhdGVnb3J5fSA9IG1ldGFkYXRhO1xuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG4gICAgLi4ubWFyZ2luUGFkZGluZyxcbiAgICAuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBjb25zdCBwcmljZUxpc3RJdGVtU2V0dGluZ3MgPSB7XG4gICAgdGl0bGU6IF9fKCdQcmljZSBMaXN0IEl0ZW0nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBQcmljZSBMaXN0LCBNZW51IC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2UtbGlzdCddLFxuICAgIGljb246ICdsaW5rJyxcbiAgICBjYXRlZ29yeSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBodG1sOiBmYWxzZSxcbiAgICAgICAgaW5zZXJ0ZXI6IGZhbHNlLFxuICAgICAgICByZXVzYWJsZTogZmFsc2UsXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59O1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCBwcmljZUxpc3RJdGVtU2V0dGluZ3MpOyIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByaWNpbmdMaXN0IGZyb20gJy4vbGlzdC13cmFwcGVyJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5IH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCAgeyBjb21wb3NlIH0gPXdwLmNvbXBvc2U7XG5cbmltcG9ydCB7IHByaWNlTGlzdEl0ZW1TZXR0aW5ncyB9IGZyb20gJy4vbGlzdC1pdGVtJztcbmNsYXNzIFByaWNlTGlzdEJsb2NrIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICBjb25zdCB7IHNldEF0dHJpYnV0ZXMsIGNsaWVudElkLCBhdHRyaWJ1dGVzOiB7IHVuaXF1ZUlkIH0gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IF9jbGllbnQgPSBjbGllbnRJZC5zdWJzdHIoMCwgNik7XG4gICAgICAgIGlmICghdW5pcXVlSWQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh1bmlxdWVJZCAmJiB1bmlxdWVJZCAhPSBfY2xpZW50KSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnNlcnRQcmljZUl0ZW0oKSB7XG4gICAgICAgIGxldCBuZXdCbG9ja0F0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQsIGluc2VydEJsb2NrLCBibG9jayB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGJsb2NrLmlubmVyQmxvY2tzICYmIGJsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEJsb2NrQXR0cmlidXRlcyA9IGJsb2NrLmlubmVyQmxvY2tzW2Jsb2NrLmlubmVyQmxvY2tzLmxlbmd0aCAtIDFdLmF0dHJpYnV0ZXM7XG4gICAgICAgICAgICBjb25zdCBpdGVtTnVtYmVyID0gbGFzdEJsb2NrQXR0cmlidXRlcy5pdGVtTnVtYmVyICsgMTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBwcmljZUxpc3RJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHByaWNlTGlzdEl0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCBuZXdCbG9ja0F0dHJpYnV0ZXMpLCB1bmRlZmluZWQsIGNsaWVudElkKTtcbiAgICB9XG5cbiAgICBnZXRQcmljZVRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9saXN0LWl0ZW0nLCB7fV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQsIH0gfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNldHRpbmdzPXtbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8UHJpY2luZ0xpc3Qgey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXt0aGlzLmdldFByaWNlVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvbGlzdC1pdGVtJ119XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1ByaWNpbmdMaXN0PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShQcmljZUxpc3RCbG9jaylcblxuIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHsgdW5pcXVlSWQsIGl0ZW1Ub2dnbGUsYWxpZ24sYmFja2dyb3VuZENvbG9yfSA9IHRoaXMucHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb25DbGFzcyA9ICdibG9ja3NwYXJlLWJsb2Nrcyc7XG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGJsb2Nrc3BhcmUtYmxvY2stcHJpY2VsaXN0ICR7aW50ZXJhY3Rpb25DbGFzc30gYmxvY2tzcGFyZS1ibG9jay0ke3VuaXF1ZUlkfSBhbGlnbiR7YWxpZ259YDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH0+XG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmU7IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBQcmljZUxpc3RCbG9jayBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tIFwiLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4XCI7XG4vLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuLy8gUmVnaXN0ZXIgYmxvY2tcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFByaWNlIExpc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgcHJpY2UgbGlzdC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnByaWNpbmdMaXN0LFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3ByaWNlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xpc3QnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGFibGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygncHJpY2luZycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzaG9wJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3B1cmNoYXNlJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBlZGl0OiBQcmljZUxpc3RCbG9jayxcbiAgICBzYXZlOlNhdmVcblxufSk7XG4iLCIvLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyoqXG4gKiBDcmVhdGUgYSBQcmljaW5nIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByaWNpbmdUYWJsZSBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3Qge1xuXHRcdFx0YXR0cmlidXRlczoge1xuXHRcdFx0XHRjb2x1bW5zLFxuXHRcdFx0XHRjb2x1bW5zR2FwLFxuXHRcdFx0XHRhbGlnbixcblx0XHRcdH0sXG5cdFx0XHRhdHRyaWJ1dGVzXG5cdFx0fSA9IHRoaXMucHJvcHM7XG5cdFx0Y29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG5cdFx0XHR0aGlzLnByb3BzLmNsYXNzTmFtZSxcblx0XHRcdCdibG9ja3NwYXJlLXByaWNpbmctY29sdW1ucy0nICsgY29sdW1uc1xuXHRcdF0sIHtcblx0XHRcdFsgJ2FsaWduJyArIGFsaWduIF06IGFsaWduXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfSA+XG5cdFx0XHRcdHsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG59XG5cbiIsImltcG9ydCBNYXJnaW4gZnJvbSAnLi8uLi8uLi91dGlscy9tYXJnaW4nO1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGNvbXBvbmVudHNcbmNvbnN0IHtcblx0SW5zcGVjdG9yQ29udHJvbHNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG5cdFRvb2xiYXIsXG5cdEJ1dHRvbixcblx0UGFuZWxCb2R5LFxuXHRQYW5lbFJvdyxcblx0UmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3Qge1xuXHRcdFx0YXR0cmlidXRlczoge1xuXHRcdFx0XHRjb2x1bW5zLFxuXHRcdFx0XHRjb2x1bW5zR2FwLFxuXHRcdFx0XHRtYXJnaW5Ub3AsXG5cdFx0XHRcdG1hcmdpbkJvdHRvbSxcblx0XHRcdH0sXG5cdFx0XHRpc1NlbGVjdGVkLFxuXHRcdFx0Y2xhc3NOYW1lLFxuXHRcdFx0c2V0QXR0cmlidXRlc1xuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0cmV0dXJuIChcblx0XHQ8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXIgcHJpY2luZy10YWJsZS1ibG9ja3NwYXJlXCI+XG5cdFx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0XHR0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHRcdD5cblx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdGxhYmVsPXsgX18oICdQcmljaW5nIENvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0dmFsdWU9eyBjb2x1bW5zIH1cblx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBjb2x1bW5zOiB2YWx1ZSB9KSB9XG5cdFx0XHRcdFx0bWluPXsgMSB9XG5cdFx0XHRcdFx0bWF4PXsgMiB9XG5cdFx0XHRcdFx0d2l0aElucHV0RmllbGQ9e2ZhbHNlfVxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8UmFuZ2VDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9eyBfXyggJ1ByaWNpbmcgQ29sdW1ucyBHYXAnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0dmFsdWU9eyBjb2x1bW5zR2FwIH1cblx0XHRcdFx0XHR3aXRoSW5wdXRGaWVsZD17ZmFsc2V9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uc0dhcDogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdG1pbj17IDAgfVxuXHRcdFx0XHRcdG1heD17IDQgfVxuXHRcdFx0XHRcdHN0ZXA9eyAxIH1cblxuXG5cdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgR2FwcycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblx0XHRcdFx0PE1hcmdpblxuXG5cdFx0XHRcdFx0Ly8gVG9wIHBhZGRpbmdcblx0XHRcdFx0XHRtYXJnaW5FbmFibGVUb3A9e3RydWV9XG5cdFx0XHRcdFx0bWFyZ2luVG9wPXttYXJnaW5Ub3B9XG5cdFx0XHRcdFx0bWFyZ2luVG9wTWluPVwiMFwiXG5cdFx0XHRcdFx0bWFyZ2luVG9wTWF4PVwiMTAwXCJcblx0XHRcdFx0XHRvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cblx0XHRcdFx0XHQvLyBCb3R0b20gbWFyZ2luXG5cdFx0XHRcdFx0bWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuXHRcdFx0XHRcdG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG5cdFx0XHRcdFx0b25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhbmVsQm9keT5cblxuXHRcdFx0PC9kaXY+XG5cdFx0PC9JbnNwZWN0b3JDb250cm9scz5cblx0XHQpO1xuXHR9XG59XG4iLCJpbXBvcnQgaWNvbnMgZnJvbSBcIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleC5qc1wiO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCBCb3hTaGFkb3cgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NvbXBvbmVudC9ib3hzaGFkb3dcIjtcbmNvbnN0IEFMTE9XRURfTUVESUFfVFlQRVMgPSBbJ2ltYWdlJ107XG4vKipcbiAqIEluc3BlY3RvciBDb250cm9sc1xuICovXG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50LEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuXHRJbnNwZWN0b3JDb250cm9scyxcblx0QmxvY2tEZXNjcmlwdGlvbixcblx0TWVkaWFVcGxvYWQsXG5cdFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcblx0RGFzaGljb24sXG5cdEJ1dHRvbixcblx0UGFuZWxCb2R5LFxuXHRTZWxlY3RDb250cm9sLFxuXHRGb3JtVG9nZ2xlLFxuXHRSYW5nZUNvbnRyb2wsXG5cdFRleHRDb250cm9sLFxuXHRUb2dnbGVDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoIHByb3BzICkge1xuXHRcdHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcblx0fVxuXG5cdHJlbmRlcigpIHtcblxuXHRcdC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG5cdFx0Y29uc3QgeyBhdHRyaWJ1dGVzOiB7XG5cdFx0XHRib3JkZXJXaWR0aCxcblx0XHRcdGJvcmRlckNvbG9yLFxuXHRcdFx0Ym9yZGVyUmFkaXVzLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yLFxuXHRcdFx0cGFkZGluZyxcblx0XHRcdHNlY3Rpb25TY2FsZSxcblx0XHRcdGVuYWJsZUJhZGdlLFxuXHRcdFx0YmFkZ2VUZXh0LFxuXHRcdFx0YmFkZ2VTdHlsZSxcblx0XHRcdGJhZGdlT3B0aW9uLFxuXHRcdFx0aW1nSUQxLFxuXHRcdFx0aW1nVVJMMSxcblx0XHRcdGltZ0FsdDEsXG5cdFx0XHRiYWRnZVRleHRDb2xvcixcblx0XHRcdGJhZGdlQmFja0dyb3VuZENvbG9yLFxuXHRcdFx0YmFkZ2VJbWdTaXplLFxuXHRcdFx0ZW5hYmxlQm94U2hhZG93LFxuXHRcdFx0eE9mZnNldCxcblx0XHRcdHlPZmZzZXQsXG5cdFx0XHRibHVyLFxuXHRcdFx0c3ByZWFkLFxuXHRcdFx0c2hhZG93Q29sb3IsXG5cblx0XHR9LFxuXHRcdFx0aXNTZWxlY3RlZCxcblx0XHRcdGNsYXNzTmFtZSxcblx0XHRcdHNldEF0dHJpYnV0ZXNcblx0XHR9ID0gdGhpcy5wcm9wcztcblxuXHRcdGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGJhY2tncm91bmRDb2xvcjogdmFsdWUgfSk7XG5cdFx0Y29uc3Qgb25DaGFuZ2VCYWRnZVN0eWxlID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFkZ2VTdHlsZTogdmFsdWV9KTtcblx0XHRjb25zdCBvbkNoYW5nZUJhZGdlT3B0aW9uID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFkZ2VPcHRpb246IHZhbHVlfSk7XG5cdFx0Y29uc3Qgb25DaGFuZ2VCYWRnZVRleHRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe2JhZGdlVGV4dENvbG9yOiB2YWx1ZX0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFkZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWRnZUJhY2tHcm91bmRDb2xvcjogdmFsdWV9KTtcblxuXHRcdGNvbnN0IGJhZGdlU3R5bGVPcHRpb25zID0gW1xuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1iYWRnZS1zdHlsZTEnLCBsYWJlbDogX18oJ1N0eWxlIDEnLCAnYmxvY2tzcGFyZScpfSxcblx0XHRcdHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtYmFkZ2Utc3R5bGUyJywgbGFiZWw6IF9fKCdTdHlsZSAyJywgJ2Jsb2Nrc3BhcmUnKX0sXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLWJhZGdlLXN0eWxlMycsIGxhYmVsOiBfXygnU3R5bGUgMycsICdibG9ja3NwYXJlJyl9XG5cdFx0XTtcblxuXHRcdGNvbnN0IGJhZGdlT3B0aW9ucyA9IFtcblx0XHRcdHt2YWx1ZTogJ2JhZGdlLXRleHQnLCBsYWJlbDogX18oJ1RleHQnLCAnYmxvY2tzcGFyZScpfSxcblx0XHRcdHt2YWx1ZTogJ2JhZGdlLWltYWdlJywgbGFiZWw6IF9fKCdJbWFnZScsICdibG9ja3NwYXJlJyl9LFxuXG5cdFx0XTtcblxuXHRcdHJldHVybiAoXG5cdFx0PEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cblx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnUHJpY2luZyBDb2x1bW4gUGFkZGluZycsICdibG9ja3NwYXJlJyApIH1cblx0XHRcdFx0XHRcdFx0dmFsdWU9eyBwYWRkaW5nIH1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcGFkZGluZzogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdFx0XHRtaW49eyAwIH1cblx0XHRcdFx0XHRcdFx0bWF4PXsgMjAgfVxuXHRcdFx0XHRcdFx0XHRzdGVwPXsgMSB9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PFJhbmdlQ29udHJvbFxuXHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnUHJpY2luZyBDb2x1bW4gQm9yZGVyJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17IGJvcmRlcldpZHRoIH1cblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgYm9yZGVyV2lkdGg6IHZhbHVlIH0pIH1cblx0XHRcdFx0XHRcdFx0bWluPXsgMCB9XG5cdFx0XHRcdFx0XHRcdG1heD17IDEwIH1cblx0XHRcdFx0XHRcdFx0c3RlcD17IDEgfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxSYW5nZUNvbnRyb2xcblx0XHRcdFx0XHRcdFx0bGFiZWw9eyBfXyggJ1NjYWxlIFJhdGlvJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHR2YWx1ZT17IHNlY3Rpb25TY2FsZSB9XG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IHNlY3Rpb25TY2FsZTogdmFsdWUgfSkgfVxuXHRcdFx0XHRcdFx0XHRtaW49eyAwIH1cblx0XHRcdFx0XHRcdFx0bWF4PXsgMiB9XG5cdFx0XHRcdFx0XHRcdHN0ZXA9eyAxIH1cblx0XHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0PC9QYW5lbEJvZHk+XG5cdFx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0XHR0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRcdHsgKCAwIDwgYm9yZGVyV2lkdGggKSAmJiAoXG5cdFx0XHRcdFx0XHRcdDxQYW5lbENvbG9yU2V0dGluZ3Ncblx0XHRcdFx0XHRcdFx0XHR0aXRsZT17IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnICkgfVxuXHRcdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yU2V0dGluZ3M9eyBbIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBib3JkZXJDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkNoYW5nZUJvcmRlckNvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnQm9yZGVyIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcblx0XHRcdFx0XHRcdFx0XHR9IF0gfVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXHRcdFx0XHRcdFx0XHQpIH1cblx0XHRcdFx0XHRcdDxQYW5lbENvbG9yU2V0dGluZ3Ncblx0XHRcdFx0XHRcdFx0dGl0bGU9eyBfXyggJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuXHRcdFx0XHRcdFx0XHRjb2xvclNldHRpbmdzPXsgWyB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGJhY2tncm91bmRDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyApXG5cdFx0XHRcdFx0XHRcdH0gXSB9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuXHRcdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvSW5zcGVjdG9yQ29udHJvbHM+XG5cdFx0KTtcblx0fVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5cbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gJy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvdyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuXG4vLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcblxuLy8gRXh0ZW5kIGNvbXBvbmVudFxuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG5cdElubmVyQmxvY2tzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG5cdEZyYWdtZW50XG59ID0gd3AuZWxlbWVudDtcblxuY29uc3QgQUxMT1dFRF9CTE9DS1MgPSBbXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci10aXRsZScsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1wcmljZScsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1kZXNjcmlwdGlvbicsXG5cdCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1idXR0b24nLFxuXHQnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLFxuXTtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnksfSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzPSB7XG5cdFx0Li4ubWV0YWRhdGEuYXR0cmlidXRlcyxcblx0XHQuLi5ib3hTaGFkb3dBdHRyaWJ1dGVzXG59O1xuXG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xuXG5leHBvcnQgY29uc3QgcHJpY2VJdGVtU2V0dGluZ3MgPXtcblxuXHR0aXRsZTogX18oICdCUyBQcmljaW5nIENvbHVtbicsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGQgYSBwcmljaW5nIGNvbHVtbi4nLCAnYmxvY2tzcGFyZScgKSxcblx0aWNvbjogJ2NhcnQnLFxuXHRjYXRlZ29yeSxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZycgXSxcblx0a2V5d29yZHM6IFtcblx0XHRfXyggJ3ByaWNpbmcnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ2J1eScsICdibG9ja3NwYXJlJyApXG5cdF0sXG5cdGF0dHJpYnV0ZXMsXG5cblx0Ly8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG5cdGVkaXQ6IGZ1bmN0aW9uKHByb3BzKXtcblxuXHRcdGNvbnN0IHtcblxuXHRcdFx0Ym9yZGVyV2lkdGgsXG5cdFx0XHRib3JkZXJDb2xvcixcblx0XHRcdGJvcmRlclJhZGl1cyxcblx0XHRcdGJhY2tncm91bmRDb2xvcixcblx0XHRcdHBhZGRpbmcsXG5cdFx0XHRhbGlnbm1lbnQsXG5cdFx0XHRzZWN0aW9uU2NhbGUsXG5cdFx0XHRlbmFibGVCYWRnZSxcblx0XHRcdGJhZGdlVGV4dCxcblx0XHRcdGJhZGdlU3R5bGUsXG5cdFx0XHRiYWRnZU9wdGlvbixcblx0XHRcdGltZ0lEMSxcblx0XHRcdGltZ1VSTDEsXG5cdFx0XHRpbWdBbHQxLFxuXHRcdFx0YmFkZ2VUZXh0Q29sb3IsXG5cdFx0XHRiYWRnZUJhY2tHcm91bmRDb2xvcixcblx0XHRcdGJhZGdlSW1nU2l6ZSxcblx0XHRcdGF0dHJpYnV0ZXMsXG5cdFx0XHRpc1NlbGVjdGVkLFxuXHRcdFx0Y2xhc3NOYW1lLFxuXHRcdFx0c2V0QXR0cmlidXRlc1xuXHRcdH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG5cdFx0Y29uc3Qgc3R5bGVzID0ge1xuXHRcdFx0Li4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuXHRcdFx0Ym9yZGVyV2lkdGg6IGJvcmRlcldpZHRoID8gYm9yZGVyV2lkdGggOiBudWxsLFxuXHRcdFx0Ym9yZGVyU3R5bGU6IDAgPCBib3JkZXJXaWR0aCA/ICdzb2xpZCcgOiBudWxsLFxuXHRcdFx0Ym9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiAnI2VjZWNlYycsXG5cdFx0XHRib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6JyNmZmYnLFxuXHRcdFx0cGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsXG5cdFx0fTtcblx0XHRjb25zdCBiYWRnZVN0eWxlcyA9e1xuXHRcdFx0Y29sb3I6YmFkZ2VUZXh0Q29sb3I/YmFkZ2VUZXh0Q29sb3I6JyNmZmYnLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOmJhZGdlQmFja0dyb3VuZENvbG9yLFxuXG5cblx0XHR9O1xuXG5cdFx0Y29uc3QgYmFkZ2VJbWdTdHlsZT17XG5cdFx0XHR3aWR0aDpiYWRnZUltZ1NpemUrJ3B4J1xuXHRcdH07XG5cblx0XHRsZXQgYmFkZ2VjbGFzcyA9Jyc7XG5cdFx0aWYoZW5hYmxlQmFkZ2UgJiYgYmFkZ2VUZXh0ICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLXRleHQnKXtcblx0XHRcdGJhZGdlY2xhc3MgPSBiYWRnZVN0eWxlO1xuXHRcdH1cblx0XHRlbHNlIGlmKGVuYWJsZUJhZGdlICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLWltYWdlJyl7XG5cdFx0XHRiYWRnZWNsYXNzID0gYmFkZ2VTdHlsZStcIiBoYXMtaW1hZ2VcIjtcblx0XHR9ZWxzZXtcblx0XHRcdGJhZGdlY2xhc3MgPScnO1xuXHRcdH1cblxuXHRcdHJldHVybihcblxuXHRcdFx0PEZyYWdtZW50PlxuXG5cdFx0XHRcdDxJbnNwZWN0b3Jcblx0XHRcdFx0XHR7Li4ucHJvcHN9XG5cdFx0XHRcdC8+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuXHRcdFx0XHRcdFx0YWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZS1jZW50ZXInLFxuXHRcdFx0XHRcdFx0J2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZScsXG5cdFx0XHRcdFx0KSB9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG5cdFx0XHRcdFx0XHRcdCdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtaW5zaWRlJyxcblx0XHRcdFx0XHRcdFx0YmFkZ2VjbGFzcyxcblx0XHRcdFx0XHRcdFx0c2NhbGVSYXRpb0NsYXNzKHNlY3Rpb25TY2FsZSksXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQnaGFzLXNjYWxlLXJhdGlvJzogMCAhPT0gc2VjdGlvblNjYWxlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRzdHlsZT17IHN0eWxlcyB9PlxuXG5cdFx0XHRcdFx0XHR7ZW5hYmxlQmFkZ2UgJiYgYmFkZ2VUZXh0ICYmIGJhZGdlT3B0aW9uPT09J2JhZGdlLXRleHQnICYmXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2Utd3JhcHBlclwiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2VcIj5cblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoYmFkZ2VTdHlsZSl9IHN0eWxlPXtiYWRnZVN0eWxlc30+e2JhZGdlVGV4dH08L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR7ZW5hYmxlQmFkZ2UgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtaW1hZ2UnICYmXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhiYWRnZVN0eWxlKX0gc3R5bGU9e2JhZGdlSW1nU3R5bGV9PjxpbWcgc3JjPXtpbWdVUkwxfSBhbHQ9e2ltZ0FsdDF9Lz48L2Rpdj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdDxJbm5lckJsb2Nrc1xuXHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZT17W1xuXHRcdFx0XHRcdFx0XHRcdFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLHtcblxuXHRcdFx0XHRcdFx0XHRcdH1dLFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQWRkIHBsYWNlaG9sZGVyIGJsb2Nrc1xuXHRcdFx0XHRcdFx0XHRcdFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyLXRpdGxlJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyVGl0bGU6ICc8c3Ryb25nPiBQcmljZSBUaXRsZSA8L3N0cm9uZz4nLFxuXHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyU3ViVGl0bGU6J0VudGVyIFN1YnRpdGxlJyxcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlUGFkZGluZ1RvcDogNSxcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlUGFkZGluZ0JvdHRvbTogNSxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YnRpdGxlUGFkZGluZ1RvcDogMTAsXG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJ0aXRsZVBhZGRpbmdCb3R0b206IDEwXG5cdFx0XHRcdFx0XHRcdFx0fSBdLFxuXG5cdFx0XHRcdFx0XHRcdFx0WyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXItcHJpY2UnLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwcmljZTogJzU5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbmN5OiAnJCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21Gb250U2l6ZTogMzIsXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXJtOiAnL21vJyxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A6IDEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0OiAyMCxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IDEwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ6IDIwXG5cdFx0XHRcdFx0XHRcdFx0fSBdLFxuXG5cdFx0XHRcdFx0XHRcdFx0WydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lci1kZXNjcmlwdGlvbicse1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmVhdHVyZXM6ICc8bGk+NDAgVGVhbSBNZW1iZXJzPC9saT48bGk+NDAgUGVyc29uYWwgQ29udGFjdHM8L2xpPjxsaT40MDAwIE1lc3NhZ2U8L2xpPicsXG5cdFx0XHRcdFx0XHRcdFx0XHRtdWx0aWxpbmVUYWc6ICdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRvcmRlcmVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbUZvbnRTaXplOiAxNixcblx0XHRcdFx0XHRcdFx0XHRcdEZvbnRTaXplOiAnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1RvcDogMTUsXG5cdFx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nUmlnaHQ6IDIwLFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0JvdHRvbTogMTUsXG5cdFx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdDogMjAsXG5cblx0XHRcdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdFx0XHRbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyLWJ1dHRvbicse1xuXHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uVGV4dDogJ0dldCBTdGFydGVkJyxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A6IDE1LFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0OiAyMCxcblx0XHRcdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b206IDM1LFxuXHRcdFx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ6IDIwXG5cdFx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdFx0XX1cblxuXHRcdFx0XHRcdFx0XHRhbGxvd2VkQmxvY2tzPXsgQUxMT1dFRF9CTE9DS1MgfVxuXHRcdFx0XHRcdFx0XHRyZW5kZXJBcHBlbmRlcj17ZmFsc2V9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0KTtcblxuXHR9LFxuXG5cdC8vIFNhdmUgdGhlIGF0dHJpYnV0ZXMgYW5kIG1hcmt1cFxuXHRzYXZlOiBmdW5jdGlvbiggcHJvcHMgKSB7XG5cblx0XHQvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuXHRcdGNvbnN0IHtcblx0XHRcdGJvcmRlcldpZHRoLFxuXHRcdFx0Ym9yZGVyQ29sb3IsXG5cdFx0XHRib3JkZXJSYWRpdXMsXG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3IsXG5cdFx0XHRhbGlnbm1lbnQsXG5cdFx0XHRwYWRkaW5nLFxuXHRcdFx0c2VjdGlvblNjYWxlLFxuXHRcdFx0ZW5hYmxlQmFkZ2UsXG5cdFx0XHRiYWRnZVRleHQsXG5cdFx0XHRiYWRnZVN0eWxlLFxuXHRcdFx0YmFkZ2VPcHRpb24sXG5cdFx0XHRpbWdJRDEsXG5cdFx0XHRpbWdVUkwxLFxuXHRcdFx0aW1nQWx0MSxcblx0XHRcdGJhZGdlVGV4dENvbG9yLFxuXHRcdFx0YmFkZ2VCYWNrR3JvdW5kQ29sb3IsXG5cdFx0XHRiYWRnZUltZ1NpemVcblx0XHR9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuXHRcdGNvbnN0IHN0eWxlcyA9IHtcblx0XHRcdC4uLmJveFNoYWRvd1N0eWxlcyhwcm9wcy5hdHRyaWJ1dGVzKSxcblx0XHRcdGJvcmRlcldpZHRoOiBib3JkZXJXaWR0aCA/IGJvcmRlcldpZHRoIDogbnVsbCxcblx0XHRcdGJvcmRlclN0eWxlOiAwIDwgYm9yZGVyV2lkdGggPyAnc29saWQnIDogbnVsbCxcblx0XHRcdGJvcmRlckNvbG9yOiBib3JkZXJDb2xvciA/IGJvcmRlckNvbG9yIDogbnVsbCxcblx0XHRcdGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzIDogbnVsbCxcblx0XHRcdGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yP2JhY2tncm91bmRDb2xvcjonI2ZmZicgLFxuXHRcdFx0cGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsLFxuXHRcdH07XG5cblx0XHRjb25zdCBiYWRnZVN0eWxlcyA9e1xuXHRcdFx0Y29sb3I6YmFkZ2VUZXh0Q29sb3I/YmFkZ2VUZXh0Q29sb3I6JyNmZmYnLFxuXHRcdFx0YmFja2dyb3VuZENvbG9yOmJhZGdlQmFja0dyb3VuZENvbG9yLFxuXG5cdFx0fTtcblxuXHRcdGNvbnN0IGJhZGdlSW1nU3R5bGU9e1xuXHRcdFx0d2lkdGg6YmFkZ2VJbWdTaXplKydweCdcblx0XHR9O1xuXHRcdGxldCBiYWRnZWNsYXNzID0nJztcblx0XHRpZihlbmFibGVCYWRnZSAmJiBiYWRnZVRleHQgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtdGV4dCcpe1xuXHRcdFx0YmFkZ2VjbGFzcyA9IGJhZGdlU3R5bGU7XG5cdFx0fVxuXHRcdGVsc2UgaWYoZW5hYmxlQmFkZ2UgJiYgYmFkZ2VPcHRpb249PT0nYmFkZ2UtaW1hZ2UnKXtcblx0XHRcdGJhZGdlY2xhc3MgPSBiYWRnZVN0eWxlK1wiIGhhcy1pbWFnZVwiO1xuXHRcdH1lbHNle1xuXHRcdFx0YmFkZ2VjbGFzcyA9Jyc7XG5cdFx0fVxuXG5cdFx0Ly8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcblx0XHRcdFx0XHRhbGlnbm1lbnQgPyAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLScgKyBhbGlnbm1lbnQgOiAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLWNlbnRlcicsXG5cdFx0XHRcdFx0J2Jsb2Nrc3BhcmUtYmxvY2stcHJpY2luZy10YWJsZScsXG5cdFx0XHRcdCkgfVxuXHRcdFx0XHRpdGVtU2NvcGVcblx0XHRcdFx0aXRlbVR5cGU9XCJodHRwOi8vc2NoZW1hLm9yZy9Qcm9kdWN0XCJcblx0XHRcdD5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcblx0XHRcdFx0XHRcdCdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtaW5zaWRlJyxcblx0XHRcdFx0XHRcdGJhZGdlY2xhc3MsXG5cdFx0XHRcdFx0XHRzY2FsZVJhdGlvQ2xhc3Moc2VjdGlvblNjYWxlKSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQnaGFzLXNjYWxlLXJhdGlvJzogMCAhPT0gc2VjdGlvblNjYWxlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0c3R5bGU9eyBzdHlsZXMgfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e2VuYWJsZUJhZGdlICYmIGJhZGdlVGV4dCAmJiBiYWRnZU9wdGlvbj09PSdiYWRnZS10ZXh0JyAmJlxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1iYWRnZS13cmFwcGVyXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYmFkZ2VcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPXtjbGFzc25hbWVzKGJhZGdlU3R5bGUpfSBzdHlsZT17YmFkZ2VTdHlsZXN9PntiYWRnZVRleHR9PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHtlbmFibGVCYWRnZSAmJiBiYWRnZU9wdGlvbj09PSdiYWRnZS1pbWFnZScgJiZcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhiYWRnZVN0eWxlKX0gc3R5bGU9e2JhZGdlSW1nU3R5bGV9PjxpbWcgc3JjPXtpbWdVUkwxfSBhbHQ9e2ltZ0FsdDF9Lz48L2Rpdj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0PElubmVyQmxvY2tzLkNvbnRlbnQgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG59O1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInLCBwcmljZUl0ZW1TZXR0aW5ncyk7XG5cbmZ1bmN0aW9uIHNjYWxlUmF0aW9DbGFzcyhyYXRpbykge1xuXHRyZXR1cm4gJ2hhcy1zY2FsZS1yYXRpby0nICsgKDEgKiBNYXRoLnJvdW5kKHJhdGlvKSk7XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcmljaW5nVGFibGUgZnJvbSAnLi9wcmljaW5nJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5LFJhbmdlQ29udHJvbCxUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0ICB7IGNvbXBvc2UgfSA9d3AuY29tcG9zZTtcblxuaW1wb3J0IHtwcmljZUl0ZW1TZXR0aW5ncyB9IGZyb20gJy4uL3ByaWNpbmctdGFibGUtaW5uZXInO1xuY2xhc3MgUHJpY2VMaXN0QmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydFNlcnZpY2VJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gcHJpY2VJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHByaWNlSXRlbVNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJsb2NrKGNyZWF0ZUJsb2NrKCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicsIG5ld0Jsb2NrQXR0cmlidXRlcyksIHVuZGVmaW5lZCwgY2xpZW50SWQpO1xuICAgIH1cblxuICAgIGdldFNlcnZpY2VUZW1wbGF0ZSA9IChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbXMgPSBhdHRyaWJ1dGVzLmRlZmF1bHRJdGVtcztcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBkZWZhdWx0SXRlbXM7IGsrKykge1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaChbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1wcmljaW5nLWlubmVyJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXBcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtcHJpY2luZy1ibG9jay13cmFwcGVyJ1xuXG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogbWFyZ2luVG9wID8gbWFyZ2luVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICB9fT5cblxuICAgICAgICAgICAgICAgIDxQcmljaW5nVGFibGUgey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXdyYXAtYWRtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLXByaWNpbmctdGFibGUtZ2FwLScgKyBjb2x1bW5zR2FwXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e3RoaXMuZ2V0U2VydmljZVRlbXBsYXRlKGF0dHJpYnV0ZXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17WydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lciddfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQXBwZW5kZXI9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvUHJpY2luZ1RhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApXG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRJZCB9ID0gb3duUHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZ2V0QmxvY2ssIGlzQmxvY2tTZWxlY3RlZCwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrIH0gPSBzZWxlY3QoJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogZ2V0QmxvY2soY2xpZW50SWQpLFxuICAgICAgICAgICAgaXNTZWxlY3RlZEJsb2NrSW5Sb290OiBpc0Jsb2NrU2VsZWN0ZWQoY2xpZW50SWQpIHx8IGhhc1NlbGVjdGVkSW5uZXJCbG9jayhjbGllbnRJZCwgdHJ1ZSksXG4gICAgICAgIH07XG4gICAgfSksXG4gICAgd2l0aERpc3BhdGNoKChkaXNwYXRjaCkgPT4ge1xuICAgICAgICBjb25zdCB7IGluc2VydEJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMgfSA9IGRpc3BhdGNoKCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5zZXJ0QmxvY2ssXG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICB9KSxcbl0pKFByaWNlTGlzdEJsb2NrKVxuXG4iLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByaWNpbmdUYWJsZSBmcm9tICcuL2NvbXBvbmVudHMvcHJpY2luZyc7XG5pbXBvcnQgUHJpY2VMaXN0QmxvY2sgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnbWVtaXplJztcbmltcG9ydCB0aW1lcyBmcm9tICdsb2Rhc2gvdGltZXMnO1xuaW1wb3J0IGljb25zIGZyb20gJy4uLy4uL2Fzc2V0cy9pY29ucy9pbmRleCc7XG5cbi8vIEludGVybmF0aW9uYWxpemF0aW9uXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuLy8gRXh0ZW5kIGNvbXBvbmVudFxuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG4vLyBSZWdpc3RlciBibG9ja1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcblxuLy8gUmVnaXN0ZXIgZWRpdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBTZXQgYWxsb3dlZCBibG9ja3MgYW5kIG1lZGlhXG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInXTtcblxuLy8gR2V0IHRoZSBwcmljaW5nIHRlbXBsYXRlXG5jb25zdCBnZXRQcmljaW5nVGVtcGxhdGUgPSBtZW1vaXplKChjb2x1bW5zKSA9PiB7XG4gICAgcmV0dXJuIHRpbWVzKGNvbHVtbnMsICgpID0+IFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInXSk7XG59KTtcblxuY29uc3Qge25hbWUsY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFByaWNpbmcgVGFibGUnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgcHJpY2luZyB0YWJsZS4nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnByaWNpbmdUYWJsZSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdwcmljZScsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaXN0JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3RhYmxlJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3ByaWNpbmcnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2hvcCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdwdXJjaGFzZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdLFxuICAgICAgICBodG1sOiB0cnVlXG4gICAgfSxcblxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogUHJpY2VMaXN0QmxvY2ssXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfT1wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc25hbWVzKFtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtd3JhcCcsXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1wcmljaW5nLXRhYmxlLWdhcC0nICsgY29sdW1uc0dhcFxuICAgICAgICBdKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtcHJpY2luZy1ibG9jay13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICAnYWxpZ24nICsgYWxpZ25cblxuICAgICAgICAgICAgKX0gIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxQcmljaW5nVGFibGUgey4uLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9QcmljaW5nVGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcblxuICAgIH1cbn0pO1xuIiwiaW1wb3J0IEJTSGVhZGVyU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyLXNldHRpbmdzXCI7XG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHlcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVyc3VidGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGRhc2hDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvclxuICAgICAgICAgICAgfSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3Qge3NldEF0dHJpYnV0ZXN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnSGVhZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyU2V0dGluZ3NcblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbT0ge3RpdGxlUGFkZGluZ0JvdHRvbSA9PnNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ0JvdHRvbX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuIiwiLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcblxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0QWxpZ25tZW50VG9vbGJhcixcblx0QmxvY2tDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cblx0XHQvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuXHRcdGNvbnN0IHtcblx0XHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdFx0c2VjdGlvbkFsaWdubWVudCxcblx0XHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0XHRoZWFkZXJUaXRsZSxcblx0XHRcdFx0aGVhZGVyU3ViVGl0bGVcblx0XHRcdH0sXG5cdFx0XHRhdHRyaWJ1dGVzLFxuXHRcdFx0c2V0QXR0cmlidXRlcyxcblx0XHR9ID0gdGhpcy5wcm9wcztcblxuXHRcdGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcblx0XHRcdC4uLmRhc2hDb2xvcnMoYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3QgdGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuXHRcdFx0Li4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuXHRcdH07XG5cblxuXHRcdHJldHVybiBbXG5cdFx0XHQ8RnJhZ21lbnQ+XG5cblx0XHRcdFx0PEJsb2NrQ29udHJvbHMga2V5PVwiY29udHJvbHNcIj5cblx0XHRcdFx0XHQ8QWxpZ25tZW50VG9vbGJhclxuXHRcdFx0XHRcdFx0dmFsdWU9eyBzZWN0aW9uQWxpZ25tZW50IH1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCBuZXh0QWxpZ24gKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoeyBzZWN0aW9uQWxpZ25tZW50OiBuZXh0QWxpZ24gfSk7XG5cdFx0XHRcdFx0XHR9IH1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L0Jsb2NrQ29udHJvbHM+XG5cblx0XHRcdFx0PEluc3BlY3RvclxuXHRcdFx0XHRcdHsgLi4udGhpcy5wcm9wcyB9XG5cdFx0XHRcdC8+XG5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXNlY3Rpb24taGVhZC13cmFwXCI+XG5cdFx0XHRcdFx0PEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHQ8UmljaFRleHRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG5cdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0XHRcdFx0a2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJUaXRsZX1cblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3RpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRpdGxlOiB2YWx1ZX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0XHRcdFx0a2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9CU0hlYWRlcj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdF07XG5cdH1cbn1cblxuXG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCAgaWNvbnMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zJztcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0Z2V0Rm9udFNpemVDbGFzcyxcblx0Z2V0Q29sb3JDbGFzc05hbWVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzID17XG5cdC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzXG59O1xuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuXHR0aXRsZTogX18oICdQcmljZSBUaXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuXHRjYXRlZ29yeSxcblx0aWNvbjogaWNvbnMuc2VjdGlvbkhlYWRlcixcblx0YXR0cmlidXRlcyxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcblx0a2V5d29yZHM6IFtcblx0XHRfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcblx0XHRfXyggJ3RpdGxlJywgJ2Jsb2Nrc3BhcmUnICksXG5cdFx0X18oICdzaG9wJywgJ2Jsb2Nrc3BhcmUnIClcblx0XSxcblxuXHQvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcblx0ZWRpdDogRWRpdCxcblxuXHQvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcblx0c2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG5cdFx0Y29uc3Qge1xuXHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0aGVhZGVyVGl0bGUsXG5cdFx0XHRoZWFkZXJTdWJUaXRsZVxuXHRcdH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuXG5cdFx0Y29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuXHRcdFx0Li4uZGFzaENvbG9ycyhwcm9wcy5hdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCB0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi5zdWJ0aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuXHRcdHJldHVybiAoXG5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcCc+XG5cdFx0XHRcdFx0PEJTSGVhZGVyIHsuLi5wcm9wc30+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJUaXRsZSAmJlxuXG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dC5Db250ZW50XG5cdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17dGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclRpdGxlfVxuXG5cdFx0XHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0XHR7aGVhZGVyU3ViVGl0bGUgJiZcblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0LkNvbnRlbnRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwicFwiXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvQlNIZWFkZXI+XG5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cbn0pO1xuIiwiXG5pbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgRm9udFNpemVQaWNrZXIsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIENvbnRyYXN0Q2hlY2tlcixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vLyBBcHBseSBmYWxsYmFjayBzdHlsZXNcbmNvbnN0IGFwcGx5RmFsbGJhY2tTdHlsZXMgPSB3aXRoRmFsbGJhY2tTdHlsZXMoICggbm9kZSwgb3duUHJvcHMgKSA9PiB7XG4gICAgY29uc3QgeyB0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvciwgZm9udFNpemUsIGN1c3RvbUZvbnRTaXplIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3I6IHRleHRDb2xvciB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogY29tcHV0ZWRTdHlsZXMuY29sb3IsXG4gICAgICAgIGZhbGxiYWNrRm9udFNpemU6IGZvbnRTaXplIHx8IGN1c3RvbUZvbnRTaXplIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBwYXJzZUludCggY29tcHV0ZWRTdHlsZXMuZm9udFNpemUgKSB8fCB1bmRlZmluZWRcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzaG93VGVybSxcbiAgICAgICAgICAgICAgICBzaG93Q3VycmVuY3ksXG4gICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXsgX18oICdCbG9jayBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnU2hvdyBjdXJyZW5jeSBzeW1ib2wnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgc2hvd0N1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2hvd0N1cnJlbmN5OiAhIHNob3dDdXJyZW5jeSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHsgc2hvd0N1cnJlbmN5ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdDdXJyZW5jeSBTeW1ib2wnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGN1cnJlbmN5OiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdTaG93IHByaWNpbmcgZHVyYXRpb24nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXsgc2hvd1Rlcm0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBzaG93VGVybTogISBzaG93VGVybSB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHsgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ1ByaWNpbmcgRHVyYXRpb24nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdGVybSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGVybTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17IFtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNldFRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250cmFzdENoZWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1RleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17IGZvbnRTaXplLnNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdSaWdodCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdCb3R0b20gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXsgcGFkZGluZ0xlZnQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdMZWZ0IH0pIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQWxpZ25tZW50VG9vbGJhcixcbiAgICBCbG9ja0NvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIHByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5LFxuICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgc2hvd1Rlcm0sXG4gICAgICAgICAgICAgICAgc2hvd0N1cnJlbmN5LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAvLyBTZXR1cCB3cmFwcGVyIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc1dyYXBwZXJOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXByaWNlLXdyYXAnOiB0cnVlLFxuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgWyBiYWNrZ3JvdW5kQ29sb3IuY2xhc3MgXTogYmFja2dyb3VuZENvbG9yLmNsYXNzLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy1oYXMtY3VycmVuY3knOiBzaG93Q3VycmVuY3lcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0dXAgcHJpY2UgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgZWRpdENsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZSc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplLmNsYXNzIF06IGZvbnRTaXplLmNsYXNzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHdyYXBwZXIgc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRXcmFwU3R5bGVzID0ge1xuICAgICAgICAgICAgdGV4dEFsaWduOnNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvci5jb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiB0ZXh0Q29sb3IuY29sb3I/dGV4dENvbG9yLmNvbG9yOlwiI2FmMDAwMFwiLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgcHJpY2Ugc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICBmb250U2l6ZTogZm9udFNpemUuc2l6ZSA/IGZvbnRTaXplLnNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgY3VycmVuY3kgc3R5bGVzXG4gICAgICAgIHZhciBjdXJyZW5jeVNpemUgPSBNYXRoLmZsb29yKCBmb250U2l6ZS5zaXplIC8gMi41ICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyBjdXJyZW5jeVNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgdGVybSBzdHlsZXNcbiAgICAgICAgdmFyIHRlcm1TaXplID0gTWF0aC5mbG9vciggZm9udFNpemUuc2l6ZSAvIDIuNSApO1xuICAgICAgICBjb25zdCB0ZXJtU3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyB0ZXJtU2l6ZSArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHNlY3Rpb25BbGlnbm1lbnQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIG5leHRBbGlnbiApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgc2VjdGlvbkFsaWdubWVudDogbmV4dEFsaWduIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzV3JhcHBlck5hbWUgPyBlZGl0Q2xhc3NXcmFwcGVyTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgZWRpdFdyYXBTdHlsZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtUHJvcD1cIm9mZmVyc1wiIGl0ZW1TY29wZSBpdGVtVHlwZT1cImh0dHA6Ly9zY2hlbWEub3JnL09mZmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNob3dDdXJyZW5jeSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJwcmljZUN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9eyBfXyggJyQnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBjdXJyZW5jeTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtY3VycmVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGN1cnJlbmN5U3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJvcD1cInByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnNDknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcHJpY2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBwcmljZTogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgZWRpdFN0eWxlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdGVybSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICcvbW8nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IHRlcm06IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcmljaW5nLXRhYmxlLXRlcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IHRlcm1TdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aEZvbnRTaXplcyggJ2ZvbnRTaXplJyApLFxuICAgIHdpdGhDb2xvcnMoICdiYWNrZ3JvdW5kQ29sb3InLCB7IHRleHRDb2xvcjogJ2NvbG9yJyB9KVxuXSkoIEVkaXQgKTtcbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgZ2V0Rm9udFNpemVDbGFzcyxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7bmFtZSwgY2F0ZWdvcnksYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ1ByaWNlJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIHByb2R1Y3QgcHJpY2UgY29tcG9uZW50IHdpdGggc2NoZW1hIG1hcmt1cC4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOiAnY2FydCcsXG4gICAgY2F0ZWdvcnksXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICd0aXRsZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDpFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBwcmljZSxcbiAgICAgICAgICAgIGN1cnJlbmN5LFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBjdXN0b21Gb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbVRleHRDb2xvcixcbiAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICBzaG93VGVybSxcbiAgICAgICAgICAgIHNob3dDdXJyZW5jeSxcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IHRleHRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnY29sb3InLCB0ZXh0Q29sb3IgKTtcbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgd3JhcHBlciBjbGFzcyBuYW1lc1xuICAgICAgICBjb25zdCB3cmFwcGVyQ2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZS13cmFwJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctaGFzLWN1cnJlbmN5Jzogc2hvd0N1cnJlbmN5ICYmIGN1cnJlbmN5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1wcmljZSc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzc1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXR1cCBzdHlsZXNcbiAgICAgICAgY29uc3Qgd3JhcHBlclN0eWxlcyA9IHtcbiAgICAgICAgICAgIHRleHRBbGlnbjpzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ2xhc3MgPyB1bmRlZmluZWQgOiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjb2xvcjogdGV4dENvbG9yID8gdGV4dENvbG9yIDogJyNhZjAwMDAnLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemVcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXR1cCBjdXJyZW5jeSBzdHlsZXNcbiAgICAgICAgdmFyIGNvbXB1dGVkRm9udFNpemUgPSBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemU7XG4gICAgICAgIHZhciBjdXJyZW5jeVNpemUgPSBNYXRoLmZsb29yKCBjb21wdXRlZEZvbnRTaXplIC8gMi41ICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGNvbXB1dGVkRm9udFNpemUgPyBjdXJyZW5jeVNpemUgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgdGVybSBzdHlsZXNcbiAgICAgICAgdmFyIHRlcm1TaXplID0gTWF0aC5mbG9vciggY29tcHV0ZWRGb250U2l6ZSAvIDIuNSApO1xuICAgICAgICBjb25zdCB0ZXJtU3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGNvbXB1dGVkRm9udFNpemUgPyB0ZXJtU2l6ZSArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTYXZlIHRoZSBibG9jayBtYXJrdXAgZm9yIHRoZSBmcm9udCBlbmRcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyB3cmFwcGVyQ2xhc3NOYW1lID8gd3JhcHBlckNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyB3cmFwcGVyU3R5bGVzIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1Qcm9wPVwib2ZmZXJzXCIgaXRlbVNjb3BlIGl0ZW1UeXBlPVwiaHR0cDovL3NjaGVtYS5vcmcvT2ZmZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSAmJiBzaG93Q3VycmVuY3kgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJwcmljZUN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtY3VycmVuY3lcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsgY3VycmVuY3lTdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwicHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBwcmljZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7IHRlcm0gJiYgc2hvd1Rlcm0gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyB0ZXJtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByaWNpbmctdGFibGUtdGVybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyB0ZXJtU3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSxcbn0pO1xuIiwiaW1wb3J0IFBhZGRpbmcgZnJvbSBcIi4vLi4vLi4vLi4vLi4vdXRpbHMvcGFkZGluZ1wiO1xuaW1wb3J0IEJTTGlzdEljb25TZXR0aW5ncyAgZnJvbSAnLi4vLi4vLi4vLi4vbGlzdC9jb21wb25lbnRzL2ljb24tc2V0dGluZ3MnO1xuXG4vKipcbiAqIEluc3BlY3RvciBDb250cm9sc1xuICovXG5cblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgRm9udFNpemVQaWNrZXIsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIENvbnRyYXN0Q2hlY2tlcixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3MsXG4gICAgQ29sb3JQYWxldHRlXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICB3aXRoRmFsbGJhY2tTdHlsZXMsXG4gICAgUGFuZWxCb2R5LFxuICAgIFBhbmVsUm93LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgQmFzZUNvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLy8gQXBwbHkgZmFsbGJhY2sgc3R5bGVzXG5jb25zdCBhcHBseUZhbGxiYWNrU3R5bGVzID0gd2l0aEZhbGxiYWNrU3R5bGVzKCAoIG5vZGUsIG93blByb3BzICkgPT4ge1xuICAgIGNvbnN0IHsgdGV4dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IsIGZvbnRTaXplLCBjdXN0b21Gb250U2l6ZSB9ID0gb3duUHJvcHMuYXR0cmlidXRlcztcbiAgICBjb25zdCBlZGl0YWJsZU5vZGUgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlcyA9IGVkaXRhYmxlTm9kZSA/IGdldENvbXB1dGVkU3R5bGUoIGVkaXRhYmxlTm9kZSApIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBjb21wdXRlZFN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIGZhbGxiYWNrVGV4dENvbG9yOiB0ZXh0Q29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmNvbG9yLFxuICAgICAgICBmYWxsYmFja0ZvbnRTaXplOiBmb250U2l6ZSB8fCBjdXN0b21Gb250U2l6ZSB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogcGFyc2VJbnQoIGNvbXB1dGVkU3R5bGVzLmZvbnRTaXplICkgfHwgdW5kZWZpbmVkXG4gICAgfTtcbn0pO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlLFxuICAgICAgICAgICAgICAgIGNvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gQm9yZGVyIHN0eWxlc1xuICAgICAgICBjb25zdCBib3JkZXJTdHlsZXMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1ub25lJywgbGFiZWw6IF9fKCAnTm9uZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItc29saWQnLCBsYWJlbDogX18oICdTb2xpZCcgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItZG90dGVkJywgbGFiZWw6IF9fKCAnRG90dGVkJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1kYXNoZWQnLCBsYWJlbDogX18oICdEYXNoZWQnICkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5IHRpdGxlPXtfXygnQ3VzdG9tIExpc3QgU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuICAgICAgICAgICAgICAgICAgICA8QlNMaXN0SWNvblNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VOYW1lPXtuYW1lID0+IHNldEF0dHJpYnV0ZXMoeyBuYW1lIH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0VHlwZT17bGlzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUxpc3RTdHlsZT17bGlzdFR5cGUgPT4gc2V0QXR0cmlidXRlcyh7bGlzdFR5cGV9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyTGlzdFN0eWxlPXtvcmRlckxpc3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlT3JkZXJMaXN0U3R5bGU9e29yZGVyTGlzdFN0eWxlID0+IHNldEF0dHJpYnV0ZXMoe29yZGVyTGlzdFN0eWxlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQ29sb3I9e2NvbG9yPT5zZXRBdHRyaWJ1dGVzKHtjb2xvcn0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogc2V0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbnRyYXN0Q2hlY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4ue1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsgZm9udFNpemUuc2l6ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wPXsgcGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ1RvcCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJpZ2h0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVSaWdodD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0PXsgcGFkZGluZ1JpZ2h0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ1JpZ2h0PXsgcGFkZGluZ1JpZ2h0ID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nUmlnaHQgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nQm90dG9tIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVmdCBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlTGVmdD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ9eyBwYWRkaW5nTGVmdCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nTGVmdCB9KSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgYXBwbHlGYWxsYmFja1N0eWxlcyxcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggSW5zcGVjdG9yICk7XG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgd2l0aEZvbnRTaXplcyxcbiAgICB3aXRoQ29sb3JzLFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXJcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgbGlzdFR5cGUsXG4gICAgICAgICAgICAgICAgb3JkZXJMaXN0U3R5bGUsXG4gICAgICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICBsZXQgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgICAgICAgICBpZihsaXN0VHlwZT09J3VsJyl7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID1uYW1lXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYobGlzdFR5cGU9PSdvbCcpe1xuICAgICAgICAgICAgICAgICAgICBpZihvcmRlckxpc3RTdHlsZSA9PSAnYmxvY2tzcGFyZS1zdHlsZTInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc05hbWUgPSBjbGFzc25hbWVzKHtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtZmVhdHVyZXMnOiB0cnVlLFxuICAgICAgICAgICAgWyBmb250U2l6ZS5jbGFzcyBdOiBmb250U2l6ZS5jbGFzcyxcbiAgICAgICAgICAgICdoYXMtdGV4dC1jb2xvcic6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICdoYXMtYmFja2dyb3VuZCc6IGJhY2tncm91bmRDb2xvci5jb2xvcixcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENvbG9yLmNsYXNzIF06IGJhY2tncm91bmRDb2xvci5jbGFzcyxcbiAgICAgICAgICAgIFsgdGV4dENvbG9yLmNsYXNzIF06IHRleHRDb2xvci5jbGFzcyxcbiAgICAgICAgICAgIFsgYm9yZGVyU3R5bGUgXTogYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICBbICdibG9ja3NwYXJlLWxpc3QtYm9yZGVyLXdpZHRoLScgKyBib3JkZXJXaWR0aCBdOiBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIFtjbGFzc2VzTmFtZV06Y2xhc3Nlc05hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG4gICAgICAgICAgICB0ZXh0QWxpZ246IHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBmb250U2l6ZTogZm9udFNpemUuc2l6ZSA/IGZvbnRTaXplLnNpemUgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICBjb2xvcjogY29sb3I/Y29sb3I6JyM2ZDZkNmQnLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c2VjdGlvbkFsaWdubWVudDogdmFsdWV9KTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9CbG9ja0NvbnRyb2xzPixcblxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICBcImJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtbGlzdC13cmFwXCJcbiAgICAgICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17bGlzdFR5cGU9PSdub25lJz8ndWwnOmxpc3RUeXBlfVxuICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9XCJsaVwiXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnQWRkIGEgcHJvZHVjdCBmZWF0dXJlJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgZmVhdHVyZXMgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgZmVhdHVyZXM6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBlZGl0U3R5bGVzIH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggRWRpdCApO1xuIiwiaW1wb3J0ICcuLi8uLi8uLi8uLi9saXN0L3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7XG4gICAgUmljaFRleHQsXG4gICAgZ2V0Rm9udFNpemVDbGFzcyxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNvbnN0IHtuYW1lLGNhdGVnb3J5LGF0dHJpYnV0ZXN9ID0gbWV0YWRhdGE7XG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ1ByaWNlIEZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIHByb2R1Y3QgZmVhdHVyZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmljb25saXN0LFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtcHJpY2luZy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ3ByaWNpbmcgdGFibGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICdmZWF0dXJlcycsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ3Nob3AnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICAvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcbiAgICBlZGl0OiBFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgICBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjdXN0b21UZXh0Q29sb3IsXG4gICAgICAgICAgICBib3JkZXJTdHlsZSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGxpc3RUeXBlLFxuICAgICAgICAgICAgb3JkZXJMaXN0U3R5bGUsXG4gICAgICAgICAgICBjb2xvclxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBsZXQgY2xhc3Nlc05hbWUgPSAnJztcbiAgICAgICAgaWYobGlzdFR5cGU9PSd1bCcpe1xuICAgICAgICAgICAgY2xhc3Nlc05hbWUgPW5hbWVcbiAgICAgICAgfWVsc2UgaWYobGlzdFR5cGU9PSdvbCcpe1xuICAgICAgICAgICAgaWYob3JkZXJMaXN0U3R5bGUgPT0gJ2Jsb2Nrc3BhcmUtc3R5bGUyJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXNOYW1lID0gb3JkZXJMaXN0U3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmKG9yZGVyTGlzdFN0eWxlID09ICdibG9ja3NwYXJlLXN0eWxlMycpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzTmFtZSA9IG9yZGVyTGlzdFN0eWxlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgY2xhc3Nlc05hbWUgPSBvcmRlckxpc3RTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBjbGFzc2VzTmFtZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IHRleHRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnY29sb3InLCB0ZXh0Q29sb3IgKTtcbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJpY2luZy10YWJsZS1mZWF0dXJlcyc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzcyxcbiAgICAgICAgICAgIFsgdGV4dENsYXNzIF06IHRleHRDbGFzcyxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcbiAgICAgICAgICAgIFsgYm9yZGVyU3R5bGUgXTogYm9yZGVyU3R5bGUsXG4gICAgICAgICAgICBbICdibG9ja3NwYXJlLWxpc3QtYm9yZGVyLXdpZHRoLScgKyBib3JkZXJXaWR0aCBdOiBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIFtjbGFzc2VzTmFtZV06Y2xhc3Nlc05hbWVcbiAgICAgICAgfSk7XG5cblxuXG5cbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudCxcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvcj9jb2xvcjonIzZkNmQ2ZCcsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPyBib3JkZXJDb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgXCJibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWxpc3Qtd3JhcFwiXG4gICAgICAgICAgICApfT5cbiAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgdGFnTmFtZT17bGlzdFR5cGU9PSdub25lJz8ndWwnOmxpc3RUeXBlfVxuICAgICAgICAgICAgICAgIGl0ZW1Qcm9wPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXsgZmVhdHVyZXMgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiLyoqXG4gKiBJbnNwZWN0b3IgQ29udHJvbHNcbiAqIEZvbnQgc2l6ZSwgY29sb3IsIGJhY2tncm91bmQgY29sb3JcbiAqIFRoaXMgaXMgdXNlZCBmb3IgbXVsdGlwbGUgcHJpY2luZyB0YWJsZSBjb21wb25lbnRzIHVzaW5nIHRoZSBzYW1lIGluc3BlY3RvciBzZXR0aW5nc1xuICovXG5cblxuXG5pbXBvcnQgQnV0dG9uU2V0dGluZ3MgZnJvbSAnLi8uLi8uLi8uLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzJztcbmltcG9ydCBQYWRkaW5nIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nXCI7XG5pbXBvcnQgR3JhZGllbnRDb2xvcnMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbXBvbmVudC9ncmFkaWVudFwiO1xuaW1wb3J0IEJTYnV0dG9uU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uLy4uL2J1dHRvbi9idXR0b24tc2V0dGluZ3NcIjtcblxuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICB3aXRoRmFsbGJhY2tTdHlsZXMsXG4gICAgUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wsXG59ID0gd3AuY29tcG9uZW50cztcblxuLy8gQXBwbHkgZmFsbGJhY2sgc3R5bGVzXG5jb25zdCBhcHBseUZhbGxiYWNrU3R5bGVzID0gd2l0aEZhbGxiYWNrU3R5bGVzKCAoIG5vZGUsIG93blByb3BzICkgPT4ge1xuICAgIGNvbnN0IHsgYmFja2dyb3VuZENvbG9yIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvclxuICAgIH07XG59KTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IxLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjIsXG4gICAgICAgICAgICAgICAgZ3JhZGllbnRBbmdsZSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMSxcbiAgICAgICAgICAgICAgICBjb2xvckxvY2F0aW9uMixcbiAgICAgICAgICAgICAgICBidG5Gb250V2VpZ2h0LFxuICAgICAgICAgICAgICAgIGJ0bkJvcmRlcldpZHRoXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdCdXR0b24gU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxCU2J1dHRvblNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW4gaW4gbmV3IHdpbmRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uVGFyZ2V0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldD17IGJ1dHRvblRhcmdldCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvblRhcmdldD17IHZhbHVlID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRhcmdldDogISBidXR0b25UYXJnZXQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgPSB7ZW5hYmxlR3JhZGllbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50ID17IGVuYWJsZUdyYWRpZW50ID0+IHNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TaXplPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaXplPXsgYnV0dG9uU2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2l6ZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBTaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2hhcGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZT17IGJ1dHRvblNoYXBlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU2hhcGUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkJhY2tncm91bmRDb2xvcj17IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJ1dHRvbkNvbG9yPXsgYnV0dG9uQmFja2dyb3VuZENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gdGV4dCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGV4dENvbG9yPXsgYnV0dG9uVGV4dENvbG9yID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25UZXh0Q29sb3IgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TdHlsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT17YnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJvcmRlclN0eWxlPXtidXR0b25TdHlsZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uU3R5bGUgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uY2hhbmdlQm9yZGVyQ29sb3I9e2JvcmRlckNvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2JvcmRlckNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcj17Ym9yZGVyQnRuVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJCdG5UZXh0Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuQm9yZGVyV2lkdGg9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuQm9yZGVyV2lkdGg9e2J0bkJvcmRlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9IHtidG5Cb3JkZXJXaWR0aCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Cb3JkZXJXaWR0aH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdG5Gb250V2VpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHQgPT4gc2V0QXR0cmlidXRlcyh7YnRuRm9udFdlaWdodH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB7ICBidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlIEdyYWRpZW50JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnQ6ICFlbmFibGVHcmFkaWVudH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgJiYgYnV0dG9uU3R5bGU9PT0nbm9uZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhZGRpbmdcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVUb3A9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nVG9wPXsgcGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ1RvcCB9KSB9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90dG9tIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVCb3R0b209eyB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHsgcGFkZGluZ0JvdHRvbSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJyApXG5dKSggSW5zcGVjdG9yICk7XG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IGJ1dHRvblN0eWxlT3B0aW9uIGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcyc7XG4vLyBJbXBvcnQgQnV0dG9uIHNldHRpbmdzXG5pbXBvcnQgQlNCdXR0b24gZnJvbSAnLi8uLi8uLi8uLi8uLi9idXR0b24vZWRpdCc7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQWxpZ25tZW50VG9vbGJhcixcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIFVSTElucHV0XG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBJY29uQnV0dG9uLFxuICAgIERhc2hpY29uXG59ID0gd3AuY29tcG9uZW50cztcblxuY2xhc3MgQnV0dG9uRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGVkaXRDbGFzc05hbWUgPSBjbGFzc25hbWVzKHtcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtYnV0dG9uJzogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXR1cCBzdHlsZXNcbiAgICAgICAgY29uc3QgZWRpdFN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IHBhZGRpbmdMZWZ0ID8gcGFkZGluZ0xlZnQgKyAncHgnIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYnRuU3R5bGVzID17XG4gICAgICAgICAgICAuLi5idXR0b25TdHlsZU9wdGlvbihhdHRyaWJ1dGVzKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scyBrZXk9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBzZWN0aW9uQWxpZ25tZW50IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCBuZXh0QWxpZ24gKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHNlY3Rpb25BbGlnbm1lbnQ6IG5leHRBbGlnbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGVkaXRDbGFzc05hbWUgPyBlZGl0Q2xhc3NOYW1lIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBlZGl0U3R5bGVzIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnRoaXMucHJvcHMgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17IF9fKCAnQnV0dG9uIHRleHQuLi4nLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9eyBbXSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2J0blN0eWxlcyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHQ6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIHsgaXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImZvcm0tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgYGJsb2Nrcy1idXR0b25fX2lubGluZS1saW5rIGJsb2Nrc3BhcmUtYnV0dG9uLSR7c2VjdGlvbkFsaWdubWVudH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25Vcmw6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0b3ItYnJlYWtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQXBwbHknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBCdXR0b25FZGl0ICk7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEJ1dHRvbkVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCAgaWNvbnMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zJztcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uLy4uLy4uLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzXCI7XG5pbXBvcnQgYnV0dG9uQXR0cmlidXRlcyBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b25cIjtcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IHJlZ2lzdGVyQmxvY2tUeXBlIH0gPSB3cC5ibG9ja3M7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBnZXRDb2xvckNsYXNzTmFtZVxufSA9IHdwLmJsb2NrRWRpdG9yO1xuIGNvbnN0IHtuYW1lLGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG4gY29uc3QgYXR0cmlidXRlcyA9e1xuICAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgICAgICAgLi4uYnV0dG9uQXR0cmlidXRlc1xuIH1cblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5yZWdpc3RlckJsb2NrVHlwZSggbmFtZSwge1xuICAgIHRpdGxlOiBfXyggJ0J1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgIGRlc2NyaXB0aW9uOiBfXyggJ0FkZCBidXR0b24gd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmJ1dHRvbixcbiAgICBhdHRyaWJ1dGVzLFxuICAgIHBhcmVudDogWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXByaWNpbmctaW5uZXInIF0sXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oICdwcmljaW5nIGJ1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2J1dHRvbicsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2xpbmsnLCAnYmxvY2tzcGFyZScgKVxuICAgIF0sXG5cbiAgICBlZGl0OkJ1dHRvbkVkaXQsXG4gICAgc2F2ZTpmdW5jdGlvbiggcHJvcHMpe1xuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBjdXN0b21CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnYmFja2dyb3VuZC1jb2xvcicsIGJhY2tncm91bmRDb2xvciApO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yIHx8IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXByaWNpbmctdGFibGUtYnV0dG9uJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzc1xuICAgICAgICB9KTtcblxuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9eyBidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17YnRuU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgYnV0dG9uVGV4dCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB9XG4gICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH0sXG59KTtcbiIsIi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcblxuICAgIFBhbmVsQm9keSxcbiAgICBUZXh0Q29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgY2xpZW50c1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBpY29uT3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi1vbmx5JywgbGFiZWw6IF9fKCcgSWNvbiBvbmx5JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXRleHRzLW9ubHknLCBsYWJlbDogX18oJ1RleHRzIG9ubHknLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtaWNvbi13aXRoLXRleHRzJywgbGFiZWw6IF9fKCdJY29uIHdpdGggVGV4dHMnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBpY29uQ29sb3JPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJywgbGFiZWw6IF9fKCcgT2ZmaWNpYWwnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2N1c3RvbScsIGxhYmVsOiBfXygnQ3VzdG9tJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBpY29uU2hhcGVzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zcXVhcmUnLCBsYWJlbDogX18oJ1NxdWFyZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1jaXJjbGUnLCBsYWJlbDogX18oJ0NpcmNsZScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1yb3VuZGVkJywgbGFiZWw6IF9fKCdSb3VuZGVkIFNxdWFyZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGljb25TaXplcyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tc21hbGwnLCBsYWJlbDogX18oJ1NtYWxsJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLW1lZGl1bScsIGxhYmVsOiBfXygnTWVkaXVtJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWxhcmdlJywgbGFiZWw6IF9fKCdMYXJnZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGljb25GaWxscyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tc29saWQnLCBsYWJlbDogX18oJ1NvbGlkJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWJvcmRlcicsIGxhYmVsOiBfXygnQm9yZGVyJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLW5vbmUnLCBsYWJlbDogX18oJ05vbmUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2Vmb250Y29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjdXN0b21mb250Q29sb3JPcHRpb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlYmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1NvY2lhbCBJY29uIE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdTaGFwZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtpY29uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1NpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aWNvblNpemVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2l6ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2J1dHRvblNpemVzOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdTb2NpYWwgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydibG9ja3NwYXJlLWhpZGUtcXVlcnknfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdGYWNlYm9vaycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5mYWNlYm9va1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZmFjZWJvb2tUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuZmFjZWJvb2tVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9va1VybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdUd2l0dGVyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMudHdpdHRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7dHdpdHRlclRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdVUkwnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnR3aXR0ZXJVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHt0d2l0dGVyVXJsOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdJbnN0YWdyYW0nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5pbnN0YWdyYW1UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2luc3RhZ3JhbVRpdGxlOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdVUkwnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLmluc3RhZ3JhbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2luc3RhZ3JhbVVybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnWW91VHViZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy55b3V0dWJlVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHt5b3V0dWJlVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMueW91dHViZVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3lvdXR1YmVVcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTGlua2VkSW4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1VSTCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtsaW5rZWRpblVybDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnUGludGVyZXN0JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMucGludGVyZXN0VGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3RUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnVVJMJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXR0cmlidXRlcy5waW50ZXJlc3RVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3RVcmw6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmNvbnN0IHtDb21wb25lbnQsIEZyYWdtZW50fSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5cbmNvbnN0IHtcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU29jaWFsTGlua3MgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGxldCBjb2xvclN0eWxlcyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaWNvbkNvbG9yT3B0aW9uICE9ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InKSB7XG4gICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21mb250Q29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbG9yU3R5bGVzPXtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcblxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1zb2NpYWwtbGlua3MnLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pY29uQ29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNoYXBlcyxcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uU2l6ZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbk9wdGlvbnMsXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkZpbGxzLFxuXG4gICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va1VybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2tVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1mYWNlYm9vay1mJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5saW5rZWRpblVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMubGlua2VkaW5Vcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1saW5rZWRpbic+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluVGl0bGV9XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlclVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlclVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXR3aXR0ZXInPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXJUaXRsZX1cblx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbnN0YWdyYW1VcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmluc3RhZ3JhbVVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLWluc3RhZ3JhbSc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW5zdGFncmFtVGl0bGV9XG5cdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmVVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmVVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS15b3V0dWJlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy55b3V0dWJlVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0VXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5waW50ZXJlc3RVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1waW50ZXJlc3QnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR1bWJsclVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHVtYmxyVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtdHVtYmxyJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy50dW1ibHJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy50ZWxlZ3JhbVVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudGVsZWdyYW1Vcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS10ZWxlZ3JhbSc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudGVsZWdyYW1UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYXR0cmlidXRlcy5yZWRkaXRVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnJlZGRpdFVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXJlZGRpdCc+PC9pPjxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucmVkZGl0VGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmxpY2tyVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5mbGlja3JVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1mbGlja3InPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmZsaWNrclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmRyaWJiYmxlVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5kcmliYmJsZVVybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLWRyaWJiYmxlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5kcmliYmJsZVRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnZrVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy52a1VybH0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT0nZmFiIGZhLXZrJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy52a1RpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnllbHBVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnllbHBVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS15ZWxwJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy55ZWxwVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMucXVvcmFVcmwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnF1b3JhVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtcXVvcmEnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnF1b3JhVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMubWVldHVwVXJsICYmXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YSBzdHlsZT17Y29sb3JTdHlsZXN9IGhyZWY9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5tZWV0dXBVcmx9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhYiBmYS1tZWV0dXAnPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLm1lZXR1cFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmdpdGh1YlVybCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZ2l0aHViVXJsfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPSdmYWIgZmEtZ2l0aHViJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5naXRodWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIClcbiAgICB9XG59XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9jb21wb25lbnRzL2luc3BlY3RvclwiO1xuXG5pbXBvcnQgU29jaWFsTGlua3MgZnJvbSBcIi4vY29tcG9uZW50cy9zb2NpYWxcIjtcblxuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cblxuY29uc3Qge1xuXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBBbGlnbm1lbnRUb29sYmFyXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNvY2lhbEJsb2NrTGlua3MgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c2VjdGlvbkFsaWdubWVudDogdmFsdWV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrcycsXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNvY2lhbC13cmFwcGVyJ1xuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnNlY3Rpb25BbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgIH19PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zZWN0aW9uLWhlYWQtd3JhcFwiPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTb2NpYWxMaW5rcyB7Li4udGhpcy5wcm9wc30vPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCJpbXBvcnQgU29jaWFsTGlua3MgIGZyb20gJy4vc29jaWFsJztcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgcmV0dXJuIChcblxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuc2VjdGlvbkFsaWdubWVudFxuICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc29jaWFsLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgIDxTb2NpYWxMaW5rcyB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuaW1wb3J0IFNvY2lhbEJsb2NrTGlua3MgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBTYXZlIGZyb20gJy4vY29tcG9uZW50cy9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbmNvbnN0IHtuYW1lLGNhdGVnb3J5LGF0dHJpYnV0ZXN9ID0gbWV0YWRhdGFcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgU29jaWFsIExpbmtzJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnNvY2lhbGxpbmtzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3NvY2lhbCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdsaW5rcycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzaGFyZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6e1xuICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgIGZhY2Vib29rVXJsOlwiaHR0cHM6Ly9mYWNlYm9vay5jb21cIixcbiAgICAgICAgICAgIHR3aXR0ZXJVcmw6XCJodHRwczovL3R3aXR0ZXIuY29tXCIsXG4gICAgICAgICAgICBsaW5rZWRpblVybDogXCJodHRwczovL3d3dy5saW5rZWRpbi5jb20vXCIsXG4gICAgICAgICAgICBpbnN0YWdyYW1Vcmw6XCJodHRwczovL2luc3RhZ3JhbS5jb21cIlxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBTb2NpYWxCbG9ja0xpbmtzLFxuICAgIHNhdmU6IHByb3BzID0+IHtcbiAgICAgICAgcmV0dXJuIDxTYXZlIHsgLi4ucHJvcHMgfSAvPjtcbiAgICB9LFxufSk7IiwiLyoqXG4gKiBJbnNwZWN0b3IgQ29udHJvbHNcbiAqL1xuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNsaWVudHNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgIGNvbnN0IGljb25PcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLW9ubHknLCBsYWJlbDogX18oJyBJY29uIG9ubHknLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtdGV4dHMtb25seScsIGxhYmVsOiBfXygnVGV4dHMgb25seScsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1pY29uLXdpdGgtdGV4dHMnLCBsYWJlbDogX18oJ0ljb24gd2l0aCBUZXh0cycsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGljb25Db2xvck9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InLCBsYWJlbDogX18oJyBPZmZpY2lhbCcsICdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCdDdXN0b20nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGljb25TaGFwZXMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNxdWFyZScsIGxhYmVsOiBfXygnU3F1YXJlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLWNpcmNsZScsIGxhYmVsOiBfXygnQ2lyY2xlJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXJvdW5kZWQnLCBsYWJlbDogX18oJ1JvdW5kZWQgU3F1YXJlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaWNvblNpemVzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zbWFsbCcsIGxhYmVsOiBfXygnU21hbGwnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbWVkaXVtJywgbGFiZWw6IF9fKCdNZWRpdW0nLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbGFyZ2UnLCBsYWJlbDogX18oJ0xhcmdlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaWNvbkZpbGxzID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zb2xpZCcsIGxhYmVsOiBfXygnU29saWQnLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tYm9yZGVyJywgbGFiZWw6IF9fKCdCb3JkZXInLCAnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtc29jaWFsLWljb24tbm9uZScsIGxhYmVsOiBfXygnTm9uZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2Vmb250Y29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjdXN0b21mb250Q29sb3JPcHRpb246IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlYmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7Y3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnU29jaWFsIEljb24gT3B0aW9uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdTaGFwZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtpY29uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2hhcGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1NpemUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17aWNvblNpemVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuYnV0dG9uU2l6ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2J1dHRvblNpemVzOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1NvY2lhbCBTaGFyaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnRmFjZWJvb2snLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9nZ2xlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXshIXRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9vazogIXRoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9va30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5mYWNlYm9vayAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMuZmFjZWJvb2tUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2ZhY2Vib29rVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnVHdpdHRlcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7dHdpdHRlcjogIXRoaXMucHJvcHMuYXR0cmlidXRlcy50d2l0dGVyfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnR3aXR0ZXJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3R3aXR0ZXJUaXRsZTogdmFsdWV9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ1BpbnRlcmVzdCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtwaW50ZXJlc3Q6ICF0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnBpbnRlcmVzdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthdHRyaWJ1dGVzLnBpbnRlcmVzdFRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7cGludGVyZXN0VGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTGlua2VkSW4nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdFbmFibGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluOiAhdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2F0dHJpYnV0ZXMubGlua2VkaW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluVGl0bGU6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuY29uc3Qge1xuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICBsZXQgY29sb3JTdHlsZXMgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbiAhPSAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJykge1xuICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21mb250Q29sb3JPcHRpb24sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tYmFja2dyb3VuZENvbG9yT3B0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sb3JTdHlsZXMgPSB7fVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcblxuICAgICAgICAgICAgLy8gU2hvdyB0aGUgYWxpZ25tZW50IHRvb2xiYXIgb24gZm9jdXNcbiAgICAgICAgICAgIDxCbG9ja0NvbnRyb2xzIGtleT1cImNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMucHJvcHMuYXR0cmlidXRlcy5zZWN0aW9uQWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3NlY3Rpb25BbGlnbm1lbnQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz4sXG5cbiAgICAgICAgICAgIC8vIFNob3cgdGhlIGJsb2NrIGNvbnRyb2xzIG9uIGZvY3VzXG4gICAgICAgICAgICA8SW5zcGVjdG9yIHsuLi50aGlzLnByb3BzfS8+LFxuXG4gICAgICAgICAgICAvLyBTaG93IHRoZSBidXR0b24gbWFya3VwIGluIHRoZSBlZGl0b3JcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IHRoaXMucHJvcHMuYXR0cmlidXRlcy5zZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc29jaWFsLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNvY2lhbC1zaGFyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNoYXBlcyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvblNpemVzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuYnV0dG9uT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbkZpbGxzLFxuICAgICAgICAgICAgICAgICl9PlxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2sgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWZhY2Vib29rJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1mYWNlYm9vay1mXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtc29jaWFsLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHR7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmZhY2Vib29rVGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlciAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc2hhcmUtdHdpdHRlcicgc3R5bGU9e2NvbG9yU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYWIgZmEtdHdpdHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy50d2l0dGVyVGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuYXR0cmlidXRlcy5waW50ZXJlc3QgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLXBpbnRlcmVzdCcgc3R5bGU9e2NvbG9yU3R5bGVzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYWIgZmEtcGludGVyZXN0LXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1zb2NpYWwtdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucGludGVyZXN0VGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMubGlua2VkaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWxpbmtlZGluJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1saW5rZWRpblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy5saW5rZWRpblRpdGxlfVxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnJlZGRpdCAmJlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc2hhcmUtcmVkZGl0JyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhYiBmYS1yZWRkaXQtYWxpZW5cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnYmxvY2tzcGFyZS1zb2NpYWwtdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMucmVkZGl0VGl0bGV9XG5cdFx0XHRcdFx0XHRcdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZW1haWwgJiZcbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXNoYXJlLWVtYWlsJyBzdHlsZT17Y29sb3JTdHlsZXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImZhcyBmYS1lbnZlbG9wZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXNvY2lhbC10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0e3RoaXMucHJvcHMuYXR0cmlidXRlcy5lbWFpbFRpdGxlfVxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCJcbi8vIEltcG9ydFxuaW1wb3J0IEVkaXQgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IGljb25zIGZyb20gXCIuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXhcIjtcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcblxuLy8gQ29tcG9uZW50c1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKCdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc29jaWFsLXNoYXJpbmcnLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBTb2NpYWwgU2hhcmluZycsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgc2hhcmluZyBidXR0b25zIHRvIHlvdXIgcG9zdHMgYW5kIHBhZ2VzLicsICdibG9ja3NwYXJlJyksXG4gICAgaWNvbjogaWNvbnMuc29jaWFsU2hhcmUsXG4gICAgY2F0ZWdvcnk6ICdibG9ja3NwYXJlJyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc29jaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ2xpbmtzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3NoYXJlJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgZmFjZWJvb2s6dHJ1ZSxcbiAgICAgICAgICAgIHR3aXR0ZXI6dHJ1ZSxcbiAgICAgICAgICAgIGxpbmtlZGluOnRydWVcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDogcHJvcHMgPT4ge1xuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICAgICAgPEVkaXQgey4uLnByb3BzfSAvPlxuXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8vIFJlbmRlciB2aWEgUEhQXG4gICAgc2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufSk7XG4iLCJpbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tICcuL2hlYWRlci1zZXR0aW5ncyc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG5cbiAgICBUb2dnbGVDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgaGVhZGVyYm94Q29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgaGVhZGVycGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgaGVhZGVycGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgaGVhZGVybWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIGhlYWRlcm1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBkYXNoQ29sb3IsXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdUb3A9e2hlYWRlcnBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdUb3A9e2hlYWRlcnBhZGRpbmdUb3AgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJwYWRkaW5nVG9wfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnBhZGRpbmdSaWdodD17aGVhZGVycGFkZGluZ1JpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nUmlnaHQ9e2hlYWRlcnBhZGRpbmdSaWdodCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnBhZGRpbmdSaWdodH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJwYWRkaW5nQm90dG9tPXtoZWFkZXJwYWRkaW5nQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJwYWRkaW5nQm90dG9tPXtoZWFkZXJwYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7aGVhZGVycGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJwYWRkaW5nTGVmdD17aGVhZGVycGFkZGluZ0xlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWhlYWRlcnBhZGRpbmdMZWZ0PXtoZWFkZXJwYWRkaW5nTGVmdCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnBhZGRpbmdMZWZ0fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcm1hcmdpblRvcD17aGVhZGVybWFyZ2luVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VoZWFkZXJtYXJnaW5Ub3A9e2hlYWRlcm1hcmdpblRvcCA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcm1hcmdpblRvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJtYXJnaW5Cb3R0b209e2hlYWRlcm1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlaGVhZGVybWFyZ2luQm90dG9tPXtoZWFkZXJtYXJnaW5Cb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVybWFyZ2luQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbj17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJUYWc9e2hlYWRlclRhZ09wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUYWdPcHRpb259KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b209e3RpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3I9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnN1YnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCB0aXRsZUNvbG9yIGZyb20gJy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZSc7XG5pbXBvcnQgIHN1YnRpdGxlQ29sb3IgIGZyb20gJy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZSc7XG5pbXBvcnQgIGRhc2hDb2xvcnMgZnJvbSAnLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2gnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9pbnNwZWN0b3JcIjtcbmltcG9ydCBCU0hlYWRlciBmcm9tICcuL2hlYWRlcnMnO1xuXG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuXG5jb25zdCB7XG4gICAgQmxvY2tDb250cm9scyxcbiAgICBSaWNoVGV4dCxcbiAgICBCbG9ja0FsaWdubWVudFRvb2xiYXIsXG4gICAgQWxpZ25tZW50VG9vbGJhclxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgSWNvbkJ1dHRvbixcbiAgICBEYXNoaWNvbixcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBpc1NlbGVjdGVkXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgIC4uLnN1YnRpdGxlQ29sb3IoYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgICAgIDxBbGlnbm1lbnRUb29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VjdGlvbkFsaWdubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclN1YlRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuIiwiaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlcnMnO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gJy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXInXG5pbXBvcnQgIGRhc2hDb2xvcnMgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2gnO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlJztcbmltcG9ydCAgc3VidGl0bGVDb2xvciAgZnJvbSAnLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IGJveFNoYWRvd0F0dHJpYnV0ZXMgZnJvbSBcIi4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvd1wiO1xuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge1xuXG4gICAgUmljaFRleHRcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuXG5jb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgIC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn07XG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdTZWN0aW9uIEhlYWRlcicsICdibG9ja3NwYXJlJyksXG4gICAgZGVzY3JpcHRpb246IF9fKCdBZGQgeW91ciBZb3VyIEhlYWRlciAnLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLnNlY3Rpb25IZWFkZXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2VjdGlvbicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdoZWFkZXInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGl0bGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc3VidGl0bGUnLCAnYmxvY2tzcGFyZScpLFxuXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbICd3aWRlJywgJ2Z1bGwnLCAnY2VudGVyJyBdXG4gICAgfSxcbiAgICBleGFtcGxlOiB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGNvdmVyOiAnaHR0cHM6Ly9ibG9ja3NwYXJlLmNvbScsXG4gICAgICAgICAgICBhdXRob3I6ICdCbG9ja3NwYXJlJyxcbiAgICAgICAgICAgIHBhZ2VzOiA1MDBcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhbGlnbixcbiAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgaGVhZGVyU3ViVGl0bGUsXG5cblxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKHByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCU0hlYWRlciB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT17aGVhZGVyVGFnT3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9CU0hlYWRlcj5cbiAgICAgICAgKVxuICAgIH1cbn0pOyIsIi8qKlxuICogUHJpY2luZyBCbG9jayBXcmFwcGVyXG4gKi9cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2aWNlcyBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgY29sdW1uc0dhcCxcbiAgICAgICAgICAgICAgICBhbGlnblxuICAgICAgICAgICAgfVxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2UtY29sdW1ucy0nICsgY29sdW1uc1xuICAgICAgICBdLCB7XG4gICAgICAgICAgICBbICdhbGlnbicgKyBhbGlnbiBdOiBhbGlnblxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiB1bmRlZmluZWQgfT5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IE1hcmdpbiBmcm9tICcuLy4uLy4uL3V0aWxzL21hcmdpbic7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFRvb2xiYXIsXG4gICAgQnV0dG9uLFxuICAgIFBhbmVsQm9keSxcbiAgICBQYW5lbFJvdyxcbiAgICBSYW5nZUNvbnRyb2wsXG5cbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc2VydmljZUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgY29sdW1uc0dhcCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tLFxuXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnTnVtYmVyIG9mIENvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGNvbHVtbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoIHZhbHVlICkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uczogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyAyIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0NvbHVtbiBHYXBzJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjb2x1bW5zR2FwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGNvbHVtbnNHYXA6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbj17IDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsgNCB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgQmxvY2tEZXNjcmlwdGlvbixcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgVG9nZ2xlQ29udHJvbCxcbiAgICBQYW5lbEJvZHksXG4gICAgRm9ybVRvZ2dsZSxcbiAgICBSYW5nZUNvbnRyb2wsXG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgcGFkZGluZyxcbiAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgIHhPZmZzZXQsXG4gICAgICAgICAgICB5T2Zmc2V0LFxuICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgIHNwcmVhZCxcbiAgICAgICAgICAgIHNoYWRvd0NvbG9yLFxuICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tXG4gICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBvbkNoYW5nZUJvcmRlckNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGJvcmRlckNvbG9yOiB2YWx1ZSB9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYmFja2dyb3VuZENvbG9yOiB2YWx1ZSB9KTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnU2VydmljZSBDb2x1bW4gUGFkZGluZycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsgcGFkZGluZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49eyAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17IDIwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9eyAxIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuXG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0NvbG9yIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyAoIDAgPCBib3JkZXJXaWR0aCApICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmFja2dyb3VuZCBDb2xvcicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdCbG9jayBHYXBzIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcmdpblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVUb3A9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wPXttYXJnaW5Ub3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gbWFyZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luRW5hYmxlQm90dG9tPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJztcbmltcG9ydCBib3hTaGFkb3dBdHRyaWJ1dGVzIGZyb20gJy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvYm94LXNoYWRvdyc7XG5pbXBvcnQgYm94U2hhZG93U3R5bGVzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvYm94LXNoYWRvd1wiO1xuLy8gSW50ZXJuYXRpb25hbGl6YXRpb25cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vLyBSZWdpc3RlciBibG9ja1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG4vLyBSZWdpc3RlciBlZGl0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIElubmVyQmxvY2tzLFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9sc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgRnJhZ21lbnRcbn0gPSB3cC5lbGVtZW50O1xuXG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFtcbiAgICAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXItdGl0bGUnLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXItZGVzY3JpcHRpb24nLFxuICAgICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZS1pbm5lci1idXR0b24nXG5cbl07XG5jb25zdCB7Y2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn1cblxuLy8gUmVnaXN0ZXIgdGhlIGJsb2NrXG5leHBvcnQgY29uc3Qgc2VydmljZUl0ZW1TZXR0aW5ncyA9IHtcbiAgICB0aXRsZTogX18oICdTZXJ2aWNlIElubmVyIFNlY3Rpb24nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBkZXNjcmlwdGlvbjogX18oICdBZGQgYSBzZXJ2aWNlIGNvbHVtbi4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOiAnY2FydCcsXG4gICAgY2F0ZWdvcnksXG4gICAgcGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMnIF0sXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oICdzZXJ2aWNlJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAnc2hvcCcsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2J1eScsICdibG9ja3NwYXJlJyApXG4gICAgXSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgLy8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG4gICAgZWRpdDogZnVuY3Rpb24ocHJvcHMpe1xuICAgICAgICBjb25zdCB7XG5cbiAgICAgICAgICAgIGJvcmRlcldpZHRoLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nLFxuICAgICAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcblxuICAgICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMocHJvcHMuYXR0cmlidXRlcyksXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogYm9yZGVyV2lkdGggPyBib3JkZXJXaWR0aCA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJTdHlsZTogMCA8IGJvcmRlcldpZHRoID8gJ3NvbGlkJyA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPyBib3JkZXJDb2xvciA6IG51bGwsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/IGJhY2tncm91bmRDb2xvciA6IG51bGwsXG4gICAgICAgICAgICBwYWRkaW5nOiBwYWRkaW5nID8gcGFkZGluZyArICclJyA6IG51bGwsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZScsXG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICBpdGVtU2NvcGVcbiAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU9XCJodHRwOi8vc2NoZW1hLm9yZy9Qcm9kdWN0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1zZXJ2aWNlLXRhYmxlLWluc2lkZScsXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLWljb25zZXQnLHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyLXRpdGxlJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGl0bGU6ICdTZXJ2aWNlIFRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlOidBZGQgeW91ciBzZXJ2aWNlcyB0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcDogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ0JvdHRvbTogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcDogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b206IDEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgcGxhY2Vob2xkZXIgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lci1kZXNjcmlwdGlvbicsIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6ICdBc3Blcm5hdHVyIG1vcmJpIHNpdCBjdXJzdXMgbWF1cmlzIGFzcGVybmF0dXIhIFF1b3MgdG9ydG9yLiBFYSBtb250ZXMgYW5pbS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZTpcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRm9udFNpemU6IDE4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDIwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogMjBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZS1pbm5lci1idXR0b24nLHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQ6ICdHZXQgU3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogMjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAzNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAyMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcGVuZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXsgQUxMT1dFRF9CTE9DS1MgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiggcHJvcHMgKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgICAgIHBhZGRpbmcsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uYm94U2hhZG93U3R5bGVzKHByb3BzLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGJvcmRlcldpZHRoID8gYm9yZGVyV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyU3R5bGU6IDAgPCBib3JkZXJXaWR0aCA/ICdzb2xpZCcgOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yID8gYm9yZGVyQ29sb3IgOiBudWxsLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3IgOiBudWxsLFxuICAgICAgICAgICAgcGFkZGluZzogcGFkZGluZyA/IHBhZGRpbmcgKyAnJScgOiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc2VydmljZS1ibG9jay13cmFwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50ID8gJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS0nICsgYWxpZ25tZW50IDogJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay1zZXJ2aWNlLXRhYmxlJyxcbiAgICAgICAgICAgICAgICApIH1cbj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJsb2NrLXNlcnZpY2UtdGFibGUtaW5zaWRlJyxcblxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IHN0eWxlcyB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lcicsIHNlcnZpY2VJdGVtU2V0dGluZ3MpO1xuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VydmljZXMgZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24gfSA9IHdwLmNvbXBvbmVudHM7XG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XG5jb25zdCB7IHdpdGhTZWxlY3QsIHdpdGhEaXNwYXRjaCB9ID0gd3AuZGF0YTtcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9pbnNwZWN0b3InO1xuY29uc3Qge1xuICAgIElubmVyQmxvY2tzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgIHsgY29tcG9zZSB9ID13cC5jb21wb3NlO1xuXG5pbXBvcnQge3NlcnZpY2VJdGVtU2V0dGluZ3MgfSBmcm9tICcuLi9zZXJ2aWNlLWlubmVyJztcbmNsYXNzIFNlcnZpY2VMaXN0QmxvY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluc2VydFNlcnZpY2VJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gc2VydmljZUl0ZW1TZXR0aW5ncy5oZWFkaW5nO1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gT2JqZWN0LmFzc2lnbih7fSwge30sIHsgaXRlbU51bWJlciwgaGVhZGluZywgYWN0aXZlOiBmYWxzZSwgZGVmYXVsdFRleHQ6ICcnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3QmxvY2tBdHRyaWJ1dGVzID0gc2VydmljZUl0ZW1TZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCbG9jayhjcmVhdGVCbG9jaygnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJywgbmV3QmxvY2tBdHRyaWJ1dGVzKSwgdW5kZWZpbmVkLCBjbGllbnRJZCk7XG4gICAgfVxuXG4gICAgZ2V0U2VydmljZVRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc2VydmljZS1ibG9jay13cmFwcGVyJ1xuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbSA/IG1hcmdpbkJvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfX0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNlcnZpY2VzIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2Utc2VjdGlvbi1hZG1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2Utc2VjdGlvbi1nYXAtJyArIGNvbHVtbnNHYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17dGhpcy5nZXRTZXJ2aWNlVGVtcGxhdGUoYXR0cmlidXRlcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9e1snYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFwcGVuZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvU2VydmljZXM+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcblxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShbXG4gICAgd2l0aFNlbGVjdCgoc2VsZWN0LCBvd25Qcm9wcykgPT4ge1xuICAgICAgICBjb25zdCB7IGNsaWVudElkIH0gPSBvd25Qcm9wcztcbiAgICAgICAgY29uc3QgeyBnZXRCbG9jaywgaXNCbG9ja1NlbGVjdGVkLCBoYXNTZWxlY3RlZElubmVyQmxvY2sgfSA9IHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiBnZXRCbG9jayhjbGllbnRJZCksXG4gICAgICAgICAgICBpc1NlbGVjdGVkQmxvY2tJblJvb3Q6IGlzQmxvY2tTZWxlY3RlZChjbGllbnRJZCkgfHwgaGFzU2VsZWN0ZWRJbm5lckJsb2NrKGNsaWVudElkLCB0cnVlKSxcbiAgICAgICAgfTtcbiAgICB9KSxcbiAgICB3aXRoRGlzcGF0Y2goKGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0QmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlcyB9ID0gZGlzcGF0Y2goJ2NvcmUvYmxvY2stZWRpdG9yJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnNlcnRCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoU2VydmljZUxpc3RCbG9jaylcblxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBTZXJ2aWNlcyBmcm9tICcuL2NvbXBvbmVudHMvc2VydmljZXMnO1xuaW1wb3J0IFNlcnZpY2VMaXN0QmxvY2sgZnJvbSAnLi9jb21wb25lbnRzL2VkaXQnO1xuaW1wb3J0IGljb25zIGZyb20gJy4vLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuY29uc3Qge19ffSA9IHdwLmkxOG47XG5cbi8vIEV4dGVuZCBjb21wb25lbnRcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuLy8gUmVnaXN0ZXIgYmxvY2tcbmNvbnN0IHtyZWdpc3RlckJsb2NrVHlwZX0gPSB3cC5ibG9ja3M7XG5cbi8vIFJlZ2lzdGVyIGVkaXRvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5uZXJCbG9ja3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnQlMgU2VydmljZXMnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnQWRkIGEgc2VydmljZSBzZWN0aW9uLicsICdibG9ja3NwYXJlJyksXG4gICAgaWNvbjogaWNvbnMuc2VydmljZXMsXG4gICAgY2F0ZWdvcnksXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2VydmljZXMnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnYm94JywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3BvcnRmb2xpbycsICdibG9ja3NwYXJlJyksXG5cblxuICAgIF0sXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnYmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzLFxuXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgYWxpZ246IFsgJ3dpZGUnLCAnZnVsbCcsICdjZW50ZXInIF0sXG4gICAgICAgIGh0bWw6IHRydWVcbiAgICB9LFxuICAgIC8vIFJlbmRlciB0aGUgYmxvY2sgY29tcG9uZW50c1xuICAgIGVkaXQ6IFNlcnZpY2VMaXN0QmxvY2ssXG5cbiAgICAvLyBTYXZlIHRoZSBhdHRyaWJ1dGVzIGFuZCBtYXJrdXBcbiAgICBzYXZlOiBmdW5jdGlvbiAocHJvcHMpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb2x1bW5zR2FwLFxuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG5cbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1zZXJ2aWNlLXRhYmxlLXdyYXAnLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc2VydmljZS10YWJsZS1nYXAtJyArIGNvbHVtbnNHYXBcbiAgICAgICAgXSk7XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9ja3MgYmxvY2tzcGFyZS1zZXJ2aWNlLWJsb2NrLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLXNlY3Rpb24taGVhZGVyLXdyYXBwZXInLFxuICAgICAgICAgICAgICAgICdhbGlnbicgKyBhbGlnblxuICAgICAgICAgICAgKX0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfX0+XG5cblxuICAgICAgICAgICAgICAgIDxTZXJ2aWNlcyB7Li4ucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L1NlcnZpY2VzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufSk7XG4iLCJpbXBvcnQgQlNIZWFkZXJTZXR0aW5ncyBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXItc2V0dGluZ3NcIjtcbi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcblxuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgd2l0aEZhbGxiYWNrU3R5bGVzLFxuICAgIFBhbmVsQm9keVxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHRpdGxlRm9udFNpemUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcixcbiAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbixcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgZGFzaENvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgID5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlclNldHRpbmdzXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJsb2NrR2Fwcz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlRm9udFNpemV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmxheW91dE9wdGlvbj17aGVhZGVybGF5b3V0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VIZWFkZXJTdHlsZT17aGVhZGVybGF5b3V0T3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoeyBoZWFkZXJsYXlvdXRPcHRpb24gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyVGFnPXtoZWFkZXJUYWdPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGFnT3B0aW9ufSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcmJveENvbG9yPXtoZWFkZXJib3hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hDb2xvcj17ZGFzaENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VEYXNoQ29sb3I9e2Rhc2hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtkYXNoQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVjb2xvcj17aGVhZGVydGl0bGVDb2xvciA9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nVG9wPXt0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b209e3RpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVQYWRkaW5nQm90dG9tPSB7dGl0bGVQYWRkaW5nQm90dG9tID0+c2V0QXR0cmlidXRlcyh7dGl0bGVQYWRkaW5nQm90dG9tfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlY29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3I9PnNldEF0dHJpYnV0ZXMoe2hlYWRlcnN1YnRpdGxlQ29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wPXtzdWJ0aXRsZVBhZGRpbmdUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVQYWRkaW5nQm90dG9tfSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuXG4iLCIvLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBDYWxsVG9BY3Rpb24gZnJvbSBcIi4uLy4uLy4uLy4uL2NhbGwtdG8tYWN0aW9uL2NvbXBvbmVudHMvZWRpdFwiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcblx0UmljaFRleHQsXG5cdHdpdGhGb250U2l6ZXMsXG5cdHdpdGhDb2xvcnNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXHR9XG5cblx0cmVuZGVyKCkge1xuXG5cdFx0Ly8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcblx0XHRjb25zdCB7XG5cdFx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRcdGhlYWRlclRhZ09wdGlvbixcblx0XHRcdFx0aGVhZGVyVGl0bGUsXG5cdFx0XHRcdGhlYWRlclN1YlRpdGxlLFxuXHRcdFx0fSxcblx0XHRcdGF0dHJpYnV0ZXMsXG5cdFx0XHRzZXRBdHRyaWJ1dGVzLFxuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0Y29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuXHRcdFx0Li4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCB0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnRpdGxlQ29sb3IoYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Y29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG5cdFx0XHQuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXG5cdFx0cmV0dXJuIFtcblx0XHRcdDxGcmFnbWVudD5cblxuXHRcdFx0XHQ8SW5zcGVjdG9yXG5cdFx0XHRcdFx0eyAuLi50aGlzLnByb3BzIH1cblx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXBcIj5cblx0XHRcdFx0XHQ8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxSaWNoVGV4dFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cblx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdFx0XHRrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclRpdGxlfVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17dGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XG5cdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT1cInBcIlxuXHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtfXygnU3ViIFRpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdFx0XHRrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2hlYWRlclN1YlRpdGxlfVxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT17c3VidGl0bGVTdHlsZXN9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyU3ViVGl0bGU6IHZhbHVlfSl9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L0JTSGVhZGVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0XTtcblx0fVxufVxuXG5cbiIsImltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuXHRSaWNoVGV4dCxcblx0Z2V0Rm9udFNpemVDbGFzcyxcblx0Z2V0Q29sb3JDbGFzc05hbWVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge25hbWUsIGNhdGVnb3J5fSA9IG1ldGFkYXRhO1xuY29uc3QgYXR0cmlidXRlcyA9IHtcbi4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzXG59XG5cbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcblx0dGl0bGU6IF9fKCAnU2VydmljZSBUaXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuXHRpY29uOiBpY29ucy5zZWN0aW9uSGVhZGVyLFxuXHRjYXRlZ29yeSxcblx0cGFyZW50OiBbICdibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtc2VydmljZXMtaW5uZXInIF0sXG5cdGtleXdvcmRzOiBbXG5cdFx0X18oICdTZXJ2aWNlJywgJ2Jsb2Nrc3BhcmUnICksXG5cdFx0X18oICd0aXRsZScsICdibG9ja3NwYXJlJyApLFxuXHRdLFxuXG5cdGF0dHJpYnV0ZXMsXG5cblx0Ly8gUmVuZGVyIHRoZSBibG9jayBjb21wb25lbnRzXG5cdGVkaXQ6IEVkaXQsXG5cblx0Ly8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG5cdHNhdmU6IGZ1bmN0aW9uKCBwcm9wcyApIHtcblxuXHRcdGNvbnN0IHtcblx0XHRcdGhlYWRlclRhZ09wdGlvbixcblx0XHRcdGhlYWRlclRpdGxlLFxuXHRcdFx0aGVhZGVyU3ViVGl0bGUsXG5cdFx0fSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cblx0XHRjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG5cdFx0XHQuLi5kYXNoQ29sb3JzKHByb3BzLmF0dHJpYnV0ZXMpXG5cdFx0fTtcblxuXHRcdGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuXHRcdFx0Li4udGl0bGVDb2xvcihwcm9wcy5hdHRyaWJ1dGVzKVxuXHRcdH07XG5cblx0XHRjb25zdCBzdWJ0aXRsZVN0eWxlcyA9IHtcblx0XHRcdC4uLnN1YnRpdGxlQ29sb3IocHJvcHMuYXR0cmlidXRlcylcblx0XHR9O1xuXG5cdFx0Ly8gU2F2ZSB0aGUgYmxvY2sgbWFya3VwIGZvciB0aGUgZnJvbnQgZW5kXG5cdFx0cmV0dXJuIChcblxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwJz5cblx0XHRcdFx0XHQ8QlNIZWFkZXIgey4uLnByb3BzfT5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0e2hlYWRlclRpdGxlICYmXG5cblx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0LkNvbnRlbnRcblx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlJ1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXt0aXRsZVN0eWxlc31cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17aGVhZGVyVGl0bGV9XG5cblx0XHRcdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZS13cmFwcGVyJz5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJTdWJUaXRsZSAmJlxuXHRcdFx0XHRcdFx0XHQ8UmljaFRleHQuQ29udGVudFxuXHRcdFx0XHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3N1YnRpdGxlU3R5bGVzfVxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9CU0hlYWRlcj5cblxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxufSk7XG4iLCJpbXBvcnQgUGFkZGluZyBmcm9tIFwiLi8uLi8uLi8uLi8uLi91dGlscy9wYWRkaW5nXCI7XG5cbi8qKlxuICogSW5zcGVjdG9yIENvbnRyb2xzXG4gKi9cblxuXG4vLyBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5cbmNvbnN0IHtcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICBGb250U2l6ZVBpY2tlcixcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnMsXG4gICAgQ29udHJhc3RDaGVja2VyLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbiAgICBDb2xvclBhbGV0dGVcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgUGFuZWxSb3csXG4gICAgU2VsZWN0Q29udHJvbCxcbiAgICBCYXNlQ29udHJvbCxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vLyBBcHBseSBmYWxsYmFjayBzdHlsZXNcbmNvbnN0IGFwcGx5RmFsbGJhY2tTdHlsZXMgPSB3aXRoRmFsbGJhY2tTdHlsZXMoICggbm9kZSwgb3duUHJvcHMgKSA9PiB7XG4gICAgY29uc3QgeyB0ZXh0Q29sb3IsIGJhY2tncm91bmRDb2xvciwgZm9udFNpemUsIGN1c3RvbUZvbnRTaXplIH0gPSBvd25Qcm9wcy5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGVkaXRhYmxlTm9kZSA9IG5vZGUucXVlcnlTZWxlY3RvciggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gZWRpdGFibGVOb2RlID8gZ2V0Q29tcHV0ZWRTdHlsZSggZWRpdGFibGVOb2RlICkgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IgfHwgISBjb21wdXRlZFN0eWxlcyA/IHVuZGVmaW5lZCA6IGNvbXB1dGVkU3R5bGVzLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3I6IHRleHRDb2xvciB8fCAhIGNvbXB1dGVkU3R5bGVzID8gdW5kZWZpbmVkIDogY29tcHV0ZWRTdHlsZXMuY29sb3IsXG4gICAgICAgIGZhbGxiYWNrRm9udFNpemU6IGZvbnRTaXplIHx8IGN1c3RvbUZvbnRTaXplIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBwYXJzZUludCggY29tcHV0ZWRTdHlsZXMuZm9udFNpemUgKSB8fCB1bmRlZmluZWRcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZSxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBmYWxsYmFja0ZvbnRTaXplLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBzZXRGb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHNldFRleHRDb2xvcixcbiAgICAgICAgICAgIGZhbGxiYWNrQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgZmFsbGJhY2tUZXh0Q29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gQm9yZGVyIHN0eWxlc1xuICAgICAgICBjb25zdCBib3JkZXJTdHlsZXMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1ub25lJywgbGFiZWw6IF9fKCAnTm9uZScgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItc29saWQnLCBsYWJlbDogX18oICdTb2xpZCcgKSB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGlzdC1ib3JkZXItZG90dGVkJywgbGFiZWw6IF9fKCAnRG90dGVkJyApIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYmxvY2tzcGFyZS1saXN0LWJvcmRlci1kYXNoZWQnLCBsYWJlbDogX18oICdEYXNoZWQnICkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQm9yZGVyQ29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHsgYm9yZGVyQ29sb3I6IHZhbHVlIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHMga2V5PVwiaW5zcGVjdG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgX18oICdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17IFtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRleHRDb2xvci5jb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHNldFRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCAnVGV4dCBDb2xvcicsICdibG9ja3NwYXJlJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb250cmFzdENoZWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IuY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1RleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17IGZvbnRTaXplLnNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmlnaHQgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVJpZ2h0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHRNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQYWRkaW5nUmlnaHQ9eyBwYWRkaW5nUmlnaHQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdSaWdodCB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBwYWRkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nRW5hYmxlQm90dG9tPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tPXsgcGFkZGluZ0JvdHRvbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdCb3R0b20gfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMZWZ0IHBhZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdFbmFibGVMZWZ0PXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdD17IHBhZGRpbmdMZWZ0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0TWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdMZWZ0PXsgcGFkZGluZ0xlZnQgPT4gc2V0QXR0cmlidXRlcyh7IHBhZGRpbmdMZWZ0IH0pIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICBhcHBseUZhbGxiYWNrU3R5bGVzLFxuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICB3aXRoRm9udFNpemVzLFxuICAgIHdpdGhDb2xvcnNcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCxcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyxcbiAgICAgICAgICAgIGZhbGxiYWNrRm9udFNpemUsXG4gICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAvLyBTZXR1cCBjbGFzcyBuYW1lc1xuICAgICAgICBjb25zdCBlZGl0Q2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lci1kZXNjcmlwdGlvbic6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplLmNsYXNzIF06IGZvbnRTaXplLmNsYXNzLFxuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgWyBiYWNrZ3JvdW5kQ29sb3IuY2xhc3MgXTogYmFja2dyb3VuZENvbG9yLmNsYXNzLFxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLnNpemUgPyBmb250U2l6ZS5zaXplICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgY29sb3I6IHRleHRDb2xvci5jb2xvcj90ZXh0Q29sb3IuY29sb3I6XCIjNmQ2ZDZkXCIsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZXh0QWxpZ246c2VjdGlvbkFsaWdubWVudFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7IC4uLnRoaXMucHJvcHMgfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVByb3A9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdBZGQgYSBzZXJ2aWNlIGZlYXR1cmUnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBmZWF0dXJlcyB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBmZWF0dXJlczogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGVkaXRTdHlsZXMgfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBlZGl0Q2xhc3NOYW1lID8gZWRpdENsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoRm9udFNpemVzKCAnZm9udFNpemUnICksXG4gICAgd2l0aENvbG9ycyggJ2JhY2tncm91bmRDb2xvcicsIHsgdGV4dENvbG9yOiAnY29sb3InIH0pXG5dKSggRWRpdCApO1xuIiwiLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBFZGl0IGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgIGljb25zIGZyb20gJy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucyc7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5cbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBnZXRGb250U2l6ZUNsYXNzLFxuICAgIGdldENvbG9yQ2xhc3NOYW1lXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSwgYXR0cmlidXRlc30gPSBtZXRhZGF0YTtcbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcbiAgICB0aXRsZTogX18oICdTZXJ2aWNlIEZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgZGVzY3JpcHRpb246IF9fKCAnQWRkcyBhIGZlYXR1cmUgY29tcG9uZW50IHdpdGggc2NoZW1hIG1hcmt1cC4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBpY29uOmljb25zLmljb25saXN0LFxuICAgIGNhdGVnb3J5LFxuICAgIHBhcmVudDogWyAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXNlcnZpY2VzLWlubmVyJyBdLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCAnU2VydmljZSB0YWJsZScsICdibG9ja3NwYXJlJyApLFxuICAgICAgICBfXyggJ2ZlYXR1cmVzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAnc2hvcCcsICdibG9ja3NwYXJlJyApXG4gICAgXSxcblxuICAgIGF0dHJpYnV0ZXMsXG5cbiAgICAvLyBSZW5kZXIgdGhlIGJsb2NrIGNvbXBvbmVudHNcbiAgICBlZGl0OiBFZGl0LFxuXG4gICAgLy8gU2F2ZSB0aGUgYXR0cmlidXRlcyBhbmQgbWFya3VwXG4gICAgc2F2ZTogZnVuY3Rpb24oIHByb3BzICkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICBjdXN0b21Gb250U2l6ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbVRleHRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGZvbnRTaXplQ2xhc3NcbiAgICAgICAgY29uc3QgZm9udFNpemVDbGFzcyA9IGdldEZvbnRTaXplQ2xhc3MoIGZvbnRTaXplICk7XG5cbiAgICAgICAgY29uc3QgYmFja2dyb3VuZENsYXNzID0gZ2V0Q29sb3JDbGFzc05hbWUoICdiYWNrZ3JvdW5kLWNvbG9yJywgYmFja2dyb3VuZENvbG9yICk7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyh7XG4gICAgICAgICAgICAnaGFzLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kQ29sb3IgfHwgY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2VydmljZS10YWJsZS1mZWF0dXJlcyc6IHRydWUsXG4gICAgICAgICAgICBbIGZvbnRTaXplQ2xhc3MgXTogZm9udFNpemVDbGFzcyxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzcyxcblxuICAgICAgICB9KTtcbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZUNsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tRm9udFNpemUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDbGFzcyA/IHVuZGVmaW5lZCA6IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGNvbG9yOiB0ZXh0Q29sb3IgPyB0ZXh0Q29sb3IgOiBcIiM2ZDZkNmRcIixcbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZ1JpZ2h0ID8gcGFkZGluZ1JpZ2h0ICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgaXRlbVByb3A9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgdmFsdWU9eyBmZWF0dXJlcyB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgICBzdHlsZT17IHN0eWxlcyB9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgIH1cbn0pO1xuIiwiXG5cblxuaW1wb3J0IEJ1dHRvblNldHRpbmdzIGZyb20gJy4vLi4vLi4vLi4vLi4vYnV0dG9uL2J1dHRvbi1zZXR0aW5ncyc7XG5pbXBvcnQgUGFkZGluZyBmcm9tICcuLy4uLy4uLy4uLy4uL3V0aWxzL3BhZGRpbmcnO1xuaW1wb3J0IEdyYWRpZW50Q29sb3JzIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb21wb25lbnQvZ3JhZGllbnRcIjtcbmltcG9ydCBCU2J1dHRvblNldHRpbmdzIGZyb20gXCIuLi8uLi8uLi8uLi9idXR0b24vYnV0dG9uLXNldHRpbmdzXCI7XG5cbi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcblxuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIHdpdGhGb250U2l6ZXMsXG4gICAgd2l0aENvbG9ycyxcbiAgICBQYW5lbENvbG9yU2V0dGluZ3Ncbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY29uc3Qge1xuICAgIHdpdGhGYWxsYmFja1N0eWxlcyxcbiAgICBQYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cbi8vIEFwcGx5IGZhbGxiYWNrIHN0eWxlc1xuY29uc3QgYXBwbHlGYWxsYmFja1N0eWxlcyA9IHdpdGhGYWxsYmFja1N0eWxlcyggKCBub2RlLCBvd25Qcm9wcyApID0+IHtcbiAgICBjb25zdCB7IGJhY2tncm91bmRDb2xvciB9ID0gb3duUHJvcHMuYXR0cmlidXRlcztcbiAgICBjb25zdCBlZGl0YWJsZU5vZGUgPSBub2RlLnF1ZXJ5U2VsZWN0b3IoICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlcyA9IGVkaXRhYmxlTm9kZSA/IGdldENvbXB1dGVkU3R5bGUoIGVkaXRhYmxlTm9kZSApIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENvbG9yIHx8ICEgY29tcHV0ZWRTdHlsZXMgPyB1bmRlZmluZWQgOiBjb21wdXRlZFN0eWxlcy5iYWNrZ3JvdW5kQ29sb3JcbiAgICB9O1xufSk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5jbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNoYXBlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRhcmdldCxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcixcbiAgICAgICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyLFxuICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGUsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjEsXG4gICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjIsXG4gICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodCxcbiAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aFxuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBzZXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBmYWxsYmFja0JhY2tncm91bmRDb2xvclxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEluc3BlY3RvckNvbnRyb2xzIGtleT1cImluc3BlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQnV0dG9uIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNidXR0b25TZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlbiBpbiBuZXcgd2luZG93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uVGFyZ2V0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UYXJnZXQ9eyBidXR0b25UYXJnZXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uVGFyZ2V0PXsgdmFsdWUgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRhcmdldDogISBidXR0b25UYXJnZXQgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVHcmFkaWVudCA9IHtlbmFibGVHcmFkaWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUdyYWRpZW50ID17IGVuYWJsZUdyYWRpZW50ID0+IHNldEF0dHJpYnV0ZXMoe2VuYWJsZUdyYWRpZW50fSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1dHRvblNpemU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uU2l6ZT17IGJ1dHRvblNpemUgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblNpemUgfSkgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnV0dG9uIFNoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnV0dG9uU2hhcGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2hhcGU9eyBidXR0b25TaGFwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25TaGFwZT17IGJ1dHRvblNoYXBlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TaGFwZSB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQnV0dG9uQ29sb3I9eyBidXR0b25CYWNrZ3JvdW5kQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvbkJhY2tncm91bmRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXR0b24gdGV4dCBjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHRDb2xvcj17IGJ1dHRvblRleHRDb2xvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCdXR0b25UZXh0Q29sb3I9eyBidXR0b25UZXh0Q29sb3IgPT4gc2V0QXR0cmlidXRlcyh7IGJ1dHRvblRleHRDb2xvciB9KSB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdXR0b25TdHlsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9e2J1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlQm9yZGVyU3R5bGU9e2J1dHRvblN0eWxlID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25TdHlsZSB9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJvcmRlckNvbG9yPXtib3JkZXJDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQnRuVGV4dENvbG9yPXtib3JkZXJCdG5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCb3JkZXJCdG5UZXh0Q29sb3I9e2JvcmRlckJ0blRleHRDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtib3JkZXJCdG5UZXh0Q29sb3J9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ0bkJvcmRlcldpZHRoPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG5Cb3JkZXJXaWR0aD17YnRuQm9yZGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jaGFuZ2VidG5Cb3JkZXJXaWR0aCA9IHtidG5Cb3JkZXJXaWR0aCA9PiBzZXRBdHRyaWJ1dGVzKHtidG5Cb3JkZXJXaWR0aH0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnRuRm9udFdlaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuRm9udFdlaWdodD17YnRuRm9udFdlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNoYW5nZUJ0bkZvbnRXZWlnaHQ9e2J0bkZvbnRXZWlnaHQgPT4gc2V0QXR0cmlidXRlcyh7YnRuRm9udFdlaWdodH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICB7ICBidXR0b25TdHlsZT09PSdub25lJyYmXG5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXygnRW5hYmxlIEdyYWRpZW50JywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2VuYWJsZUdyYWRpZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7ZW5hYmxlR3JhZGllbnQ6ICFlbmFibGVHcmFkaWVudH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlR3JhZGllbnQgJiYgYnV0dG9uU3R5bGU9PT0nbm9uZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0dyYWRpZW50IE9wdGlvbicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JhZGllbnRDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yMT17YmFja2dyb3VuZENvbG9yMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VCYWNrZ3JvdW5kQ29sb3IxPXtiYWNrZ3JvdW5kQ29sb3IxID0+IHNldEF0dHJpYnV0ZXMoe2JhY2tncm91bmRDb2xvcjF9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IyPXtiYWNrZ3JvdW5kQ29sb3IyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUJhY2tncm91bmRDb2xvcjI9e2JhY2tncm91bmRDb2xvcjIgPT4gc2V0QXR0cmlidXRlcyh7YmFja2dyb3VuZENvbG9yMn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50QW5nbGU9e2dyYWRpZW50QW5nbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlR3JhZGllbnRBbmdsZT17Z3JhZGllbnRBbmdsZSA9PiBzZXRBdHRyaWJ1dGVzKHtncmFkaWVudEFuZ2xlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JMb2NhdGlvbjE9e2NvbG9yTG9jYXRpb24xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUNvbG9yTG9jYXRpb24xPXtjb2xvckxvY2F0aW9uMSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvckxvY2F0aW9uMX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTG9jYXRpb24yPXtjb2xvckxvY2F0aW9uMn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VDb2xvckxvY2F0aW9uMj17Y29sb3JMb2NhdGlvbjIgPT4gc2V0QXR0cmlidXRlcyh7Y29sb3JMb2NhdGlvbjJ9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17IF9fKCAnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9eyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYmFja2dyb3VuZENvbG9yLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogc2V0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oICdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQ29sb3JTZXR0aW5ncz5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBfXyggJ0dhcCBTZXR0aW5ncycsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49eyBmYWxzZSB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGFkZGluZ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZVRvcD17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcD17IHBhZGRpbmdUb3AgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcE1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdUb3A9eyBwYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nVG9wIH0pIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0VuYWJsZUJvdHRvbT17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbT17IHBhZGRpbmdCb3R0b20gfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbU1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVBhZGRpbmdCb3R0b209eyBwYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoeyBwYWRkaW5nQm90dG9tIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIGFwcGx5RmFsbGJhY2tTdHlsZXMsXG4gICAgd2l0aEZvbnRTaXplcyggJ2ZvbnRTaXplJyApLFxuICAgIHdpdGhDb2xvcnMoICdiYWNrZ3JvdW5kQ29sb3InIClcbl0pKCBJbnNwZWN0b3IgKTtcbiIsIi8vIEltcG9ydCBibG9jayBkZXBlbmRlbmNpZXMgYW5kIGNvbXBvbmVudHNcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5cbi8vIEltcG9ydCBCdXR0b24gc2V0dGluZ3NcbmltcG9ydCBCU0J1dHRvbiBmcm9tICcuLy4uLy4uLy4uLy4uL2J1dHRvbi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMnO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgQ29tcG9uZW50LCBGcmFnbWVudCB9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIHdpdGhGb250U2l6ZXMsXG4gICAgd2l0aENvbG9ycyxcbiAgICBVUkxJbnB1dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5jb25zdCB7XG4gICAgSWNvbkJ1dHRvbixcbiAgICBEYXNoaWNvblxufSA9IHdwLmNvbXBvbmVudHM7XG5cbmNsYXNzIEJ1dHRvbkVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgICAgIGJ1dHRvblRleHQsXG4gICAgICAgICAgICAgICAgYnV0dG9uVXJsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbkFsaWdubWVudCxcbiAgICAgICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uVGFyZ2V0LFxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAgIGJvcmRlckJ0blRleHRDb2xvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLy8gU2V0dXAgY2xhc3MgbmFtZXNcbiAgICAgICAgY29uc3QgZWRpdENsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtc2VydmljZS1idXR0b24nOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldHVwIHN0eWxlc1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IuY29sb3IsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tOiBwYWRkaW5nQm90dG9tID8gcGFkZGluZ0JvdHRvbSArICdweCcgOiB1bmRlZmluZWQsXG5cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBidG5TdHlsZXMgPXtcbiAgICAgICAgICAgIC4uLmJ1dHRvblN0eWxlT3B0aW9uKGF0dHJpYnV0ZXMpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgeyAuLi50aGlzLnByb3BzIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgZWRpdENsYXNzTmFtZSA/IGVkaXRDbGFzc05hbWUgOiB1bmRlZmluZWQgfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGVkaXRTdHlsZXMgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEJTQnV0dG9uIHsgLi4udGhpcy5wcm9wcyB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnTmFtZT1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgX18oICdCdXR0b24gdGV4dC4uLicsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBidXR0b25UZXh0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkRm9ybWF0cz17IFtdIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGJ0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uVGV4dDogdmFsdWUgfSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CU0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgeyBpc1NlbGVjdGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwiZm9ybS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBgYmxvY2tzLWJ1dHRvbl9faW5saW5lLWxpbmsgYmxvY2tzcGFyZS1idXR0b24tJHtidXR0b25BbGlnbm1lbnR9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXsge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGJ1dHRvbkFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXNoaWNvbiBpY29uPXsgJ2FkbWluLWxpbmtzJyB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVSTElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ1dHRvbi11cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblVybCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHNldEF0dHJpYnV0ZXMoeyBidXR0b25Vcmw6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlZGl0b3ItYnJlYWtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17IF9fKCAnQXBwbHknLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhGb250U2l6ZXMoICdmb250U2l6ZScgKSxcbiAgICB3aXRoQ29sb3JzKCAnYmFja2dyb3VuZENvbG9yJywgeyB0ZXh0Q29sb3I6ICdjb2xvcicgfSlcbl0pKCBCdXR0b25FZGl0ICk7XG4iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEJ1dHRvbkVkaXQgZnJvbSAnLi9lZGl0JztcbmltcG9ydCBidXR0b25TdHlsZU9wdGlvbiBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9zdHlsZXMnO1xuaW1wb3J0ICBpY29ucyBmcm9tICcuLi8uLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMnO1xuaW1wb3J0IEJTQnV0dG9uIGZyb20gJy4vLi4vLi4vLi4vLi4vYnV0dG9uL2VkaXQnO1xuaW1wb3J0IGJ1dHRvbkF0dHJpYnV0ZXMgZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9idXR0b24nO1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIGdldENvbG9yQ2xhc3NOYW1lXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5jb25zdCB7bmFtZSwgY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJ1dHRvbkF0dHJpYnV0ZXNcblxufTtcbi8vIFJlZ2lzdGVyIHRoZSBibG9ja1xucmVnaXN0ZXJCbG9ja1R5cGUoIG5hbWUsIHtcbiAgICB0aXRsZTogX18oICdCdXR0b24nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBkZXNjcmlwdGlvbjogX18oICdBZGRzIGEgcHJvZHVjdCB0aXRsZSBjb21wb25lbnQgd2l0aCBzY2hlbWEgbWFya3VwLicsICdibG9ja3NwYXJlJyApLFxuICAgIGljb246IGljb25zLmJ1dHRvbixcbiAgICBjYXRlZ29yeSxcbiAgICBwYXJlbnQ6IFsgJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS1zZXJ2aWNlcy1pbm5lcicgXSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXyggJ1NlcnZpY2VzJywgJ2Jsb2Nrc3BhcmUnICksXG4gICAgICAgIF9fKCAndGl0bGUnLCAnYmxvY2tzcGFyZScgKSxcbiAgICAgICAgX18oICdzaG9wJywgJ2Jsb2Nrc3BhcmUnIClcbiAgICBdLFxuXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6QnV0dG9uRWRpdCxcbiAgICBzYXZlOmZ1bmN0aW9uKCBwcm9wcyl7XG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgYnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ1dHRvblVybCxcbiAgICAgICAgICAgIGJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICBib3JkZXJCdG5UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25CYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICBidXR0b25UZXh0Q29sb3IsXG4gICAgICAgICAgICBidXR0b25TaXplLFxuICAgICAgICAgICAgYnV0dG9uU2hhcGUsXG4gICAgICAgICAgICBidXR0b25UYXJnZXRcbiAgICAgICAgfSA9IHByb3BzLmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgLy8gUmV0cmVpdmUgdGhlIGdldENvbG9yQ2xhc3NOYW1lXG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRDbGFzcyA9IGdldENvbG9yQ2xhc3NOYW1lKCAnYmFja2dyb3VuZC1jb2xvcicsIGJhY2tncm91bmRDb2xvciApO1xuXG4gICAgICAgIC8vIFNldHVwIGNsYXNzIG5hbWVzXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoe1xuICAgICAgICAgICAgJ2hhcy1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZENvbG9yIHx8IGN1c3RvbUJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXNlcnZpY2UtYnV0dG9uJzogdHJ1ZSxcbiAgICAgICAgICAgIFsgYmFja2dyb3VuZENsYXNzIF06IGJhY2tncm91bmRDbGFzc1xuICAgICAgICB9KTtcblxuXG4gICAgICAgIGNvbnN0IGJ0blN0eWxlcyA9e1xuICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGVPcHRpb24ocHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcbiAgICAgICAgLy8gU2V0dXAgc3R5bGVzXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZENsYXNzID8gdW5kZWZpbmVkIDogY3VzdG9tQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgcGFkZGluZ1RvcDogcGFkZGluZ1RvcCA/IHBhZGRpbmdUb3AgKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGJsb2NrIG1hcmt1cCBmb3IgdGhlIGZyb250IGVuZFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBzdHlsZXMgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxCU0J1dHRvbiB7IC4uLnByb3BzIH0+XG4gICAgICAgICAgICAgICAgICAgIHtcdC8vIENoZWNrIGlmIHRoZXJlIGlzIGJ1dHRvbiB0ZXh0IGFuZCBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9eyBidXR0b25VcmwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9eyBidXR0b25UYXJnZXQgPyAnX2JsYW5rJyA6IG51bGwgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9eyBidXR0b25UYXJnZXQgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiBudWxsIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja3NwYXJlLWJ1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TaGFwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17IGJ0blN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGJ1dHRvblRleHQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgfVxuICAgICAgICAgICAgICAgIDwvQlNCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9LFxufSk7XG4iLCJleHBvcnQgY29uc3QgRW1wdHlTdGFyID0gcHJvcHMgPT4gKFxuICAgIDxzdmdcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHN0eWxlPXt7IGZpbGw6IHByb3BzLmZpbGxDb2xvciB9fVxuICAgICAgICBmaWxsPXtwcm9wcy5maWxsQ29sb3J9XG4gICAgICAgIHdpZHRoPXtwcm9wcy5zaXplfVxuICAgICAgICBoZWlnaHQ9e3Byb3BzLnNpemV9XG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiXG4gICAgPlxuICAgICAgICA8cGF0aCBkPVwiTTUxMCwxOTcuNDcybC0xODMuMzctMTUuNzM0TDI1NSwxMi43NWwtNzEuNjI5LDE2OC45ODhMMCwxOTcuNDcybDEzOS4xMDMsMTIwLjUzOUw5Ny40MSw0OTcuMjVMMjU1LDQwMi4xODYgbDE1Ny41OSw5NS4wNjRsLTQxLjY5Mi0xNzkuMjM5TDUxMCwxOTcuNDcyeiBNMjU1LDM1NC4zNDhsLTk1Ljk1Nyw1Ny44ODZsMjUuMzk4LTEwOS4xNjZsLTg0LjczNi03My4zODlsMTExLjY5LTkuNTg4IEwyNTUsMTE3LjE3Mmw0My42MDUsMTAyLjkxOGwxMTEuNjg5LDkuNTg4bC04NC43MTEsNzMuMzg5bDI1LjM5OCwxMDkuMTY2TDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgPC9zdmc+XG4pO1xuXG5leHBvcnQgY29uc3QgSGFsZlN0YXIgPSBwcm9wcyA9PiAoXG4gICAgPHN2Z1xuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgc3R5bGU9e3sgZmlsbDogcHJvcHMuZmlsbENvbG9yIH19XG4gICAgICAgIGZpbGw9e3Byb3BzLmZpbGxDb2xvcn1cbiAgICAgICAgd2lkdGg9e3Byb3BzLnNpemV9XG4gICAgICAgIGhlaWdodD17cHJvcHMuc2l6ZX1cbiAgICAgICAgdmlld0JveD1cIjAgMCA1MTAgNTEwXCJcbiAgICA+XG4gICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMCwwbDAsMGwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2bDAsMCBsMTU3LjU5LDk1LjAzOWwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OFYxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjYgTDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgPC9zdmc+XG4pO1xuXG5cbmV4cG9ydCBjb25zdCBGdWxsU3RhciA9IHByb3BzID0+IChcbiAgICA8c3ZnXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBzdHlsZT17eyBmaWxsOiBwcm9wcy5maWxsQ29sb3IgfX1cbiAgICAgICAgZmlsbD17cHJvcHMuZmlsbENvbG9yfVxuICAgICAgICB3aWR0aD17cHJvcHMuc2l6ZX1cbiAgICAgICAgaGVpZ2h0PXtwcm9wcy5zaXplfVxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMCA1MTBcIlxuICAgID5cbiAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgIHBvaW50cz1cIjI1NSw0MDIuMjEyIDQxMi41OSw0OTcuMjUgMzcwLjg5NywzMTguMDExIDUxMCwxOTcuNDcyIDMyNi42MywxODEuNzM4IDI1NSwxMi43NSAxODMuMzcxLDE4MS43MzggMCwxOTcuNDcyIDEzOS4xMDMsMzE4LjAxMSA5Ny40MSw0OTcuMjVcIlxuICAgICAgICAgICAgaWQ9XCJzdGFyXCJcbiAgICAgICAgLz5cbiAgICA8L3N2Zz5cbik7IiwiXG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFJhbmdlQ29udHJvbFxufSA9IHdwLmNvbXBvbmVudHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBzdGFyQ291bnQsXG4gICAgICAgICAgICAgICAgc3RhclNpemUsXG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnU3RhciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e19fKCdOdW1iZXIgT2YgU3RhcnMnLCdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3RhckNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBzdGFyQ291bnQ6IHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXs1fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17MX1cbiAgICAgICAgICAgICAgICAgICAgLz5cblxuXG4gICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICk7XG4gICAgfVxuXG59IiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5jb25zdCB7X199ID0gd3AuaTE4bjtcbmltcG9ydCB7RW1wdHlTdGFyLCBGdWxsU3RhciwgSGFsZlN0YXJ9IGZyb20gXCIuLi8uLi9pbmMvaWNvbi1saWIvc3RhclwiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJ1xuY29uc3Qge0ZyYWdtZW50LENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBCbG9ja0NvbnRyb2xzLFxuICAgIEFsaWdubWVudFRvb2xiYXJcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudHtcblxuICAgIHJlbmRlcigpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6e1xuICAgICAgICAgICAgICAgIHN0YXJBbGlnbixcbiAgICAgICAgICAgICAgICBzdGFyQ291bnQsXG4gICAgICAgICAgICAgICAgc3RhclNpemUsXG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhcnMsXG4gICAgICAgICAgICAgICAgZW1wdHlTdGFyQ29sb3IsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuXG4gICAgICAgICAgICAgICAgPEJsb2NrQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgPEFsaWdubWVudFRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdGFyQWxpZ259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7c3RhckFsaWduOiB2YWx1ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0Jsb2NrQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciAgey4uLiB0aGlzLnByb3BzfS8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stc3Rhci1yYXRpbmdzLXdyYXAnXG4gICAgICAgICAgICAgICAgKX0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6J3RyYW5zcGFyZW50J1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXItYWxpZ24tJytzdGFyQWxpZ25cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiAwfSl9XG5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtbLi4uQXJyYXkoc3RhckNvdW50KV0ubWFwKChlLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiBpICsgMX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRTdGFycyAlIDEgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFyczogaSArIChzZWxlY3RlZFN0YXJzIC0gMSA9PT0gaSA/IDAuNSA6IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzOiBpICsgKHNlbGVjdGVkU3RhcnMgLSAwLjUgPT09IGkgPyAxIDogMC41KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpIDwgKGhpZ2hsaWdodGVkU3RhcnMgPyBoaWdobGlnaHRlZFN0YXJzIDogc2VsZWN0ZWRTdGFycykgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkU3RhcnMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzIC0gMSA9PT0gaSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzICUgMSA+IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkU3RhcnMgLSBzZWxlY3RlZFN0YXJzIC0gMC41ICE9PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbGZTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogaGlnaGxpZ2h0ZWRTdGFycyAtIHNlbGVjdGVkU3RhcnMgIT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbGZTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzZWxlY3RlZFN0YXJzIC0gaSA+PSAxID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZ1bGxTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e3N0YXJDb2xvcj9zdGFyQ29sb3I6XCIjZmJkMDEyXCJ9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RW1wdHlTdGFyIHNpemU9e3N0YXJTaXplfSBmaWxsQ29sb3I9e2VtcHR5U3RhckNvbG9yP2VtcHR5U3RhckNvbG9yOicjZDVkM2QzJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG5cbiAgICAgICAgKTtcbiAgICB9XG5cbn0iLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmNvbnN0IHtcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgc3RhckFsaWduLFxuICAgICAgICAgICAgICAgIHN0YXJDb3VudCxcbiAgICAgICAgICAgICAgICBzdGFyU2l6ZSxcbiAgICAgICAgICAgICAgICBzdGFyQ29sb3IsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFycyxcbiAgICAgICAgICAgICAgICBlbXB0eVN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcblxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2Z1bGxfc3Rhcj0gKHMsYykgPT57XG4gICAgICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZmJkMDEyJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBvbHlnb24gcG9pbnRzPVwiMjU1LDQwMi4yMTIgNDEyLjU5LDQ5Ny4yNSAzNzAuODk3LDMxOC4wMTEgNTEwLDE5Ny40NzIgMzI2LjYzLDE4MS43MzggMjU1LDEyLjc1IDE4My4zNzEsMTgxLjczOCAwLDE5Ny40NzIgMTM5LjEwMywzMTguMDExIDk3LjQxLDQ5Ny4yNVwiLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBibG9ja3NwYXJlX21ha2VfaGFsZl9zdGFyID0gKHMsYykgPT57XG4gICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXJhdGluZ3NgfT4gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZmJkMDEyJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MTAsMTk3LjQ3MmwtMTgzLjM3LTE1LjczNEwyNTUsMTIuNzVsLTcxLjYyOSwxNjguOTg4TDAsMTk3LjQ3MmwwLDBsMCwwbDEzOS4xMDMsMTIwLjUzOUw5Ny40MSw0OTcuMjVMMjU1LDQwMi4xODZsMCwwIGwxNTcuNTksOTUuMDM5bC00MS42OTItMTc5LjIzOUw1MTAsMTk3LjQ3MnogTTI1NSwzNTQuMzQ4VjExNy4xNzJsNDMuNjA1LDEwMi45MThsMTExLjY4OSw5LjU4OGwtODQuNzExLDczLjM4OWwyNS4zOTgsMTA5LjE2NiBMMjU1LDM1NC4zNDh6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBibG9ja3NwYXJlX21ha2VfZW1wdHlfc3RhciA9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD17Yz9jOicjZDVkM2QzJ30gd2lkdGg9e3N9IGhlaWdodD17c30gdmlld0JveD1cIjAgMCA1MTAgNTEwXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MTAsMTk3LjQ3MmwtMTgzLjM3LTE1LjczNEwyNTUsMTIuNzVsLTcxLjYyOSwxNjguOTg4TDAsMTk3LjQ3MmwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2IGwxNTcuNTksOTUuMDY0bC00MS42OTItMTc5LjIzOUw1MTAsMTk3LjQ3MnogTTI1NSwzNTQuMzQ4bC05NS45NTcsNTcuODg2bDI1LjM5OC0xMDkuMTY2bC04NC43MzYtNzMuMzg5bDExMS42OS05LjU4OCBMMjU1LDExNy4xNzJsNDMuNjA1LDEwMi45MThsMTExLjY4OSw5LjU4OGwtODQuNzExLDczLjM4OWwyNS4zOTgsMTA5LjE2NkwyNTUsMzU0LjM0OHpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+PC9kaXY+O1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHN0YXJzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzdGFyQ291bnQ7IGkrKyl7XG4gICAgICAgICAgICBzdGFycy5wdXNoIChpIDwgc2VsZWN0ZWRTdGFycyA/XG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkU3RhcnMgLSBpID49IDEgP1xuICAgICAgICAgICAgICAgICAgICBibG9ja3NwYXJlX21ha2VfZnVsbF9zdGFyKHN0YXJTaXplLCBzdGFyQ29sb3IpIDogYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhcihzdGFyU2l6ZSwgc3RhckNvbG9yKSlcbiAgICAgICAgICAgICAgICA6IGJsb2Nrc3BhcmVfbWFrZV9lbXB0eV9zdGFyKHN0YXJTaXplLGVtcHR5U3RhckNvbG9yKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2stc3Rhci1yYXRpbmdzLXdyYXBgfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrZ3JvdW5kQ29sb3I/YmFja2dyb3VuZENvbG9yOid0cmFuc3BhcmVudCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXItYWxpZ24tJytzdGFyQWxpZ25cbiAgICAgICAgICAgICAgICApfT5cbiAgICAgICAgICAgICAgICAgICAge3N0YXJzfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG5cbn0iLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0ICBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IEVkaXQgZnJvbSAnLi9FZGl0J1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9TYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMvaW5kZXgnO1xuXG5cbmNvbnN0IHtfX30gPSB3cC5pMThuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBTdGFyIFJhdGluZ3MnLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSBzdGFyIHJhdGluZ3MuJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5zdGFycmF0aW5nLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBjb3ZlcjogJ2h0dHBzOi8vYmxvY2tzcGFyZS5jb20nLFxuICAgICAgICAgICAgYXV0aG9yOiAnYmxvY2tzcGFyZScsXG4gICAgICAgICAgICBwYWdlczogNTAwXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc3RhcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdyZXZpZXcnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygncmF0aW5nJywgJ2Jsb2Nrc3BhcmUnKSxcblxuICAgIF0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59KTtcbiIsIlxuXG4vLyBTZXR1cCB0aGUgYmxvY2tcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuXG4vLyBJbXBvcnQgYmxvY2sgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgIFBhbmVsQ29sb3JTZXR0aW5ncyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcblxuLy8gSW1wb3J0IEluc3BlY3RvciBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wsXG4gICAgUmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNwZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cbiAgICByZW5kZXIoKSB7XG5cblxuICAgICAgICAvLyBTZXR1cCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICB0YWJTdHlsZSxcbiAgICAgICAgICAgICAgICB0YWJMYXlvdXQsXG4gICAgICAgICAgICAgICAgdGFiQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICB0YWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgYWN0aXZldGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgIHRhYkFsaWdubWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgY29uc3QgdGFiU3R5bGVPcHRpb25zID0gW1xuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1ob3Jpem9udGFsJywgbGFiZWw6IF9fKCdEZWZhdWx0JywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLXZlcnRpY2FsJywgbGFiZWw6IF9fKCdWZXJ0aWNhbCcsICdibG9ja3NwYXJlJyl9XG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IHRhYkxheW91dE9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDEnLCBsYWJlbDogX18oJ0xheW91dCAxJywgJ2Jsb2Nrc3BhcmUnKX0sXG4gICAgICAgICAgICB7dmFsdWU6ICdibG9ja3NwYXJlLWxheW91dDInLCBsYWJlbDogX18oJ0xheW91dCAyJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCB0YWJBbGlnbm1lbnRPcHRpb25zPVtcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtbGVmdCcsbGFiZWw6X18oJ0xlZnQnLCdibG9ja3NwYXJlJyl9LFxuICAgICAgICAgICAge3ZhbHVlOiAnYmxvY2tzcGFyZS1yaWdodCcsbGFiZWw6X18oJ1JpZ2h0JywnYmxvY2tzcGFyZScpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogJ2Jsb2Nrc3BhcmUtY2VudGVyJyxsYWJlbDpfXygnY2VudGVyJywnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgXTtcblxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGFiVGV4dENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0YWJUZXh0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQWN0aXZlVGFiVGV4dENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHthY3RpdmV0YWJUZXh0Q29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlVGFiQmFja2dyb3VuZENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0YWJCYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQWN0aXZlVGFiQmFja2dyb3VuZENvbG9yPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHthY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3I6IHZhbHVlfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtaW5zcGVjdG9yLXdyYXBwZXJcIj5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHkgdGl0bGU9e19fKCdUYWIgU2V0dGluZ3MnKX0gaW5pdGlhbE9wZW49e2ZhbHNlfT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oJ1RhYiBMYXlvdXQnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGFiTGF5b3V0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJMYXlvdXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3RhYkxheW91dDogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuXG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQ29sb3IgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTZXR0aW5ncz17W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRhYlRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlVGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1RleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aXZldGFiVGV4dENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VBY3RpdmVUYWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFRleHQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGFiQmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VUYWJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVGFiIEJhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VBY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQWN0aXZlIFRhYiBCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdfT5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tIFwiLi9jb21wb25lbnQvaW5zcGVjdG9yXCI7XG5jb25zdCB7IF9fIH0gPSB3cC5pMThuXG5jb25zdCB7IFRvb2x0aXAsIFBhbmVsQm9keSwgVG9vbGJhciB9ID0gd3AuY29tcG9uZW50cztcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcbmNvbnN0IHsgd2l0aFNlbGVjdCwgd2l0aERpc3BhdGNoIH0gPSB3cC5kYXRhO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcywgUmljaFRleHQgfSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmNsYXNzIEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBkZXZpY2U6ICdtZCcsXG4gICAgICAgICAgICBpbml0aWFsUmVuZGVyOiB0cnVlLFxuICAgICAgICAgICAgYWN0aXZlVGFiOiAxLFxuICAgICAgICAgICAgc3BhY2VyOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0ljb25QaWNrZXI6IGZhbHNlLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2V0QXR0cmlidXRlcywgY2xpZW50SWQsIGF0dHJpYnV0ZXM6IHsgdW5pcXVlSWQgfSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgX2NsaWVudCA9IGNsaWVudElkLnN1YnN0cigwLCA2KTtcbiAgICAgICAgaWYgKCF1bmlxdWVJZCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHVuaXF1ZUlkICYmIHVuaXF1ZUlkICE9IF9jbGllbnQpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoeyB1bmlxdWVJZDogX2NsaWVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6IHsgdGFicyB9LCBjbGllbnRJZCwgYmxvY2sgfSA9IHRoaXMucHJvcHNcblxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuaW5pdGlhbFJlbmRlciAmJiBwcmV2UHJvcHMuYmxvY2suaW5uZXJCbG9ja3MubGVuZ3RoIDwgYmxvY2suaW5uZXJCbG9ja3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudFRhYkJsb2NrID0gJChgI2Jsb2NrLSR7Y2xpZW50SWR9YClcbiAgICAgICAgICAgIGxldCBhY3RpdmVUYWIgPSAkKGAjYmxvY2stJHtibG9jay5pbm5lckJsb2Nrc1t0YWJzIC0gMV0uY2xpZW50SWR9YCwgY3VycmVudFRhYkJsb2NrKTtcbiAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLWFjdGl2ZScsIGN1cnJlbnRUYWJCbG9jaykucmVtb3ZlQ2xhc3MoJ2Jsb2Nrc3BhcmUtYWN0aXZlJylcbiAgICAgICAgICAgIGFjdGl2ZVRhYi5hZGRDbGFzcyhcImJsb2Nrc3BhcmUtYWN0aXZlXCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVUaXRsZXMgPSAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlczogeyB0YWJUaXRsZXMgfSwgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgbW9kaWZpZWRUaXRsZXMgPSB0YWJUaXRsZXMubWFwKCh0aXRsZSwgdGhpc0luZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXNJbmRleCkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0geyAuLi50aXRsZSwgLi4udmFsdWUgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRpdGxlXG4gICAgICAgIH0pXG4gICAgICAgIHNldEF0dHJpYnV0ZXMoeyB0YWJUaXRsZXM6IG1vZGlmaWVkVGl0bGVzIH0pXG4gICAgfVxuXG4gICAgcmVuZGVyVGFiVGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOlxuICAgICAgICAgICAgICAgIHsgdGFiVGl0bGVzLFxuICAgICAgICAgICAgICAgICAgICB0YWJCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgdGFiVGV4dENvbG9yLGFjdGl2ZXRhYlRleHRDb2xvclxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRJZFxuICAgICAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgICAgIGxldCBhY3RfdGFiX2JnID0gXCIjOGIyNDljXCI7XG4gICAgICAgIGlmKGFjdGl2ZVRhYkJhY2tncm91bmRDb2xvcil7XG4gICAgICAgICAgICBhY3RfdGFiX2JnID0gYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhYl9iZyA9IFwiIzNjMWE1YlwiO1xuICAgICAgICBpZih0YWJCYWNrR3JvdW5kQ29sb3Ipe1xuICAgICAgICAgICAgdGFiX2JnID0gIHRhYkJhY2tHcm91bmRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RfdGFiX3RleHQgPSBcIiNmZmZcIjtcbiAgICAgICAgaWYoYWN0aXZldGFiVGV4dENvbG9yKXtcbiAgICAgICAgICAgIGFjdF90YWJfdGV4dCA9IGFjdGl2ZXRhYlRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0YWJfdGV4dCA9IFwiI2ZmZlwiO1xuXG4gICAgICAgIGlmKHRhYlRleHRDb2xvcil7XG4gICAgICAgICAgICB0YWJfdGV4dCA9IHRhYlRleHRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjdXJyZW50VGFiQmxvY2sgPSAkKGAjYmxvY2stJHtjbGllbnRJZH1gKVxuICAgICAgICBjb25zdCB7IHNob3dJY29uUGlja2VyIH0gPSB0aGlzLnN0YXRlXG4gICAgICAgIHJldHVybiB0YWJUaXRsZXMubWFwKCh0aXRsZSwgaW5kZXgpID0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXRhYi1pdGVtICR7KHRoaXMuc3RhdGUuYWN0aXZlVGFiID09IGluZGV4ICsgMSkgPyAnYmxvY2tzcGFyZS1hY3RpdmUnIDogJyd9YH0+XG5cdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtdGFiLXRpdGxlICR7dGl0bGUuaWNvbk5hbWUgPyAnYmxvY2tzcGFyZS1oYXMtaWNvbi0nICsgaWNvblBvc2l0aW9uIDogJyd9YH0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWN0aXZlVGFiID0gJChgI2Jsb2NrLSR7YmxvY2suaW5uZXJCbG9ja3NbaW5kZXhdLmNsaWVudElkfWAsIGN1cnJlbnRUYWJCbG9jayk7XG4gICAgICAgICAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLXRhYi1jb250ZW50LmJsb2Nrc3BhcmUtYWN0aXZlJywgY3VycmVudFRhYkJsb2NrKS5yZW1vdmVDbGFzcygnYmxvY2tzcGFyZS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlVGFiLmFkZENsYXNzKFwiYmxvY2tzcGFyZS1hY3RpdmVcIik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVUYWI6IGluZGV4ICsgMSwgaW5pdGlhbFJlbmRlcjogZmFsc2UsIHNob3dJY29uUGlja2VyOiAhc2hvd0ljb25QaWNrZXIgfSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjoodGhpcy5zdGF0ZS5hY3RpdmVUYWIgPT0gaW5kZXggKyAxKT9hY3RfdGFiX2JnOnRhYl9iZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6KHRoaXMuc3RhdGUuYWN0aXZlVGFiID09IGluZGV4ICsgMSk/YWN0X3RhYl90ZXh0OnRhYl90ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ0FkZCBUYWIgVGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aXRsZS50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB0aGlzLnVwZGF0ZVRpdGxlcyh7IHRpdGxlOiB2YWx1ZSB9LCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHQ8VG9vbHRpcCB0ZXh0PXtfXygnRGVsZXRlIHRoaXMgdGFiJyl9PlxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWN0aW9uLXRhYi1yZW1vdmVcIiBvbkNsaWNrPXsoKSA9PiB0aGlzLmRlbGV0ZVRhYihpbmRleCl9IHJvbGU9XCJidXR0b25cIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzTmFtZT1cImZhcyBmYS10aW1lc1wiIC8+XG5cdFx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHQ8L1Rvb2x0aXA+XG5cdFx0XHQ8L3NwYW4+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBkZWxldGVUYWIgPSAodGFiSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgeyBhY3RpdmVUYWIgfSA9IHRoaXMuc3RhdGVcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IHRhYlRpdGxlcywgdGFicyB9LCBzZXRBdHRyaWJ1dGVzLCBibG9jaywgcmVtb3ZlQmxvY2ssIHVwZGF0ZUJsb2NrQXR0cmlidXRlcywgY2xpZW50SWQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gdGFiVGl0bGVzLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGluZGV4ICE9IHRhYkluZGV4KVxuICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdGFiVGl0bGVzOiBuZXdJdGVtcywgdGFiczogdGFicyAtIDEgfSlcbiAgICAgICAgbGV0IGkgPSB0YWJJbmRleCArIDFcbiAgICAgICAgd2hpbGUgKGkgPCB0YWJzKSB7XG4gICAgICAgICAgICB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMoYmxvY2suaW5uZXJCbG9ja3NbaV0uY2xpZW50SWQsIE9iamVjdC5hc3NpZ24oYmxvY2suaW5uZXJCbG9ja3NbaV0uYXR0cmlidXRlcywgeyBpZDogYmxvY2suaW5uZXJCbG9ja3NbaV0uYXR0cmlidXRlcy5pZCAtIDEgfSkpXG4gICAgICAgICAgICBpKytcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbW92ZUJsb2NrKGJsb2NrLmlubmVyQmxvY2tzW3RhYkluZGV4XS5jbGllbnRJZClcblxuICAgICAgICBpZiAodGFiSW5kZXggKyAxID09PSBhY3RpdmVUYWIpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VGFiQmxvY2sgPSAkKGAjYmxvY2stJHtjbGllbnRJZH1gKVxuICAgICAgICAgICAgbGV0IG5leHRBY3RpdmVUYWIgPSAkKGAjYmxvY2stJHtibG9jay5pbm5lckJsb2Nrc1t0YWJJbmRleCArIDEgPCB0YWJzID8gdGFiSW5kZXggKyAxIDogdGFicyA+PSAyID8gdGFiSW5kZXggLSAxIDogdGFiSW5kZXhdLmNsaWVudElkfWAsIGN1cnJlbnRUYWJCbG9jaylcbiAgICAgICAgICAgICQoJy5ibG9ja3NwYXJlLWFjdGl2ZScsIGN1cnJlbnRUYWJCbG9jaykucmVtb3ZlQ2xhc3MoJ2Jsb2Nrc3BhcmUtYWN0aXZlJylcbiAgICAgICAgICAgIG5leHRBY3RpdmVUYWIuYWRkQ2xhc3MoXCJibG9ja3NwYXJlLWFjdGl2ZVwiKVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZVRhYjogdGFiSW5kZXggPT0gMCA/IDEgOiB0YWJJbmRleCArIDEgPCB0YWJzID8gdGFiSW5kZXggKyAxIDogdGFiSW5kZXgsIGluaXRpYWxSZW5kZXI6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGFiSW5kZXggKyAxIDwgYWN0aXZlVGFiICYmIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVUYWI6IGFjdGl2ZVRhYiAtIDEsIGluaXRpYWxSZW5kZXI6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgbmV3VGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6IHsgdGFicywgdGFiVGl0bGVzIH0gfSA9IHRoaXMucHJvcHNcbiAgICAgICAgbGV0IG5ld1RpdGxlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFiVGl0bGVzKSk7XG4gICAgICAgIG5ld1RpdGxlc1t0YWJzXSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiBfXyhgVGFiICR7dGFicyArIDF9YCksXG4gICAgICAgICAgICBpY29uOiB7fSxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VGl0bGVzXG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgICAgICB0YWJzLFxuICAgICAgICAgICAgdGFiVGl0bGVzLFxuICAgICAgICAgICAgdGFiU3R5bGUsXG4gICAgICAgICAgICB0YWJMYXlvdXQsXG4gICAgICAgICAgICB0YWJBbGlnbm1lbnRcblxuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgc2V0QXR0cmlidXRlcywgaXNTZWxlY3RlZCB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBsZXQgaXRlcmF0b3IgPSBbXSwgaW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCB0YWJzKSB7XG4gICAgICAgICAgICBpdGVyYXRvci5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ue3NldEF0dHJpYnV0ZXMsIC4uLnRoaXMucHJvcHN9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrLSR7dW5pcXVlSWR9YH0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGFiIGJsb2Nrc3BhcmUtdGFiLXN0eWxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYlN0eWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiTGF5b3V0XG4gICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2Nrc3BhcmUtdGFiLW5hdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYlN0eWxlID09ICAnYmxvY2tzcGFyZS1ob3Jpem9udGFsJyk/dGFiQWxpZ25tZW50IDonJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlclRhYlRpdGxlcygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRleHQ9e19fKCdBZGQgbmV3IHRhYicpfT5cblx0XHRcdFx0XHRcdFx0XHQ8c3Ryb25nIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtYWRkLW5ldy10YWJcIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlVGFiOiB0YWJzICsgMSwgaW5pdGlhbFJlbmRlcjogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYnM6IHRhYnMgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRpdGxlczogdGhpcy5uZXdUaXRsZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gcm9sZT1cImJ1dHRvblwiIGFyZWFMYWJlbD17X18oJ0FkZCBuZXcgdGFiJyl9PlxuXHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCIgLz5cblx0XHRcdFx0XHRcdFx0XHQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItYm9keWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e2l0ZXJhdG9yLm1hcCh0YWJJbmRleCA9PiBbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInLCB7IGlkOiB0YWJJbmRleCArIDEsIGN1c3RvbUNsYXNzTmFtZTogdGFiSW5kZXggPT0gMCA/IGBibG9ja3NwYXJlLXRhYi1jb250ZW50IGJsb2Nrc3BhcmUtYWN0aXZlIHdwLWJsb2NrLWJsb2Nrc3BhcmUtYmxvY2tzcGFyZS10YWJgIDogYGJsb2Nrc3BhcmUtdGFiLWNvbnRlbnQgd3AtYmxvY2stYmxvY2tzcGFyZS1ibG9ja3NwYXJlLXRhYmAgfV0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUxvY2s9XCJhbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkQmxvY2tzPXtbJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInXX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoW1xuICAgIHdpdGhTZWxlY3QoKHNlbGVjdCwgb3duUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRJZCB9ID0gb3duUHJvcHM7XG4gICAgICAgIGNvbnN0IHsgZ2V0QmxvY2sgfSA9IHNlbGVjdCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiBnZXRCbG9jayhjbGllbnRJZClcbiAgICAgICAgfTtcbiAgICB9KSxcbiAgICB3aXRoRGlzcGF0Y2goKGRpc3BhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5zZXJ0QmxvY2ssIHJlbW92ZUJsb2NrLCB1cGRhdGVCbG9ja0F0dHJpYnV0ZXMgfSA9IGRpc3BhdGNoKCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5zZXJ0QmxvY2ssXG4gICAgICAgICAgICByZW1vdmVCbG9jayxcbiAgICAgICAgICAgIHVwZGF0ZUJsb2NrQXR0cmlidXRlc1xuICAgICAgICB9O1xuICAgIH0pLFxuXSkoRWRpdClcbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnRcbmNvbnN0IHsgSW5uZXJCbG9ja3MgfSA9IHdwLmJsb2NrRWRpdG9yXG5cblxuY2xhc3MgU2F2ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyVGFiVGl0bGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZXM6XG4gICAgICAgICAgICB7IHRhYlRpdGxlcyxcbiAgICAgICAgICAgICAgICB0YWJCYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIHRhYlRleHRDb2xvcixhY3RpdmV0YWJUZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIHRhYkFsaWdubWVudCB9XG4gICAgICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgICAgbGV0IGFjdF90YWJfYmcgPSBcIiM4YjI0OWNcIjtcbiAgICAgICAgaWYoYWN0aXZlVGFiQmFja2dyb3VuZENvbG9yKXtcbiAgICAgICAgICAgIGFjdF90YWJfYmcgPSBhY3RpdmVUYWJCYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFiX2JnID0gXCIjM2MxYTViXCI7XG4gICAgICAgIGlmKHRhYkJhY2tHcm91bmRDb2xvcil7XG4gICAgICAgICAgICB0YWJfYmcgPSAgdGFiQmFja0dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFjdF90YWJfdGV4dCA9IFwiI2ZmZlwiO1xuICAgICAgICBpZihhY3RpdmV0YWJUZXh0Q29sb3Ipe1xuICAgICAgICAgICAgYWN0X3RhYl90ZXh0ID0gYWN0aXZldGFiVGV4dENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhYl90ZXh0ID0gXCIjZmZmXCI7XG5cbiAgICAgICAgaWYodGFiVGV4dENvbG9yKXtcbiAgICAgICAgICAgIHRhYl90ZXh0ID0gdGFiVGV4dENvbG9yO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gdGFiVGl0bGVzLm1hcCgodGl0bGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItaXRlbSAkeyhpbmRleCA9PSAwKSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ31gfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz17YGJsb2Nrc3BhcmUtdGFiLXRpdGxlICR7dGl0bGUuaWNvbk5hbWUgPyAnYmxvY2tzcGFyZS1oYXMtaWNvbi0nICsgaWNvblBvc2l0aW9uIDogJyd9YH0gcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOihpbmRleCA9PSAwKT9hY3RfdGFiX2JnOnRhYl9iZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6KGluZGV4ID09IDApP2FjdF90YWJfdGV4dDp0YWJfdGV4dFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgIHRhYi1iZz17dGFiX2JnfSBhdGFiLWJnPXthY3RfdGFiX2JnfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYi10ZXh0PXt0YWJfdGV4dH0gYXRhYi10ZXh0PXthY3RfdGFiX3RleHR9XG4gICAgICAgICAgICAgICAgPlxuXG4gICAgICAgICAgICAgICAgICAgIHt0aXRsZS50aXRsZX1cblxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdW5pcXVlSWQsIHRhYnMsIHRhYlN0eWxlLHRhYkxheW91dCx0YWJBbGlnbm1lbnR9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzXG4gICAgICAgIGxldCBpdGVyYXRvciA9IFtdLCBpbmRleCA9IDBcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgdGFicykge1xuICAgICAgICAgICAgaXRlcmF0b3IucHVzaChpbmRleClcbiAgICAgICAgICAgIGluZGV4KytcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrYH0gPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9jay10YWInLFxuICAgICAgICAgICAgICAgICAgICB0YWJTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGFiTGF5b3V0XG5cbiAgICAgICAgICAgICAgICApfT5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2Nrc3BhcmUtdGFiLW5hdicsXG4gICAgICAgICAgICAgICAgICAgICAgICAodGFiU3R5bGUgPT0gICdibG9ja3NwYXJlLWhvcml6b250YWwnKT90YWJBbGlnbm1lbnQgOicnXG4gICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyVGFiVGl0bGVzKGl0ZXJhdG9yKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS10YWItYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmUiLCJpbXBvcnQgJy4vc3R5bGVzL3N0eWxlLnNjc3MnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBUYWJzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0FkZCB0YWJzJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy50YWJzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmFsc2UsXG4gICAgICAgIGFsaWduOiBbJ2NlbnRlcicsICd3aWRlJywgJ2Z1bGwnXSxcbiAgICB9LFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0YWInLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygndGFicycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0YWJiZWQnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnY29udGVudCcsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgdGFiVGl0bGVzOiBbXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMVwiIH0sXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMlwiIH0sXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgM1wiIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgaW5uZXJCbG9ja3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmxvY2tzcGFyZS9ibG9ja3NwYXJlLXRhYicsXG4gICAgICAgICAgICAgICAgaW5uZXJCbG9ja3M6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2Nrc3BhcmUvYmxvY2tzcGFyZS10YWInLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRpdGxlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHRpdGxlOiBcIlRhYiAxXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0aXRsZTogXCJUYWIgMlwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwiVGFiIDNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOlNhdmVcblxufSk7XG4iLCJjb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudFxuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3JcbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGVzOiB7IGlkIH0gfSA9IHRoaXMucHJvcHNcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS10YWItY29udGVudCAkeyhpZCA9PSAxKSA/ICdibG9ja3NwYXJlLWFjdGl2ZScgOiAnJ31gfT5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3MuQ29udGVudCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBTYXZlIiwiY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IElubmVyQmxvY2tzIH0gPSB3cC5ibG9ja0VkaXRvcjtcblxuY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8SW5uZXJCbG9ja3NcblxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZUxvY2s9e2ZhbHNlfSAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBFZGl0IiwiaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL1NhdmUnXG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuICAgIHRpdGxlOiBfXygnVGFiJywnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtdGFicyddLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGh0bWw6IGZhbHNlLFxuICAgICAgICBpbnNlcnRlcjogZmFsc2UsXG4gICAgICAgIHJldXNhYmxlOiBmYWxzZSxcbiAgICB9LFxuICAgIGljb246ICdjYXJ0JyxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIHVuaXF1ZUlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnJyB9LFxuICAgICAgICBpZDogeyB0eXBlOiAnbnVtYmVyJywgZGVmYXVsdDogMSwgfSxcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnJyB9XG4gICAgfSxcbiAgICBnZXRFZGl0V3JhcHBlclByb3BzKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgcmV0dXJuIHsgJ2RhdGEtdGFiJzogYXR0cmlidXRlcy5pZCwgY2xhc3NOYW1lOiBgd3AtYmxvY2sgZWRpdG9yLWJsb2NrLWxpc3RfX2Jsb2NrIGJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jayAke2F0dHJpYnV0ZXMuY3VzdG9tQ2xhc3NOYW1lfWAgfVxuICAgIH0sXG4gICAgZWRpdDogRWRpdCxcbiAgICBzYXZlOiBTYXZlXG59KTsiLCJcblxuLy8gU2V0dXAgdGhlIGJsb2NrXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLy8gSW1wb3J0IGJsb2NrIGRlcGVuZGVuY2llcyBhbmQgY29tcG9uZW50c1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbi8qKlxuICogQ3JlYXRlIGEgUHJpY2luZyB3cmFwcGVyIENvbXBvbmVudFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0aW1vbmlhbFdyYXBwZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IoIHByb3BzICkge1xuICAgICAgICBzdXBlciggLi4uYXJndW1lbnRzICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIC8vIFNldHVwIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXAsXG4gICAgICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWNvbHVtbnMtJyArIGNvbHVtbnMsXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS10ZXN0aW1vbmlhbC1nYXAtJytjb2x1bW5zR2FwXG4gICAgICAgIF0sIHtcbiAgICAgICAgICAgIFsgJ2FsaWduJyArIGFsaWduIF06IGFsaWduXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9ID5cbiAgICAgICAgICAgICAgICB7IHRoaXMucHJvcHMuY2hpbGRyZW4gfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IEJTSGVhZGVyU2V0dGluZ3MgZnJvbSBcIi4uLy4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyLXNldHRpbmdzXCI7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi8uLi8uLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBQYW5lbEJvZHksXG4gICAgUmFuZ2VDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cblxuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZUZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJ0aXRsZUNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlcnN1YnRpdGxlQ29sb3IsXG4gICAgICAgICAgICAgICAgaGVhZGVybGF5b3V0T3B0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcCxcbiAgICAgICAgICAgICAgICB0aXRsZVBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nVG9wLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcixcbiAgICAgICAgICAgICAgICBkYXNoQ29sb3IsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRTaXplLFxuICAgICAgICAgICAgICAgIHRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3IsXG4gICAgICAgICAgICAgICAgYmFja0dyb3VuZENvbG9yLFxuICAgICAgICAgICAgICAgIGVuYWJsZUJveFNoYWRvdyxcbiAgICAgICAgICAgICAgICB4T2Zmc2V0LFxuICAgICAgICAgICAgICAgIHlPZmZzZXQsXG4gICAgICAgICAgICAgICAgYmx1cixcbiAgICAgICAgICAgICAgICBzcHJlYWQsXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlc1xuXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cblxuICAgICAgICBjb25zdCBvbkNoYW5nZVN0YXJDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoe3N0YXJDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VEZXNjcmlwdGlvbkNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7dGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcjogdmFsdWV9KTtcbiAgICAgICAgY29uc3Qgb25DaGFuZ2VCYWNrZ3JvdW5kY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtiYWNrR3JvdW5kQ29sb3I6IHZhbHVlfSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPFBhbmVsQm9keVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cblxuICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXJTZXR0aW5nc1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCbG9ja0dhcHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlRm9udFNpemU9e3N1YnRpdGxlRm9udFNpemUgPT4gc2V0QXR0cmlidXRlcyh7c3VidGl0bGVGb250U2l6ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlSGVhZGVyU3R5bGU9e2hlYWRlcmxheW91dE9wdGlvbiA9PiBzZXRBdHRyaWJ1dGVzKHsgaGVhZGVybGF5b3V0T3B0aW9uIH0pIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJib3hDb2xvcj17aGVhZGVyYm94Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZWJveGNvbG9yPXtoZWFkZXJib3hDb2xvciA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJib3hDb2xvcn0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlRGFzaENvbG9yPXtkYXNoQ29sb3IgPT4gc2V0QXR0cmlidXRlcyh7ZGFzaENvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnRpdGxlQ29sb3I9e2hlYWRlcnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2V0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXRpdGxlUGFkZGluZ0JvdHRvbT0ge3RpdGxlUGFkZGluZ0JvdHRvbSA9PnNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ0JvdHRvbX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzdWJ0aXRsZUNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdUb3B9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ0JvdHRvbT17c3VidGl0bGVQYWRkaW5nQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ0JvdHRvbX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cblxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdEZXNjcmlwdGlvbiBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICA+XG5cbiAgICAgICAgICAgICAgICA8UGFuZWxDb2xvclNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VEZXNjcmlwdGlvbkNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuXG4gICAgICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9JbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICApO1xuICAgIH1cblxufSIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuY29uc3QgcHJldl9pbWcgPSBibG9ja3NwYXJlX2dsb2JhbHM7XG5pbXBvcnQgeyBFbXB0eVN0YXIsIEZ1bGxTdGFyLCBIYWxmU3RhciB9IGZyb20gXCIuLi8uLi8uLi9pbmMvaWNvbi1saWIvc3RhclwiO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2NvbXBvbmVudHMvaW5zcGVjdG9yJztcbmltcG9ydCBCU0hlYWRlciBmcm9tIFwiLi4vLi4vc2VjdGlvbi1oZWFkZXIvY29tcG9uZW50cy9oZWFkZXJzXCI7XG5pbXBvcnQgZGFzaENvbG9ycyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL2Rhc2hcIjtcbmltcG9ydCB0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvdGl0bGVcIjtcbmltcG9ydCBzdWJ0aXRsZUNvbG9yIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvc3VidGl0bGVcIjtcbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5jb25zdCBBTExPV0VEX0JMT0NLUyA9IFsgJ2NvcmUvaW1hZ2UnXTtcbmNvbnN0IFRFTVBMQVRFID0gW1xuICAgIFsnY29yZS9pbWFnZScse1xuICAgICAgICB1cmw6cHJldl9pbWcubWVudV9pbWdfdXJsLFxuICAgICAgICBjbGFzc05hbWU6J2lzLXN0eWxlLWNpcmNsZS1tYXNrJyxcbiAgICAgICAgd2lkdGg6MTIwLFxuICAgICAgICBoZWlnaHQ6MTIwLFxuICAgICAgICBhbGlnbjonY2VudGVyJyxcblxuICAgIH1dXG5dO1xuXG5jb25zdCB7X199ID0gd3AuaTE4bjtcblxuY29uc3Qge0NvbXBvbmVudCwgRnJhZ21lbnR9ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIElubmVyQmxvY2tzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cblxuXG4vKipcbiAqIEJsb2NrIGVkaXQgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgc3RhckNvdW50LFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIHN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzLFxuICAgICAgICAgICAgICAgIGVtcHR5U3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcblxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3IgIHsuLi50aGlzLnByb3BzfS8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGVzdGltb25pYWwtd3JhcCdcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6XCIjZmZmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgPyBib3JkZXJSYWRpdXMgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYXV0aG9yLXdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1pbWctd3JhcHBlcmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZT17IFRFTVBMQVRFIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEJsb2Nrcz17IEFMTE9XRURfQkxPQ0tTIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlSW5zZXJ0VXBkYXRlc1NlbGVjdGlvbj17IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWF1dGhvci1kZXNpZ25hdGlvbmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCU0hlYWRlciB7Li4udGhpcy5wcm9wc30+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2hlYWRlclRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7aGVhZGVyVGl0bGU6IHZhbHVlfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdTdWIgVGl0bGUnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JTSGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIHtlbmFibGVSYXRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdGFyLXJhdGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN0YXItb3V0ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtoaWdobGlnaHRlZFN0YXJzOiAwfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Wy4uLkFycmF5KHN0YXJDb3VudCldLm1hcCgoZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXJhdGluZ3NgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aGlnaGxpZ2h0ZWRTdGFyczogaSArIDF9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkU3RhcnMgJSAxID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RhcnM6IGkgKyAoc2VsZWN0ZWRTdGFycyAtIDEgPT09IGkgPyAwLjUgOiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFyczogaSArIChzZWxlY3RlZFN0YXJzIC0gMC41ID09PSBpID8gMSA6IDAuNSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSA8IChoaWdobGlnaHRlZFN0YXJzID8gaGlnaGxpZ2h0ZWRTdGFycyA6IHNlbGVjdGVkU3RhcnMpID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWRTdGFycyAtIDEgPT09IGkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdGFycyAlIDEgPiAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZFN0YXJzIC0gc2VsZWN0ZWRTdGFycyAtIDAuNSAhPT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IGhpZ2hsaWdodGVkU3RhcnMgLSBzZWxlY3RlZFN0YXJzICE9PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIYWxmU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RnVsbFN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogc2VsZWN0ZWRTdGFycyAtIGkgPj0gMSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGdWxsU3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtzdGFyQ29sb3I/c3RhckNvbG9yOlwiI2ZiZDAxMlwifS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGFsZlN0YXIgc2l6ZT17c3RhclNpemV9IGZpbGxDb2xvcj17c3RhckNvbG9yP3N0YXJDb2xvcjpcIiNmYmQwMTJcIn0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVtcHR5U3RhciBzaXplPXtzdGFyU2l6ZX0gZmlsbENvbG9yPXtlbXB0eVN0YXJDb2xvcj9lbXB0eVN0YXJDb2xvcjonI2Q1ZDNkMyd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHt0ZXN0aW1vbmlhbERlc2NyaXB0aW9uOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0ZXN0aW1vbmlhbERlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtfXygnRGVzY3JpcHRpb24nLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0U2l6ZSArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3I/dGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcjpcIiM2ZDZkNmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcFBsYWNlaG9sZGVyT25Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufSIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGJveFNoYWRvd1N0eWxlcyBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL2JveC1zaGFkb3dcIjtcbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBSaWNoVGV4dFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBDb21wb25lbnQgfSA9IHdwLmVsZW1lbnQ7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzZWN0aW9uQWxpZ25tZW50LFxuICAgICAgICAgICAgICAgIGVuYWJsZVJhdGluZ3MsXG4gICAgICAgICAgICAgICAgc3RhckNvdW50LFxuICAgICAgICAgICAgICAgIHN0YXJTaXplLFxuICAgICAgICAgICAgICAgIHN0YXJDb2xvcixcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFN0YXJzLFxuICAgICAgICAgICAgICAgIGVtcHR5U3RhckNvbG9yLFxuICAgICAgICAgICAgICAgIGhlYWRlclRhZ09wdGlvbixcbiAgICAgICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgICAgICBoZWFkZXJTdWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dFNpemUsXG4gICAgICAgICAgICAgICAgdGVzdGltb25pYWxEZXNjcmlwdGlvblRleHRDb2xvcixcbiAgICAgICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzXG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLFxuXG5cbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cblxuICAgICAgICBjb25zdCB0aXRsZURhc2hTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5kYXNoQ29sb3JzKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi50aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKGF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cblxuXG4gICAgICAgIGNvbnN0IGJsb2Nrc3BhcmVfbWFrZV9mdWxsX3N0YXI9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2ZiZDAxMid9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjI1NSw0MDIuMjEyIDQxMi41OSw0OTcuMjUgMzcwLjg5NywzMTguMDExIDUxMCwxOTcuNDcyIDMyNi42MywxODEuNzM4IDI1NSwxMi43NSAxODMuMzcxLDE4MS43MzggMCwxOTcuNDcyIDEzOS4xMDMsMzE4LjAxMSA5Ny40MSw0OTcuMjVcIi8+XG4gICAgICAgICAgICA8L3N2Zz48L2Rpdj47XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2hhbGZfc3RhciA9IChzLGMpID0+e1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1yYXRpbmdzYH0+IDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2ZiZDAxMid9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMCwwbDAsMGwxMzkuMTAzLDEyMC41MzlMOTcuNDEsNDk3LjI1TDI1NSw0MDIuMTg2bDAsMCBsMTU3LjU5LDk1LjAzOWwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OFYxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjYgTDI1NSwzNTQuMzQ4elwiIC8+XG4gICAgICAgICAgICA8L3N2Zz48L2Rpdj47XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgYmxvY2tzcGFyZV9tYWtlX2VtcHR5X3N0YXIgPSAocyxjKSA9PntcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtcmF0aW5nc2B9PjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9e2M/YzonI2Q1ZDNkMyd9IHdpZHRoPXtzfSBoZWlnaHQ9e3N9IHZpZXdCb3g9XCIwIDAgNTEwIDUxMFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNTEwLDE5Ny40NzJsLTE4My4zNy0xNS43MzRMMjU1LDEyLjc1bC03MS42MjksMTY4Ljk4OEwwLDE5Ny40NzJsMTM5LjEwMywxMjAuNTM5TDk3LjQxLDQ5Ny4yNUwyNTUsNDAyLjE4NiBsMTU3LjU5LDk1LjA2NGwtNDEuNjkyLTE3OS4yMzlMNTEwLDE5Ny40NzJ6IE0yNTUsMzU0LjM0OGwtOTUuOTU3LDU3Ljg4NmwyNS4zOTgtMTA5LjE2NmwtODQuNzM2LTczLjM4OWwxMTEuNjktOS41ODggTDI1NSwxMTcuMTcybDQzLjYwNSwxMDIuOTE4bDExMS42ODksOS41ODhsLTg0LjcxMSw3My4zODlsMjUuMzk4LDEwOS4xNjZMMjU1LDM1NC4zNDh6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPjwvZGl2PjtcblxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBzdGFycyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgc3RhckNvdW50OyBpKyspe1xuICAgICAgICAgICAgc3RhcnMucHVzaCAoaSA8IHNlbGVjdGVkU3RhcnMgP1xuICAgICAgICAgICAgICAgIChzZWxlY3RlZFN0YXJzIC0gaSA+PSAxID9cbiAgICAgICAgICAgICAgICAgICAgYmxvY2tzcGFyZV9tYWtlX2Z1bGxfc3RhcihzdGFyU2l6ZSwgc3RhckNvbG9yKSA6IGJsb2Nrc3BhcmVfbWFrZV9oYWxmX3N0YXIoc3RhclNpemUsIHN0YXJDb2xvcikpXG4gICAgICAgICAgICAgICAgOiBibG9ja3NwYXJlX21ha2VfZW1wdHlfc3RhcihzdGFyU2l6ZSxlbXB0eVN0YXJDb2xvcikpO1xuICAgICAgICB9XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2stdGVzdGltb25pYWwtd3JhcCdcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyA/IGJvcmRlclJhZGl1cyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6YmFja0dyb3VuZENvbG9yP2JhY2tHcm91bmRDb2xvcjpcIiNmZmZcIn19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiAgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1hdXRob3Itd3JhcGB9PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtaW1nLXdyYXBwZXJgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc2VjdGlvbi1oZWFkLXdyYXBcIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBzZWN0aW9uQWxpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS13cmFwcGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS11cHBlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJUaXRsZSAmJlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17dGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclN1YlRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dC5Db250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtlbmFibGVSYXRpbmdzICYmXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydibG9ja3NwYXJlLXN0YXItcmF0aW5nJ30+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1zdGFyLW91dGVyLWNvbnRhaW5lcmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXN0YXItaW5uZXItY29udGFpbmVyYH0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS10ZXN0aW1vbmlhbC1jb250ZW50XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Rlc3RpbW9uaWFsRGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnRlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0U2l6ZSArJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjp0ZXN0aW1vbmlhbERlc2NyaXB0aW9uVGV4dENvbG9yP3Rlc3RpbW9uaWFsRGVzY3JpcHRpb25UZXh0Q29sb3I6XCIjNmQ2ZDZkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG5cblxuICAgICAgICAgICAgICAgICAgICAvPlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG5cbn0iLCJpbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgIG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgc2VjdGlvbkhlYWRlckF0dHJpYnV0ZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2F0dHJpYnV0ZXMvc2VjdGlvbi1oZWFkZXJcIjtcbmltcG9ydCBFZGl0IGZyb20gJy4vRWRpdCdcbmltcG9ydCBTYXZlIGZyb20gJy4vU2F2ZSc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCB7Y2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPXtcbiAgICAuLi5zZWN0aW9uSGVhZGVyQXR0cmlidXRlcyxcbiAgICAuLi5tZXRhZGF0YS5hdHRyaWJ1dGVzLFxuICAgIC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IGNvbnN0IHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzID0ge1xuICAgIHRpdGxlOiBfXygnVGVzdGltb25pYWwgIEl0ZW0nLCAnYmxvY2tzcGFyZScpLFxuICAgIGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheSBjcmVhdGl2ZSB0ZXN0aW1vbmlhbC4nLCAnYmxvY2tzcGFyZScpLFxuICAgIHBhcmVudDogWydibG9ja3NwYXJlL2Jsb2Nrc3BhcmUtdGVzdGltb25pYWwnXSxcbiAgICBpY29uOiAnbGluaycsXG4gICAgY2F0ZWdvcnksXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgaHRtbDogZmFsc2UsXG4gICAgICAgIGluc2VydGVyOiBmYWxzZSxcbiAgICAgICAgcmV1c2FibGU6IGZhbHNlLFxuICAgIH0sXG4gICAgYXR0cmlidXRlcyxcblxuICAgIGVkaXQ6IEVkaXQsXG4gICAgc2F2ZTogU2F2ZVxufTtcblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2Jsb2Nrc3BhcmUvdGVzdGltb25pYWwtaXRlbScsIHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzKTsiLCJpbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBUZXN0aW1vbmlhbFdyYXBwZXIgZnJvbSAnLi90ZXN0aW1vbmlhbC13cmFwcGVyJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCwgRnJhZ21lbnQgfSA9IHdwLmVsZW1lbnQ7XG5jb25zdCB7IEljb25CdXR0b24sUGFuZWxCb2R5LFJhbmdlQ29udHJvbCxUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyB3aXRoU2VsZWN0LCB3aXRoRGlzcGF0Y2ggfSA9IHdwLmRhdGE7XG5cbmNvbnN0IHtcbiAgICBJbm5lckJsb2NrcyxcbiAgICBJbnNwZWN0b3JDb250cm9scyxcbn0gPSB3cC5ibG9ja0VkaXRvcjtcbmNvbnN0ICB7IGNvbXBvc2UgfSA9d3AuY29tcG9zZTtcblxuaW1wb3J0IHt0ZXN0aW1vbmlhbEl0ZW1TZXR0aW5ncyB9IGZyb20gJy4vdGVzdGltb25pYWwtaXRlbSc7XG5pbXBvcnQgQm94U2hhZG93IGZyb20gXCIuLi91dGlscy9jb21wb25lbnQvYm94c2hhZG93XCI7XG5jbGFzcyBUZXN0aW1vbmlhbExpc3RCbG9jayBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgY29uc3QgeyBzZXRBdHRyaWJ1dGVzLCBjbGllbnRJZCwgYXR0cmlidXRlczogeyB1bmlxdWVJZCB9IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBfY2xpZW50ID0gY2xpZW50SWQuc3Vic3RyKDAsIDYpO1xuICAgICAgICBpZiAoIXVuaXF1ZUlkKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKHsgdW5pcXVlSWQ6IF9jbGllbnQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodW5pcXVlSWQgJiYgdW5pcXVlSWQgIT0gX2NsaWVudCkge1xuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyh7IHVuaXF1ZUlkOiBfY2xpZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5zZXJ0VGVzdGltb25pYWxJdGVtKCkge1xuICAgICAgICBsZXQgbmV3QmxvY2tBdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7IGNsaWVudElkLCBpbnNlcnRCbG9jaywgYmxvY2sgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChibG9jay5pbm5lckJsb2NrcyAmJiBibG9jay5pbm5lckJsb2Nrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RCbG9ja0F0dHJpYnV0ZXMgPSBibG9jay5pbm5lckJsb2Nrc1tibG9jay5pbm5lckJsb2Nrcy5sZW5ndGggLSAxXS5hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgaXRlbU51bWJlciA9IGxhc3RCbG9ja0F0dHJpYnV0ZXMuaXRlbU51bWJlciArIDE7XG4gICAgICAgICAgICBjb25zdCBoZWFkaW5nID0gdGVzdGltb25pYWxJdGVtU2V0dGluZ3MuaGVhZGluZztcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHt9LCB7IGl0ZW1OdW1iZXIsIGhlYWRpbmcsIGFjdGl2ZTogZmFsc2UsIGRlZmF1bHRUZXh0OiAnJyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Jsb2NrQXR0cmlidXRlcyA9IHRlc3RpbW9uaWFsSXRlbVNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJsb2NrKGNyZWF0ZUJsb2NrKCdibG9ja3NwYXJlL3Rlc3RpbW9uaWFsLWl0ZW0nLCBuZXdCbG9ja0F0dHJpYnV0ZXMpLCB1bmRlZmluZWQsIGNsaWVudElkKTtcbiAgICB9XG5cbiAgICBnZXRUZXN0aW1vbmlhbFRlbXBsYXRlID0gKGF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtcyA9IGF0dHJpYnV0ZXMuZGVmYXVsdEl0ZW1zO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGRlZmF1bHRJdGVtczsgaysrKSB7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFsnYmxvY2tzcGFyZS90ZXN0aW1vbmlhbC1pdGVtJywge31dKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcblxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGNvbHVtbnNHYXBcblxuICAgICAgICAgICAgfSB9ID0gdGhpcy5wcm9wcztcblxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnQmxvY2sgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UmFuZ2VDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eyBfXyggJ0NvbHVtbnMnLCAnYmxvY2tzcGFyZScgKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyBjb2x1bW5zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICggdmFsdWUgKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoeyBjb2x1bW5zOiB2YWx1ZSB9KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXsgMiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsgX18oICdDb2x1bW5zIEdhcCcsICdibG9ja3NwYXJlJyApIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IGNvbHVtbnNHYXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7IGNvbHVtbnNHYXA6IHZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49eyAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9eyA0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXsgMSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0luc3BlY3RvckNvbnRyb2xzPlxuXG4gICAgICAgICAgICAgICAgPFRlc3RpbW9uaWFsV3JhcHBlciB7Li4udGhpcy5wcm9wc30+XG4gICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU9e3RoaXMuZ2V0VGVzdGltb25pYWxUZW1wbGF0ZShhdHRyaWJ1dGVzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9e1snYmxvY2tzcGFyZS90ZXN0aW1vbmlhbC1pdGVtJ119XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8L1Rlc3RpbW9uaWFsV3JhcHBlcj5cblxuXG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICBdXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFtcbiAgICB3aXRoU2VsZWN0KChzZWxlY3QsIG93blByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50SWQgfSA9IG93blByb3BzO1xuICAgICAgICBjb25zdCB7IGdldEJsb2NrLCBpc0Jsb2NrU2VsZWN0ZWQsIGhhc1NlbGVjdGVkSW5uZXJCbG9jayB9ID0gc2VsZWN0KCdjb3JlL2Jsb2NrLWVkaXRvcicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IGdldEJsb2NrKGNsaWVudElkKSxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWRCbG9ja0luUm9vdDogaXNCbG9ja1NlbGVjdGVkKGNsaWVudElkKSB8fCBoYXNTZWxlY3RlZElubmVyQmxvY2soY2xpZW50SWQsIHRydWUpLFxuICAgICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhEaXNwYXRjaCgoZGlzcGF0Y2gpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnNlcnRCbG9jaywgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzIH0gPSBkaXNwYXRjaCgnY29yZS9ibG9jay1lZGl0b3InKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluc2VydEJsb2NrLFxuICAgICAgICAgICAgdXBkYXRlQmxvY2tBdHRyaWJ1dGVzXG4gICAgICAgIH07XG4gICAgfSksXG5dKShUZXN0aW1vbmlhbExpc3RCbG9jaylcblxuIiwiaW1wb3J0IFRlc3RpbW9uaWFsV3JhcHBlciBmcm9tICcuL3Rlc3RpbW9uaWFsLXdyYXBwZXInO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3QgeyBJbm5lckJsb2NrcyB9ID0gd3AuYmxvY2tFZGl0b3I7XG5cbmNsYXNzIFNhdmUgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBjb2x1bW5zR2FwLFxuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgfVxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhbXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLXdyYXBwZXInLFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtdGVzdGltb25pYWwtY29sdW1ucy0nICsgY29sdW1ucyxcbiAgICAgICAgICAgICdibG9ja3NwYXJlLXRlc3RpbW9uaWFsLWdhcC0nK2NvbHVtbnNHYXBcbiAgICAgICAgXSwge1xuICAgICAgICAgICAgWyAnYWxpZ24nICsgYWxpZ24gXTogYWxpZ25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IHVuZGVmaW5lZCB9IHN0eWxlPXt7YmFja2dyb3VuZENvbG9yOmJhY2tncm91bmRDb2xvcj9iYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX0+XG4gICAgICAgICAgICAgICAgPElubmVyQmxvY2tzLkNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNhdmU7IiwiaW1wb3J0IFRlc3RpbW9uaWFsTGlzdEJsb2NrIGZyb20gJy4vZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL3NhdmUnO1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5cbi8vIFJlZ2lzdGVyIGJsb2NrXG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuXG5cbmNvbnN0IHtuYW1lLCBjYXRlZ29yeSxhdHRyaWJ1dGVzfSA9IG1ldGFkYXRhO1xuXG4vLyBSZWdpc3RlciB0aGUgYmxvY2tcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcbiAgICB0aXRsZTogX18oJ0JTIFRlc3RpbW9uaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0FkZCBhIHRlc3RpbW9uaWFsJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy50ZXN0aW1vbmlhbCxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAgIF9fKCdibG9jaycsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0ZXN0aW1vbmlhbCcsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCd0ZWFtJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgX18oJ3JhdGluZycsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ2Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyAnd2lkZScsICdmdWxsJywgJ2NlbnRlcicgXSxcbiAgICAgICAgaHRtbDogdHJ1ZVxuICAgIH0sXG4gICAgZWRpdDogVGVzdGltb25pYWxMaXN0QmxvY2ssXG4gICAgc2F2ZTpTYXZlXG5cbn0pOyIsImltcG9ydCBQYWRkaW5nIGZyb20gJy4vLi4vLi4vdXRpbHMvcGFkZGluZyc7XG5pbXBvcnQgTWFyZ2luIGZyb20gJy4vLi4vLi4vdXRpbHMvbWFyZ2luJztcbmltcG9ydCBCU0hlYWRlclNldHRpbmdzIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlci1zZXR0aW5nc1wiO1xuaW1wb3J0IEJveFNoYWRvdyBmcm9tIFwiLi4vLi4vdXRpbHMvY29tcG9uZW50L2JveHNoYWRvd1wiO1xuXG4vKiBTZXR1cCB0aGUgYmxvY2sgKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyogSW1wb3J0IGJsb2NrIGNvbXBvbmVudHMgKi9cbmNvbnN0IHtcblx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFBhbmVsQ29sb3JTZXR0aW5nc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vKiBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHMgKi9cbmNvbnN0IHtcblx0UGFuZWxCb2R5LFxuXHRUb2dnbGVDb250cm9sLFxuXHRTZWxlY3RDb250cm9sLFxuXHRUZXh0Q29udHJvbCxcblx0UmFuZ2VDb250cm9sXG59ID0gd3AuY29tcG9uZW50cztcblxuLyogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcblxuXHRjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG5cdFx0c3VwZXIoIC4uLmFyZ3VtZW50cyApO1xuXHR9XG5cblx0cmVuZGVyKCkge1xuXG5cdFx0LyogU2V0dXAgdGhlIGF0dHJpYnV0ZXMgKi9cblx0XHRjb25zdCB7XG5cdFx0XHRwcm9maWxlVGV4dENvbG9yLFxuXHRcdFx0cHJvZmlsZUJhY2tncm91bmRDb2xvcixcblx0XHRcdHR3aXR0ZXIsIGZhY2Vib29rLFxuXHRcdFx0aW5zdGFncmFtLFxuXHRcdFx0eW91dHViZSxcblx0XHRcdGxpbmtlZGluLFxuXHRcdFx0YnV0dG9uRmlsbCxcblx0XHRcdHBhZGRpbmdUb3AsXG5cdFx0XHRwYWRkaW5nUmlnaHQsXG5cdFx0XHRwYWRkaW5nQm90dG9tLFxuXHRcdFx0cGFkZGluZ0xlZnQsXG5cdFx0XHRtYXJnaW5Ub3AsXG5cdFx0XHRtYXJnaW5Cb3R0b20sXG5cdFx0XHRpY29uQ29sb3JPcHRpb24sXG5cdFx0XHRjdXN0b21mb250Q29sb3JPcHRpb24sXG5cdFx0XHRjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb24sXG5cdFx0XHRidXR0b25TaGFwZXMsXG5cdFx0XHRidXR0b25TaXplcyxcblx0XHRcdHRpdGxlRm9udFNpemUsXG5cdFx0XHRzdWJ0aXRsZUZvbnRTaXplLFxuXHRcdFx0aGVhZGVyVGFnT3B0aW9uLFxuXHRcdFx0aGVhZGVydGl0bGVDb2xvcixcblx0XHRcdGhlYWRlcnN1YnRpdGxlQ29sb3IsXG5cdFx0XHRoZWFkZXJsYXlvdXRPcHRpb24sXG5cdFx0XHR0aXRsZVBhZGRpbmdUb3AsXG5cdFx0XHR0aXRsZVBhZGRpbmdCb3R0b20sXG5cdFx0XHRzdWJ0aXRsZVBhZGRpbmdUb3AsXG5cdFx0XHRzdWJ0aXRsZVBhZGRpbmdCb3R0b20sXG5cdFx0XHRoZWFkZXJib3hDb2xvcixcblx0XHRcdGRhc2hDb2xvcixcblx0XHRcdGVuYWJsZUJveFNoYWRvdyxcblx0XHRcdHhPZmZzZXQsXG5cdFx0XHR5T2Zmc2V0LFxuXHRcdFx0Ymx1cixcblx0XHRcdHNwcmVhZCxcblx0XHRcdHNoYWRvd0NvbG9yLFxuXHRcdFx0Ym9yZGVyUmFkaXVzXG5cblx0XHR9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuXHRcdGNvbnN0IHsgc2V0QXR0cmlidXRlcyB9ID0gdGhpcy5wcm9wcztcblxuXG5cdFx0Y29uc3QgaWNvbk9wdGlvbnMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLWRlZmF1bHQtb2ZmaWNpYWwtY29sb3InLCBsYWJlbDogX18oJyBPZmZpY2lhbCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnY3VzdG9tJywgbGFiZWw6IF9fKCdDdXN0b20nLCAnYmxvY2tzcGFyZScpfVxuXHRcdF07XG5cblx0XHRjb25zdCBpY29uU2hhcGVzID0gW1xuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1zcXVhcmUnLCBsYWJlbDogX18oJ1NxdWFyZScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1jaXJjbGUnLCBsYWJlbDogX18oJ0NpcmNsZScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1yb3VuZGVkJywgbGFiZWw6IF9fKCdSb3VuZGVkIFNxdWFyZScsICdibG9ja3NwYXJlJyl9XG5cdFx0XTtcblx0XHRjb25zdCBpY29uU2l6ZXMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNtYWxsJywgbGFiZWw6IF9fKCdTbWFsbCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1tZWRpdW0nLCBsYWJlbDogX18oJ01lZGl1bScsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1sYXJnZScsIGxhYmVsOiBfXygnTGFyZ2UnLCAnYmxvY2tzcGFyZScpfVxuXHRcdF07XG5cblx0XHRjb25zdCBpY29uRmlsbHMgPSBbXG5cdFx0XHR7dmFsdWU6ICdibG9ja3NwYXJlLXNvY2lhbC1pY29uLXNvbGlkJywgbGFiZWw6IF9fKCdTb2xpZCcsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1ib3JkZXInLCBsYWJlbDogX18oJ0JvcmRlcicsICdibG9ja3NwYXJlJyl9LFxuXHRcdFx0e3ZhbHVlOiAnYmxvY2tzcGFyZS1zb2NpYWwtaWNvbi1ub25lJywgbGFiZWw6IF9fKCdOb25lJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRdO1xuXG5cdFx0LyogVXBkYXRlIGNvbG9yIHZhbHVlcyAqL1xuXHRcdGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZENvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IHByb2ZpbGVCYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH0pO1xuXHRcdGNvbnN0IG9uQ2hhbmdlUHJvZmlsZVRleHRDb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoeyBwcm9maWxlVGV4dENvbG9yOiB2YWx1ZSB9KTtcblx0XHRjb25zdCBvbkNoYW5nZWZvbnRjb2xvciA9IHZhbHVlID0+IHNldEF0dHJpYnV0ZXMoIHsgY3VzdG9tZm9udENvbG9yT3B0aW9uOiB2YWx1ZSB9ICk7XG5cdFx0Y29uc3Qgb25DaGFuZ2ViYWNrZ3JvdW5kY29sb3JzID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyggeyBjdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb246IHZhbHVlIH0gKTtcblx0XHRyZXR1cm4gKFxuXHRcdDxJbnNwZWN0b3JDb250cm9scyBrZXk9XCJpbnNwZWN0b3JcIj5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuXHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHR0aXRsZT17X18oJ0hlYWRlciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblxuXHRcdFx0XHQ8QlNIZWFkZXJTZXR0aW5nc1xuXG5cdFx0XHRcdFx0ZW5hYmxlQmxvY2tHYXBzPXtmYWxzZX1cblx0XHRcdFx0XHR0aXRsZUZvbnRTaXplPXt0aXRsZUZvbnRTaXplfVxuXHRcdFx0XHRcdG9uQ2hhbmdldGl0bGVGb250U2l6ZT17dGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHt0aXRsZUZvbnRTaXplfSl9XG5cblx0XHRcdFx0XHRzdWJ0aXRsZUZvbnRTaXplPXtzdWJ0aXRsZUZvbnRTaXplfVxuXHRcdFx0XHRcdG9uQ2hhbmdlc3VidGl0bGVGb250U2l6ZT17c3VidGl0bGVGb250U2l6ZSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZUZvbnRTaXplfSl9XG5cblx0XHRcdFx0XHRoZWFkZXJsYXlvdXRPcHRpb249e2hlYWRlcmxheW91dE9wdGlvbn1cblx0XHRcdFx0XHRvbkNoYW5nZUhlYWRlclN0eWxlPXtoZWFkZXJsYXlvdXRPcHRpb24gPT4gc2V0QXR0cmlidXRlcyh7IGhlYWRlcmxheW91dE9wdGlvbiB9KSB9XG5cblx0XHRcdFx0XHRoZWFkZXJUYWdPcHRpb249e2hlYWRlclRhZ09wdGlvbn1cblx0XHRcdFx0XHRvbkNoYW5nZUhlYWRlclRhZz17aGVhZGVyVGFnT3B0aW9uID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRhZ09wdGlvbn0pfVxuXG5cdFx0XHRcdFx0aGVhZGVyYm94Q29sb3I9e2hlYWRlcmJveENvbG9yfVxuXHRcdFx0XHRcdG9uQ2hhbmdlYm94Y29sb3I9e2hlYWRlcmJveENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlcmJveENvbG9yfSl9XG5cblx0XHRcdFx0XHRkYXNoQ29sb3I9e2Rhc2hDb2xvcn1cblx0XHRcdFx0XHRvbkNoYW5nZURhc2hDb2xvcj17ZGFzaENvbG9yID0+IHNldEF0dHJpYnV0ZXMoe2Rhc2hDb2xvcn0pfVxuXG5cdFx0XHRcdFx0aGVhZGVydGl0bGVDb2xvcj17aGVhZGVydGl0bGVDb2xvcn1cblx0XHRcdFx0XHRvbkNoYW5nZXRpdGxlY29sb3I9e2hlYWRlcnRpdGxlQ29sb3IgPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJ0aXRsZUNvbG9yfSl9XG5cblx0XHRcdFx0XHR0aXRsZVBhZGRpbmdUb3A9e3RpdGxlUGFkZGluZ1RvcH1cblx0XHRcdFx0XHRvbkNoYW5nZXRpdGxlUGFkZGluZ1RvcD17dGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3RpdGxlUGFkZGluZ1RvcH0pfVxuXG5cdFx0XHRcdFx0dGl0bGVQYWRkaW5nQm90dG9tPXt0aXRsZVBhZGRpbmdCb3R0b219XG5cdFx0XHRcdFx0b25DaGFuZ2V0aXRsZVBhZGRpbmdCb3R0b209IHt0aXRsZVBhZGRpbmdCb3R0b20gPT5zZXRBdHRyaWJ1dGVzKHt0aXRsZVBhZGRpbmdCb3R0b219KX1cblxuXHRcdFx0XHRcdGhlYWRlcnN1YnRpdGxlQ29sb3I9e2hlYWRlcnN1YnRpdGxlQ29sb3J9XG5cdFx0XHRcdFx0b25DaGFuZ2VzdWJ0aXRsZWNvbG9yPXtoZWFkZXJzdWJ0aXRsZUNvbG9yPT5zZXRBdHRyaWJ1dGVzKHtoZWFkZXJzdWJ0aXRsZUNvbG9yfSl9XG5cblx0XHRcdFx0XHRzdWJ0aXRsZVBhZGRpbmdUb3A9e3N1YnRpdGxlUGFkZGluZ1RvcH1cblx0XHRcdFx0XHRvbkNoYW5nZXN1YnRpdGxlUGFkZGluZ1RvcD17c3VidGl0bGVQYWRkaW5nVG9wID0+IHNldEF0dHJpYnV0ZXMoe3N1YnRpdGxlUGFkZGluZ1RvcH0pfVxuXG5cdFx0XHRcdFx0c3VidGl0bGVQYWRkaW5nQm90dG9tPXtzdWJ0aXRsZVBhZGRpbmdCb3R0b219XG5cdFx0XHRcdFx0b25DaGFuZ2VzdWJ0aXRsZVBhZGRpbmdCb3R0b209e3N1YnRpdGxlUGFkZGluZ0JvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHtzdWJ0aXRsZVBhZGRpbmdCb3R0b219KX1cblx0XHRcdFx0Lz5cblx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdFx0dGl0bGU9e19fKCdDb2xvciBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49e2ZhbHNlfVxuXHRcdFx0XHQ+XG5cblx0XHRcdFx0PFBhbmVsQ29sb3JTZXR0aW5nc1xuXHRcdFx0XHRcdHRpdGxlPXsgX18oICdDb2xvcnMnLCAnYmxvY2tzcGFyZScgKSB9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49eyBmYWxzZSB9XG5cdFx0XHRcdFx0Y29sb3JTZXR0aW5ncz17IFtcblxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR2YWx1ZTogcHJvZmlsZVRleHRDb2xvcixcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IG9uQ2hhbmdlUHJvZmlsZVRleHRDb2xvcixcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCAnRGVzY3JpcHRpb24gQ29sb3InLCAnYmxvY2tzcGFyZScgKVxuXHRcdFx0XHRcdFx0fV0gfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXG5cdFx0XHQ8UGFuZWxCb2R5XG5cdFx0XHRcdHRpdGxlPXtfXygnU29jaWFsIGxpbmsgVXJscycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdGNsYXNzTmFtZT17J2Jsb2Nrc3BhcmUtaGlkZS1xdWVyeSd9XG5cdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdD5cblx0XHRcdFx0PFRleHRDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9e19fKCdGYWNlYm9vayBVcmwnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHR2YWx1ZT17ZmFjZWJvb2t9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtmYWNlYm9vazogdmFsdWV9KX1cblx0XHRcdFx0Lz5cblxuXHRcdFx0XHQ8VGV4dENvbnRyb2xcblx0XHRcdFx0XHRsYWJlbD17X18oJ0xpbmtlZEluIFVybCcsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdHZhbHVlPXtsaW5rZWRpbn1cblx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe2xpbmtlZGluOiB2YWx1ZX0pfVxuXHRcdFx0XHQvPlxuXG5cdFx0XHRcdDxUZXh0Q29udHJvbFxuXHRcdFx0XHRcdGxhYmVsPXtfXygnVHdpdHRlciBVcmwnLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHR2YWx1ZT17dHdpdHRlcn1cblx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLnByb3BzLnNldEF0dHJpYnV0ZXMoe3R3aXR0ZXI6IHZhbHVlfSl9XG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdDxQYW5lbEJvZHlcblx0XHRcdFx0dGl0bGU9e19fKCdTb2NpYWwgSWNvbiBPcHRpb24nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRpbml0aWFsT3Blbj17ZmFsc2V9XG5cdFx0XHQ+XG5cdFx0XHRcdDxTZWxlY3RDb250cm9sXG5cdFx0XHRcdFx0bGFiZWw9e19fKCdTaXplJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRvcHRpb25zPXtpY29uU2l6ZXN9XG5cdFx0XHRcdFx0dmFsdWU9e2J1dHRvblNpemVzfVxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHRoaXMucHJvcHMuc2V0QXR0cmlidXRlcyh7YnV0dG9uU2l6ZXM6IHZhbHVlfSl9XG5cblx0XHRcdFx0Lz5cblx0XHRcdFx0PFNlbGVjdENvbnRyb2xcblx0XHRcdFx0XHRsYWJlbD17X18oJ1NoYXBlJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRvcHRpb25zPXtpY29uU2hhcGVzfVxuXHRcdFx0XHRcdHZhbHVlPXtidXR0b25TaGFwZXN9XG5cdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5wcm9wcy5zZXRBdHRyaWJ1dGVzKHtidXR0b25TaGFwZXM6IHZhbHVlfSl9XG5cblx0XHRcdFx0Lz5cblxuXG5cdFx0XHQ8L1BhbmVsQm9keT5cblx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdHRpdGxlPXtfXygnQmxvY2sgR2FwcyBTZXR0aW5ncycsICdibG9ja3NwYXJlJyl9XG5cdFx0XHRcdFx0aW5pdGlhbE9wZW49e2ZhbHNlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PFBhbmVsQm9keVxuXHRcdFx0XHRcdFx0dGl0bGU9e19fKCdQYWRkaW5nIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cblx0XHRcdFx0XHRcdGluaXRpYWxPcGVuPXtmYWxzZX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8UGFkZGluZ1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRvcCBwYWRkaW5nXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdFbmFibGVUb3A9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3A9e3BhZGRpbmdUb3B9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdUb3BNaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0cGFkZGluZ1RvcE1heD1cIjEwMFwiXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlUGFkZGluZ1RvcD17cGFkZGluZ1RvcCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nVG9wfSl9XG5cblx0XHRcdFx0XHRcdFx0Ly8gUmlnaHQgcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlUmlnaHQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdSaWdodD17cGFkZGluZ1JpZ2h0fVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nUmlnaHRNaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0cGFkZGluZ1JpZ2h0TWF4PVwiMTAwXCJcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2VQYWRkaW5nUmlnaHQ9e3BhZGRpbmdSaWdodCA9PiBzZXRBdHRyaWJ1dGVzKHtwYWRkaW5nUmlnaHR9KX1cblxuXHRcdFx0XHRcdFx0XHQvLyBCb3R0b20gcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlQm90dG9tPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nQm90dG9tPXtwYWRkaW5nQm90dG9tfVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nQm90dG9tTWluPVwiMFwiXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmdCb3R0b21NYXg9XCIxMDBcIlxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZVBhZGRpbmdCb3R0b209e3BhZGRpbmdCb3R0b20gPT4gc2V0QXR0cmlidXRlcyh7cGFkZGluZ0JvdHRvbX0pfVxuXG5cdFx0XHRcdFx0XHRcdC8vIExlZnQgcGFkZGluZ1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nRW5hYmxlTGVmdD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0cGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0fVxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdE1pbj1cIjBcIlxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nTGVmdE1heD1cIjEwMFwiXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlUGFkZGluZ0xlZnQ9e3BhZGRpbmdMZWZ0ID0+IHNldEF0dHJpYnV0ZXMoe3BhZGRpbmdMZWZ0fSl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PE1hcmdpblxuXG5cdFx0XHRcdFx0XHRcdC8vIFRvcCBwYWRkaW5nXG5cdFx0XHRcdFx0XHRcdG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0bWFyZ2luVG9wPXttYXJnaW5Ub3B9XG5cdFx0XHRcdFx0XHRcdG1hcmdpblRvcE1pbj1cIjBcIlxuXHRcdFx0XHRcdFx0XHRtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZU1hcmdpblRvcD17bWFyZ2luVG9wID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpblRvcH0pfVxuXG5cblx0XHRcdFx0XHRcdFx0Ly8gQm90dG9tIG1hcmdpblxuXHRcdFx0XHRcdFx0XHRtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG5cdFx0XHRcdFx0XHRcdG1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tfVxuXHRcdFx0XHRcdFx0XHRtYXJnaW5Cb3R0b21NaW49XCIwXCJcblx0XHRcdFx0XHRcdFx0bWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2VNYXJnaW5Cb3R0b209e21hcmdpbkJvdHRvbSA9PiBzZXRBdHRyaWJ1dGVzKHttYXJnaW5Cb3R0b219KX1cblxuXG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvUGFuZWxCb2R5PlxuXG5cdFx0XHRcdDwvUGFuZWxCb2R5PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9JbnNwZWN0b3JDb250cm9scz5cblx0XHQpO1xuXHR9XG59XG4iLCIvKipcbiAqIFByb2ZpbGUgQm94IFdyYXBwZXJcbiAqL1xuXG4vKiBTZXR1cCB0aGUgYmxvY2sgKi9cbmltcG9ydCBib3hTaGFkb3dTdHlsZXMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9ib3gtc2hhZG93XCI7XG5cbmNvbnN0IHsgQ29tcG9uZW50IH0gPSB3cC5lbGVtZW50O1xuXG4vKiBJbXBvcnQgYmxvY2sgZGVwZW5kZW5jaWVzIGFuZCBjb21wb25lbnRzICovXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuLyogQ3JlYXRlIGEgcHJvZmlsZSBib3ggd3JhcHBlciBDb21wb25lbnQgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2ZpbGVCb3ggZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cblx0XHQvKiBTZXR1cCB0aGUgYXR0cmlidXRlcyAqL1xuXHRcdGNvbnN0IHtcblx0XHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdFx0c2VjdGlvbkFsaWdubWVudCxcblx0XHRcdFx0cHJvZmlsZUltZ1VSTCxcblx0XHRcdFx0cHJvZmlsZUZvbnRTaXplLFxuXHRcdFx0XHRwcm9maWxlQmFja2dyb3VuZENvbG9yLFxuXHRcdFx0XHRwcm9maWxlVGV4dENvbG9yLFxuXHRcdFx0XHRwcm9maWxlQXZhdGFyU2hhcGUsXG5cdFx0XHRcdGJvcmRlclJhZGl1c1xuXHRcdFx0fSxcblx0XHRcdGF0dHJpYnV0ZXNcblxuXHRcdH0gPSB0aGlzLnByb3BzO1xuXG5cdFx0bGV0IG9wdGluc0xheXB1dHMgPSAnJztcblxuXHRcdGlmKHNlY3Rpb25BbGlnbm1lbnQgPT0gJ2xlZnQnKXtcblx0XHRcdG9wdGluc0xheXB1dHMgPSAnYmxvY2tzcGFyZS1sYXlvdXQtbGVmdCdcblx0XHR9ZWxzZSBpZihzZWN0aW9uQWxpZ25tZW50ID09ICdyaWdodCcpe1xuXHRcdFx0b3B0aW5zTGF5cHV0cyA9ICdibG9ja3NwYXJlLWxheW91dC1yaWdodCdcblx0XHR9ZWxzZXtcblx0XHRcdG9wdGluc0xheXB1dHMgPSAnYmxvY2tzcGFyZS1sYXlvdXQtY2VudGVyJ1xuXHRcdH1cblxuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXZcblx0XHRcdHN0eWxlPXsge1xuXHRcdFx0XHQuLi5ib3hTaGFkb3dTdHlsZXMoYXR0cmlidXRlcyksXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogcHJvZmlsZUJhY2tncm91bmRDb2xvcj9wcm9maWxlQmFja2dyb3VuZENvbG9yOicjZjJmMmYyJyxcblx0XHRcdFx0Y29sb3I6IHByb2ZpbGVUZXh0Q29sb3I/cHJvZmlsZVRleHRDb2xvcjonIzZkNmQ2ZCcsXG5cdFx0XHRcdGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzID8gYm9yZGVyUmFkaXVzIDogbnVsbCxcblx0XHRcdH0gfVxuXHRcdFx0Y2xhc3NOYW1lPXsgY2xhc3NuYW1lcyhcblx0XHRcdFx0dGhpcy5wcm9wcy5jbGFzc05hbWUsXG5cblx0XHRcdFx0cHJvZmlsZUF2YXRhclNoYXBlLFxuXHRcdFx0XHRvcHRpbnNMYXlwdXRzLFxuXHRcdFx0XHR7ICdibG9ja3NwYXJlLWhhcy1hdmF0YXInOiBwcm9maWxlSW1nVVJMIH0sXG5cdFx0XHRcdCdibG9ja3NwYXJlLWZvbnQtc2l6ZS0nICsgcHJvZmlsZUZvbnRTaXplLFxuXHRcdFx0XHQnYmxvY2tzcGFyZS1ibG9jay1wcm9maWxlJyxcblx0XHRcdFx0J2Jsb2Nrc3BhcmUtcHJvZmlsZS1jb2x1bW5zJyxcblx0XHRcdCkgfT5cblx0XHRcdFx0eyB0aGlzLnByb3BzLmNoaWxkcmVuIH1cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCBjbGFzc25hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbi8qKlxuICogU29jaWFsIE1lZGlhIEljb25zXG4gKi9cbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyoqXG4gKiBDcmVhdGUgYW4gU29jaWFsSWNvbnMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU29jaWFsSWNvbnMgZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXG5cdHJlbmRlcigpIHtcblxuXG5cdFx0bGV0IGNvbG9yU3R5bGVzID0gJyc7XG5cblx0XHRpZiAodGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmljb25Db2xvck9wdGlvbiAhPSAnYmxvY2tzcGFyZS1kZWZhdWx0LW9mZmljaWFsLWNvbG9yJykge1xuXHRcdFx0Y29sb3JTdHlsZXMgPSB7XG5cdFx0XHRcdGNvbG9yOiB0aGlzLnByb3BzLmF0dHJpYnV0ZXMuY3VzdG9tZm9udENvbG9yT3B0aW9uLFxuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucHJvcHMuYXR0cmlidXRlcy5jdXN0b21iYWNrZ3JvdW5kQ29sb3JPcHRpb25cblx0XHRcdH07XG5cdFx0fWVsc2V7XG5cdFx0XHRjb2xvclN0eWxlcz17XG5cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDx1bCBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG5cdFx0XHRcdCdibG9ja3NwYXJlLXNvY2lhbC1saW5rcycsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5pY29uQ29sb3JPcHRpb24sXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25TaGFwZXMsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25TaXplcyxcblx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmJ1dHRvbk9wdGlvbnMsXG5cdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5idXR0b25GaWxscyxcblxuXHRcdFx0KX0+XG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2sgJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuZmFjZWJvb2t9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG5cdFx0XHRcdFx0XHQgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzc05hbWU9J2ZhYiBmYS1mYWNlYm9vay1mJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdGYWNlYm9vaycsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2E+PC9saT5cblx0XHRcdFx0fVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGluICYmXG5cdFx0XHRcdFx0PGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLmxpbmtlZGlufSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuXHRcdFx0XHRcdFx0ICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuXHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPSdmYWIgZmEtbGlua2VkaW4nPjwvaT5cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT17J3NjcmVlbi1yZWFkZXItdGV4dCd9PlxuXHRcdFx0XHRcdFx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIHtfXygnTGlua2VkaW4nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy5pbnN0YWdyYW0gJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMuaW5zdGFncmFtfSBjbGFzc05hbWU9XCJcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuXHRcdFx0XHRcdFx0ICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuXHRcdFx0XHRcdFx0PGkgY2xhc3NOYW1lPSdmYWIgZmEtaW5zdGFncmFtJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdJbnN0YWdyYW0nLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnR3aXR0ZXIgJiZcblx0XHRcdFx0XHQ8bGk+PGEgc3R5bGU9e2NvbG9yU3R5bGVzfSBocmVmPXt0aGlzLnByb3BzLmF0dHJpYnV0ZXMudHdpdHRlcn0gY2xhc3NOYW1lPVwiXCIgdGFyZ2V0PVwiX2JsYW5rXCJcblx0XHRcdFx0XHRcdCAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cblx0XHRcdFx0XHRcdDxpIGNsYXNzTmFtZT0nZmFiIGZhLXR3aXR0ZXInPjwvaT48c3BhbiBjbGFzc05hbWU9eydzY3JlZW4tcmVhZGVyLXRleHQnfT5cblx0XHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICB7X18oJ1R3aXR0ZXInLCAnYmxvY2tzcGFyZScpfVxuXHRcdFx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PC9hPjwvbGk+XG5cdFx0XHRcdH1cblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRoaXMucHJvcHMuYXR0cmlidXRlcy55b3V0dWJlICYmXG5cdFx0XHRcdFx0PGxpPjxhIHN0eWxlPXtjb2xvclN0eWxlc30gaHJlZj17dGhpcy5wcm9wcy5hdHRyaWJ1dGVzLnlvdXR1YmV9IGNsYXNzTmFtZT1cIlwiIHRhcmdldD1cIl9ibGFua1wiXG5cdFx0XHRcdFx0XHQgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzc05hbWU9J2ZhYiBmYS15b3V0dWJlJz48L2k+PHNwYW4gY2xhc3NOYW1lPXsnc2NyZWVuLXJlYWRlci10ZXh0J30+XG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAge19fKCdZb3V0dWJlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvYT48L2xpPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L3VsPlxuXHRcdCk7XG5cdH1cbn1cbiIsIi8qKlxuICogQXZhdGFyIENvbHVtbiBXcmFwcGVyXG4gKi9cblxuLyogU2V0dXAgdGhlIGJsb2NrICovXG5jb25zdCB7IENvbXBvbmVudCB9ID0gd3AuZWxlbWVudDtcblxuLyogQ3JlYXRlIGFuIFNvY2lhbEljb25zIHdyYXBwZXIgQ29tcG9uZW50ICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdmF0YXJDb2x1bW4gZXh0ZW5kcyBDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKCBwcm9wcyApIHtcblx0XHRzdXBlciggLi4uYXJndW1lbnRzICk7XG5cdH1cblxuXHRyZW5kZXIoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcm9maWxlLWNvbHVtbiBibG9ja3NwYXJlLXByb2ZpbGUtYXZhdGFyLXdyYXBcIj5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLXByb2ZpbGUtaW1hZ2Utd3JhcFwiPlxuXHRcdFx0XHRcdHsgdGhpcy5wcm9wcy5jaGlsZHJlbiB9XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxufVxuIiwiLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgSW5zcGVjdG9yIGZyb20gJy4vaW5zcGVjdG9yJztcbmltcG9ydCBQcm9maWxlQm94IGZyb20gJy4vcHJvZmlsZSc7XG5pbXBvcnQgU29jaWFsSWNvbnMgZnJvbSAnLi9zb2NpYWwnO1xuaW1wb3J0IEF2YXRhckNvbHVtbiBmcm9tICcuL2F2YXRhcic7XG5pbXBvcnQgQlNIZWFkZXIgZnJvbSBcIi4uLy4uL3NlY3Rpb24taGVhZGVyL2NvbXBvbmVudHMvaGVhZGVyc1wiO1xuaW1wb3J0IGRhc2hDb2xvcnMgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9kYXNoXCI7XG5pbXBvcnQgdGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3RpdGxlXCI7XG5pbXBvcnQgc3VidGl0bGVDb2xvciBmcm9tIFwiLi4vLi4vdXRpbHMvc3R5bGVzL3NlY3Rpb24taGVhZGVyL3N1YnRpdGxlXCI7XG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuXG5jb25zdCBwcmV2X2ltZyA9IGJsb2Nrc3BhcmVfZ2xvYmFscztcbmNvbnN0IEFMTE9XRURfQkxPQ0tTID0gWyAnY29yZS9pbWFnZSddO1xuY29uc3QgVEVNUExBVEUgPSBbXG4gICAgWydjb3JlL2ltYWdlJyx7XG4gICAgICAgIHVybDpwcmV2X2ltZy5tZW51X2ltZ191cmwsXG4gICAgICAgIGNsYXNzTmFtZTonaXMtc3R5bGUtY2lyY2xlLW1hc2snLFxuICAgICAgICB3aWR0aDoxMjAsXG4gICAgICAgIGhlaWdodDoxMjAsXG4gICAgICAgIGFsaWduOidjZW50ZXInLFxuXG4gICAgfV1cbl07XG5cbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5jb25zdCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEZyYWdtZW50XG59ID0gd3AuZWxlbWVudDtcblxuY29uc3Qge1xuICAgIFJpY2hUZXh0LFxuICAgIEFsaWdubWVudFRvb2xiYXIsXG4gICAgQmxvY2tDb250cm9scyxcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgaGVhZGVyVGFnT3B0aW9uLFxuICAgICAgICAgICAgICAgIGhlYWRlclRpdGxlLFxuICAgICAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVDb250ZW50LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20sXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgICBwcm9maWxlQ29udGVudEZvbnRTaXplXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGVkaXRTdHlsZXMgPSB7XG5cbiAgICAgICAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmdUb3AgPyBwYWRkaW5nVG9wICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IHBhZGRpbmdSaWdodCA/IHBhZGRpbmdSaWdodCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogcGFkZGluZ0JvdHRvbSA/IHBhZGRpbmdCb3R0b20gKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBwYWRkaW5nTGVmdCA/IHBhZGRpbmdMZWZ0ICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IG1hcmdpblRvcCA/IG1hcmdpblRvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBtYXJnaW5Cb3R0b20gPyBtYXJnaW5Cb3R0b20gKyAncHgnIDogXCIwcHhcIixcblxuXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdGl0bGVEYXNoU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uZGFzaENvbG9ycyhhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4uc3VidGl0bGVDb2xvcihhdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbXG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtYXV0aG9yLXdyYXBwZXIgYmxvY2tzcGFyZS1ibG9ja3MnIHN0eWxlPXtlZGl0U3R5bGVzfT5cbiAgICAgICAgICAgICAgICA8QmxvY2tDb250cm9scyBrZXk9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgICAgICAgICA8QWxpZ25tZW50VG9vbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlY3Rpb25BbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtzZWN0aW9uQWxpZ25tZW50OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQmxvY2tDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxJbnNwZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLntzZXRBdHRyaWJ1dGVzLCAuLi50aGlzLnByb3BzfX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPFByb2ZpbGVCb3ggey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICA8QXZhdGFyQ29sdW1uIHsuLi50aGlzLnByb3BzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlPXsgVEVNUExBVEUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRCbG9ja3M9eyBBTExPV0VEX0JMT0NLUyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVMb2NrPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVJbnNlcnRVcGRhdGVzU2VsZWN0aW9uPXsgdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0F2YXRhckNvbHVtbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtcHJvZmlsZS1jb2x1bW4gYmxvY2tzcGFyZS1wcm9maWxlLWNvbnRlbnQtd3JhcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJTSGVhZGVyIHsuLi50aGlzLnByb3BzfT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPXtoZWFkZXJUYWdPcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1RpdGxlJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBQbGFjZWhvbGRlck9uRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldEF0dHJpYnV0ZXMoe2hlYWRlclRpdGxlOiB2YWx1ZX0pfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXN1YnRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17X18oJ1N1YiBUaXRsZScsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVhZGVyU3ViVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3VidGl0bGVTdHlsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRBdHRyaWJ1dGVzKHtoZWFkZXJTdWJUaXRsZTogdmFsdWV9KX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLWxvd2VyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQlNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxSaWNoVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJkaXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1wcm9maWxlLXRleHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPVwicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e19fKCdBZGQgeW91ciBjb250ZW50Li4uJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwUGxhY2Vob2xkZXJPbkZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2ZpbGVDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOnByb2ZpbGVDb250ZW50Rm9udFNpemUrJ3B4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZEZvcm1hdHM9e1snYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICdsaW5rJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0QXR0cmlidXRlcyh7cHJvZmlsZUNvbnRlbnQ6IHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U29jaWFsSWNvbnMgey4uLnRoaXMucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvUHJvZmlsZUJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBdO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb2ZpbGVCb3ggZnJvbSAnLi9wcm9maWxlJztcbmltcG9ydCBTb2NpYWxJY29ucyBmcm9tICcuL3NvY2lhbCc7XG5pbXBvcnQgQXZhdGFyQ29sdW1uIGZyb20gJy4vYXZhdGFyJztcbmltcG9ydCBkYXNoQ29sb3JzIGZyb20gXCIuLi8uLi91dGlscy9zdHlsZXMvc2VjdGlvbi1oZWFkZXIvZGFzaFwiO1xuaW1wb3J0IHRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci90aXRsZVwiO1xuaW1wb3J0IHN1YnRpdGxlQ29sb3IgZnJvbSBcIi4uLy4uL3V0aWxzL3N0eWxlcy9zZWN0aW9uLWhlYWRlci9zdWJ0aXRsZVwiO1xuaW1wb3J0IEJTSGVhZGVyIGZyb20gXCIuLi8uLi9zZWN0aW9uLWhlYWRlci9jb21wb25lbnRzL2hlYWRlcnNcIjtcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmNvbnN0IHtDb21wb25lbnR9ID0gd3AuZWxlbWVudDtcbmNvbnN0IHtcbiAgICBSaWNoVGV4dCxcbiAgICBJbm5lckJsb2Nrc1xufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNlY3Rpb25BbGlnbm1lbnQsXG4gICAgICAgICAgICBwcm9maWxlQ29udGVudCxcbiAgICAgICAgICAgIHBhZGRpbmdUb3AsXG4gICAgICAgICAgICBwYWRkaW5nUmlnaHQsXG4gICAgICAgICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICAgICAgICBtYXJnaW5Ub3AsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICBoZWFkZXJUYWdPcHRpb24sXG4gICAgICAgICAgICBoZWFkZXJUaXRsZSxcbiAgICAgICAgICAgIGhlYWRlclN1YlRpdGxlLFxuICAgICAgICAgICAgcHJvZmlsZUNvbnRlbnRGb250U2l6ZVxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBlZGl0U3R5bGVzID0ge1xuXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiBwYWRkaW5nVG9wID8gcGFkZGluZ1RvcCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nUmlnaHQgPyBwYWRkaW5nUmlnaHQgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmdCb3R0b20gPyBwYWRkaW5nQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG4gICAgICAgICAgICBwYWRkaW5nTGVmdDogcGFkZGluZ0xlZnQgPyBwYWRkaW5nTGVmdCArICdweCcgOiBcIjBweFwiLFxuICAgICAgICAgICAgbWFyZ2luVG9wOiBtYXJnaW5Ub3AgPyBtYXJnaW5Ub3AgKyAncHgnIDogXCIwcHhcIixcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogbWFyZ2luQm90dG9tID8gbWFyZ2luQm90dG9tICsgJ3B4JyA6IFwiMHB4XCIsXG5cblxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlRGFzaFN0eWxlcyA9IHtcbiAgICAgICAgICAgIC4uLmRhc2hDb2xvcnModGhpcy5wcm9wcy5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRpdGxlU3R5bGVzID0ge1xuICAgICAgICAgICAgLi4udGl0bGVDb2xvcih0aGlzLnByb3BzLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGVTdHlsZXMgPSB7XG4gICAgICAgICAgICAuLi5zdWJ0aXRsZUNvbG9yKHRoaXMucHJvcHMuYXR0cmlidXRlcylcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gKFxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1hdXRob3Itd3JhcHBlciBibG9ja3NwYXJlLWJsb2Nrcycgc3R5bGU9e2VkaXRTdHlsZXN9PlxuXG4gICAgICAgICAgICAgICAgPFByb2ZpbGVCb3ggey4uLnRoaXMucHJvcHN9PlxuXG4gICAgICAgICAgICAgICAgICAgIDxBdmF0YXJDb2x1bW4gey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbm5lckJsb2Nrcy5Db250ZW50IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0F2YXRhckNvbHVtbj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxvY2tzcGFyZS1wcm9maWxlLWNvbHVtbiBibG9ja3NwYXJlLXByb2ZpbGUtY29udGVudC13cmFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QlNIZWFkZXIgey4uLnRoaXMucHJvcHN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLXdyYXBwZXInPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtdGl0bGUtZGFzaCBibG9ja3NwYXJlLXVwcGVyLWRhc2gnIHN0eWxlPXt0aXRsZURhc2hTdHlsZXN9Pjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlclRpdGxlICYmXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9e2hlYWRlclRhZ09wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJUaXRsZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPSdibG9ja3NwYXJlLXRpdGxlLWRhc2ggYmxvY2tzcGFyZS1sb3dlci1kYXNoJyBzdHlsZT17dGl0bGVEYXNoU3R5bGVzfT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2Jsb2Nrc3BhcmUtc3VidGl0bGUtd3JhcHBlcic+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtdXBwZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyU3ViVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpY2hUZXh0LkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ05hbWU9XCJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS1zdWJ0aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzdWJ0aXRsZVN0eWxlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWFkZXJTdWJUaXRsZX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nYmxvY2tzcGFyZS10aXRsZS1kYXNoIGJsb2Nrc3BhcmUtbG93ZXItZGFzaCcgc3R5bGU9e3RpdGxlRGFzaFN0eWxlc30+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CU0hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAge3Byb2ZpbGVDb250ZW50ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmljaFRleHQuQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdOYW1lPVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1wcm9maWxlLXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvZmlsZUNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTpwcm9maWxlQ29udGVudEZvbnRTaXplK1wicHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8U29jaWFsSWNvbnMgey4uLnRoaXMucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvUHJvZmlsZUJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCAnLi9zdHlsZXMvc3R5bGUuc2Nzcyc7XG5pbXBvcnQgJy4vc3R5bGVzL2VkaXRvci5zY3NzJztcbmltcG9ydCBtZXRhZGF0YSBmcm9tICcuL2Jsb2NrLmpzb24nO1xuaW1wb3J0IHNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzIGZyb20gXCIuLi91dGlscy9hdHRyaWJ1dGVzL3NlY3Rpb24taGVhZGVyXCI7XG5pbXBvcnQgRWRpdCBmcm9tICcuL2NvbXBvbmVudHMvZWRpdCc7XG5pbXBvcnQgU2F2ZSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZSc7XG5pbXBvcnQgYm94U2hhZG93QXR0cmlidXRlcyBmcm9tIFwiLi4vdXRpbHMvYXR0cmlidXRlcy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgaWNvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL2ljb25zL2luZGV4JztcblxuXG4vKipcbiAqIFdvcmRQcmVzcyBkZXBlbmRlbmNpZXNcbiAqL1xuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcbmNvbnN0IHsgcmVnaXN0ZXJCbG9ja1R5cGUgfSA9IHdwLmJsb2NrcztcblxuY29uc3Qge25hbWUsY2F0ZWdvcnl9ID0gbWV0YWRhdGE7XG5jb25zdCBhdHRyaWJ1dGVzID17XG5cdC4uLnNlY3Rpb25IZWFkZXJBdHRyaWJ1dGVzLFxuXHRcdC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXMsXG5cdC4uLmJveFNoYWRvd0F0dHJpYnV0ZXNcblxufTtcbnJlZ2lzdGVyQmxvY2tUeXBlKG5hbWUsIHtcblx0dGl0bGU6IF9fKCdCUyBVc2VyIFByb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRkZXNjcmlwdGlvbjogX18oJ0FkZCBVc2VyIHByb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRjYXRlZ29yeSxcblx0aWNvbjogaWNvbnMudXNlcnByb2ZpbGUsXG5cdGF0dHJpYnV0ZXMsXG5cdGtleXdvcmRzOiBbXG5cdFx0X18oJ2Jsb2NrJywgJ2Jsb2Nrc3BhcmUnKSxcblx0XHRfXygndXNlcicsICdibG9ja3NwYXJlJyksXG5cdFx0X18oJ3Byb2ZpbGUnLCAnYmxvY2tzcGFyZScpLFxuXHRcdF9fKCd0ZWFtJywgJ2Jsb2Nrc3BhcmUnKSxcblxuXHRdLFxuXHRleGFtcGxlOntcblx0XHRhdHRyaWJ1dGVzOntcblx0XHRcdHByb2ZpbGVCYWNrZ3JvdW5kQ29sb3I6XCIjZjJmMmYyXCJcblx0XHR9XG5cblx0fSxcblxuXHRlZGl0OiBwcm9wcyA9PiB7XG5cdFx0cmV0dXJuIDxFZGl0IHsgLi4ucHJvcHMgfSAvPjtcblx0fSxcblxuXHQvKiBTYXZlIHRoZSBibG9jayBtYXJrdXAuICovXG5cdHNhdmU6IHByb3BzID0+IHtcblx0XHRyZXR1cm4gPFNhdmUgeyAuLi5wcm9wcyB9IC8+O1xuXHR9LFxuXG59KTtcbiIsIlxuaW1wb3J0IERlc2lnblBhbmVsQm9keSBmcm9tIFwiLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1wYW5lbC1ib2R5XCI7XG5pbXBvcnQgRGVzaWduU2VwYXJhdG9yQ29udHJvbCBmcm9tIFwiLi4vdXRpbHMvY29tcG9uZW50L2Rlc2lnbi1zZXBhcmF0b3ItY29udHJvbFwiO1xuaW1wb3J0IE1hcmdpbiBmcm9tIFwiLi4vdXRpbHMvbWFyZ2luXCI7XG5cbi8vIFNldHVwIHRoZSBibG9ja1xuY29uc3Qge19ffSA9IHdwLmkxOG47XG5jb25zdCB7Q29tcG9uZW50LCBGcmFnbWVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgUGFuZWxDb2xvclNldHRpbmdzXG59ID0gd3AuYmxvY2tFZGl0b3I7XG5cbi8vIEltcG9ydCBJbnNwZWN0b3IgY29tcG9uZW50c1xuY29uc3Qge1xuICAgIFBhbmVsQm9keSxcbiAgICBSYW5nZUNvbnRyb2xcbn0gPSB3cC5jb21wb25lbnRzO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBJbnNwZWN0b3IgQ29udHJvbHMgd3JhcHBlciBDb21wb25lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zcGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGRlc2lnbj0nZG91YmxlLXdhdmUnLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgICAgIG1hcmdpblRvcCxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbSxcblxuICAgICAgICB9ID0gdGhpcy5wcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCB7c2V0QXR0cmlidXRlc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlU2hhcGVzY29sb3IgPSB2YWx1ZSA9PiBzZXRBdHRyaWJ1dGVzKHtjb2xvcjogdmFsdWV9KTtcblxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8SW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3NwYXJlLWluc3BlY3Rvci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPERlc2lnblBhbmVsQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPERlc2lnblNlcGFyYXRvckNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgZGVzaWduID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzaWduIH0gKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17IGRlc2lnbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlRGVzaWducz17IFsgJ3N0cmFpZ2h0LTEnIF0gfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRGVzaWduUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdEaXZpZGVyIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhbmVsQ29sb3JTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e19fKCdTaGFwZSBDb2xvcicsICdibG9ja3NwYXJlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3Blbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVNoYXBlc2NvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU2hhcGUgQ29sb3InLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfV19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbENvbG9yU2V0dGluZ3M+XG4gICAgICAgICAgICAgICAgICAgIDxSYW5nZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfXyhcIkhlaWdodFwiLFwiYmxvY2tzcGFyZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtoZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7IGhlaWdodDogdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW49ezMwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MzAwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIEdhcHMgU2V0dGluZ3MnLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbEJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfXygnTWFyZ2luIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFyZ2luXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgcGFkZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkVuYWJsZVRvcD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A9e21hcmdpblRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3BNYXg9XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlTWFyZ2luVG9wPXttYXJnaW5Ub3AgPT4gc2V0QXR0cmlidXRlcyh7bWFyZ2luVG9wfSl9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBtYXJnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5FbmFibGVCb3R0b209e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tPXttYXJnaW5Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWluPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tTWF4PVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZU1hcmdpbkJvdHRvbT17bWFyZ2luQm90dG9tID0+IHNldEF0dHJpYnV0ZXMoe21hcmdpbkJvdHRvbX0pfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IG1hcmdpblBhZGRpbmdTdHlsZXMgZnJvbSBcIi4uL3V0aWxzL3N0eWxlcy9tYXJnaW4tcGFkZGluZ1wiO1xuXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IENvbnRyb2xzIGZyb20gJy4vY29udHJvbHMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgU2VwYXJhdG9yIGZyb20gJy4uL3V0aWxzL3NlcGFyYXRvcic7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdCBleHRlbmRzIENvbXBvbmVudHtcbiAgICBjb25zdHJ1Y3RvciggcHJvcHMgKSB7XG4gICAgICAgIHN1cGVyKCAuLi5hcmd1bWVudHMgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgYXR0cmlidXRlczp7XG4gICAgICAgICAgICBkZXNpZ249J2RvdWJsZS13YXZlJyxcbiAgICAgICAgICAgIGxheWVyMVNoYWRvdyA9IGZhbHNlLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICBob3Jpem9udGFsRmxpcCxcbiAgICAgICAgICAgIGNvbG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG5cbiAgICAgICAgbGV0IGNsYXNzZXMgPSBjbGFzc25hbWVzKFxuICAgICAgICAgICAgJ2Jsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtc3ZnLXdyYXBwZXInLFxuICAgICAgICAgICAgd2lkdGhSYXRpbyh3aWR0aCksXG4gICAgICAgICAgICBjbGFzc05hbWUsIHtcbiAgICAgICAgICAgICAgICAnaXMtdmVydGljYWxseS1mbGlwcGVkJzogdmVydGljYWxGbGlwLFxuICAgICAgICAgICAgICAgICdpcy1ob3Jpem9udGFsbHktZmxpcHBlZCc6IGhvcml6b250YWxGbGlwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuKFxuXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG5cbiAgICAgICAgICAgICAgICA8SW5zcGVjdG9yXG4gICAgICAgICAgICAgICAgICAgIHsuLi57c2V0QXR0cmlidXRlcywgLi4udGhpcy5wcm9wc319XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7IGlzU2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Q29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4udGhpcy5wcm9wcyB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlc30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6Y29sb3I/Y29sb3I6XCIjM2MxYTViXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDpoZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIC4uLm1hcmdpblBhZGRpbmdTdHlsZXMoYXR0cmlidXRlcyksXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbj17IGRlc2lnbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3c9eyBsYXllcjFTaGFkb3cgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1zdmctc3ZnLWlubmVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L1NlcGFyYXRvcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHdpZHRoUmF0aW8od2lkdGgpIHtcbiAgICB2YXIgc3RyID0gd2lkdGgudG9TdHJpbmcoKTtcbiAgICB2YXIgbmV3V2lkdGggPSBzdHIucmVwbGFjZSgnLicsJy0nKTtcbiAgICByZXR1cm4gJ2hhcy13aWR0aC0nK25ld1dpZHRoO1xufSIsImltcG9ydCBtYXJnaW5QYWRkaW5nU3R5bGVzIGZyb20gXCIuLi91dGlscy9zdHlsZXMvbWFyZ2luLXBhZGRpbmdcIjtcblxuY29uc3QgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuaW1wb3J0IFNlcGFyYXRvciBmcm9tICcuLi91dGlscy9zZXBhcmF0b3InO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgQ29tcG9uZW50e1xuXG4gICAgcmVuZGVyKCl7XG4gICAgICAgIGNvbnN0IHsgY2xhc3NOYW1lIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzOntcbiAgICAgICAgICAgICAgICBkZXNpZ24gPSAnZG91YmxlLXdhdmUnLFxuICAgICAgICAgICAgICAgIGFsaWduLFxuICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICAgICAgY29sb3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgY2xhc3NlcyA9IGNsYXNzbmFtZXMoXG5cbiAgICAgICAgICAgIGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgICAgICdpcy12ZXJ0aWNhbGx5LWZsaXBwZWQnOiB2ZXJ0aWNhbEZsaXAsXG4gICAgICAgICAgICAgICAgJ2lzLWhvcml6b250YWxseS1mbGlwcGVkJzogaG9yaXpvbnRhbEZsaXAsXG4gICAgICAgICAgICB9LCdhbGlnbicrYWxpZ24sXG4gICAgICAgICAgICAnYmxvY2tzcGFyZS1ibG9ja3MgYmxvY2tzcGFyZS1zdmctd3JhcHBlcicsXG4gICAgICAgICAgICB3aWR0aFJhdGlvKHdpZHRoKSk7XG5cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjpjb2xvcj9jb2xvcjpcIiMzYzFhNWJcIixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgLi4ubWFyZ2luUGFkZGluZ1N0eWxlcyhhdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduPXsgZGVzaWduIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2Nrc3BhcmUtc3ZnLXN2Zy1pbm5lclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9TZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuZnVuY3Rpb24gd2lkdGhSYXRpbyh3aWR0aCkge1xuICAgIHZhciBzdHIgPSB3aWR0aC50b1N0cmluZygpO1xuICAgIHZhciBuZXdXaWR0aCA9IHN0ci5yZXBsYWNlKCcuJywnLScpO1xuICAgIHJldHVybiAnaGFzLXdpZHRoLScrbmV3V2lkdGg7XG59XG5cbiIsImltcG9ydCAnLi9zdHlsZXMvZWRpdG9yLnNjc3MnO1xuaW1wb3J0ICcuL3N0eWxlcy9zdHlsZS5zY3NzJztcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XG5pbXBvcnQgRWRpdCBmcm9tICcuL0VkaXQnO1xuaW1wb3J0IFNhdmUgZnJvbSAnLi9zYXZlJztcbmltcG9ydCBpY29ucyBmcm9tICcuLi8uLi9hc3NldHMvaWNvbnMnO1xuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IG1ldGFkYXRhIGZyb20gJy4vYmxvY2suanNvbic7XG5jb25zdCB7cmVnaXN0ZXJCbG9ja1R5cGV9ID0gd3AuYmxvY2tzO1xuY29uc3QgeyBuYW1lLCBjYXRlZ29yeSwgYXR0cmlidXRlcyB9ID0gbWV0YWRhdGE7XG4vL2NvbnNvbGUubG9nKGF0dHJpYnV0ZXMpO1xucmVnaXN0ZXJCbG9ja1R5cGUobmFtZSwge1xuXG4gICAgdGl0bGU6IF9fKCAnQlMgU2hhcGUgRGl2aWRlcicsICdibG9ja3NwYXJlJyApLFxuICAgIGRlc2NyaXB0aW9uOiBfXyggJ0RlY29yYXRpb25zIGZvciBzZWN0aW9uIHNoYXBlcy4nLCAnYmxvY2tzcGFyZScgKSxcbiAgICBjYXRlZ29yeTpjYXRlZ29yeSxcbiAgICBpY29uOiBpY29ucy5zaGFwZWRpdml2ZXIsXG4gICAgYXR0cmlidXRlcyxcbiAgICBrZXl3b3JkczogW1xuICAgICAgICBfXygnYmxvY2snLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnc2hhcGUnLCAnYmxvY2tzcGFyZScpLFxuICAgICAgICBfXygnZGl2aWRlcicsICdibG9ja3NwYXJlJyksXG4gICAgICAgIF9fKCdzcGFjZScsICdibG9ja3NwYXJlJyksXG5cbiAgICBdLFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGFsaWduOiBbJ3dpZGUnLCAnZnVsbCcsJ2NlbnRlciddLFxuICAgIH0sXG4gICAgZXhhbXBsZTp7XG4gICAgICAgIGRlc2lnbjonZG91YmxlLXdhdmUnLFxuICAgICAgICBjb2xvcjonIzNjMWE1YidcbiAgICB9LFxuICAgIGVkaXQ6RWRpdCxcbiAgICBzYXZlOlNhdmUsXG59KTtcbiIsImNvbnN0IHtfX30gPSB3cC5pMThuO1xuY29uc3Qge0NvbXBvbmVudH0gPSB3cC5lbGVtZW50O1xuXG5cbi8vIEltcG9ydCBibG9jayBjb21wb25lbnRzXG5jb25zdCB7XG4gICAgUGFuZWxDb2xvclNldHRpbmdzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzLFxufSA9IHdwLmJsb2NrRWRpdG9yO1xuXG4vLyBJbXBvcnQgSW5zcGVjdG9yIGNvbXBvbmVudHNcbmNvbnN0IHtcbiAgICBSYW5nZUNvbnRyb2wsXG4gICAgUGFuZWxCb2R5XG59ID0gd3AuY29tcG9uZW50cztcblxuLyoqXG4gKiBDcmVhdGUgYW4gSW5zcGVjdG9yIENvbnRyb2xzIHdyYXBwZXIgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG5cbiAgICByZW5kZXIoKXtcbiAgICAgICAgY29uc3Qge1xuXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3JcbiAgICAgICAgfT10aGlzLnByb3BzLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IHtzZXRBdHRyaWJ1dGVzfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlQmFja2dyb3VuZGNvbG9yID0gdmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7YmFja0dyb3VuZENvbG9yOiB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxJbnNwZWN0b3JDb250cm9scz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tzcGFyZS1pbnNwZWN0b3Itd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8UGFuZWxCb2R5XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0Jsb2NrIFNldHRpbmdzJywgJ2Jsb2Nrc3BhcmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJhbmdlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X18oXCJIZWlnaHRcIiwgXCJibG9ja3NwYXJlXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gc2V0QXR0cmlidXRlcyh7aGVpZ2h0OiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9ezV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD17MTUwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQYW5lbENvbG9yU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X18oJ0JhY2tncm91bmQgQ29sb3InLCAnYmxvY2tzcGFyZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yU2V0dGluZ3M9e1t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBiYWNrR3JvdW5kQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZUJhY2tncm91bmRjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdCYWNrZ3JvdW5kIENvbG9yJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFuZWxDb2xvclNldHRpbmdzPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9QYW5lbEJvZHk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvSW5zcGVjdG9yQ29udHJvbHM+XG4gICAgICAgIClcblxuICAgIH1cbn0iLCJpbXBvcnQgbWV0YWRhdGEgZnJvbSAnLi9ibG9jay5qc29uJztcbmltcG9ydCBJbnNwZWN0b3IgZnJvbSAnLi9jb21wb25lbnRzL2luc3BlY3Rvcic7XG5pbXBvcnQgaWNvbnMgZnJvbSBcIi4uLy4uL2Fzc2V0cy9pY29uc1wiO1xuY29uc3Qge0ZyYWdtZW50IH0gPSB3cC5lbGVtZW50O1xuY29uc3R7bmFtZSxjYXRlZ29yeX0gPSBtZXRhZGF0YTtcblxuY29uc3QgYXR0cmlidXRlcyA9e1xuICAgIC4uLm1ldGFkYXRhLmF0dHJpYnV0ZXNcbn1cblxuY29uc3Qge3JlZ2lzdGVyQmxvY2tUeXBlfSA9IHdwLmJsb2NrcztcbmNvbnN0IHtfX30gPSB3cC5pMThuO1xuXG5yZWdpc3RlckJsb2NrVHlwZShuYW1lLCB7XG4gICAgdGl0bGU6IF9fKCdCUyBFbXB0eSBTZWN0aW9uJywgJ2Jsb2Nrc3BhcmUnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ0VtcHR5IFNlY3Rpb24nLCAnYmxvY2tzcGFyZScpLFxuICAgIGNhdGVnb3J5LFxuICAgIGljb246IGljb25zLmVtcHR5U3BhY2VzLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAga2V5d29yZHM6IFtcbiAgICAgICAgX18oJ2VtcHR5JywgJ2Jsb2Nrc3BhcmUnKVxuXG4gICAgXSxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBhbGlnbjogWyd3aWRlJywgJ2Z1bGwnLCdjZW50ZXInXSxcbiAgICB9LFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgY292ZXI6ICdodHRwczovL2Jsb2Nrc3BhcmUuY29tJyxcbiAgICAgICAgICAgIGF1dGhvcjogJ0Jsb2Nrc3BhcmUnLFxuICAgICAgICAgICAgcGFnZXM6IDUwMFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZWRpdDogZnVuY3Rpb24ocHJvcHMpe1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGJhY2tHcm91bmRDb2xvclxuXG4gICAgICAgIH0gPSBwcm9wcy5hdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPEluc3BlY3RvciB7Li4ucHJvcHN9Lz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLWJsb2NrcyBibG9ja3NwYXJlLWVtcHR5LXNlY3Rpb24td3JhcHBlcmB9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgYmxvY2tzcGFyZS1zZWN0aW9uYH1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6aGVpZ2h0KydweCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOjEwMCtcIiVcIixcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOmJhY2tHcm91bmRDb2xvcj9iYWNrR3JvdW5kQ29sb3I6JyNmZmYnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICB9LFxuICAgIHNhdmU6ZnVuY3Rpb24ocHJvcHMpe1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYWNrR3JvdW5kQ29sb3JcblxuICAgICAgICB9ID0gcHJvcHMuYXR0cmlidXRlcztcbiAgICAgICAgcmV0dXJuKFxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJsb2Nrc3BhcmUtYmxvY2tzIGJsb2Nrc3BhcmUtZW1wdHktc2VjdGlvbi13cmFwcGVyYH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BibG9ja3NwYXJlLXNlY3Rpb25gfVxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6aGVpZ2h0KydweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MTAwK1wiJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpiYWNrR3JvdW5kQ29sb3I/YmFja0dyb3VuZENvbG9yOicjZmZmJ1xuICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== |