1"use strict";(self["webpackChunkwsypos_frontend"]=self["webpackChunkwsypos_frontend"]||[]).push([[7777],{97777:function(t,e,a){a.r(e),a.d(e,{default:function(){return f}});var i=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"row g-3"},[e("div",{class:[t.showForm?"col-lg-8":"col-12"]},[e("table",{staticClass:"table table-striped"},[e("thead",[t.showForm?t._e():e("tr",[e("th",{staticClass:"border-bottom-0",attrs:{colspan:"5"}}),e("th",{staticClass:"border-start",attrs:{colspan:"3"}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.expired_gift_cards"))+" "),e("i",{staticClass:"bi bi-question-circle-fill text-secondary ms-1",attrs:{"data-bs-toggle":"tooltip","data-bs-placement":"bottom",title:t.$t("admin.gift_cards.types.expired_help")}})]),e("th",{staticClass:"border-start",attrs:{colspan:"3"}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.valid_gift_cards"))+" ")])]),e("tr",[e("th",[t._v(t._s(t.$t("general.type")))]),e("th",[t._v(t._s(t.$t("general.name")))]),e("th",[t._v(t._s(t.$t("products.price")))]),e("th",[t._v(t._s(t.$t("types.account")))]),e("th",[t._v(t._s(t.$t("admin.gift_cards.types.default_validity")))]),t.showForm?t._e():[e("th",{staticClass:"table-warning text-end border-start"},[t._v(t._s(t.$t("general.quantity")))]),e("th",{staticClass:"table-warning text-end"},[t._v(t._s(t.$t("admin.gift_cards.types.used")))]),e("th",{staticClass:"table-warning text-end"},[t._v(t._s(t.$t("admin.gift_cards.types.unused")))]),e("th",{staticClass:"table-success text-end border-start"},[t._v(t._s(t.$t("general.quantity")))]),e("th",{staticClass:"table-success text-end"},[t._v(t._s(t.$t("admin.gift_cards.types.used")))]),e("th",{staticClass:"table-success text-end"},[t._v(t._s(t.$t("admin.gift_cards.types.unused")))])],e("th")],2)]),e("tbody",t._l(t.giftCardTypes,(function(a){return e("tr",{key:a.uuid},[e("td",{staticClass:"text-center table-dark"},[e("i",{staticClass:"bi",class:t.getGiftCardTypeBehaviourIcon(a)})]),e("td",[t._v(t._s(a.name))]),e("td",{staticClass:"text-end",domProps:{innerHTML:t._s(null===a.price?"<i>Fripris</i>":t.formatPrice(a.price))}}),e("td",[t._v(t._s(t.formatAccount(a.account)))]),e("td",[t._v(t._s(t.$t("admin.gift_cards.types.durations."+a.default_validity)))]),t.showForm?t._e():[t._l({expired:"table-warning",valid:"table-success"},(function(i,r){return[e("td",{key:r+"Count",staticClass:"text-end border-start",class:[i]},[t._v(" "+t._s(a.statistics[r].count)+" ")]),e("td",{key:r+"Original",staticClass:"text-end",class:[i]},[t._v(" "+t._s(t.formatPrice(a.statistics[r].original_sum-a.statistics[r].current_balance))+" ")]),e("td",{key:r+"Balance",staticClass:"text-end",class:[i]},[t._v(" "+t._s(t.formatPrice(a.statistics[r].current_balance))+" ")])]}))],e("td",{staticClass:"actions"},[e("button",{staticClass:"btn btn-sm btn-success",attrs:{type:"button",disabled:!t.$store.getters.companyAddonsLimitAllows("gift_cards")},on:{click:function(e){return t.openTypeForEditing(a)}}},[e("i",{staticClass:"bi bi-pencil"})])])],2)})),0)]),e("div",{staticClass:"col-12 text-center"},[e("button",{staticClass:"btn btn-primary",attrs:{type:"button",disabled:t.isCreating||!t.$store.getters.companyAddonsLimitAllows("gift_cards")},on:{click:function(e){return t.goToSubview("GiftCardTypesCreate")}}},[t._v(" "+t._s(t.$t("general.add"))+" "+t._s(t.$t("types.gift_card_type").toLowerCase())+" ")])])]),t.showForm?e("div",{staticClass:"col-lg-4"},[e("h3",[t._v(t._s(t.resourceEditCreateHeader(t.isEditing,"gift_card_type")))]),t.$store.getters.companyIsEnterprise?e("div",{staticClass:"alert alert-info"},[t._v(" "+t._s(t.$t("admin.gift_cards.types.enterprise_message_re_scope_of_validity"))+" ")]):t.$store.getters.companyIsSubcompany?e("div",{staticClass:"alert alert-info"},[t._v(" "+t._s(t.$t("admin.gift_cards.types.subcompany_message_re_scope_of_validity"))+" ")]):t._e(),e("form",{staticClass:"row g-3",on:{submit:function(e){return e.preventDefault(),t.submitForm.apply(null,arguments)}}},[e("div",[e("div",{staticClass:"form-check"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.behaviour,expression:"formData.behaviour"}],staticClass:"form-check-input",attrs:{type:"radio",name:"behaviourRadio",id:"valueBasedRadio",value:"value-based",disabled:t.isEditing,required:""},domProps:{checked:t._q(t.formData.behaviour,"value-based")}
1,on:{click:t.resetPrice,change:function(e){return t.$set(t.formData,"behaviour","value-based")}}}),e("label",{staticClass:"form-check-label",attrs:{for:"valueBasedRadio"}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.behaviours.value-based"))+" ")])]),e("div",{staticClass:"form-check"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.behaviour,expression:"formData.behaviour"}],staticClass:"form-check-input",attrs:{type:"radio",name:"behaviourRadio",id:"experienceRadio",value:"experience",disabled:t.isEditing,required:""},domProps:{checked:t._q(t.formData.behaviour,"experience")},on:{change:function(e){return t.$set(t.formData,"behaviour","experience")}}}),e("label",{staticClass:"form-check-label",attrs:{for:"experienceRadio"}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.behaviours.experience"))+" ")])])]),e("div",[e("label",{staticClass:"form-label required",attrs:{for:"nameInput"}},[t._v(t._s(t.$t("general.name")))]),e("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.name,expression:"formData.name"}],staticClass:"form-control",attrs:{type:"text",id:"nameInput",minlength:"1",maxlength:"30",required:""},domProps:{value:t.formData.name},on:{input:function(e){e.target.composing||t.$set(t.formData,"name",e.target.value)}}})]),"experience"===t.formData.behaviour?e("div",[e("label",{staticClass:"form-label required",attrs:{for:"priceInput"}},[t._v(t._s(t.$t("products.price")))]),e("vue-numeric",{staticClass:"form-control",attrs:{id:"priceInput",currency:"kr","currency-symbol-position":"suffix","decimal-separator":",",separator:".",precision:2,minus:!0},model:{value:t.formData.price,callback:function(e){t.$set(t.formData,"price",e)},expression:"formData.price"}})],1):t._e(),e("div",[e("label",{staticClass:"form-label required",attrs:{for:"accountSelect"}},[t._v(t._s(t.$t("types.account")))]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.formData.account_uuid,expression:"formData.account_uuid"}],staticClass:"form-select",attrs:{id:"accountSelect",required:""},on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.$set(t.formData,"account_uuid",e.target.multiple?a:a[0])}}},t._l(t.revenueAccounts,(function(a){return e("option",{key:a.uuid,domProps:{value:a.uuid}},[t._v(" "+t._s(t.addLinkSymbolIfShared(t.formatAccount(a),a))+" ")])})),0)]),e("div",[e("label",{staticClass:"form-label required",attrs:{for:"defaultValiditySelect"}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.default_validity"))+" ")]),e("select",{directives:[{name:"model",rawName:"v-model",value:t.formData.default_validity,expression:"formData.default_validity"}],staticClass:"form-select",attrs:{id:"defaultValiditySelect"},on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.$set(t.formData,"default_validity",e.target.multiple?a:a[0])}}},t._l(["P6M","P1Y","P2Y","P3Y","P5Y","unlimited"],(function(a){return e("option",{key:a,domProps:{value:a}},[t._v(" "+t._s(t.$t("admin.gift_cards.types.durations."+a))+" ")])})),0)]),e("div",[e("admin-spinner-button",{attrs:{buttonText:t.resourceEditCreateSubmitText(t.isEditing,"gift_card_type"),spinnerCondition:t.isProcessingSubmitFormRequest,disabledCondition:t.isProcessingSubmitFormRequest,extraButtonClasses:"w-100"}}),e("button",{staticClass:"btn btn-danger w-100 mt-2",attrs:{type:"button"},on:{click:function(e){return t.goToSubview("GiftCardTypes")}}},[t._v(" "+t._s(t.$t("general.cancel"))+" ")])],1)])]):t._e()])])},r=[],s=(a(44114),a(98956)),n=a(49793),o=a(11015),c=a(47050),u=a.n(c),l={name:"GiftCardTypes",components:{AdminSpinnerButton:n.A,VueNumeric:u()},mixins:[s.A,o.A],data(){return{giftCardTypes:!1,formData:{price:0},isProcessingSubmitFormRequest:!1}},computed:{revenueAccounts:function(){return this.$store.state.resources.revenueAccounts},isCreating:function(){return"GiftCardTypesCreate"===this.$route.name},isEditing:function(){return"GiftCardTypesEdit"===this.$route.name},showForm:function(){return this.isCreating||this.isEditing}},methods:{async getGiftCardTypes(){const t={include_shared:1,include_statistics:1};return axios.get("gift-card-types",{params:t}).then((t=>{let e=t.data.data;this.giftCardTypes=e}))}
1,async submitForm(){const t=this.isCreating,e=this.$route,a=function(a){return t?axios.post("gift-card-types",a):axios.put("gift-card-types/"+e.params.uuid,a)},i={...this.formData};return"experience"===this.formData.behaviour?i.price=100*i.price:delete i.price,a(i).then((t=>{this.getGiftCardTypes(),this.goToSubview("GiftCardTypes")})).catch((t=>{this.$store.commit("dangerNotify","Failed to create or update gift card type.")}))},openTypeForEditing(t){this.goToSubview("GiftCardTypesEdit",{uuid:t.uuid}),this.formData={name:t.name,price:t.price/100,behaviour:t.behaviour,account_uuid:t.account.uuid,default_validity:t.default_validity}},goToSubview(t,e={}){this.formData={price:0},this.$router.push({name:t,params:e})},resetPrice(){this.formData.price=0}},created(){this.getGiftCardTypes(),this.$store.dispatch("fetchRevenueAccounts",{include_shared:this.getIncludeSharedValueForFormPage()}).then((()=>{0===this.revenueAccounts.length?this.$store.commit("warningNotify","A gift card type requires a revenue account, but no revenue accounts were found."):1===this.revenueAccounts.length&&(this.formData.account_uuid=this.revenueAccounts[0].uuid)}))},mounted(){}},d=l,m=a(81656),p=(0,m.A)(d,i,r,!1,null,null,null),f=p.exports},11015:function(t,e,a){var i=a(40173);const{isNavigationFailure:r,NavigationFailureType:s}=i.Ay;e.A={methods:{getIncludeSharedValueForFormPage(){return this.$store.getters.companyIsSubcompany?1:0},updateQueryParamsIfChanged(t){JSON.stringify(this.$route.query)!==JSON.stringify(t)&&this.$router.replace({query:t}).catch((t=>{if(!r(t,s.cancelled)&&!r(t,s.duplicated))throw t}))}}}},98956:function(t,e,a){var i=a(3235);e.A={computed:{locale:function(){return this.getLocale()}},methods:{resolveFormatterContext(){let t=this;while(t){if(t.formatterContext&&"object"===typeof t.formatterContext)return t.formatterContext;t=t.$parent}return{}},getLocale(){const t=this.resolveFormatterContext();return t.locale??this.$store?.getters?.company?.locale??"da-DK"},getTimezone(){const t=this.resolveFormatterContext();return t.timezone??this.$store?.getters?.company?.timezone??"Europe/Copenhagen"},formatDateTimeFromDate(t,e=!1){let a={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return e&&(a.weekday=e),t.toLocaleDateString(this.locale,a)},formatDateTime(t,e=!1){let a=new Date(t),i=!1!==e&&new Date(e);if(!1!==i&&i instanceof Date&&a.getDate()===i.getDate()){let t={hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return a.toLocaleTimeString(this.locale,t)}let r={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:this.getTimezone()};return a.toLocaleDateString(this.locale,r)},formatDateTimeWithoutSeconds(t){let e=new Date(t),a={year:"numeric",month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return e.toLocaleDateString(this.locale,a)},formatDateTimeWithYear(t){let e=new Date(t);return e.getDate()+"/"+(e.getMonth()+1)+"-"+e.getFullYear()+" kl. "+e.getHours()+":"+String(e.getMinutes()).padStart(2,"0")},formatLessPreciseDateTime(t){const e=this.toCompanyTime(t);return e.getDate()+"/"+(e.getMonth()+1)+" kl. "+e.getHours()+":"+String(e.getMinutes()).padStart(2,"0")},formatDate(t,e=null){let a={year:"numeric",month:"numeric",day:"numeric",timeZone:this.getTimezone()};return null!==e&&(a=Object.assign(a,e)),t instanceof Date||(t=new Date(t)),t.toLocaleDateString(this.locale,a)},formatDateFullLength(t,e=null){let a={year:"numeric",month:"2-digit",day:"2-digit",timeZone:this.getTimezone()};return null!==e&&(a=Object.assign(a,e)),t instanceof Date||(t=new Date(t)),t.toLocaleDateString(this.locale,a)},formatBookingDate(t){const e=this.toCompanyTime(t),a=e.getDate(),i=e.getMonth()+1,r=e.getFullYear();return`${a}/${i}-${r}`},formatTime(t,e=!1){if(!t)return"";"object"!==typeof t&&(t=new Date(t));let a={hour:"2-digit",minute:"2-digit",timeZone:this.getTimezone()};return e&&(a.second="2-digit"),t.toLocaleTimeString(this.locale,a)},formatTimeKitchen(t){if(!t)return"";"object"!==typeof t&&(t=new Date(t));const e={hour:"2-digit",minute:"2-digit",weekday:"short",timeZone:this.getTimezone()};return t.toLocaleTimeString(this.locale,e)},getCurrency(){const t=this.resolveFormatterContext();return t.currency??this.$store?.getters?.company?.currency??"DKK"},formatPrice(t,e="code",a=!1,i=2){let r=a&&t>0?"+":"",s={minimumFractionDigits:i,maximumFractionDigits:2};if(!1!==e){let t=this.getCurrency();s.style="currency",s.currency=t,s.currencyDisplay=e}let n=t/100;
1return Math.abs(n)<.005&&(n=0),r+n.toLocaleString(this.locale,s)},capitaliseFirstLetter(t){return t.charAt(0).toUpperCase()+t.slice(1)},unitAbbrv(t,e=!1){const a={gram:"g",kilogram:"kg",centimeter:"cm",meter:"m",centiliter:"cl",liter:"l",minute:"m",hour:"h",decagram:"dg",null:"pcs"};if(t in a){let i=a[t];return"pcs"===i&&e?this.$t("pos.unit_abbreviations.pcs"):i}return t},capitaliseAndCommaSeparateWeekdays(t,e=0){if(e>0&&t.length<7&&t.length>=7-e){let e=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"].filter((e=>!t.includes(e)));return this.$t("general.all_days_except")+" "+e.map((t=>this.$t("general.weekdays_correct_capitalisation."+t)))}return t.map(((t,e)=>this.$t("general.weekdays"+(e>0?"_correct_capitalisation":"")+"."+t))).join(", ")},resourceEditCreateHeader(t,e,a=null,i=!1){let r=this.$t("general."+(!1===t?"create":"edit"))+" "+this.$t("types."+e).toLowerCase();if(!1!==t&&null!==a){let t;t=i?" "+a:" <em>"+a+"</em>",r+=t}return r},resourceEditCreateSubmitText(t,e){const a=this.$te("types."+e)?" "+this.$t("types."+e).toLowerCase():"";return this.$t("general."+(!1===t?"create":"update"))+a},resourceDeleteText(t){const e=this.$te("types."+t)?" "+this.$t("types."+t).toLowerCase():"";return this.$t("general.delete")+e},getAllResourceNameText(t){return this.$t("general.all_resource_name",{resourceName:t})},pendingInvitationStatus(t){return null!==t.accepted_at?this.$t("pos.invitation_statuses.accepted"):null!==t.rejected_at?this.$t("pos.invitation_statuses.rejected"):!0===t.expired?this.$t("pos.invitation_statuses.expired"):this.$t("pos.invitation_statuses.open")},formatQuantity(t,e){return e&&"decagram"===e.name?(t/100).toLocaleString(this.locale)+this.getUnitSuffix("kilogram"):t+this.getUnitSuffix(null!==e?e.name:null)},formatQuantityOfOrderLine(t,e="quantity"){let a=null;return t?.sellable?.unit&&(a=t.sellable.unit),this.formatQuantity(t[e],a)},getUnitSuffix(t){return null===t?"":" "+this.unitAbbrv(t)},orderLineOriginalTotal(t,e=!1,a="quantity"){let i=t.price*t[a];return e?this.formatPrice(i,!1):i},orderLineCurrentTotal(t,e=!1,a="quantity"){let i=t.price*t[a];const r=t.line_discount?.percentage;return null!=r&&r>0&&(i-=Math.round(i*(r/1e3))),e?this.formatPrice(i,!1):i},noType(t){return this.$t("general.no_type",{type:this.$t("types."+t).toLowerCase()})},getNameOfWeekdayFromInteger(t,e=!0){const a=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];let i=a[t];return e&&(i=i.toLowerCase()),i},formatProductForDropdown(t){return(null!==t.plu?t.plu+" | ":"")+t.name+" | "+(null===t.price?this.$t("admin.products.cashier_decided_price"):this.formatPrice(t.price))},addLinkSymbolIfShared(t,e){return t+("enterprise"===e.company.type?.name?" ð":"")},formatCashierFullName(t){return t.first_name+" "+t.last_name},formatPercentage(t,e,a=!1,i=0,r=1){const s=t/e;return this.formatDecimalAsPercentage(s,a,i,r)},formatDecimalAsPercentage(t,e=!1,a=0,i=1){let r={style:"percent",minimumFractionDigits:a,maximumFractionDigits:i};e&&(r.signDisplay="always");let s=new Intl.NumberFormat(this.locale,r);return s.format(t)},formatVatPercent(t,e=0,a=2){const i=Number(t);if(!Number.isFinite(i))return"";const r=i/100;return this.formatDecimalAsPercentage(r,!1,e,a)},formatPercentageDiscount(t,e=0,a=1){if(null==t)return"";const i=Number(t);return Number.isFinite(i)?this.formatDecimalAsPercentage(i/1e3,!1,e,a):""},getCustomerTypeIconClass(t){switch(t){case"business":return"bi-buildings";case"private":return"bi-person";case"public":return"bi-bank";case"employee":return"bi-file-person"}},getCompanyNameTranslationFromType(t){switch(t){case"business":return this.$t("addresses.company_name");case"public":return this.$t("admin.customers.authority_slash_organisation");case"employee":return this.$t("admin.customers.type.employee");case"private":case null:case void 0:return this.$t("admin.customers.company_slash_organisation")}},formatAccount(t){return`${t.account_number} ${t.name}`},getPriceProfileIdentifier(t){return t?null===t.name?this.$t("general.default"):t.name:this.$t("admin.products.no_availability")},getCompanyName(t,e=!1,a=!1){let i=t.display_name??t.vat_entity?.name;return e&&(t.admin_panel_identifier&&(i=`[${t.admin_panel_identifier}] ${i}`),i=`${t.id}: ${i}`),a&&(i=`${i} (${this.$t("superadmin.companies.types."+t.type.name)}
1)`),i},getGiftCardTypeBehaviourIcon(t){return"value-based"===t.behaviour?"bi-cash":"bi-cup-straw"},toCompanyTime(t){return(0,i.L_)(new Date(t),this.getTimezone())},getAmountFormatter(t=!0,e="code"){return a=>this.formatPrice(a,e,!1,t?2:0)}}}}}]); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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6RSxLQUcvQnFFLElBQ0FyRSxFQUFhLEd
2BQUdBLE1BQWUzTixLQUFLVSxHQUFHLDhCQUFnQzZILEVBQVFnSCxLQUFLdE8sVUFHakYwTSxDQUNYLEVBRUEzTSw0QkFBQUEsQ0FBNkJILEdBQ3pCLE1BQWtDLGdCQUEzQkEsRUFBYXdDLFVBQThCLFVBQVksY0FDbEUsRUFJQWlILGFBQUFBLENBQWMrSCxHQUNWLE9BQU9DLEVBQUFBLEVBQUFBLElBQVksSUFBSTdJLEtBQUs0SSxHQUFhclMsS0FBS3dJLGNBQ2xELEVBRUErSixrQkFBQUEsQ0FBbUJDLEdBQWdCLEVBQU1wSCxFQUFrQixRQUN2RCxPQUFRakksR0FBVW5ELEtBQUtvQixZQUFZK0IsRUFBT2lJLEdBQWlCLEVBQU9vSCxFQUFnQixFQUFJLEVBQzFGLEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvdmlld3Mvc2lnbmVkX2luL2FkbWluL0dpZnRDYXJkVHlwZXMudnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC9zcmMvdmlld3Mvc2lnbmVkX2luL2FkbWluL0dpZnRDYXJkVHlwZXMudnVlIiwid2VicGFjazovL3dzeXBvcy1mcm9udGVuZC8uL3NyYy92aWV3cy9zaWduZWRfaW4vYWRtaW4vR2lmdENhcmRUeXBlcy52dWU/YjQ3MiIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvdmlld3Mvc2lnbmVkX2luL2FkbWluL0dpZnRDYXJkVHlwZXMudnVlP2JmZmEiLCJ3ZWJwYWNrOi8vd3N5cG9zLWZyb250ZW5kLy4vc3JjL21peGlucy9BZG1pbkZvcm1QYWdlSGVscGVycy5qcyIsIndlYnBhY2s6Ly93c3lwb3MtZnJvbnRlbmQvLi9zcmMvbWl4aW5zL0Zvcm1hdHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCl7dmFyIF92bT10aGlzLF9jPV92bS5fc2VsZi5fYztyZXR1cm4gX2MoJ2RpdicsW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcInJvdyBnLTNcIn0sW19jKCdkaXYnLHtjbGFzczpbX3ZtLnNob3dGb3JtID8gJ2NvbC1sZy04JyA6ICdjb2wtMTInXX0sW19jKCd0YWJsZScse3N0YXRpY0NsYXNzOlwidGFibGUgdGFibGUtc3RyaXBlZFwifSxbX2MoJ3RoZWFkJyxbKCFfdm0uc2hvd0Zvcm0pP19jKCd0cicsW19jKCd0aCcse3N0YXRpY0NsYXNzOlwiYm9yZGVyLWJvdHRvbS0wXCIsYXR0cnM6e1wiY29sc3BhblwiOlwiNVwifX0pLF9jKCd0aCcse3N0YXRpY0NsYXNzOlwiYm9yZGVyLXN0YXJ0XCIsYXR0cnM6e1wiY29sc3BhblwiOlwiM1wifX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5leHBpcmVkX2dpZnRfY2FyZHNcIikpK1wiIFwiKSxfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktcXVlc3Rpb24tY2lyY2xlLWZpbGwgdGV4dC1zZWNvbmRhcnkgbXMtMVwiLGF0dHJzOntcImRhdGEtYnMtdG9nZ2xlXCI6XCJ0b29sdGlwXCIsXCJkYXRhLWJzLXBsYWNlbWVudFwiOlwiYm90dG9tXCIsXCJ0aXRsZVwiOl92bS4kdCgnYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5leHBpcmVkX2hlbHAnKX19KV0pLF9jKCd0aCcse3N0YXRpY0NsYXNzOlwiYm9yZGVyLXN0YXJ0XCIsYXR0cnM6e1wiY29sc3BhblwiOlwiM1wifX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy52YWxpZF9naWZ0X2NhcmRzXCIpKStcIiBcIildKV0pOl92bS5fZSgpLF9jKCd0cicsW19jKCd0aCcsW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiZ2VuZXJhbC50eXBlXCIpKSldKSxfYygndGgnLFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImdlbmVyYWwubmFtZVwiKSkpXSksX2MoJ3RoJyxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJwcm9kdWN0cy5wcmljZVwiKSkpXSksX2MoJ3RoJyxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJ0eXBlcy5hY2NvdW50XCIpKSldKSxfYygndGgnLFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuZGVmYXVsdF92YWxpZGl0eVwiKSkpXSksKCFfdm0uc2hvd0Zvcm0pP1tfYygndGgnLHtzdGF0aWNDbGFzczpcInRhYmxlLXdhcm5pbmcgdGV4dC1lbmQgYm9yZGVyLXN0YXJ0XCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcImdlbmVyYWwucXVhbnRpdHlcIikpKV0pLF9jKCd0aCcse3N0YXRpY0NsYXNzOlwidGFibGUtd2FybmluZyB0ZXh0LWVuZFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnVzZWRcIikpKV0pLF9jKCd0aCcse3N0YXRpY0NsYXNzOlwidGFibGUtd2FybmluZyB0ZXh0LWVuZFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnVudXNlZFwiKSkpXSksX2MoJ3RoJyx7c3RhdGljQ2xhc3M6XCJ0YWJsZS1zdWNjZXNzIHRleHQtZW5kIGJvcmRlci1zdGFydFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJnZW5lcmFsLnF1YW50aXR5XCIpKSldKSxfYygndGgnLHtzdGF0aWNDbGFzczpcInRhYmxlLXN1Y2Nlc3MgdGV4dC1lbmRcIn0sW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy51c2VkXCIpKSldKSxfYygndGgnLHtzdGF0aWNDbGFzczpcInRhYmxlLXN1Y2Nlc3MgdGV4dC1lbmRcIn0sW192bS5fdihfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy51bnVzZWRcIikpKV0pXTpfdm0uX2UoKSxfYygndGgnKV0sMildKSxfYygndGJvZHknLF92bS5fbCgoX3ZtLmdpZnRDYXJkVHlwZXMpLGZ1bmN0aW9uKGdpZnRDYXJkVHlwZSl7cmV0dXJuIF9jKCd0cicse2tleTpnaWZ0Q2FyZFR5cGUudXVpZH0sW19jKCd0ZCcse3N0YXRpY0NsYXNzOlwidGV4dC1jZW50ZXIgdGFibGUtZGFya1wifSxbX2MoJ2knLHtzdGF0aWNDbGFzczpcImJpXCIsY2xhc3M6X3ZtLmdldEdpZnRDYXJkVHlwZUJlaGF2aW91ckljb24oZ2lmdENhcmRUeXBlKX0pXSksX2MoJ3RkJyxbX3ZtLl92KF92bS5fcyhnaWZ0Q2FyZFR5cGUubmFtZSkpXSksX2MoJ3RkJyx7c3RhdGljQ2xhc3M6XCJ0ZXh0LWVuZFwiLGRvbVByb3BzOntcImlubmVySFRNTFwiOl92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lmdENhcmRUeXBlLnByaWNlID09PSBudWxsID8gJzxpPkZyaXByaXM8L2k+JyA6IF92bS5mb3JtYXRQcmljZShnaWZ0Q2FyZFR5cGUucHJpY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX19KSxfYygndGQnLFtfdm0uX3YoX3ZtLl9zKF92bS5mb3JtYXRBY2NvdW50KGdpZnRDYXJkVHlwZS5hY2NvdW50KSkpXSksX2MoJ3RkJyxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLmR1cmF0aW9ucy5cIiArIGdpZnRDYXJkVHlwZS5kZWZhdWx0X3ZhbGlkaXR5KSkpXSksKCFfdm0uc2hvd0Zvcm0pP1tfdm0uX2woKHsgZXhwaXJlZDogJ3RhYmxlLXdhcm5pbmcnLCB2YWxpZDogJ3RhYmxlLXN1Y2Nlc3MnIH0pLGZ1bmN0aW9uKGFjY2VudCxjYXRlZ29yeSl7cmV0dXJuIFtfYygndGQnLHtrZXk6Y2F0ZWdvcnkgKyAnQ291bnQnLHN0YXRpY0NsYXNzOlwidGV4dC1lbmQgYm9yZGVyLXN0YXJ0XCIsY2xhc3M6W2FjY2VudF19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKGdpZnRDYXJkVHlwZS5zdGF0aXN0aWNzW2NhdGVnb3J5XS5jb3VudCkrXCIgXCIpXSksX2MoJ3RkJyx7a2V5OmNhdGVnb3J5ICsgJ09yaWdpbmFsJyxzdGF0aWNDbGFzczpcInRleHQtZW5kXCIsY2xhc3M6W2FjY2VudF19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS5mb3JtYXRQcmljZSggZ2lmdENhcmRUeXBlLnN0YXRpc3RpY3NbY2F0ZWdvcnldLm9yaWdpbmFsX3N1bSAtIGdpZnRDYXJkVHlwZS5zdGF0aXN0aWNzW2NhdGVnb3J5XS5jdXJyZW50X2JhbGFuY2UgKSkrXCIgXCIpXSksX2MoJ3RkJyx7a2V5OmNhdGVnb3J5ICsgJ0JhbGFuY2UnLHN0YXRpY0NsYXNzOlwidGV4dC1lbmRcIixjbGFzczpbYWNjZW50XX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLmZvcm1hdFByaWNlKGdpZnRDYXJkVHlwZS5zdGF0aXN0aWNzW2NhdGVnb3J5XS5jdXJyZW50X2JhbGFuY2UpKStcIiBcIildKV19KV06X3ZtLl9lKCksX2MoJ3RkJyx7c3RhdGljQ2xhc3M6XCJhY3Rpb25zXCJ9LFtfYygnYnV0dG9uJyx7c3RhdGljQ2xhc3M6XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCIsYXR0cnM6e1widHlwZVwiOlwiYnV0dG9uXCIsXCJkaXNhYmxlZFwiOiFfdm0uJHN0b3JlLmdldHRlcnMuY29tcGFueUFkZG9uc0xpbWl0QWxsb3dzKCdnaWZ0X2NhcmRzJyl9LG9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLm9wZW5UeXBlRm9yRWRpdGluZyhnaWZ0Q2FyZFR5cGUpfX19LFtfYygnaScse3N0YXRpY0NsYXNzOlwiYmkgYmktcGVuY2lsXCJ9KV0pXSldLDIpfSksMCldKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJjb2wtMTIgdGV4dC1jZW50ZXJcIn0sW19jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tcHJpbWFyeVwiLGF0dHJzOntcInR5cGVcIjpcImJ1dHRvblwiLFwiZGlzYWJsZWRcIjpfdm0uaXNDcmVhdGluZyB8fCAhX3ZtLiRzdG9yZS5nZXR0ZXJzLmNvbXBhbnlBZGRvbnNMaW1pdEFsbG93cygnZ2lmdF9jYXJkcycpfSxvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS5nb1RvU3VidmlldygnR2lmdENhcmRUeXBlc0NyZWF0ZScpfX19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kdChcImdlbmVyYWwuYWRkXCIpKStcIiBcIitfdm0uX3MoX3ZtLiR0KFwidHlwZXMuZ2lmdF9jYXJkX3R5cGVcIikudG9Mb3dlckNhc2UoKSkrXCIgXCIpXSldKV0pLChfdm0uc2hvd0Zvcm0pP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbC1sZy00XCJ9LFtfYygnaDMnLFtfdm0uX3YoX3ZtLl9zKF92bS5yZXNvdXJjZUVkaXRDcmVhdGVIZWFkZXIoX3ZtLmlzRWRpdGluZywgXCJnaWZ0X2NhcmRfdHlwZVwiKSkpXSksKF92bS4kc3RvcmUuZ2V0dGVycy5jb21wYW5
25SXNFbnRlcnByaXNlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJhbGVydCBhbGVydC1pbmZvXCJ9LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuZW50ZXJwcmlzZV9tZXNzYWdlX3JlX3Njb3BlX29mX3ZhbGlkaXR5XCIpKStcIiBcIildKTooX3ZtLiRzdG9yZS5nZXR0ZXJzLmNvbXBhbnlJc1N1YmNvbXBhbnkpP19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImFsZXJ0IGFsZXJ0LWluZm9cIn0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5zdWJjb21wYW55X21lc3NhZ2VfcmVfc2NvcGVfb2ZfdmFsaWRpdHlcIikpK1wiIFwiKV0pOl92bS5fZSgpLF9jKCdmb3JtJyx7c3RhdGljQ2xhc3M6XCJyb3cgZy0zXCIsb246e1wic3VibWl0XCI6ZnVuY3Rpb24oJGV2ZW50KXskZXZlbnQucHJldmVudERlZmF1bHQoKTtyZXR1cm4gX3ZtLnN1Ym1pdEZvcm0uYXBwbHkobnVsbCwgYXJndW1lbnRzKX19fSxbX2MoJ2RpdicsW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcImZvcm0tY2hlY2tcIn0sW19jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOihfdm0uZm9ybURhdGEuYmVoYXZpb3VyKSxleHByZXNzaW9uOlwiZm9ybURhdGEuYmVoYXZpb3VyXCJ9XSxzdGF0aWNDbGFzczpcImZvcm0tY2hlY2staW5wdXRcIixhdHRyczp7XCJ0eXBlXCI6XCJyYWRpb1wiLFwibmFtZVwiOlwiYmVoYXZpb3VyUmFkaW9cIixcImlkXCI6XCJ2YWx1ZUJhc2VkUmFkaW9cIixcInZhbHVlXCI6XCJ2YWx1ZS1iYXNlZFwiLFwiZGlzYWJsZWRcIjpfdm0uaXNFZGl0aW5nLFwicmVxdWlyZWRcIjpcIlwifSxkb21Qcm9wczp7XCJjaGVja2VkXCI6X3ZtLl9xKF92bS5mb3JtRGF0YS5iZWhhdmlvdXIsXCJ2YWx1ZS1iYXNlZFwiKX0sb246e1wiY2xpY2tcIjpfdm0ucmVzZXRQcmljZSxcImNoYW5nZVwiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS4kc2V0KF92bS5mb3JtRGF0YSwgXCJiZWhhdmlvdXJcIiwgXCJ2YWx1ZS1iYXNlZFwiKX19fSksX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWNoZWNrLWxhYmVsXCIsYXR0cnM6e1wiZm9yXCI6XCJ2YWx1ZUJhc2VkUmFkaW9cIn19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuYmVoYXZpb3Vycy52YWx1ZS1iYXNlZFwiKSkrXCIgXCIpXSldKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJmb3JtLWNoZWNrXCJ9LFtfYygnaW5wdXQnLHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZTooX3ZtLmZvcm1EYXRhLmJlaGF2aW91ciksZXhwcmVzc2lvbjpcImZvcm1EYXRhLmJlaGF2aW91clwifV0sc3RhdGljQ2xhc3M6XCJmb3JtLWNoZWNrLWlucHV0XCIsYXR0cnM6e1widHlwZVwiOlwicmFkaW9cIixcIm5hbWVcIjpcImJlaGF2aW91clJhZGlvXCIsXCJpZFwiOlwiZXhwZXJpZW5jZVJhZGlvXCIsXCJ2YWx1ZVwiOlwiZXhwZXJpZW5jZVwiLFwiZGlzYWJsZWRcIjpfdm0uaXNFZGl0aW5nLFwicmVxdWlyZWRcIjpcIlwifSxkb21Qcm9wczp7XCJjaGVja2VkXCI6X3ZtLl9xKF92bS5mb3JtRGF0YS5iZWhhdmlvdXIsXCJleHBlcmllbmNlXCIpfSxvbjp7XCJjaGFuZ2VcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uJHNldChfdm0uZm9ybURhdGEsIFwiYmVoYXZpb3VyXCIsIFwiZXhwZXJpZW5jZVwiKX19fSksX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWNoZWNrLWxhYmVsXCIsYXR0cnM6e1wiZm9yXCI6XCJleHBlcmllbmNlUmFkaW9cIn19LFtfdm0uX3YoXCIgXCIrX3ZtLl9zKF92bS4kdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuYmVoYXZpb3Vycy5leHBlcmllbmNlXCIpKStcIiBcIildKV0pXSksX2MoJ2RpdicsW19jKCdsYWJlbCcse3N0YXRpY0NsYXNzOlwiZm9ybS1sYWJlbCByZXF1aXJlZFwiLGF0dHJzOntcImZvclwiOlwibmFtZUlucHV0XCJ9fSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJnZW5lcmFsLm5hbWVcIikpKV0pLF9jKCdpbnB1dCcse2RpcmVjdGl2ZXM6W3tuYW1lOlwibW9kZWxcIixyYXdOYW1lOlwidi1tb2RlbFwiLHZhbHVlOihfdm0uZm9ybURhdGEubmFtZSksZXhwcmVzc2lvbjpcImZvcm1EYXRhLm5hbWVcIn1dLHN0YXRpY0NsYXNzOlwiZm9ybS1jb250cm9sXCIsYXR0cnM6e1widHlwZVwiOlwidGV4dFwiLFwiaWRcIjpcIm5hbWVJbnB1dFwiLFwibWlubGVuZ3RoXCI6XCIxXCIsXCJtYXhsZW5ndGhcIjpcIjMwXCIsXCJyZXF1aXJlZFwiOlwiXCJ9LGRvbVByb3BzOntcInZhbHVlXCI6KF92bS5mb3JtRGF0YS5uYW1lKX0sb246e1wiaW5wdXRcIjpmdW5jdGlvbigkZXZlbnQpe2lmKCRldmVudC50YXJnZXQuY29tcG9zaW5nKXJldHVybjtfdm0uJHNldChfdm0uZm9ybURhdGEsIFwibmFtZVwiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKX19fSldKSwoX3ZtLmZvcm1EYXRhLmJlaGF2aW91ciA9PT0gJ2V4cGVyaWVuY2UnKT9fYygnZGl2JyxbX2MoJ2xhYmVsJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWxhYmVsIHJlcXVpcmVkXCIsYXR0cnM6e1wiZm9yXCI6XCJwcmljZUlucHV0XCJ9fSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJwcm9kdWN0cy5wcmljZVwiKSkpXSksX2MoJ3Z1ZS1udW1lcmljJyx7c3RhdGljQ2xhc3M6XCJmb3JtLWNvbnRyb2xcIixhdHRyczp7XCJpZFwiOlwicHJpY2VJbnB1dFwiLFwiY3VycmVuY3lcIjpcImtyXCIsXCJjdXJyZW5jeS1zeW1ib2wtcG9zaXRpb25cIjpcInN1ZmZpeFwiLFwiZGVjaW1hbC1zZXBhcmF0b3JcIjpcIixcIixcInNlcGFyYXRvclwiOlwiLlwiLFwicHJlY2lzaW9uXCI6MixcIm1pbnVzXCI6dHJ1ZX0sbW9kZWw6e3ZhbHVlOihfdm0uZm9ybURhdGEucHJpY2UpLGNhbGxiYWNrOmZ1bmN0aW9uICgkJHYpIHtfdm0uJHNldChfdm0uZm9ybURhdGEsIFwicHJpY2VcIiwgJCR2KX0sZXhwcmVzc2lvbjpcImZvcm1EYXRhLnByaWNlXCJ9fSldLDEpOl92bS5fZSgpLF9jKCdkaXYnLFtfYygnbGFiZWwnLHtzdGF0aWNDbGFzczpcImZvcm0tbGFiZWwgcmVxdWlyZWRcIixhdHRyczp7XCJmb3JcIjpcImFjY291bnRTZWxlY3RcIn19LFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcInR5cGVzLmFjY291bnRcIikpKV0pLF9jKCdzZWxlY3QnLHtkaXJlY3RpdmVzOlt7bmFtZTpcIm1vZGVsXCIscmF3TmFtZTpcInYtbW9kZWxcIix2YWx1ZTooX3ZtLmZvcm1EYXRhLmFjY291bnRfdXVpZCksZXhwcmVzc2lvbjpcImZvcm1EYXRhLmFjY291bnRfdXVpZFwifV0sc3RhdGljQ2xhc3M6XCJmb3JtLXNlbGVjdFwiLGF0dHJzOntcImlkXCI6XCJhY2NvdW50U2VsZWN0XCIsXCJyZXF1aXJlZFwiOlwiXCJ9LG9uOntcImNoYW5nZVwiOmZ1bmN0aW9uKCRldmVudCl7dmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLGZ1bmN0aW9uKG8pe3JldHVybiBvLnNlbGVjdGVkfSkubWFwKGZ1bmN0aW9uKG8pe3ZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7cmV0dXJuIHZhbH0pOyBfdm0uJHNldChfdm0uZm9ybURhdGEsIFwiYWNjb3VudF91dWlkXCIsICRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSl9fX0sX3ZtLl9sKChfdm0ucmV2ZW51ZUFjY291bnRzKSxmdW5jdGlvbihhY2NvdW50KXtyZXR1cm4gX2MoJ29wdGlvbicse2tleTphY2NvdW50LnV1aWQsZG9tUHJvcHM6e1widmFsdWVcIjphY2NvdW50LnV1aWR9fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uYWRkTGlua1N5bWJvbElmU2hhcmVkKF92bS5mb3JtYXRBY2NvdW50KGFjY291bnQpLCBhY2NvdW50KSkrXCIgXCIpXSl9KSwwKV0pLF9jKCdkaXYnLFtfYygnbGFiZWwnLHtzdGF0aWNDbGFzczpcImZvcm0tbGFiZWwgcmVxdWlyZWRcIixhdHRyczp7XCJmb3JcIjpcImRlZmF1bHRWYWxpZGl0eVNlbGVjdFwifX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5kZWZhdWx0X3ZhbGlkaXR5XCIpKStcIiBcIildKSxfYygnc2VsZWN0Jyx7ZGlyZWN0aXZlczpbe25hbWU6XCJtb2RlbFwiLHJhd05hbWU6XCJ2LW1vZGVsXCIsdmFsdWU6KF92bS5mb3JtRGF0YS5kZWZhdWx0X3ZhbGlkaXR5KSxleHByZXNzaW9uOlwiZm9ybURhdGEuZGVmYXVsdF92YWxpZGl0eVwifV0sc3RhdGljQ2xhc3M6XCJmb3JtLXNlbGVjdFwiLGF0dHJzOntcImlkXCI6XCJkZWZhdWx0VmFsaWRpdHlTZWxlY3RcIn0sb246e1wiY2hhbmdlXCI6ZnVuY3Rpb24oJGV2ZW50KXt2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9I
2FwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gdmFsfSk7IF92bS4kc2V0KF92bS5mb3JtRGF0YSwgXCJkZWZhdWx0X3ZhbGlkaXR5XCIsICRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXSl9fX0sX3ZtLl9sKChbJ1A2TScsICdQMVknLCAnUDJZJywgJ1AzWScsICdQNVknLCAndW5saW1pdGVkJ10pLGZ1bmN0aW9uKGR1cmF0aW9uKXtyZXR1cm4gX2MoJ29wdGlvbicse2tleTpkdXJhdGlvbixkb21Qcm9wczp7XCJ2YWx1ZVwiOmR1cmF0aW9ufX0sW192bS5fdihcIiBcIitfdm0uX3MoX3ZtLiR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5kdXJhdGlvbnMuXCIgKyBkdXJhdGlvbikpK1wiIFwiKV0pfSksMCldKSxfYygnZGl2JyxbX2MoJ2FkbWluLXNwaW5uZXItYnV0dG9uJyx7YXR0cnM6e1wiYnV0dG9uVGV4dFwiOl92bS5yZXNvdXJjZUVkaXRDcmVhdGVTdWJtaXRUZXh0KF92bS5pc0VkaXRpbmcsICdnaWZ0X2NhcmRfdHlwZScpLFwic3Bpbm5lckNvbmRpdGlvblwiOl92bS5pc1Byb2Nlc3NpbmdTdWJtaXRGb3JtUmVxdWVzdCxcImRpc2FibGVkQ29uZGl0aW9uXCI6X3ZtLmlzUHJvY2Vzc2luZ1N1Ym1pdEZvcm1SZXF1ZXN0LFwiZXh0cmFCdXR0b25DbGFzc2VzXCI6XCJ3LTEwMFwifX0pLF9jKCdidXR0b24nLHtzdGF0aWNDbGFzczpcImJ0biBidG4tZGFuZ2VyIHctMTAwIG10LTJcIixhdHRyczp7XCJ0eXBlXCI6XCJidXR0b25cIn0sb246e1wiY2xpY2tcIjpmdW5jdGlvbigkZXZlbnQpe3JldHVybiBfdm0uZ29Ub1N1YnZpZXcoJ0dpZnRDYXJkVHlwZXMnKX19fSxbX3ZtLl92KFwiIFwiK192bS5fcyhfdm0uJHQoXCJnZW5lcmFsLmNhbmNlbFwiKSkrXCIgXCIpXSldLDEpXSldKTpfdm0uX2UoKV0pXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zXCI+XG4gICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIltzaG93Rm9ybSA/ICdjb2wtbGctOCcgOiAnY29sLTEyJ11cIj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWlmPVwiIXNob3dGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49XCI1XCIgY2xhc3M9XCJib3JkZXItYm90dG9tLTBcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPVwiM1wiIGNsYXNzPVwiYm9yZGVyLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5leHBpcmVkX2dpZnRfY2FyZHNcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktcXVlc3Rpb24tY2lyY2xlLWZpbGwgdGV4dC1zZWNvbmRhcnkgbXMtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRpdGxlPVwiJHQoJ2FkbWluLmdpZnRfY2FyZHMudHlwZXMuZXhwaXJlZF9oZWxwJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49XCIzXCIgY2xhc3M9XCJib3JkZXItc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnZhbGlkX2dpZnRfY2FyZHNcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sgJHQoXCJnZW5lcmFsLnR5cGVcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAkdChcImdlbmVyYWwubmFtZVwiKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7ICR0KFwicHJvZHVjdHMucHJpY2VcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAkdChcInR5cGVzLmFjY291bnRcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyAkdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuZGVmYXVsdF92YWxpZGl0eVwiKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIhc2hvd0Zvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtd2FybmluZyB0ZXh0LWVuZCBib3JkZXItc3RhcnRcIj57eyAkdChcImdlbmVyYWwucXVhbnRpdHlcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS13YXJuaW5nIHRleHQtZW5kXCI+e3sgJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnVzZWRcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0YWJsZS13YXJuaW5nIHRleHQtZW5kXCI+e3sgJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnVudXNlZFwiKSB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRhYmxlLXN1Y2Nlc3MgdGV4dC1lbmQgYm9yZGVyLXN0YXJ0XCI+e3sgJHQoXCJnZW5lcmFsLnF1YW50aXR5XCIpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtc3VjY2VzcyB0ZXh0LWVuZFwiPnt7ICR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy51c2VkXCIpIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGFibGUtc3VjY2VzcyB0ZXh0LWVuZFwiPnt7ICR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy51bnVzZWRcIikgfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cImdpZnRDYXJkVHlwZSBpbiBnaWZ0Q2FyZFR5cGVzXCIgOmtleT1cImdpZnRDYXJkVHlwZS51dWlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXIgdGFibGUtZGFya1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpXCIgOmNsYXNzPVwiZ2V0R2lmdENhcmRUeXBlQmVoYXZpb3VySWNvb
2ihnaWZ0Q2FyZFR5cGUpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGdpZnRDYXJkVHlwZS5uYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaHRtbD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lmdENhcmRUeXBlLnByaWNlID09PSBudWxsID8gJzxpPkZyaXByaXM8L2k+JyA6IGZvcm1hdFByaWNlKGdpZnRDYXJkVHlwZS5wcmljZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0QWNjb3VudChnaWZ0Q2FyZFR5cGUuYWNjb3VudCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAkdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuZHVyYXRpb25zLlwiICsgZ2lmdENhcmRUeXBlLmRlZmF1bHRfdmFsaWRpdHkpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIiFzaG93Rm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtZm9yPVwiKGFjY2VudCwgY2F0ZWdvcnkpIGluIHsgZXhwaXJlZDogJ3RhYmxlLXdhcm5pbmcnLCB2YWxpZDogJ3RhYmxlLXN1Y2Nlc3MnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZCBib3JkZXItc3RhcnRcIiA6Y2xhc3M9XCJbYWNjZW50XVwiIDprZXk9XCJjYXRlZ29yeSArICdDb3VudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnaWZ0Q2FyZFR5cGUuc3RhdGlzdGljc1tjYXRlZ29yeV0uY291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiIDpjbGFzcz1cIlthY2NlbnRdXCIgOmtleT1cImNhdGVnb3J5ICsgJ09yaWdpbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFByaWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lmdENhcmRUeXBlLnN0YXRpc3RpY3NbY2F0ZWdvcnldLm9yaWdpbmFsX3N1bSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lmdENhcmRUeXBlLnN0YXRpc3RpY3NbY2F0ZWdvcnldLmN1cnJlbnRfYmFsYW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiIDpjbGFzcz1cIlthY2NlbnRdXCIgOmtleT1cImNhdGVnb3J5ICsgJ0JhbGFuY2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZm9ybWF0UHJpY2UoZ2lmdENhcmRUeXBlLnN0YXRpc3RpY3NbY2F0ZWdvcnldLmN1cnJlbnRfYmFsYW5jZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0ZCBjbGFzcz1cInRhYmxlLXN1Y2Nlc3MgdGV4dC1lbmRcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtc3VjY2VzcyB0ZXh0LWVuZFwiPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS1zdWNjZXNzIHRleHQtZW5kXCI+PC90ZD4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cIiEkc3RvcmUuZ2V0dGVycy5jb21wYW55QWRkb25zTGltaXRBbGxvd3MoJ2dpZnRfY2FyZHMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJvcGVuVHlwZUZvckVkaXRpbmcoZ2lmdENhcmRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktcGVuY2lsXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eX
2BlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cImdvVG9TdWJ2aWV3KCdHaWZ0Q2FyZFR5cGVzQ3JlYXRlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiaXNDcmVhdGluZyB8fCAhJHN0b3JlLmdldHRlcnMuY29tcGFueUFkZG9uc0xpbWl0QWxsb3dzKCdnaWZ0X2NhcmRzJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAkdChcImdlbmVyYWwuYWRkXCIpIH19IHt7ICR0KFwidHlwZXMuZ2lmdF9jYXJkX3R5cGVcIikudG9Mb3dlckNhc2UoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IHYtaWY9XCJzaG93Rm9ybVwiIGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgcmVzb3VyY2VFZGl0Q3JlYXRlSGVhZGVyKGlzRWRpdGluZywgXCJnaWZ0X2NhcmRfdHlwZVwiKSB9fTwvaDM+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIkc3RvcmUuZ2V0dGVycy5jb21wYW55SXNFbnRlcnByaXNlXCIgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5lbnRlcnByaXNlX21lc3NhZ2VfcmVfc2NvcGVfb2ZfdmFsaWRpdHlcIikgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZS1pZj1cIiRzdG9yZS5nZXR0ZXJzLmNvbXBhbnlJc1N1YmNvbXBhbnlcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLnN1YmNvbXBhbnlfbWVzc2FnZV9yZV9zY29wZV9vZl92YWxpZGl0eVwiKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJyb3cgZy0zXCIgQHN1Ym1pdC5wcmV2ZW50PVwic3VibWl0Rm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImJlaGF2aW91clJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2YWx1ZUJhc2VkUmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInZhbHVlLWJhc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImZvcm1EYXRhLmJlaGF2aW91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInJlc2V0UHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0VkaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInZhbHVlQmFzZWRSYWRpb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuYmVoYXZpb3Vycy52YWx1ZS1iYXNlZFwiKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImJlaGF2aW91clJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJleHBlcmllbmNlUmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImV4cGVyaWVuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZm9ybURhdGEuYmVoYXZpb3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJleHBlcmllbmNlUmFkaW9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoXCJhZG1pbi5naWZ0X2NhcmRzLnR5cGVzLmJlaGF2aW91cnMuZXhwZXJpZW5jZVwiKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJuYW1lSW5wdXRcIiBjbGFzcz1cImZvcm0tbGFiZWwgcmVxdWlyZWRcIj57eyAkdChcImdlbmVyYWwubmFtZVwiKSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl
2kPVwibmFtZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZm9ybURhdGEubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJmb3JtRGF0YS5iZWhhdmlvdXIgPT09ICdleHBlcmllbmNlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInByaWNlSW5wdXRcIiBjbGFzcz1cImZvcm0tbGFiZWwgcmVxdWlyZWRcIj57eyAkdChcInByb2R1Y3RzLnByaWNlXCIpIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2dWUtbnVtZXJpY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInByaWNlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5PVwia3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5LXN5bWJvbC1wb3NpdGlvbj1cInN1ZmZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbC1zZXBhcmF0b3I9XCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3I9XCIuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LWJpbmQ6cHJlY2lzaW9uPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1pbnVzPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImZvcm1EYXRhLnByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWNjb3VudFNlbGVjdFwiIGNsYXNzPVwiZm9ybS1sYWJlbCByZXF1aXJlZFwiPnt7ICR0KFwidHlwZXMuYWNjb3VudFwiKSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBpZD1cImFjY291bnRTZWxlY3RcIiB2LW1vZGVsPVwiZm9ybURhdGEuYWNjb3VudF91dWlkXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cImFjY291bnQgaW4gcmV2ZW51ZUFjY291bnRzXCIgOnZhbHVlPVwiYWNjb3VudC51dWlkXCIgOmtleT1cImFjY291bnQudXVpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhZGRMaW5rU3ltYm9sSWZTaGFyZWQoZm9ybWF0QWNjb3VudChhY2NvdW50KSwgYWNjb3VudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlZmF1bHRWYWxpZGl0eVNlbGVjdFwiIGNsYXNzPVwiZm9ybS1sYWJlbCByZXF1aXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiYWRtaW4uZ2lmdF9jYXJkcy50eXBlcy5kZWZhdWx0X3ZhbGlkaXR5XCIpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgaWQ9XCJkZWZhdWx0VmFsaWRpdHlTZWxlY3RcIiB2LW1vZGVsPVwiZm9ybURhdGEuZGVmYXVsdF92YWxpZGl0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJkdXJhdGlvbiBpbiBbJ1A2TScsICdQMVknLCAnUDJZJywgJ1AzWScsICdQNVknLCAndW5saW1pdGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiZHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJkdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAkdChcImFkbWluLmdpZnRfY2FyZHMudHlwZXMuZHVyYXRpb25zLlwiICsgZHVyYXRpb24pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZG1pbi1zcGlubmVyLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpidXR0b25UZXh0PVwicmVzb3VyY2VFZGl0Q3JlYXRlU3VibWl0VGV4dChpc0VkaXRpbmcsICdnaWZ0X2NhcmRfdHlwZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3Bpbm5lckNvbmRpdGlvbj1cImlzUHJvY2Vzc2luZ1N1Ym1pdEZvcm1SZXF1ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGlzYWJsZWRDb25kaXRpb249XCJpc1Byb2Nlc3NpbmdTdWJtaXRGb3Jt
2UmVxdWVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFCdXR0b25DbGFzc2VzPVwidy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciB3LTEwMCBtdC0yXCIgQGNsaWNrPVwiZ29Ub1N1YnZpZXcoJ0dpZnRDYXJkVHlwZXMnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KFwiZ2VuZXJhbC5jYW5jZWxcIikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGZvcm1hdHRlciBmcm9tIFwiQC9taXhpbnMvRm9ybWF0dGVyLmpzXCJcbmltcG9ydCBBZG1pblNwaW5uZXJCdXR0b24gZnJvbSBcIkAvY29tcG9uZW50cy9hZG1pbi9BZG1pblNwaW5uZXJCdXR0b24udnVlXCJcbmltcG9ydCBBZG1pbkZvcm1QYWdlSGVscGVycyBmcm9tIFwiQC9taXhpbnMvQWRtaW5Gb3JtUGFnZUhlbHBlcnNcIlxuaW1wb3J0IFZ1ZU51bWVyaWMgZnJvbSBcInZ1ZS1udW1lcmljXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6IFwiR2lmdENhcmRUeXBlc1wiLFxuXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBBZG1pblNwaW5uZXJCdXR0b24sXG4gICAgICAgIFZ1ZU51bWVyaWMsXG4gICAgfSxcblxuICAgIG1peGluczogW2Zvcm1hdHRlciwgQWRtaW5Gb3JtUGFnZUhlbHBlcnNdLFxuXG4gICAgZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdpZnRDYXJkVHlwZXM6IGZhbHNlLFxuICAgICAgICAgICAgZm9ybURhdGE6IHtcbiAgICAgICAgICAgICAgICBwcmljZTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1Byb2Nlc3NpbmdTdWJtaXRGb3Jt
2UmVxdWVzdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgcmV2ZW51ZUFjY291bnRzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUucmVzb3VyY2VzLnJldmVudWVBY2NvdW50c1xuICAgICAgICB9LFxuXG4gICAgICAgIGlzQ3JlYXRpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRyb3V0ZS5uYW1lID09PSBcIkdpZnRDYXJkVHlwZXNDcmVhdGVcIlxuICAgICAgICB9LFxuXG4gICAgICAgIGlzRWRpdGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHJvdXRlLm5hbWUgPT09IFwiR2lmdENhcmRUeXBlc0VkaXRcIlxuICAgICAgICB9LFxuXG4gICAgICAgIHNob3dGb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0NyZWF0aW5nIHx8IHRoaXMuaXNFZGl0aW5nXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXN5bmMgZ2V0R2lmdENhcmRUeXBlcygpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBpbmNsdWRlX3NoYXJlZDogMSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlX3N0YXRpc3RpY3M6IDEsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBheGlvcy5nZXQoXCJnaWZ0LWNhcmQtdHlwZXNcIiwgeyBwYXJhbXMgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZ2lmdENhcmRUeXBlcyA9IHJlc3BvbnNlLmRhdGEuZGF0YVxuXG4gICAgICAgICAgICAgICAgdGhpcy5naWZ0Q2FyZFR5cGVzID0gZ2lmdENhcmRUeXBlc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBzdWJtaXRGb3JtKCkge1xuICAgICAgICAgICAgY29uc3QgaXNDcmVhdGluZyA9IHRoaXMuaXNDcmVhdGluZ1xuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLiRyb3V0ZVxuXG4gICAgICAgICAgICBjb25zdCBheGlvc1JlcXVlc3QgPSBmdW5jdGlvbiAoZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNDcmVhdGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXhpb3MucG9zdChcImdpZnQtY2FyZC10eXBlc1wiLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXhpb3MucHV0KFwiZ2lmdC1jYXJkLXR5cGVzL1wiICsgcm91dGUucGFyYW1zLnV1aWQsIGZvcm1EYXRhKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcHJlcGFyZWRGb3JtRGF0YSA9IHsgLi4udGhpcy5mb3JtRGF0YSB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1EYXRhLmJlaGF2aW91ciA9PT0gXCJleHBlcmllbmNlXCIpIHtcbiAgICAgICAgICAgICAgICBwcmVwYXJlZEZvcm1EYXRhLnByaWNlID0gcHJlcGFyZWRGb3JtRGF0YS5wcmljZSAqIDEwMFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJlcGFyZWRGb3JtRGF0YS5wcmljZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXhpb3NSZXF1ZXN0KHByZXBhcmVkRm9ybURhdGEpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0R2lmdENhcmRUeXBlcygpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1N1YnZpZXcoXCJHaWZ0Q2FyZFR5cGVzXCIpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcImRhbmdlck5vdGlmeVwiLCBcIkZhaWxlZCB0byBjcmVhdGUgb3IgdXBkYXRlIGdpZnQgY2FyZCB0eXBlLlwiKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgb3BlblR5cGVGb3JFZGl0aW5nKGdpZnRDYXJkVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5nb1RvU3VidmlldyhcIkdpZnRDYXJkVHlwZXNFZGl0XCIsIHsgdXVpZDogZ2lmdENhcmRUeXBlLnV1aWQgfSlcblxuICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBnaWZ0Q2FyZFR5cGUubmFtZSxcbiAgICAgICAgICAgICAgICBwcmljZTogZ2lmdENhcmRUeXBlLnByaWNlIC8gMTAwLFxuICAgICAgICAgICAgICAgIGJlaGF2aW91cjogZ2lmdENhcmRUeXBlLmJlaGF2aW91cixcbiAgICAgICAgICAgICAgICBhY2NvdW50X3V1aWQ6IGdpZnRDYXJkVHlwZS5hY2NvdW50LnV1aWQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdF92YWxpZGl0eTogZ2lmdENhcmRUeXBlLmRlZmF1bHRfdmFsaWRpdHksXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ29Ub1N1YnZpZXcobmFtZSwgcGFyYW1zID0ge30pIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSB7XG4gICAgICAgICAgICAgICAgcHJpY2U6IDAsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsgbmFtZSwgcGFyYW1zIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzZXRQcmljZSgpIHtcbiAgICAgICAgICAgIC8vIEh1dWgsIG5laXRoZXIgbmV4dFRpY2sgb3IgdGhpcy4kc2V0IHdvcmtzIHRvIGF2b2lkIHRoZSBKUyBlcnJvciBmcm9tIFZ1ZU51bWVyaWMuLi4gV2hhdGV2ZXJcbiAgICAgICAgICAgIHRoaXMuZm9ybURhdGEucHJpY2UgPSAwXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIHRoaXMuZ2V0R2lmdENhcmRUeXBlcygpXG5cbiAgICAgICAgdGhpcy4kc3RvcmVcbiAgICAgICAgICAgIC5kaXNwYXRjaChcImZldGNoUmV2ZW51ZUFjY291bnRzXCIsIHsgaW5jbHVkZV9zaGFyZWQ6IHRoaXMuZ2V0SW5jbHVkZVNoYXJlZFZhbHVlRm9yRm9ybVBhZ2UoKSB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJldmVudWVBY2NvdW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3YXJuaW5nTm90aWZ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkEgZ2lmdCBjYXJkIHR5cGUgcmVxdWlyZXMgYSByZXZlbnVlIGFjY291bnQsIGJ1dCBubyByZXZlbnVlIGFjY291bnRzIHdlcmUgZm91bmQuXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgI
2H0gZWxzZSBpZiAodGhpcy5yZXZlbnVlQWNjb3VudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuYWNjb3VudF91dWlkID0gdGhpcy5yZXZlbnVlQWNjb3VudHNbMF0udXVpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgfSxcblxuICAgIG1vdW50ZWQoKSB7fSxcbn1cbjwvc2NyaXB0PlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdGhyZWFkLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC00MC51c2VbMV0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9HaWZ0Q2FyZFR5cGVzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy90aHJlYWQtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTQwLnVzZVsxXSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS92dWUtbG9hZGVyLXYxNS9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0dpZnRDYXJkVHlwZXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0dpZnRDYXJkVHlwZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWFlMTJjZTRhXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vR2lmdENhcmRUeXBlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuZXhwb3J0ICogZnJvbSBcIi4vR2lmdENhcmRUeXBlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B2dWUvdnVlLWxvYWRlci12MTUvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IFZ1ZVJvdXRlciBmcm9tIFwidnVlLXJvdXRlclwiXG5cbmNvbnN0IHsgaXNOYXZpZ2F0aW9uRmFpbHVyZSwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlIH0gPSBWdWVSb3V0ZXJcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgLy8gVXNlIHRoaXMgZnVuY3Rpb24gdG8gc2V0IHRoZSBpbmNsdWRlIHNoYXJlZCB2YWx1ZSBhdCBmb3JtIHBhZ2VzIChcIkVkaXRDcmVhdGUuLi5cIiwgZXRjLilcbiAgICAgICAgZ2V0SW5jbHVkZVNoYXJlZFZhbHVlRm9yRm9ybVBhZ2UoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4kc3RvcmUuZ2V0dGVycy5jb21wYW55SXNTdWJjb21wYW55KSB7XG4gICAgICAgICAgICAgICAgLy8gU3ViY29tcGFuaWVzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGVpciBwYXJlbnQncyByZXNvdXJjZXNcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZVF1ZXJ5UGFyYW1zSWZDaGFuZ2VkKG5ld1F1ZXJ5KSB7XG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy4kcm91dGUucXVlcnkpICE9PSBKU09OLnN0cmluZ2lmeShuZXdRdWVyeSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucmVwbGFjZSh7IHF1ZXJ5OiBuZXdRdWVyeSB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQSBuZXdlciBxdWVyeSB1cGRhdGUgc3VwZXJzZWRpbmcgdGhpcyBvbmUgaXMgZXhwZWN0ZWQsIG5vdCBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNOYXZpZ2F0aW9uRmFpbHVyZShlcnJvciwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlLmNhbmNlbGxlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc05hdmlnYXRpb25GYWlsdXJlKGVycm9yLCBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUuZHVwbGljYXRlZClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxufVxuIiwiaW1wb3J0IHsgdG9ab25lZFRpbWUgfSBmcm9tIFwiZGF0ZS1mbnMtdHpcIlxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgbG9jYWxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbGUoKVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDb21wb25lbnQgPSB0aGlzXG5cbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb21wb25lbnQuZm9ybWF0dGVyQ29udGV4dCAmJiB0eXBlb2YgY3VycmVudENvbXBvbmVudC5mb3JtYXR0ZXJDb250ZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29tcG9uZW50LmZvcm1hdHRlckNvbnRleHRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50Q29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudC4kcGFyZW50XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldExvY2FsZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlckNvbnRleHQgPSB0aGlzLnJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlckNvbnRleHQubG9jYWxlID8/IHRoaXMuJHN0b3JlPy5nZXR0ZXJzPy5jb21wYW5
25Py5sb2NhbGUgPz8gXCJkYS1ES1wiXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0VGltZXpvbmUoKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXJDb250ZXh0ID0gdGhpcy5yZXNvbHZlRm9ybWF0dGVyQ29udGV4dCgpXG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXJDb250ZXh0LnRpbWV6b25lID8/IHRoaXMuJHN0b3JlPy5nZXR0ZXJzPy5jb21wYW55Py50aW1lem9uZSA/PyBcIkV1cm9wZS9Db3BlbmhhZ2VuXCJcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXREYXRlVGltZUZyb21EYXRlKGRhdGUsIHdlZWtkYXlGb3JtYXRPckZhbHNlID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAod2Vla2RheUZvcm1hdE9yRmFsc2UpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLndlZWtkYXkgPSB3ZWVrZGF5Rm9ybWF0T3JGYWxzZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gSWYgb21pdERhdGVJZlNhbWVEYXRlLCB0aGUgZGF0ZVRpbWUgd2lsbCBhbHdheXMgYmUgcHJpbnRlZCB3aXRoIGZ1bGwgZGF0ZTsgaWYgaXQgaXMgbm90IGZhbHNlLCBjYW4gcHJvZHVjZVxuICAgICAgICAvLyBhIHZhbGlkIERhdGUsIGFuZCBib3RoIGRhdGVzIGFyZSB0aGUgc2FtZSwgdGhlIGRhdGUgcGFydCB3aWxsIGJlIG9taXR0ZWRcbiAgICAgICAgLy8gVE9ETzogRXJyb3IgaGFuZGxpbmdcbiAgICAgICAgZm9ybWF0RGF0ZVRpbWUoZGF0ZVRpbWUsIG9taXREYXRlSWZTYW1lRGF0ZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGRhdGVUaW1lKVxuXG4gICAgICAgICAgICBsZXQgcmVmZXJlbmNlRGF0ZSA9IG9taXREYXRlSWZTYW1lRGF0ZSA9PT0gZmFsc2UgPyBmYWxzZSA6IG5ldyBEYXRlKG9taXREYXRlSWZTYW1lRGF0ZSlcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZURhdGUgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSA9PT0gcmVmZXJlbmNlRGF0ZS5nZXREYXRlKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9sZXQgb3B0aW9ucyA9IHsgdGltZVN0eWxlOiAnbWVkaXVtJyB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHNlY29uZDogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGVUaW1lV2l0aG91dFNlY29uZHMoZGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoZGF0ZVRpbWUpXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCJudW1lcmljXCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0RGF0ZVRpbWVXaXRoWWVhcihkYXRlVGltZSkge1xuICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShkYXRlVGltZSlcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICAgICAgIFwiL1wiICtcbiAgICAgICAgICAgICAgICAoZGF0ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICAgICAgIFwiLVwiICtcbiAgICAgICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICAgICAgIFwiIGtsLiBcIiArXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpICtcbiAgICAgICAgICAgICAgICBcIjpcIiArXG4gICAgICAgICAgICAgICAgU3RyaW5nKGRhdGUuZ2V0TWludXRlcygpKS5wYWRTdGFydCgyLCBcIjBcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0TGVzc1ByZWNpc2VEYXRlVGltZShkYXRlVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Db21wYW5
25VGltZShkYXRlVGltZSlcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBkYXRlLmdldERhdGUoKSArXG4gICAgICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAgICAgXCIga2wuIFwiICtcbiAgICAgICAgICAgICAgICBkYXRlLmdldEhvdXJzKCkgK1xuICAgICAgICAgICAgICAgIFwiOlwiICtcbiAgICAgICAgICAgICAgICBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGUoZGF0ZSwgb3ZlcndyaXRlT3B0aW9ucyA9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIG1vbnRoOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBkYXk6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgICAgIHRpbWVab25lOiB0aGlzLmdldFRpbWV6b25lKCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvdmVyd3JpdGVPcHRpb25zICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgb3ZlcndyaXRlT3B0aW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSlcblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdERhdGVGdWxsTGVuZ3RoKGRhdGUsIG92ZXJ3cml0ZU9wdGlvbnMgPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgICAgICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB0aW1lWm9uZTogdGhpcy5nZXRUaW1lem9uZSgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3ZlcndyaXRlT3B0aW9ucyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIG92ZXJ3cml0ZU9wdGlvbnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG5cbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgb3B0aW9ucylcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRCb29raW5nRGF0ZShkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy50b0NvbXBhbnlUaW1lKGRhdGVTdHJpbmcpXG5cbiAgICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcblxuICAgICAgICAgICAgcmV0dXJuIGAke2RheX0vJHttb250aH0tJHt5ZWFyfWBcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRUaW1lKGRhdGUsIHNlY29uZHMgPSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBob3VyOiBcIjItZGlnaXRcIiwgbWludXRlOiBcIjItZGlnaXRcIiwgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSB9XG5cbiAgICAgICAgICAgIGlmIChzZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zZWNvbmQgPSBcIjItZGlnaXRcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIG9wdGlvbnMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0VGltZUtpdGNoZW4oZGF0ZSkge1xuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgICAgICB3ZWVrZGF5OiBcInNob3J0XCIsXG4gICAgICAgICAgICAgICAgdGltZVpvbmU6IHRoaXMuZ2V0VGltZXpvbmUoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuICAgICAgICBnZXRDdXJyZW5jeSgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlckNvbnRleHQgPSB0aGlzLnJlc29sdmVGb3JtYXR0ZXJDb250ZXh0KClcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlckNvbnRleHQuY3VycmVuY3kgPz8gdGhpcy4kc3RvcmU/LmdldHRlcnM/LmNvbXBhbnk/LmN1cnJlbmN5ID8/IFwiREtLXCJcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0UHJpY2UoYW1vdW50LCBjdXJyZW5jeURpc3BsYXkgPSBcImNvZGVcIiwgcGx1c1NpZ25Gb3JQb3NpdGl2ZUFtb3VudHMgPSBmYWxzZSwgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMikge1xuICAgICAgICAgICAgbGV0IHByZWZpeCA9IHBsdXNTaWduRm9yUG9zaXRpdmVBbW91bnRzICYmIGFtb3VudCA+IDAgPyBcIitcIiA6IFwiXCJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbmN5RGlzcGxheSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVuY3kgPSB0aGlzLmdldEN1cnJlbmN5KClcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN0eWxlID0gXCJjdXJyZW5jeVwiXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeSA9IGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeURpc3BsYXkgPSBjdXJyZW5jeURpc3BsYXlcbiAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgbGV0IHZhbHVlID0gYW1vdW50IC8gMTAwXG4gICAgICAgICAgICAvLyBJbnRsIHByaW50cyBcIi0wLDAwXCIgZm9yIC0wIGFuZCBmb3IgdGlueSBuZWdhdGl2ZXMgdGhhdCByb3VuZCB0byB6ZXJvXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpIDwgMC4wMDUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIHZhbHVlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCBvcHRpb25zKVxuICAgICAgICB9LFxuXG4gICAgICAgIGNhcGl0YWxpc2VGaXJzdExldHRlcihzdHIpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbiAgICAgICAgfSxcblxuICAgICAgICB1bml0QWJicnYobG9uZ0Zvcm0sIHRyYW5zbGF0ZVBjcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCBhYmJyZXZpYXRpb25zID0ge1xuICAgICAgICAgICAgICAgIGdyYW06IFwiZ1wiLFxuICAgICAgICAgICAgICAgIGtpbG9ncmFtOiBcImtnXCIsXG4gICAgICAgICAgICAgICAgY2VudGltZXRlcjogXCJjbVwiLFxuICAgICAgICAgICAgICAgIG1ldGVyOiBcIm1cIixcbiAgICAgICAgICAgICAgICBjZW50aWxpdGVyOiBcImNsXCIsXG4gICAgICAgICAgICAgICAgbGl0ZXI6IFwibFwiLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogXCJtXCIsXG4gICAgICAgICAgICAgICAgaG91cjogXCJoXCIsXG4gICAgICAgICAgICAgICAgZGVjYWdyYW06IFwiZGdcIixcbiAgICAgICAgICAgICAgICBudWxsOiBcInBjc1wiLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobG9uZ0Zvcm0gaW4gYWJicmV2aWF0aW9ucykge1xuICAgICAgICAgICAgICAgIGxldCBhYmJydiA9IGFiYnJldmlhdGlvbnNbbG9uZ0Zvcm1dXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYWJicnYgPT09IFwicGNzXCIgJiYgdHJhbnNsYXRlUGNzID8gdGhpcy4kdChcInBvcy51bml0X2FiYnJldmlhdGlvbnMucGNzXCIpIDogYWJicnZcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvbmdGb3JtXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FwaXRhbGlzZUFuZENvbW1hU2VwYXJhdGVXZWVrZGF5cyh3ZWVrZGF5cywgYWxsRGF5c0V4Y2VwdFRocmVzaG9sZCA9IDApIHtcbiAgICAgICAgICAgIGlmIChhbGxEYXlzRXhjZXB0VGhyZXNob2xkID4gMCAmJiB3ZWVrZGF5cy5sZW5ndGggPCA3ICYmIHdlZWtkYXlzLmxlbmd0aCA+PSA3IC0gYWxsRGF5c0V4Y2VwdFRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IE1ha2UgdGhpcyBjb2RlIG1vcmUgcGVyZm9ybWFudCBieSBpbnN0ZWFkIHBhc3Npbmcgb2JqZWN0IG9mIGFsbCB3ZWVrZGF5cyB3aXRoIGJvb2wgdmFsdWVzXG4gICAgICAgICAgICAgICAgbGV0IGV4Y2VwdCA9IFtcIm1vbmRheVwiLCBcInR1ZXNkYXlcIiwgXCJ3ZWRuZXNkYXlcIiwgXCJ0aHVyc2RheVwiLCBcImZyaWRheVwiLCBcInNhdHVyZGF5XCIsIFwic3VuZGF5XCJdLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+ICF3ZWVrZGF5cy5pbmNsdWRlcyhkKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHQoXCJnZW5lcmFsLmFsbF9kYXlzX2V4Y2VwdFwiKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgZXhjZXB0Lm1hcCgoZCkgPT4gdGhpcy4kdChcImdlbmVyYWwud2Vla2RheXNfY29ycmVjdF9jYXBpdGFsaXNhdGlvbi5cIiArIGQpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXlzXG4gICAgICAgICAgICAgICAgLm1hcCgodywgaW5kZXgpID0+IHRoaXMuJHQoXCJnZW5lcmFsLndlZWtkYXlzXCIgKyAoaW5kZXggPiAwID8gXCJfY29ycmVjdF9jYXBpdGFsaXNhdGlvblwiIDogXCJcIikgKyBcIi5cIiArIHcpKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICAgfSxcblxuICAgICAgICByZXNvdXJjZUVkaXRDcmVhdGVIZWFkZXIoaXNFZGl0aW5nLCByZXNvdXJjZSwgbmFtZSA9IG51bGwsIHNraXBIdG1sSXRhbGljcyA9IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBSZW1lbWJlciB0byBjaGFuZ2UgdGhpcyB3aGVuIHdlIHN0YXJ0IHN1cHBvcnRpbmcgZS5nLiBHZXJtYW4sIHdoZXJlIG5vdW5zIHdvdWxkIGhhdmUgYSBjYXBpdGFsaXplZCBmaXJzdCBsZXR0ZXJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICB0aGlzLiR0KFwiZ2VuZXJhbC5cIiArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gXCJjcmVhdGVcIiA6IFwiZWRpdFwiKSkgK1xuICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKVxuXG4gICAgICAgICAgICBpZiAoaXNFZGl0aW5nICE9PSBmYWxzZSAmJiBuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWVTdHJpbmdcblxuICAgICAgICAgICAgICAgIGlmIChza2lwSHRtbEl0YWxpY3MpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZVN0cmluZyA9IFwiIFwiICsgbmFtZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBcIiA8ZW0+XCIgKyBuYW1lICsgXCI8L2VtPlwiXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGV4dCArPSBuYW1lU3RyaW5nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0ZXh0XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb3VyY2VFZGl0Q3JlYXRlU3VibWl0VGV4dChpc0VkaXRpbmcsIHJlc291cmNlKSB7XG4gICAgICAgICAgICAvL3JldHVybiB0aGlzLiR0KCdnZW5lcmFsLicgKyAoaXNFZGl0aW5nID09PSBmYWxzZSA/ICdjcmVhdGUnIDogJ3VwZGF0ZScpKSArICcgJyArIHRoaXMuJHQoXCJ0eXBlcy5cIiArIHJlc291cmNlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy4kdGUoXCJ0eXBlcy5cIiArIHJlc291cmNlKSA/IFwiIFwiICsgdGh
2pcy4kdChcInR5cGVzLlwiICsgcmVzb3VyY2UpLnRvTG93ZXJDYXNlKCkgOiBcIlwiXG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImdlbmVyYWwuXCIgKyAoaXNFZGl0aW5nID09PSBmYWxzZSA/IFwiY3JlYXRlXCIgOiBcInVwZGF0ZVwiKSkgKyBzdWZmaXhcbiAgICAgICAgfSxcblxuICAgICAgICByZXNvdXJjZURlbGV0ZVRleHQocmVzb3VyY2UpIHtcbiAgICAgICAgICAgIC8vcmV0dXJuIHRoaXMuJHQoJ2dlbmVyYWwuJyArIChpc0VkaXRpbmcgPT09IGZhbHNlID8gJ2NyZWF0ZScgOiAndXBkYXRlJykpICsgJyAnICsgdGhpcy4kdChcInR5cGVzLlwiICsgcmVzb3VyY2UpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSB0aGlzLiR0ZShcInR5cGVzLlwiICsgcmVzb3VyY2UpID8gXCIgXCIgKyB0aGlzLiR0KFwidHlwZXMuXCIgKyByZXNvdXJjZSkudG9Mb3dlckNhc2UoKSA6IFwiXCJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5kZWxldGVcIikgKyBzdWZmaXhcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRBbGxSZXNvdXJjZU5hbWVUZXh0KHJlc291cmNlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJnZW5lcmFsLmFsbF9yZXNvdXJjZV9uYW1lXCIsIHsgcmVzb3VyY2VOYW1lIH0pXG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVuZGluZ0ludml0YXRpb25TdGF0dXMoaW52aXRhdGlvbikge1xuICAgICAgICAgICAgaWYgKGludml0YXRpb24uYWNjZXB0ZWRfYXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLmFjY2VwdGVkXCIpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludml0YXRpb24ucmVqZWN0ZWRfYXQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLnJlamVjdGVkXCIpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGludml0YXRpb24uZXhwaXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwicG9zLmludml0YXRpb25fc3RhdHVzZXMuZXhwaXJlZFwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcInBvcy5pbnZpdGF0aW9uX3N0YXR1c2VzLm9wZW5cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRRdWFudGl0eShxdWFudGl0eSwgdW5pdCkge1xuICAgICAgICAgICAgaWYgKHVuaXQgJiYgdW5pdC5uYW1lID09PSBcImRlY2FncmFtXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKHF1YW50aXR5IC8gMTAwKS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSkgKyB0aGlzLmdldFVuaXRTdWZmaXgoXCJraWxvZ3JhbVwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcXVhbnRpdHkgKyB0aGlzLmdldFVuaXRTdWZmaXgodW5pdCAhPT0gbnVsbCA/IHVuaXQubmFtZSA6IG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UXVhbnRpdHlPZk9yZGVyTGluZShvcmRlckxpbmUsIHF1YW50aXR5UHJvcGVydHkgPSBcInF1YW50aXR5XCIpIHtcbiAgICAgICAgICAgIGxldCB1bml0ID0gbnVsbFxuXG4gICAgICAgICAgICBpZiAob3JkZXJMaW5lPy5zZWxsYWJsZT8udW5pdCkge1xuICAgICAgICAgICAgICAgIHVuaXQgPSBvcmRlckxpbmUuc2VsbGFibGUudW5pdFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRRdWFudGl0eShvcmRlckxpbmVbcXVhbnRpdHlQcm9wZXJ0eV0sIHVuaXQpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0VW5pdFN1ZmZpeChsb25nRm9ybSkge1xuICAgICAgICAgICAgaWYgKGxvbmdGb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiIFwiICsgdGhpcy51bml0QWJicnYobG9uZ0Zvcm0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3JkZXJMaW5lT3JpZ2luYWxUb3RhbChvcmRlckxpbmUsIGZvcm1hdHRlZCA9IGZhbHNlLCBxdWFudGl0eVByb3BlcnR5ID0gXCJxdWFudGl0eVwiKSB7XG4gICAgICAgICAgICBsZXQgb3JpZ2luYWxUb3RhbCA9IG9yZGVyTGluZS5wcmljZSAqIG9yZGVyTGluZVtxdWFudGl0eVByb3BlcnR5XVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkID8gdGhpcy5mb3JtYXRQcmljZShvcmlnaW5hbFRvdGFsLCBmYWxzZSkgOiBvcmlnaW5hbFRvdGFsXG4gICAgICAgIH0sXG5cbiAgICAgICAgb3JkZXJMaW5lQ3VycmVudFRvdGFsKG9yZGVyTGluZSwgZm9ybWF0dGVkID0gZmFsc2UsIHF1YW50aXR5UHJvcGVydHkgPSBcInF1YW50aXR5XCIpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VG90YWwgPSBvcmRlckxpbmUucHJpY2UgKiBvcmRlckxpbmVbcXVhbnRpdHlQcm9wZXJ0eV1cblxuICAgICAgICAgICAgY29uc3QgbGluZURpc2NvdW50UGVyY2VudGFnZSA9IG9yZGVyTGluZS5saW5lX2Rpc2NvdW50Py5wZXJjZW50YWdlXG5cbiAgICAgICAgICAgIGlmIChsaW5lRGlzY291bnRQZXJjZW50YWdlICE9IG51bGwgJiYgbGluZURpc2NvdW50UGVyY2VudGFnZSA+IDApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50VG90YWwgPSBjdXJyZW50VG90YWwgLSBNYXRoLnJvdW5kKGN1cnJlbnRUb3RhbCAqIChsaW5lRGlzY291bnRQZXJjZW50YWdlIC8gMTAwMCkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQgPyB0aGlzLmZvcm1hdFByaWNlKGN1cnJlbnRUb3RhbCwgZmFsc2UpIDogY3VycmVudFRvdGFsXG4gICAgICAgIH0sXG5cbiAgICAgICAgbm9UeXBlKHR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiZ2VuZXJhbC5ub190eXBlXCIsIHsgdHlwZTogdGhpcy4kdChcInR5cGVzLlwiICsgdHlwZSkudG9Mb3dlckNhc2UoKSB9KVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldE5hbWVPZldlZWtkYXlGcm9tSW50ZWdlcihudW1iZXIsIGxvd2VyQ2FzZSA9IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHdlZWtkYXlzID0gW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl1cblxuICAgICAgICAgICAgbGV0IHdlZWtkYXkgPSB3ZWVrZGF5c1tudW1iZXJdXG5cbiAgICAgICAgICAgIGlmIChsb3dlckNhc2UpIHtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gd2Vla2RheS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgI
2HJldHVybiB3ZWVrZGF5XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UHJvZHVjdEZvckRyb3Bkb3duKHApIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHAucGx1ICE9PSBudWxsID8gcC5wbHUgKyBcIiB8IFwiIDogXCJcIikgK1xuICAgICAgICAgICAgICAgIHAubmFtZSArXG4gICAgICAgICAgICAgICAgXCIgfCBcIiArXG4gICAgICAgICAgICAgICAgKHAucHJpY2UgPT09IG51bGwgPyB0aGlzLiR0KFwiYWRtaW4ucHJvZHVjdHMuY2FzaGllcl9kZWNpZGVkX3ByaWNlXCIpIDogdGhpcy5mb3JtYXRQcmljZShwLnByaWNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcblxuICAgICAgICBhZGRMaW5rU3ltYm9sSWZTaGFyZWQodGV4dCwgbW9kZWxXaXRoQ29tcGFueURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgKG1vZGVsV2l0aENvbXBhbnlEYXRhLmNvbXBhbnkudHlwZT8ubmFtZSA9PT0gXCJlbnRlcnByaXNlXCIgPyBcIiDwn5SXXCIgOiBcIlwiKVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdENhc2hpZXJGdWxsTmFtZShjYXNoaWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FzaGllci5maXJzdF9uYW1lICsgXCIgXCIgKyBjYXNoaWVyLmxhc3RfbmFtZVxuICAgICAgICB9LFxuXG4gICAgICAgIGZvcm1hdFBlcmNlbnRhZ2UodmFsdWUsIG9mVmFsdWUsIHNpZ25JZlBvc2l0aXZlID0gZmFsc2UsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSB2YWx1ZSAvIG9mVmFsdWVcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZShwZXJjZW50YWdlLCBzaWduSWZQb3NpdGl2ZSwgbWluRGlnaXRzLCBtYXhEaWdpdHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZSh2YWx1ZSwgc2lnbklmUG9zaXRpdmUgPSBmYWxzZSwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMSkge1xuICAgICAgICAgICAgLy9jb25zdCBsb2NhbGVTdHJpbmdPcHRpb25zID0geyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhEaWdpdHMgfTtcbiAgICAgICAgICAgIC8vbGV0IGZvcm1hdHRlZFBlcmNlbnRhZ2UgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyh0aGlzLnNlc3Npb25TdG9yYWdlLmdldCgnbG9jYWxlJyksIGxvY2FsZVN0cmluZ09wdGlvbnMpICsgJyUnO1xuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgc3R5bGU6IFwicGVyY2VudFwiLFxuICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRGlnaXRzLFxuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4RGlnaXRzLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2lnbklmUG9zaXRpdmUpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNpZ25EaXNwbGF5ID0gXCJhbHdheXNcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlLCBvcHRpb25zKVxuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSlcbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRWYXRQZXJjZW50KHZhdFBlcmNlbnQsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWVyaWNWYXRQZXJjZW50ID0gTnVtYmVyKHZhdFBlcmNlbnQpXG5cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWVyaWNWYXRQZXJjZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4cGVjdHMgVkFUIHBlcmNlbnRhZ2UgcG9pbnRzIHdoZXJlIDI1IG1lYW5zIDI1JS5cbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxWYWx1ZSA9IG51bWVyaWNWYXRQZXJjZW50IC8gMTAwXG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERlY2ltYWxBc1BlcmNlbnRhZ2UoZGVjaW1hbFZhbHVlLCBmYWxzZSwgbWluRGlnaXRzLCBtYXhEaWdpdHMpXG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9ybWF0UGVyY2VudGFnZURpc2NvdW50KGRpc2NvdW50UGVyTWlsbGUsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDEpIHtcbiAgICAgICAgICAgIGlmIChkaXNjb3VudFBlck1pbGxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBudW1lcmljRGlzY291bnQgPSBOdW1iZXIoZGlzY291bnRQZXJNaWxsZSlcblxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpY0Rpc2NvdW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4cGVjdHMgcGVyLW1pbGxlIHdoZXJlIDIwMCBtZWFucyAyMCUuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXREZWNpbWFsQXNQZXJjZW50YWdlKG51bWVyaWNEaXNjb3VudCAvIDEwMDAsIGZhbHNlLCBtaW5EaWdpdHMsIG1heERpZ2l0cylcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDdXN0b21lclR5cGVJY29uQ2xhc3ModHlwZVN0cmluZykge1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImJ1c2luZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJpLWJ1aWxkaW5nc1wiXG4gICAgICAgICAgICAgICAgY2FzZSBcInByaXZhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYmktcGVyc29uXCJcbiAgICAgICAgICAgICAgICBjYXNlIFwicHVibGljXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJpLWJhbmtcIlxuICAgICAgICAgICAgICAgIGNhc2UgXCJlbXBsb3llZVwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJiaS1maWxlLXBlcnNvblwiXG4gICAgICAgICAgICB9XG4gICAgICAgI
2H0sXG5cbiAgICAgICAgZ2V0Q29tcGFueU5hbWVUcmFuc2xhdGlvbkZyb21UeXBlKGN1c3RvbWVyVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChjdXN0b21lclR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYnVzaW5lc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZGRyZXNzZXMuY29tcGFueV9uYW1lXCIpXG4gICAgICAgICAgICAgICAgY2FzZSBcInB1YmxpY1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kdChcImFkbWluLmN1c3RvbWVycy5hdXRob3JpdHlfc2xhc2hfb3JnYW5pc2F0aW9uXCIpXG4gICAgICAgICAgICAgICAgY2FzZSBcImVtcGxveWVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiR0KFwiYWRtaW4uY3VzdG9tZXJzLnR5cGUuZW1wbG95ZWVcIilcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJpdmF0ZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgbnVsbDpcbiAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZG1pbi5jdXN0b21lcnMuY29tcGFueV9zbGFzaF9vcmdhbmlzYXRpb25cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3JtYXRBY2NvdW50KGFjY291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHthY2NvdW50LmFjY291bnRfbnVtYmVyfSAke2FjY291bnQubmFtZX1gXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0UHJpY2VQcm9maWxlSWRlbnRpZmllcihwcmljZVByb2ZpbGUpIHtcbiAgICAgICAgICAgIGlmIChwcmljZVByb2ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJpY2VQcm9maWxlLm5hbWUgPT09IG51bGwgPyB0aGlzLiR0KFwiZ2VuZXJhbC5kZWZhdWx0XCIpIDogcHJpY2VQcm9maWxlLm5hbWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHQoXCJhZG1pbi5wcm9kdWN0cy5ub19hdmFpbGFiaWxpdHlcIilcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRDb21wYW55TmFtZShjb21wYW55LCB3aXRoSWRBbmRBZG1pblBhbmVsSWRlbnRpZmllciA9IGZhbHNlLCB3aXRoVHlwZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgbmFtZVN0cmluZyA9IGNvbXBhbnkuZGlzcGxheV9uYW1lID8/IGNvbXBhbnkudmF0X2VudGl0eT8ubmFtZVxuXG4gICAgICAgICAgICBpZiAod2l0aElkQW5kQWRtaW5QYW5lbElkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFueS5hZG1pbl9wYW5lbF9pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBgWyR7Y29tcGFueS5hZG1pbl9wYW5lbF9pZGVudGlmaWVyfV0gJHtuYW1lU3RyaW5nfWBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuYW1lU3RyaW5nID0gYCR7Y29tcGFueS5pZH06ICR7bmFtZVN0cmluZ31gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3aXRoVHlwZSkge1xuICAgICAgICAgICAgICAgIG5hbWVTdHJpbmcgPSBgJHtuYW1lU3RyaW5nfSAoJHt0aGlzLiR0KFwic3VwZXJhZG1pbi5jb21wYW5pZXMudHlwZXMuXCIgKyBjb21wYW55LnR5cGUubmFtZSl9KWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5hbWVTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRHaWZ0Q2FyZFR5cGVCZWhhdmlvdXJJY29uKGdpZnRDYXJkVHlwZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdpZnRDYXJkVHlwZS5iZWhhdmlvdXIgPT09IFwidmFsdWUtYmFzZWRcIiA/IFwiYmktY2FzaFwiIDogXCJiaS1jdXAtc3RyYXdcIlxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIHRpbWVTdHJpbmcgc2hvdWxkIGJlIGFuIFVUQyB0aW1lIGZyb20gdGhlIHNlcnZlci4gSSBrbm93IHRoaXMgZG9lc24ndCBmb3JtYXQgYW55dGhpbmcsIGJ1dCBJIG5lZWQgaXQgaW5cbiAgICAgICAgLy8gc2V2ZXJhbCBwbGFjZXMsIHNvIEknbGwganVzdCBsZWF2ZSBpdCBoZXJlIGZvciBub3dcbiAgICAgICAgdG9Db21wYW55VGltZSh0aW1lU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9ab25lZFRpbWUobmV3IERhdGUodGltZVN0cmluZyksIHRoaXMuZ2V0VGltZXpvbmUoKSlcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRBbW91bnRGb3JtYXR0ZXIoZm9yY2VEZWNpbWFscyA9IHRydWUsIGN1cnJlbmN5RGlzcGxheSA9IFwiY29kZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlKSA9PiB0aGlzLmZvcm1hdFByaWNlKHZhbHVlLCBjdXJyZW5jeURpc3BsYXksIGZhbHNlLCBmb3JjZURlY2ltYWxzID8gMiA6IDApXG4gICAgICAgIH0sXG5cbiAgICAgICAgLyogdG9TbmFrZUNhc2Uoc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcVysvZywgXCIgXCIpXG4gICAgICAgICAgICAgICAgLnNwbGl0KC8gfFxcQig/PVtBLVpdKS8pXG4gICAgICAgICAgICAgICAgLm1hcCh3b3JkID0+IHdvcmQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAuam9pbignXycpO1xuICAgICAgICB9LCAqL1xuICAgIH0sXG59XG4iXSwibmFtZXMiOlsicmVuZGVyIiwiX3ZtIiwidGhpcyIsIl9jIiwiX3NlbGYiLCJzdGF0aWNDbGFzcyIsImNsYXNzIiwic2hvd0Zvcm0iLCJfZSIsImF0dHJzIiwiX3YiLCJfcyIsIiR0IiwiX2wiLCJnaWZ0Q2FyZFR5cGVzIiwiZ2lmdENhcmRUeXBlIiwia2V5IiwidXVpZCIsImdldEdpZnRDYXJkVHlwZUJlaGF2aW91ckljb24iLCJuYW1lIiwiZG9tUHJvcHMiLCJwcmljZSIsImZvcm1hdFByaWNlIiwiZm9ybWF0QWNjb3VudCIsImFjY291bnQiLCJkZWZhdWx0X3ZhbGlkaXR5IiwiZXhwaXJlZCIsInZhbGlkIiwiYWNjZW50IiwiY2F0ZWdvcnkiLCJzdGF0aXN0aWNzIiwiY291bnQiLCJvcmlnaW5hbF9zdW0iLCJjdXJyZW50X2JhbGFuY2UiLCIkc3RvcmUiLCJnZXR0ZXJzIiwiY29tcGFueUFkZG9uc0xpbWl0QWxsb3dzIiwib24iLCIkZXZlbnQiLCJvcGVuVHlwZUZvckVkaXRpbmciLCJpc0NyZWF0aW5nIiwiZ29Ub1N1YnZpZXciLCJ0b0xvd2VyQ2FzZSIsInJlc291cmNlRWRpdENyZWF0ZUhlYWRlciIsImlzRWRpdGluZyIsImNvbXBhbnlJc0VudGVycHJpc2UiLCJjb21wYW55SXNTdWJjb21wYW55IiwicHJldmVudERlZmF1bHQiLCJzdWJtaXRGb3JtIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJkaXJlY3RpdmVzIiwicmF3TmFtZSIsInZhbHVlIiwiZm9ybURhdGEiLCJiZWhhdmlvdXIiLCJleHByZXNzaW9uIiwiX3EiLCJyZXNldFByaWNlIiwiJHNldCIsInRhcmdldCIsImNvbXBvc2luZyIsIm1vZGVsIiwiY2FsbGJhY2siLCIkJHYiLCJhY2NvdW50X3V1aWQiLCIkJHNlbGVjdGVkVmFsIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJmaWx0ZXIiLCJjYWxsIiwib3B0aW9ucyIsIm8iLCJzZWxlY3RlZCIsIm1hcCIsInZhbCIsIl92YWx1ZSIsIm11bHRpcGxlIiwicmV2ZW51ZUFjY291bnRzIiwiYWRkTGlua1N5bWJvbElmU2hhcmVkIiwiZHVyYXRpb24iLCJyZXNvdXJjZUVkaXRDcmVhdGVTdWJtaXRUZX
2h0IiwiaXNQcm9jZXNzaW5nU3VibWl0Rm9ybVJlcXVlc3QiLCJzdGF0aWNSZW5kZXJGbnMiLCJjb21wb25lbnRzIiwiQWRtaW5TcGlubmVyQnV0dG9uIiwiVnVlTnVtZXJpYyIsIm1peGlucyIsImZvcm1hdHRlciIsIkFkbWluRm9ybVBhZ2VIZWxwZXJzIiwiZGF0YSIsImNvbXB1dGVkIiwic3RhdGUiLCJyZXNvdXJjZXMiLCIkcm91dGUiLCJtZXRob2RzIiwiZ2V0R2lmdENhcmRUeXBlcyIsInBhcmFtcyIsImluY2x1ZGVfc2hhcmVkIiwiaW5jbHVkZV9zdGF0aXN0aWNzIiwiYXhpb3MiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJyb3V0ZSIsImF4aW9zUmVxdWVzdCIsInBvc3QiLCJwdXQiLCJwcmVwYXJlZEZvcm1EYXRhIiwiY2F0Y2giLCJlcnJvciIsImNvbW1pdCIsIiRyb3V0ZXIiLCJwdXNoIiwiY3JlYXRlZCIsImRpc3BhdGNoIiwiZ2V0SW5jbHVkZVNoYXJlZFZhbHVlRm9yRm9ybVBhZ2UiLCJsZW5ndGgiLCJtb3VudGVkIiwiY29tcG9uZW50IiwiaXNOYXZpZ2F0aW9uRmFpbHVyZSIsIk5hdmlnYXRpb25GYWlsdXJlVHlwZSIsIlZ1ZVJvdXRlciIsInVwZGF0ZVF1ZXJ5UGFyYW1zSWZDaGFuZ2VkIiwibmV3UXVlcnkiLCJKU09OIiwic3RyaW5naWZ5IiwicXVlcnkiLCJyZXBsYWNlIiwiY2FuY2VsbGVkIiwiZHVwbGljYXRlZCIsImxvY2FsZSIsImdldExvY2FsZSIsInJlc29sdmVGb3JtYXR0ZXJDb250ZXh0IiwiY3VycmVudENvbXBvbmVudCIsImZvcm1hdHRlckNvbnRleHQiLCIkcGFyZW50IiwiY29tcGFueSIsImdldFRpbWV6b25lIiwidGltZXpvbmUiLCJmb3JtYXREYXRlVGltZUZyb21EYXRlIiwiZGF0ZSIsIndlZWtkYXlGb3JtYXRPckZhbHNlIiwieWVhciIsIm1vbnRoIiwiZGF5IiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsInRpbWVab25lIiwid2Vla2RheSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImZvcm1hdERhdGVUaW1lIiwiZGF0ZVRpbWUiLCJvbWl0RGF0ZUlmU2FtZURhdGUiLCJEYXRlIiwicmVmZXJlbmNlRGF0ZSIsImdldERhdGUiLCJ0b0xvY2FsZVRpbWVTdHJpbmciLCJmb3JtYXREYXRlVGltZVdpdGhvdXRTZWNvbmRzIiwiZm9ybWF0RGF0ZVRpbWVXaXRoWWVhciIsImdldE1vbnRoIiwiZ2V0RnVsbFllYXIiLCJnZXRIb3VycyIsIlN0cmluZyIsImdldE1pbnV0ZXMiLCJwYWRTdGFydCIsImZvcm1hdExlc3NQcmVjaXNlRGF0ZVRpbWUiLCJ0b0NvbXBhbnlUaW1lIiwiZm9ybWF0RGF0ZSIsIm92ZXJ3cml0ZU9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXREYXRlRnVsbExlbmd0aCIsImZvcm1hdEJvb2tpbmdEYXRlIiwiZGF0ZVN0cmluZyIsImZvcm1hdFRpbWUiLCJzZWNvbmRzIiwiZm9ybWF0VGltZUtpdGNoZW4iLCJnZXRDdXJyZW5jeSIsImN1cnJlbmN5IiwiYW1vdW50IiwiY3VycmVuY3lEaXNwbGF5IiwicGx1c1NpZ25Gb3JQb3NpdGl2ZUFtb3VudHMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJwcmVmaXgiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJzdHlsZSIsIk1hdGgiLCJhYnMiLCJ0b0xvY2FsZVN0cmluZyIsImNhcGl0YWxpc2VGaXJzdExldHRlciIsInN0ciIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJ1bml0QWJicnYiLCJsb25nRm9ybSIsInRyYW5zbGF0ZVBjcyIsImFiYnJldmlhdGlvbnMiLCJncmFtIiwia2lsb2dyYW0iLCJjZW50aW1ldGVyIiwibWV0ZXIiLCJjZW50aWxpdGVyIiwibGl0ZXIiLCJkZWNhZ3JhbSIsIm51bGwiLCJhYmJydiIsImNhcGl0YWxpc2VBbmRDb21tYVNlcGFyYXRlV2Vla2RheXMiLCJ3ZWVrZGF5cyIsImFsbERheXNFeGNlcHRUaHJlc2hvbGQiLCJleGNlcHQiLCJkIiwiaW5jbHVkZXMiLCJ3IiwiaW5kZXgiLCJqb2luIiwicmVzb3VyY2UiLCJza2lwSHRtbEl0YWxpY3MiLCJ0ZXh0IiwibmFtZVN0cmluZyIsInN1ZmZpeCIsIiR0ZSIsInJlc291cmNlRGVsZXRlVGV4dCIsImdldEFsbFJlc291cmNlTmFtZVRleHQiLCJyZXNvdXJjZU5hbWUiLCJwZW5kaW5nSW52aXRhdGlvblN0YXR1cyIsImludml0YXRpb24iLCJhY2NlcHRlZF9hdCIsInJlamVjdGVkX2F0IiwiZm9ybWF0UXVhbnRpdHkiLCJxdWFudGl0eSIsInVuaXQiLCJnZXRVbml0U3VmZml4IiwiZm9ybWF0UXVhbnRpdHlPZk9yZGVyTGluZSIsIm9yZGVyTGluZSIsInF1YW50aXR5UHJvcGVydHkiLCJzZWxsYWJsZSIsIm9yZG
2VyTGluZU9yaWdpbmFsVG90YWwiLCJmb3JtYXR0ZWQiLCJvcmlnaW5hbFRvdGFsIiwib3JkZXJMaW5lQ3VycmVudFRvdGFsIiwiY3VycmVudFRvdGFsIiwibGluZURpc2NvdW50UGVyY2VudGFnZSIsImxpbmVfZGlzY291bnQiLCJwZXJjZW50YWdlIiwicm91bmQiLCJub1R5cGUiLCJ0eXBlIiwiZ2V0TmFtZU9mV2Vla2RheUZyb21JbnRlZ2VyIiwibnVtYmVyIiwibG93ZXJDYXNlIiwiZm9ybWF0UHJvZHVjdEZvckRyb3Bkb3duIiwicCIsInBsdSIsIm1vZGVsV2l0aENvbXBhbnlEYXRhIiwiZm9ybWF0Q2FzaGllckZ1bGxOYW1lIiwiY2FzaGllciIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJmb3JtYXRQZXJjZW50YWdlIiwib2ZWYWx1ZSIsInNpZ25JZlBvc2l0aXZlIiwibWluRGlnaXRzIiwibWF4RGlnaXRzIiwiZm9ybWF0RGVjaW1hbEFzUGVyY2VudGFnZSIsInNpZ25EaXNwbGF5IiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImZvcm1hdFZhdFBlcmNlbnQiLCJ2YXRQZXJjZW50IiwibnVtZXJpY1ZhdFBlcmNlbnQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImRlY2ltYWxWYWx1ZSIsImZvcm1hdFBlcmNlbnRhZ2VEaXNjb3VudCIsImRpc2NvdW50UGVyTWlsbGUiLCJudW1lcmljRGlzY291bnQiLCJnZXRDdXN0b21lclR5cGVJY29uQ2xhc3MiLCJ0eXBlU3RyaW5nIiwiZ2V0Q29tcGFueU5hbWVUcmFuc2xhdGlvbkZyb21UeXBlIiwiY3VzdG9tZXJUeXBlIiwidW5kZWZpbmVkIiwiYWNjb3VudF9udW1iZXIiLCJnZXRQcmljZVByb2ZpbGVJZGVudGlmaWVyIiwicHJpY2VQcm9maWxlIiwiZ2V0Q29tcGFueU5hbWUiLCJ3aXRoSWRBbmRBZG1pblBhbmVsSWRlbnRpZmllciIsIndpdGhUeXBlIiwiZGlzcGxheV9uYW1lIiwidmF0X2VudGl0eSIsImFkbWluX3BhbmVsX2lkZW50aWZpZXIiLCJpZCIsInRpbWVTdHJpbmciLCJ0b1pvbmVkVGltZSIsImdldEFtb3VudEZvcm1hdHRlciIsImZvcmNlRGVjaW1hbHMiXSwic291cmNlUm9vdCI6IiJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.