{"version":3,"sources":["wwwroot/js/membership/node_modules/browser-pack/_prelude.js","wwwroot/js/membership/Scripts/pages/membership/yourDetails.js","wwwroot/js/membership/Scripts/src/register.js","wwwroot/js/membership/Scripts/src/validation.js","wwwroot/js/membership/node_modules/@babel/runtime/helpers/classCallCheck.js","wwwroot/js/membership/node_modules/@babel/runtime/helpers/createClass.js","wwwroot/js/membership/node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"names":[],"mappings":"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","file":"yourDetails.min.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i {\n registerForm.init(); // TODO: Pass any config required here\n\n});\n\n","import {Validation} from \"./validation\";\n\nexport const registerForm = function () {\n\n let container, stepper, form, submitButton, recaptchaInput;\n let validations =[];\n\n //#region Init\n\n const initCleave = () => {\n\n const dobInput = document.querySelector(\"#DateOfBirth\");\n new Cleave(dobInput, {\n date: true,\n datePattern: ['d', 'm', 'Y'],\n delimiter: '/'\n });\n }\n\n const initStepper = () => {\n container = document.querySelector(\"#registration_stepper\");\n form = container.closest(\"form\");\n submitButton = container.querySelector(`[data-kt-stepper-action=\"submit\"]`)\n stepper = new KTStepper(container);\n recaptchaInput = form.querySelector(\"[data-site-key]\");\n\n container.querySelectorAll(`[data-kt-stepper-action=\"next\"]`).forEach(el => {\n el.addEventListener(\"click\", e => {\n e.preventDefault();\n const currentIndex = stepper.getCurrentStepIndex() - 1;\n const validator = validations[currentIndex]; // get validator for current step\n if (validator) {\n validator.validate().then(function (status) {\n //stepper.goNext();\n if (status === \"Valid\") {\n stepper.goNext();\n KTUtil.scrollTo(container, 80);\n } else {\n KTUtil.scrollTo(container, 80);\n }\n });\n } else {\n stepper.goNext();\n }\n });\n });\n\n container.querySelectorAll(\"[data-kt-stepper-action=\\\"previous\\\"]\").forEach(el => {\n el.addEventListener(\"click\", e => {\n e.preventDefault();\n\n stepper.goPrevious();\n });\n });\n\n submitButton.addEventListener(\"click\", e => {\n\n const currentIndex = stepper.getCurrentStepIndex() - 1;\n const validator = validations[currentIndex]; // get validator for current step\n if (validator) {\n if(recaptchaInput){\n Validation.validateFormWithReCaptcha(e, validator, submitButton);\n } else {\n Validation.validateForm(e, validator, submitButton);\n }\n } else {\n Validation.disableButton(submitButton);\n form.submit();\n }\n });\n\n const termsInputs = container.querySelectorAll(\"[data-terms]\");\n const validateTerms = () => {\n let isValid = true;\n termsInputs.forEach(input => {\n if (!input.checked) {\n isValid = false;\n }\n });\n\n if (isValid) {\n submitButton.classList.remove(\"disabled\");\n submitButton.removeAttribute(\"disabled\");\n } else {\n submitButton.classList.add(\"disabled\");\n submitButton.setAttribute(\"disabled\", \"disabled\");\n }\n }\n\n termsInputs.forEach(el => {\n el.addEventListener(\"change\", () => {\n validateTerms();\n });\n });\n\n validateTerms();\n }\n\n const initValidation = () => {\n const contentContainers= container.querySelectorAll(\"[data-kt-stepper-element='content']\");\n contentContainers.forEach(el => {\n const section = el.dataset.section;\n\n switch(section) {\n case \"account\":\n initAccountValidation(el);\n break;\n case \"personal\":\n initPersonalValidation(el);\n break;\n case \"profile\":\n initProfileValidation(el);\n break;\n case \"terms\":\n initTermsValidation(el);\n break;\n }\n });\n };\n\n //#endregion Init\n\n //#region Validation\n\n const initAccountValidation = section => {\n validations.push(FormValidation.formValidation(form,\n {\n fields: {\n \"Email\": {\n validators: {\n notEmpty: {\n message: 'Your email address is required'\n },\n emailAddress: {\n message: \"Please enter a valid email address\"\n },\n remote: {\n message: \"\",\n method: \"POST\",\n url: \"/users\",\n name: \"email\",\n data: {\n addProfile: document.querySelector(\"#AddProfile\").value === \"true\"\n }\n }\n }\n },\n \"ConfirmEmail\": {\n validators: {\n identical: {\n message: 'The email and confirm do not match.',\n compare: () => {\n return form.querySelector('#Email').value;\n }\n }\n }\n },\n \"Password\": {\n validators: {\n notEmpty: {\n message: 'Please enter a password'\n },\n stringLength: {\n min: 6,\n message: \"Your password needs to be at least 6 characters long\"\n },\n regexp: {\n regexp: \"^(?=.*\\\\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\\\\s).{6,99}$\",\n message: \"Your password must be a minimum of 6 characters and a combination of upper case, lower case and numbers.\"\n }\n }\n },\n \"ConfirmPassword\": {\n validators: {\n identical: {\n message: 'The password and confirm do not match.',\n compare: () => form.querySelector('#Password').value\n }\n }\n }\n },\n plugins: {\n trigger: new FormValidation.plugins.Trigger(),\n bootstrap: new FormValidation.plugins.Bootstrap5({\n rowSelector: '.fv-row',\n eleInvalidClass: 'bg-light-danger is-invalid',\n eleValidClass: ''\n })\n }\n }\n ))\n };\n\n const initPersonalValidation = section => {\n\n const validator = FormValidation.formValidation(form,\n {\n fields: {\n \"FirstName\": {\n validators: {\n notEmpty: {\n message: 'Please enter your first name'\n }\n }\n },\n \"LastName\": {\n validators: {\n notEmpty: {\n message: 'Please enter your last name'\n }\n }\n },\n },\n plugins: {\n trigger: new FormValidation.plugins.Trigger(),\n bootstrap: new FormValidation.plugins.Bootstrap5({\n rowSelector: '.fv-row',\n eleInvalidClass: 'bg-light-danger is-invalid',\n eleValidClass: ''\n })\n }\n });\n\n if (section.querySelector(\"#Email\")) {\n validator.addField(\"Email\", {\n validators: {\n notEmpty: {\n message: 'An email address is required'\n },\n emailAddress: {\n message: \"Please enter a valid email address\"\n },\n }\n });\n }\n\n if (section.querySelector(\"#ConfirmEmail\")) {\n validator.addField(\"ConfirmEmail\", {\n validators: {\n identical: {\n message: 'The email and confirm do not match.',\n compare: () => {\n return form.querySelector('#Email').value;\n }\n }\n }\n });\n }\n\n if (section.querySelector(\"#DateOfBirth\")) {\n validator.addField(\"DateOfBirth\", {\n validators: {\n notEmpty: {\n message: 'Please enter your date of birth'\n },\n date: {\n format: \"DD/MM/YYYY\",\n separator: \"/\",\n message: \"Please enter your date of birth in dd/mm/yyyy format\"\n }\n }\n });\n }\n\n validations.push(validator);\n };\n\n const initProfileValidation = section => {\n const inputs = section.querySelectorAll(\"[data-fv-not-empty=\\\"true\\\"]\");\n const validator = FormValidation.formValidation(form,\n {\n plugins: {\n trigger: new FormValidation.plugins.Trigger(),\n bootstrap: new FormValidation.plugins.Bootstrap5({\n rowSelector: '.fv-row',\n eleInvalidClass: 'bg-light-danger is-invalid',\n eleValidClass: ''\n })\n }\n });\n\n inputs.forEach(input => {\n validator.addField(input.name, {\n validators: {\n notEmpty: {\n message: input.getAttribute(\"data-fv-not-empty___message\")\n }\n }\n });\n });\n\n validations.push(validator);\n }\n\n const initTermsValidation = section => {\n const inputs = section.querySelectorAll(\"[data-fv-not-empty=\\\"true\\\"]\");\n const validator = FormValidation.formValidation(form,\n {\n plugins: {\n trigger: new FormValidation.plugins.Trigger(),\n bootstrap: new FormValidation.plugins.Bootstrap5({\n rowSelector: '.fv-row',\n eleInvalidClass: 'bg-light-danger is-invalid',\n eleValidClass: ''\n })\n }\n });\n\n inputs.forEach(input => {\n validator.addField(input.name, {\n validators: {\n notEmpty: {\n message: input.getAttribute(\"data-fv-not-empty___message\")\n }\n }\n });\n });\n\n const discountCodeInput = section.querySelector(\"#DiscountCode\");\n\n if(discountCodeInput) {\n validator.addField(discountCodeInput.name, {\n validators: {\n remote: {\n message: 'Please enter a valid code.',\n method: 'POST',\n url: \"/discountcode/validatemembership\",\n name: \"discountCode\",\n data: {\n membershipPackageId: document.querySelector(\"#MembershipPackageId\").value,\n memberId: document.querySelector(\"#MemberId\").value\n }\n }\n }\n });\n }\n\n validations.push(validator);\n }\n\n //#endregion Validation\n\n return {\n init: function () {\n initStepper();\n initValidation();\n initCleave();\n }\n }\n}();\n\n","export class Validation{\n static getDefaultValidator(form) {\n\n return FormValidation.formValidation(form, {\n plugins: {\n trigger: new FormValidation.plugins.Trigger(),\n bootstrap: new FormValidation.plugins.Bootstrap5({\n rowSelector: '.fv-row',\n eleInvalidClass: 'bg-light-danger is-invalid',\n eleValidClass: ''\n }),\n declarative: new FormValidation.plugins.Declarative({html5Input: true})\n }\n });\n }\n\n static disableButton(button) {\n button?.setAttribute(\"disabled\", \"disabled\");\n button?.setAttribute(\"data-kt-indicator\", \"on\");\n }\n\n static enableButton(button) {\n button?.removeAttribute(\"disabled\");\n button?.removeAttribute(\"data-kt-indicator\");\n }\n\n static validateForm(e, validator, submitter) {\n e.preventDefault();\n\n const form = validator.form;\n if (validator) {\n validator.validate().then(status => {\n if (status === 'Valid') {\n Validation.disableButton(submitter || e.submitter);\n form.submit();\n }\n });\n }\n }\n\n static validateFormWithReCaptcha(e, validator, submitter) {\n e.preventDefault();\n\n const form = validator.form;\n if (validator) {\n validator.validate().then(function (status) {\n if (status === 'Valid') {\n\n Validation.disableButton(submitter || e.submitter);\n\n const recaptchaInput = form.querySelector(\"#RecaptchaResponse\");\n const siteKey = recaptchaInput.dataset.siteKey;\n\n grecaptcha.ready(function () {\n const action = recaptchaInput.dataset.action;\n grecaptcha.execute(siteKey, {action: action}).then(function (token) {\n recaptchaInput.value = token;\n\n form.submit();\n });\n });\n }\n });\n }\n }\n\n static showFormError(errorText, errorTitle) {\n const errorContainer = document.querySelector(\"#error-alert\");\n if(!errorContainer)\n return;\n\n errorContainer.style.display = \"flex\";\n errorContainer.querySelector(\".alert-text\").innerHTML = errorText;\n }\n\n static hideFormError() {\n const errorContainer = document.querySelector(\"#error-alert\");\n if (!errorContainer)\n return;\n\n errorContainer.style.display = \"none\";\n }\n}\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJTY3JpcHRzL3BhZ2VzL21lbWJlcnNoaXAveW91ckRldGFpbHMuanMiLCJTY3JpcHRzL3NyYy9yZWdpc3Rlci5qcyIsIlNjcmlwdHMvc3JjL3ZhbGlkYXRpb24uanMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIm5vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7QUNBQSxJQUFBLFNBQUEsR0FBQSxPQUFBO0FBRUEsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLFlBQU07RUFDaEQsc0JBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFekIsQ0FBQyxDQUFDOzs7Ozs7Ozs7QUNMRixJQUFBLFdBQUEsR0FBQSxPQUFBO0FBRU8sSUFBTSxZQUFZLEdBQUEsT0FBQSxDQUFBLFlBQUEsR0FBRyxZQUFZO0VBRXBDLElBQUksU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGNBQWM7RUFDMUQsSUFBSSxXQUFXLEdBQUUsRUFBRTs7RUFFbkI7O0VBRUEsSUFBTSxVQUFVLEdBQUcsU0FBYixVQUFVLENBQUEsRUFBUztJQUVyQixJQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztJQUN2RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7TUFDakIsSUFBSSxFQUFFLElBQUk7TUFDVixXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztNQUM1QixTQUFTLEVBQUU7SUFDZixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsSUFB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LENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUztJQUNyRTtFQUFDO0lBQUEsR0FBQTtJQUFBLEtBQUEsRUFFRCxTQUFPLGFBQWEsQ0FBQSxFQUFHO01BQ25CLElBQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO01BQzdELElBQUksQ0FBQyxjQUFjLEVBQ2Y7TUFFSixjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNO0lBQ3pDO0VBQUM7QUFBQTs7O0FDakZMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiaW1wb3J0IHtyZWdpc3RlckZvcm19IGZyb20gXCIuLi8uLi9zcmMvcmVnaXN0ZXJcIjtcblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgKCkgPT4ge1xuICAgIHJlZ2lzdGVyRm9ybS5pbml0KCk7IC8vIFRPRE86IFBhc3MgYW55IGNvbmZpZyByZXF1aXJlZCBoZXJlXG5cbn0pO1xuXG4iLCJpbXBvcnQge1ZhbGlkYXRpb259IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyRm9ybSA9IGZ1bmN0aW9uICgpIHtcblxuICAgIGxldCBjb250YWluZXIsIHN0ZXBwZXIsIGZvcm0sIHN1Ym1pdEJ1dHRvbiwgcmVjYXB0Y2hhSW5wdXQ7XG4gICAgbGV0IHZhbGlkYXRpb25zID1bXTtcblxuICAgIC8vI3JlZ2lvbiBJbml0XG5cbiAgICBjb25zdCBpbml0Q2xlYXZlID0gKCkgPT4ge1xuXG4gICAgICAgIGNvbnN0IGRvYklucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNEYXRlT2ZCaXJ0aFwiKTtcbiAgICAgICAgbmV3IENsZWF2ZShkb2JJbnB1dCwge1xuICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRhdGVQYXR0ZXJuOiBbJ2QnLCAnbScsICdZJ10sXG4gICAgICAgICAgICBkZWxpbWl0ZXI6ICcvJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0U3RlcHBlciA9ICgpID0+IHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNyZWdpc3RyYXRpb25fc3RlcHBlclwiKTtcbiAgICAgICAgZm9ybSA9IGNvbnRhaW5lci5jbG9zZXN0KFwiZm9ybVwiKTtcbiAgICAgICAgc3VibWl0QnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWt0LXN0ZXBwZXItYWN0aW9uPVwic3VibWl0XCJdYClcbiAgICAgICAgc3RlcHBlciA9IG5ldyBLVFN0ZXBwZXIoY29udGFpbmVyKTtcbiAgICAgICAgcmVjYXB0Y2hhSW5wdXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1zaXRlLWtleV1cIik7XG5cbiAgICAgICAgY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWt0LXN0ZXBwZXItYWN0aW9uPVwibmV4dFwiXWApLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGUgPT4ge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBzdGVwcGVyLmdldEN1cnJlbnRTdGVwSW5kZXgoKSAtIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdmFsaWRhdGlvbnNbY3VycmVudEluZGV4XTsgLy8gZ2V0IHZhbGlkYXRvciBmb3IgY3VycmVudCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3IudmFsaWRhdGUoKS50aGVuKGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc3RlcHBlci5nb05leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IFwiVmFsaWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBwZXIuZ29OZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgS1RVdGlsLnNjcm9sbFRvKGNvbnRhaW5lciwgODApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVFV0aWwuc2Nyb2xsVG8oY29udGFpbmVyLCA4MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXBwZXIuZ29OZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEta3Qtc3RlcHBlci1hY3Rpb249XFxcInByZXZpb3VzXFxcIl1cIikuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZSA9PiB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgc3RlcHBlci5nb1ByZXZpb3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3VibWl0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBlID0+IHtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gc3RlcHBlci5nZXRDdXJyZW50U3RlcEluZGV4KCkgLSAxO1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdmFsaWRhdGlvbnNbY3VycmVudEluZGV4XTsgLy8gZ2V0IHZhbGlkYXRvciBmb3IgY3VycmVudCBzdGVwXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICAgICAgICAgICAgaWYocmVjYXB0Y2hhSW5wdXQpe1xuICAgICAgICAgICAgICAgICAgICBWYWxpZGF0aW9uLnZhbGlkYXRlRm9ybVdpdGhSZUNhcHRjaGEoZSwgdmFsaWRhdG9yLCBzdWJtaXRCdXR0b24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYXRpb24udmFsaWRhdGVGb3JtKGUsIHZhbGlkYXRvciwgc3VibWl0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFZhbGlkYXRpb24uZGlzYWJsZUJ1dHRvbihzdWJtaXRCdXR0b24pO1xuICAgICAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRlcm1zSW5wdXRzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10ZXJtc11cIik7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlVGVybXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB0ZXJtc0lucHV0cy5mb3JFYWNoKGlucHV0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdEJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uLnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b24uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgICAgIHN1Ym1pdEJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGVybXNJbnB1dHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVRlcm1zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFsaWRhdGVUZXJtcygpO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50Q29udGFpbmVycz0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1rdC1zdGVwcGVyLWVsZW1lbnQ9J2NvbnRlbnQnXVwiKTtcbiAgICAgICAgY29udGVudENvbnRhaW5lcnMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gZWwuZGF0YXNldC5zZWN0aW9uO1xuXG4gICAgICAgICAgICBzd2l0Y2goc2VjdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhY2NvdW50XCI6XG4gICAgICAgICAgICAgICAgICAgIGluaXRBY2NvdW50VmFsaWRhdGlvbihlbCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJwZXJzb25hbFwiOlxuICAgICAgICAgICAgICAgICAgICBpbml0UGVyc29uYWxWYWxpZGF0aW9uKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByb2ZpbGVcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5pdFByb2ZpbGVWYWxpZGF0aW9uKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInRlcm1zXCI6XG4gICAgICAgICAgICAgICAgICAgIGluaXRUZXJtc1ZhbGlkYXRpb24oZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vI2VuZHJlZ2lvbiBJbml0XG5cbiAgICAvLyNyZWdpb24gVmFsaWRhdGlvblxuXG4gICAgY29uc3QgaW5pdEFjY291bnRWYWxpZGF0aW9uID0gc2VjdGlvbiA9PiB7XG4gICAgICAgIHZhbGlkYXRpb25zLnB1c2goRm9ybVZhbGlkYXRpb24uZm9ybVZhbGlkYXRpb24oZm9ybSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJFbWFpbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90RW1wdHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1lvdXIgZW1haWwgYWRkcmVzcyBpcyByZXF1aXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvdXNlcnNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcm9maWxlOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI0FkZFByb2ZpbGVcIikudmFsdWUgPT09IFwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiQ29uZmlybUVtYWlsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGljYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1RoZSBlbWFpbCBhbmQgY29uZmlybSBkbyBub3QgbWF0Y2guJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm0ucXVlcnlTZWxlY3RvcignI0VtYWlsJykudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiUGFzc3dvcmRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEVtcHR5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSBwYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0xlbmd0aDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW46IDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiWW91ciBwYXNzd29yZCBuZWVkcyB0byBiZSBhdCBsZWFzdCA2IGNoYXJhY3RlcnMgbG9uZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleHA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhwOiBcIl4oPz0uKlxcXFxkKSg/PS4qW2Etel0pKD89LipbQS1aXSkoPyEuKlxcXFxzKS57Niw5OX0kXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiWW91ciBwYXNzd29yZCBtdXN0IGJlIGEgbWluaW11bSBvZiA2IGNoYXJhY3RlcnMgYW5kIGEgY29tYmluYXRpb24gb2YgdXBwZXIgY2FzZSwgbG93ZXIgY2FzZSBhbmQgbnVtYmVycy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXCJDb25maXJtUGFzc3dvcmRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhlIHBhc3N3b3JkIGFuZCBjb25maXJtIGRvIG5vdCBtYXRjaC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlOiAoKSA9PiBmb3JtLnF1ZXJ5U2VsZWN0b3IoJyNQYXNzd29yZCcpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6IG5ldyBGb3JtVmFsaWRhdGlvbi5wbHVnaW5zLlRyaWdnZXIoKSxcbiAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwOiBuZXcgRm9ybVZhbGlkYXRpb24ucGx1Z2lucy5Cb290c3RyYXA1KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd1NlbGVjdG9yOiAnLmZ2LXJvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVJbnZhbGlkQ2xhc3M6ICdiZy1saWdodC1kYW5nZXIgaXMtaW52YWxpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVWYWxpZENsYXNzOiAnJ1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKSlcbiAgICB9O1xuXG4gICAgY29uc3QgaW5pdFBlcnNvbmFsVmFsaWRhdGlvbiA9IHNlY3Rpb24gPT4ge1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IEZvcm1WYWxpZGF0aW9uLmZvcm1WYWxpZGF0aW9uKGZvcm0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiRmlyc3ROYW1lXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RFbXB0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnUGxlYXNlIGVudGVyIHlvdXIgZmlyc3QgbmFtZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwiTGFzdE5hbWVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdEVtcHR5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgeW91ciBsYXN0IG5hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGx1Z2luczoge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBuZXcgRm9ybVZhbGlkYXRpb24ucGx1Z2lucy5UcmlnZ2VyKCksXG4gICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcDogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuQm9vdHN0cmFwNSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dTZWxlY3RvcjogJy5mdi1yb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlSW52YWxpZENsYXNzOiAnYmctbGlnaHQtZGFuZ2VyIGlzLWludmFsaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlVmFsaWRDbGFzczogJydcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2VjdGlvbi5xdWVyeVNlbGVjdG9yKFwiI0VtYWlsXCIpKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3IuYWRkRmllbGQoXCJFbWFpbFwiLCB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICBub3RFbXB0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0FuIGVtYWlsIGFkZHJlc3MgaXMgcmVxdWlyZWQnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoXCIjQ29uZmlybUVtYWlsXCIpKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3IuYWRkRmllbGQoXCJDb25maXJtRW1haWxcIiwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnVGhlIGVtYWlsIGFuZCBjb25maXJtIGRvIG5vdCBtYXRjaC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtLnF1ZXJ5U2VsZWN0b3IoJyNFbWFpbCcpLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VjdGlvbi5xdWVyeVNlbGVjdG9yKFwiI0RhdGVPZkJpcnRoXCIpKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3IuYWRkRmllbGQoXCJEYXRlT2ZCaXJ0aFwiLCB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICBub3RFbXB0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1BsZWFzZSBlbnRlciB5b3VyIGRhdGUgb2YgYmlydGgnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogXCJERC9NTS9ZWVlZXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3I6IFwiL1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgeW91ciBkYXRlIG9mIGJpcnRoIGluIGRkL21tL3l5eXkgZm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGlvbnMucHVzaCh2YWxpZGF0b3IpO1xuICAgIH07XG5cbiAgICBjb25zdCBpbml0UHJvZmlsZVZhbGlkYXRpb24gPSBzZWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXRzID0gc2VjdGlvbi5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtZnYtbm90LWVtcHR5PVxcXCJ0cnVlXFxcIl1cIik7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvciA9IEZvcm1WYWxpZGF0aW9uLmZvcm1WYWxpZGF0aW9uKGZvcm0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGx1Z2luczoge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBuZXcgRm9ybVZhbGlkYXRpb24ucGx1Z2lucy5UcmlnZ2VyKCksXG4gICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcDogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuQm9vdHN0cmFwNSh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dTZWxlY3RvcjogJy5mdi1yb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlSW52YWxpZENsYXNzOiAnYmctbGlnaHQtZGFuZ2VyIGlzLWludmFsaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlVmFsaWRDbGFzczogJydcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBpbnB1dHMuZm9yRWFjaChpbnB1dCA9PiB7XG4gICAgICAgICAgICB2YWxpZGF0b3IuYWRkRmllbGQoaW5wdXQubmFtZSwge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgbm90RW1wdHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGlucHV0LmdldEF0dHJpYnV0ZShcImRhdGEtZnYtbm90LWVtcHR5X19fbWVzc2FnZVwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHZhbGlkYXRpb25zLnB1c2godmFsaWRhdG9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0VGVybXNWYWxpZGF0aW9uID0gc2VjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHNlY3Rpb24ucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWZ2LW5vdC1lbXB0eT1cXFwidHJ1ZVxcXCJdXCIpO1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBGb3JtVmFsaWRhdGlvbi5mb3JtVmFsaWRhdGlvbihmb3JtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuVHJpZ2dlcigpLFxuICAgICAgICAgICAgICAgICAgICBib290c3RyYXA6IG5ldyBGb3JtVmFsaWRhdGlvbi5wbHVnaW5zLkJvb3RzdHJhcDUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93U2VsZWN0b3I6ICcuZnYtcm93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZUludmFsaWRDbGFzczogJ2JnLWxpZ2h0LWRhbmdlciBpcy1pbnZhbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZVZhbGlkQ2xhc3M6ICcnXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaW5wdXRzLmZvckVhY2goaW5wdXQgPT4ge1xuICAgICAgICAgICAgdmFsaWRhdG9yLmFkZEZpZWxkKGlucHV0Lm5hbWUsIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgIG5vdEVtcHR5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBpbnB1dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWZ2LW5vdC1lbXB0eV9fX21lc3NhZ2VcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkaXNjb3VudENvZGVJbnB1dCA9IHNlY3Rpb24ucXVlcnlTZWxlY3RvcihcIiNEaXNjb3VudENvZGVcIik7XG5cbiAgICAgICAgaWYoZGlzY291bnRDb2RlSW5wdXQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvci5hZGRGaWVsZChkaXNjb3VudENvZGVJbnB1dC5uYW1lLCB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczoge1xuICAgICAgICAgICAgICAgICAgICByZW1vdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBjb2RlLicsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCIvZGlzY291bnRjb2RlL3ZhbGlkYXRlbWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJkaXNjb3VudENvZGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJzaGlwUGFja2FnZUlkOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI01lbWJlcnNoaXBQYWNrYWdlSWRcIikudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVySWQ6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjTWVtYmVySWRcIikudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGlvbnMucHVzaCh2YWxpZGF0b3IpO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvbiBWYWxpZGF0aW9uXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBpbml0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpbml0U3RlcHBlcigpO1xuICAgICAgICAgICAgaW5pdFZhbGlkYXRpb24oKTtcbiAgICAgICAgICAgIGluaXRDbGVhdmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn0oKTtcblxuIiwiZXhwb3J0IGNsYXNzIFZhbGlkYXRpb257XG4gICAgc3RhdGljIGdldERlZmF1bHRWYWxpZGF0b3IoZm9ybSkge1xuXG4gICAgICAgIHJldHVybiBGb3JtVmFsaWRhdGlvbi5mb3JtVmFsaWRhdGlvbihmb3JtLCB7XG4gICAgICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcjogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuVHJpZ2dlcigpLFxuICAgICAgICAgICAgICAgIGJvb3RzdHJhcDogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuQm9vdHN0cmFwNSh7XG4gICAgICAgICAgICAgICAgICAgIHJvd1NlbGVjdG9yOiAnLmZ2LXJvdycsXG4gICAgICAgICAgICAgICAgICAgIGVsZUludmFsaWRDbGFzczogJ2JnLWxpZ2h0LWRhbmdlciBpcy1pbnZhbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgZWxlVmFsaWRDbGFzczogJydcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGl2ZTogbmV3IEZvcm1WYWxpZGF0aW9uLnBsdWdpbnMuRGVjbGFyYXRpdmUoe2h0bWw1SW5wdXQ6IHRydWV9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZGlzYWJsZUJ1dHRvbihidXR0b24pIHtcbiAgICAgICAgYnV0dG9uPy5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcImRpc2FibGVkXCIpO1xuICAgICAgICBidXR0b24/LnNldEF0dHJpYnV0ZShcImRhdGEta3QtaW5kaWNhdG9yXCIsIFwib25cIik7XG4gICAgfVxuXG4gICAgc3RhdGljIGVuYWJsZUJ1dHRvbihidXR0b24pIHtcbiAgICAgICAgYnV0dG9uPy5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgYnV0dG9uPy5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLWt0LWluZGljYXRvclwiKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgdmFsaWRhdGVGb3JtKGUsIHZhbGlkYXRvciwgc3VibWl0dGVyKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCBmb3JtID0gdmFsaWRhdG9yLmZvcm07XG4gICAgICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvci52YWxpZGF0ZSgpLnRoZW4oc3RhdHVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnVmFsaWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYXRpb24uZGlzYWJsZUJ1dHRvbihzdWJtaXR0ZXIgfHwgZS5zdWJtaXR0ZXIpO1xuICAgICAgICAgICAgICAgICAgICBmb3JtLnN1Ym1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHZhbGlkYXRlRm9ybVdpdGhSZUNhcHRjaGEoZSwgdmFsaWRhdG9yLCBzdWJtaXR0ZXIpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IGZvcm0gPSB2YWxpZGF0b3IuZm9ybTtcbiAgICAgICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICAgICAgdmFsaWRhdG9yLnZhbGlkYXRlKCkudGhlbihmdW5jdGlvbiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ1ZhbGlkJykge1xuXG4gICAgICAgICAgICAgICAgICAgIFZhbGlkYXRpb24uZGlzYWJsZUJ1dHRvbihzdWJtaXR0ZXIgfHwgZS5zdWJtaXR0ZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY2FwdGNoYUlucHV0ID0gZm9ybS5xdWVyeVNlbGVjdG9yKFwiI1JlY2FwdGNoYVJlc3BvbnNlXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXRlS2V5ID0gcmVjYXB0Y2hhSW5wdXQuZGF0YXNldC5zaXRlS2V5O1xuXG4gICAgICAgICAgICAgICAgICAgIGdyZWNhcHRjaGEucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gcmVjYXB0Y2hhSW5wdXQuZGF0YXNldC5hY3Rpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBncmVjYXB0Y2hhLmV4ZWN1dGUoc2l0ZUtleSwge2FjdGlvbjogYWN0aW9ufSkudGhlbihmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNhcHRjaGFJbnB1dC52YWx1ZSA9IHRva2VuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5zdWJtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBzaG93Rm9ybUVycm9yKGVycm9yVGV4dCwgZXJyb3JUaXRsZSkge1xuICAgICAgICBjb25zdCBlcnJvckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZXJyb3ItYWxlcnRcIik7XG4gICAgICAgIGlmKCFlcnJvckNvbnRhaW5lcilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBlcnJvckNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIGVycm9yQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuYWxlcnQtdGV4dFwiKS5pbm5lckhUTUwgPSBlcnJvclRleHQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGhpZGVGb3JtRXJyb3IoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNlcnJvci1hbGVydFwiKTtcbiAgICAgICAgaWYgKCFlcnJvckNvbnRhaW5lcilcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBlcnJvckNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxufVxuIiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2s7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcztcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgIFwiZGVmYXVsdFwiOiBvYmpcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdfQ=="}