@rangertechnologies/ngnxt 2.1.85 → 2.1.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,8 @@ export class PropertiesComponent {
14
14
  selectedElementIndex = -1;
15
15
  // @Input() selectedElement: any;
16
16
  selectedElementType = '';
17
+ api = '';
18
+ apiMethod = 'POST';
17
19
  selectedAlign = 'align-left'; // Add this property
18
20
  selectedStyles = []; // Using array since multiple styles can be selected
19
21
  errorMessage = '';
@@ -458,23 +460,27 @@ export class PropertiesComponent {
458
460
  console.log('Question Book:', this.formBuilderService.downloadElement());
459
461
  }
460
462
  save() {
461
- const apiURL = 'https://dev-api.rangerfusion.com/nxt/';
462
- this.http.post(apiURL, this.formBuilderService.downloadElement()).subscribe((response) => {
463
+ // const apiURL = 'https://dev-api.rangerfusion.com/nxt/';
464
+ this.http.request(this.apiMethod, this.api, { body: this.formBuilderService.downloadElement }).subscribe((response) => {
463
465
  console.log('Response:', response);
464
466
  }, (error) => {
465
467
  console.error('Error:', error);
466
468
  });
467
469
  }
468
470
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PropertiesComponent, deps: [{ token: i1.HttpClient }, { token: i2.FormBuilderService }], target: i0.ɵɵFactoryTarget.Component });
469
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PropertiesComponent, selector: "app-properties", inputs: { selectedElementType: "selectedElementType" }, viewQueries: [{ propertyName: "colorWheel", first: true, predicate: ["colorWheel"], descendants: true }], ngImport: i0, template: "<!-- AP 22JAN25 - Field and Element Properties -->\r\n<!-- properties.component.html -->\r\n<div class=\"container\">\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap\" rel=\"stylesheet\">\r\n<!-- Design Header Section -->\r\n<div class=\"design-header\">\r\n <h1 class=\"header-title\">Element Properties</h1>\r\n <div class=\"menu-container\">\r\n <div class=\"menu-item\" (click)=\"download()\">\r\n <span >Download</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Start</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Path</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Clone</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- properties.component.html -->\r\n<div class=\"all-properties\">\r\n <div *ngIf=\"errorMessage\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <!-- Element Properties -->\r\n <details class=\"first-properties\" open>\r\n <summary class=\"text-sm \">Elements Properties</summary>\r\n <div class=\"inner-content\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().elementProps\">\r\n <div class=\"flex-items-center\">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"label-properties\">\r\n <!-- Text Input -->\r\n <input *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [class.read-only]=\"selectedElement.readOnly\"\r\n [readonly]=\"selectedElement.readOnly\"\r\n class=\"text-sm1 \"\r\n />\r\n <div *ngIf=\"prop.key === 'helpText' && selectedElement.helpText\" class=\"help-text\">\r\n {{ selectedElement.helpText }}\r\n </div>\r\n\r\n\r\n <!-- Font Selection -->\r\n<div *ngIf=\"prop.key === 'font'\" class=\"font-selection\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'font'\"\r\n class=\"font-selection1\"\r\n [value]=\"selectedElement?.font\"\r\n (change)=\"updateProperty('font', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option\">\r\n {{ option }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n<!-- file -->\r\n<!-- Add this inside the elementProps loop where other inputs are rendered -->\r\n<select *ngIf=\"prop.type === 'select' && prop.key === 'supportType'\"\r\n class=\"file \"\r\n[value]=\"selectedElement[prop.key]\"\r\n(change)=\"updateProperty(prop.key, $event.target.value)\">\r\n<option value=\"\">Select file category</option>\r\n<option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n{{ option.label }}\r\n</option>\r\n</select>\r\n\r\n<!-- Font Weight Selection -->\r\n<div *ngIf=\"prop.key === 'fontWeight'\" class=\"font-weight\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'fontWeight'\"\r\n class=\"font-weight1 \"\r\n [value]=\"selectedElement?.fontWeight\"\r\n (change)=\"updateProperty('fontWeight', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n <!-- Number Input with Unit -->\r\n <div *ngIf=\"prop.type === 'number'\" class=\"size-controls\">\r\n <div class=\"size-input-group\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [min]=\"prop.min || 1\"\r\n [max]=\"prop.max || 999999\"\r\n class=\"size-value\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Toggle Group -->\r\n<!-- Toggle Group -->\r\n<div *ngIf=\"prop.type === 'toggleGroup'\" class=\"toggle-group\">\r\n<div class=\"toggle-item1\">\r\n <span class=\"toggle-label\">Read Only</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.readOnly\"\r\n (change)=\"onToggleChange('readOnly', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n\r\n<div class=\"toggle-item2\">\r\n <span class=\"toggle-label\">Is Hide</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.isHide\"\r\n (change)=\"onToggleChange('isHide', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n</div>\r\n\r\n <!-- Text Align Buttons -->\r\n <div *ngIf=\"prop.type === 'align'\"class=\"font-align\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onAlignSelect(option.value)\"\r\n [class.active]=\"selectedElement?.textAlign === option.value\"\r\n class=\"align-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.key === 'size'\" class=\"size-controls\">\r\n <label>{{ prop.label }}</label>\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.type === 'style'\" class=\"font-style\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onStyleSelect(option.value)\"\r\n [class.active]=\"isStyleActive(option.value)\"\r\n class=\"style-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n<!-- Field Size Controls -->\r\n<div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Width</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.width\"\r\n (input)=\"updateProperty('width', $event.target.value)\"\r\n class=\"size-input\"\r\n\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Height</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.height\"\r\n (input)=\"updateProperty('height', $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </details>\r\n\r\n <!-- Field Elements Properties -->\r\n<details class=\"second-property\">\r\n <summary class=\"text-font-medium\">Field Elements Properties</summary>\r\n <div class=\"space-y-4\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().fieldProps\">\r\n <div class=\"flex-items-center \">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"input-box-field\">\r\n <!-- Input Box -->\r\n <input\r\n *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n class=\"field-input\"\r\n />\r\n <!-- Radio Group -->\r\n<div *ngIf=\"prop.type === 'radio'\" class=\"radio-item\">\r\n\r\n\r\n <div class=\"sizes\">\r\n <div class=\"flex-gap\">\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"selectedElement.required\"\r\n (change)=\"onRequiredChange(true)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-label\"\r\n >\r\n Required\r\n </label>\r\n </div>\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"!selectedElement.required\"\r\n (change)=\"onRequiredChange(false)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-sm text-gray-400\"\r\n >\r\n Not Required\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n <!-- Chk Options Group -->\r\n <div *ngIf=\"prop.type === 'optionsGroup'\" class=\"options-container\">\r\n <div\r\n *ngFor=\"let option of prop.options; let i = index\"\r\n class=\"option-items\"\r\n >\r\n <!-- Option Input -->\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].label\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n class=\"options\"\r\n />\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].value\"\r\n placeholder=\"Value\"\r\n class=\"values\"\r\n />\r\n <!-- Remove Button -->\r\n <div class=\"remove\">\r\n <img src=\"../assets/icons/Trash.svg\" (click)=\"removeOption(prop.options, i)\"></div>\r\n </div>\r\n <!-- Add Button -->\r\n <button\r\n type=\"button\"\r\n class=\"add-btn\"\r\n (click)=\"addOption(prop.options)\"\r\n >\r\n <div class=\"add-varient\">\r\n <span class=\"text-lg\">+</span>\r\n <span>Add Variants</span></div>\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"design-footer\">\r\n <button class=\"btn\">Cancel</button>\r\n <button class=\"btn\" (click)=\"save()\">Save</button>\r\n </div>\r\n</details>\r\n</div>\r\n\r\n\r\n</div>\r\n", styles: [".container{position:absolute;right:0;top:0;width:25%}.all-properties{padding:0;margin:-32px -13px 0 0;background-color:#f8fafc;position:relative;top:3px;max-height:549px;overflow-y:auto}.first-properties{padding-top:16px;padding-left:15px}details summary{font-weight:700;color:#1b1b43;cursor:pointer}details[open] summary{padding-bottom:5px;margin-bottom:1rem}label{flex:0 0 120px;color:#b8b8b8;font-size:.875rem;font-weight:500;margin:0;padding:0}input,select{flex:1;background-color:#eaedf1;color:#bebfbf;border-radius:.375rem;padding:.5rem;font-size:.875rem;width:100%;box-sizing:border-box;transition:border-color .2s}input:focus,select:focus{border-color:#1b1b43;outline:none}button{background-color:#eaedf1;color:#6b7280;border:1px solid #D1D5DB;border-radius:.375rem;padding:.5rem;cursor:pointer;transition:all .2s}button:hover{background-color:#e5e7eb}button.selected{background-color:#0b1f34;color:#fff;border-color:#1e90ff}.color-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:50px;height:50px;background-color:transparent;border:none;cursor:pointer}.color-input::-webkit-color-swatch,.color-input::-moz-color-swatch{border-radius:5px;border:none}.inner-content{position:relative;left:30px;width:90%}.label-properties{position:relative;top:-12px;left:-37px}.required-indicator{color:red;margin-left:4px}.toggle-item1{position:relative;left:-94px;width:124px;color:#b8b8b8}.toggle-item2{width:100px;position:relative;top:-24px;left:84px;color:#b8b8b8}.flex-gap-1{display:flex;grid-template-columns:repeat(4,auto)}.help-text,.error-message{font-size:12px;margin-top:4px}.help-text{color:#666}.error-message{color:#ef4444}.read-only{background-color:#f5f5f5;cursor:not-allowed}.font-selection,.font-weight{width:190px}.design-header{padding:17px;background-color:#fff;margin-bottom:2rem}.header-title{font-size:16px;font-weight:500;text-align:center;margin:0 0 20px 5px}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px}.menu-item{flex:1;text-align:center;padding:7px;cursor:pointer;transition:all .3s ease;border-right:2px solid #e9ecef}.menu-item span{color:#656f7b;font-size:1rem}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px;padding:.5rem}.menu-item{flex:1;text-align:center;padding:m;cursor:pointer;transition:all .3s ease;border-right:1px solid #e9ecef}.menu-item:last-child{border-right:none}.menu-item:hover{background-color:#e9ecef;border-radius:4px}.menu-item span{color:#495057;font-size:1rem}.switch{position:relative;display:inline-block;width:40px;height:24px;right:-20px;margin:0 8px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.4s;border-radius:24px}.slider:before{position:absolute;content:\"\";height:16px;width:16px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider{background-color:#2196f3}input:checked+.slider:before{transform:translate(16px)}.font-align{display:flex;gap:2px}.align-btn,.style-btn{width:36px;height:36px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;cursor:pointer;transition:all .2s}.align-btn:hover,.style-btn:hover{background:#e5e7eb}.align-btn.active,.style-btn.active{background:#202e3a;color:#fff;border-color:#4b5563}.align-btn.active img,.style-btn.active img{filter:brightness(0) invert(1)}.icon-size{width:16px;height:16px}.button-group{display:flex;gap:4px;padding:4px;background:#f9fafb;border-radius:6px}.field-size-controls{display:flex;flex-direction:row;position:relative;gap:13px;font-family:Arial,sans-serif}.size-group{display:flex;align-items:center}.size-label{font-size:15px;color:#000}.value-container{display:flex;height:43px;align-items:center;background-color:#f5f5f5;border-radius:11px;position:relative;right:74px}.font-style{display:flex;gap:1px}.size-input{font-size:15px;border:none;background:transparent;width:46px;text-align:center;outline:none}.size-input:focus{outline:none}.unit{font-size:13px;width:22px;color:#00000080}.file-upload-container{position:relative;margin-bottom:1rem}.file-upload-container input[type=file]{margin-top:.5rem}.text-font-medium{padding-left:15px;padding-bottom:20px}.options-container{display:flex;flex-direction:column;gap:.5rem}.option-item{display:flex;align-items:center;gap:1rem}.option-items{display:flex;gap:20px}.options{width:69px}.values{width:49px}.remove{width:34px;border-radius:50px;height:35px;background-color:#f7eff0}.remove img{position:relative;top:6px;left:9px}.add-btn{background:none;border:none;font-size:1rem;cursor:pointer;display:flex;align-items:center;width:328px;position:relative;right:123px;background-color:#f1f4f7}.add-btn:hover{color:#3182ce}.text-lg{border:1px solid gray;width:22px;border-radius:5px}.add-varient{display:flex;gap:13px;position:relative;left:101px}input{border:1px solid #ccc;padding:.5rem;border-radius:.25rem;width:100%}.space-y-4{position:relative;left:28px}.flex-items-center{display:flex;position:relative;top:2px;margin-bottom:28px}.input-box-field{width:207px}.text-sm{height:30px}.radio-item{position:relative;left:-5px}.flex-gap{display:flex;gap:18px}.design-footer{display:flex;justify-content:center;gap:30px;background-color:#f1f4f7}.btn{width:110px;color:#fff;margin-top:20px;margin-bottom:20px;background-color:#a5adbc}.btn:hover{background-color:#2196f3;color:#fff}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
471
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PropertiesComponent, selector: "app-properties", inputs: { selectedElementType: "selectedElementType", api: "api", apiMethod: "apiMethod" }, viewQueries: [{ propertyName: "colorWheel", first: true, predicate: ["colorWheel"], descendants: true }], ngImport: i0, template: "<!-- AP 22JAN25 - Field and Element Properties -->\r\n<!-- properties.component.html -->\r\n<div class=\"container\">\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap\" rel=\"stylesheet\">\r\n <div class=\"properties\">\r\n<!-- Design Header Section -->\r\n<div class=\"design-header\">\r\n <h1 class=\"header-title\">Element Properties</h1>\r\n <div class=\"menu-container\">\r\n <div class=\"menu-item\" (click)=\"download()\">\r\n <span >Download</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Start</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Path</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Clone</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- properties.component.html -->\r\n<div class=\"all-properties\">\r\n <div *ngIf=\"errorMessage\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <!-- Element Properties -->\r\n <details class=\"first-properties\" open>\r\n <summary class=\"text-sm \">Elements Properties</summary>\r\n <div class=\"inner-content\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().elementProps\">\r\n <div class=\"flex-items-center\">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"label-properties\">\r\n <!-- Text Input -->\r\n <input *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [class.read-only]=\"selectedElement.readOnly\"\r\n [readonly]=\"selectedElement.readOnly\"\r\n class=\"text-sm1 \"\r\n />\r\n <div *ngIf=\"prop.key === 'helpText' && selectedElement.helpText\" class=\"help-text\">\r\n {{ selectedElement.helpText }}\r\n </div>\r\n\r\n\r\n <!-- Font Selection -->\r\n<div *ngIf=\"prop.key === 'font'\" class=\"font-selection\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'font'\"\r\n class=\"font-selection1\"\r\n [value]=\"selectedElement?.font\"\r\n (change)=\"updateProperty('font', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option\">\r\n {{ option }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n<!-- file -->\r\n<!-- Add this inside the elementProps loop where other inputs are rendered -->\r\n<select *ngIf=\"prop.type === 'select' && prop.key === 'supportType'\"\r\n class=\"file \"\r\n[value]=\"selectedElement[prop.key]\"\r\n(change)=\"updateProperty(prop.key, $event.target.value)\">\r\n<option value=\"\">Select file category</option>\r\n<option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n{{ option.label }}\r\n</option>\r\n</select>\r\n\r\n<!-- Font Weight Selection -->\r\n<div *ngIf=\"prop.key === 'fontWeight'\" class=\"font-weight\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'fontWeight'\"\r\n class=\"font-weight1 \"\r\n [value]=\"selectedElement?.fontWeight\"\r\n (change)=\"updateProperty('fontWeight', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n <!-- Number Input with Unit -->\r\n <div *ngIf=\"prop.type === 'number'\" class=\"size-controls\">\r\n <div class=\"size-input-group\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [min]=\"prop.min || 1\"\r\n [max]=\"prop.max || 999999\"\r\n class=\"size-value\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Toggle Group -->\r\n<!-- Toggle Group -->\r\n<div *ngIf=\"prop.type === 'toggleGroup'\" class=\"toggle-group\">\r\n<div class=\"toggle-item1\">\r\n <span class=\"toggle-label\">Read Only</span>\r\n <label class=\"switch\">\r\n <input type=\"checkbox\"/>\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n\r\n<div class=\"toggle-item2\">\r\n <span class=\"toggle-label\">Is Hide</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.isHide\"\r\n (change)=\"onToggleChange('isHide', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n</div>\r\n\r\n <!-- Text Align Buttons -->\r\n <div *ngIf=\"prop.type === 'align'\"class=\"font-align\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onAlignSelect(option.value)\"\r\n [class.active]=\"selectedElement?.textAlign === option.value\"\r\n class=\"align-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.key === 'size'\" class=\"size-controls\">\r\n <label>{{ prop.label }}</label>\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.type === 'style'\" class=\"font-style\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onStyleSelect(option.value)\"\r\n [class.active]=\"isStyleActive(option.value)\"\r\n class=\"style-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n<!-- Field Size Controls -->\r\n<div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Width</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.width\"\r\n (input)=\"updateProperty('width', $event.target.value)\"\r\n class=\"size-input\"\r\n\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Height</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.height\"\r\n (input)=\"updateProperty('height', $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </details>\r\n\r\n <!-- Field Elements Properties -->\r\n<details class=\"second-property\">\r\n <summary class=\"text-font-medium\">Field Elements Properties</summary>\r\n <div class=\"space-y-4\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().fieldProps\">\r\n <div class=\"flex-items-center \">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"input-box-field\">\r\n <!-- Input Box -->\r\n <input\r\n *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n class=\"field-input\"\r\n />\r\n <!-- Radio Group -->\r\n<div *ngIf=\"prop.type === 'radio'\" class=\"radio-item\">\r\n\r\n\r\n <div class=\"sizes\">\r\n <div class=\"flex-gap\">\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"selectedElement.required\"\r\n (change)=\"onRequiredChange(true)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-label\"\r\n >\r\n Required\r\n </label>\r\n </div>\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"!selectedElement.required\"\r\n (change)=\"onRequiredChange(false)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-sm text-gray-400\"\r\n >\r\n Not Required\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n <!-- Chk Options Group -->\r\n <div *ngIf=\"prop.type === 'optionsGroup'\" class=\"options-container\">\r\n <div\r\n *ngFor=\"let option of prop.options; let i = index\"\r\n class=\"option-items\"\r\n >\r\n <!-- Option Input -->\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].label\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n class=\"options\"\r\n />\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].value\"\r\n placeholder=\"Value\"\r\n class=\"values\"\r\n />\r\n <!-- Remove Button -->\r\n <div class=\"remove\">\r\n <img src=\"../assets/icons/Trash.svg\" (click)=\"removeOption(prop.options, i)\"></div>\r\n </div>\r\n <!-- Add Button -->\r\n <button\r\n type=\"button\"\r\n class=\"add-btn\"\r\n (click)=\"addOption(prop.options)\"\r\n >\r\n <div class=\"add-varient\">\r\n <span class=\"text-lg\">+</span>\r\n <span>Add Variants</span></div>\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"design-footer\">\r\n <button class=\"btn\">Cancel</button>\r\n <button class=\"btn\" (click)=\"save()\">Save</button>\r\n </div>\r\n</details>\r\n</div>\r\n</div>\r\n</div>\r\n", styles: [".container{position:absolute;right:0;top:0;width:25%}.all-properties{padding:0;margin:-32px -13px 0 0;background-color:#f8fafc;position:relative;top:3px;max-height:549px;overflow-y:auto}.first-properties{padding-top:16px;padding-left:15px}details summary{font-weight:700;color:#1b1b43;cursor:pointer}details[open] summary{padding-bottom:5px;margin-bottom:1rem}label{flex:0 0 120px;color:#b8b8b8;font-size:.875rem;font-weight:500;margin:0;padding:0}input,select{flex:1;background-color:#eaedf1;color:#bebfbf;border-radius:.375rem;padding:.5rem;font-size:.875rem;width:100%;box-sizing:border-box;transition:border-color .2s}input:focus,select:focus{border-color:#1b1b43;outline:none}button{background-color:#eaedf1;color:#6b7280;border:1px solid #D1D5DB;border-radius:.375rem;padding:.5rem;cursor:pointer;transition:all .2s}button:hover{background-color:#e5e7eb}button.selected{background-color:#0b1f34;color:#fff;border-color:#1e90ff}.color-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:50px;height:50px;background-color:transparent;border:none;cursor:pointer}.color-input::-webkit-color-swatch,.color-input::-moz-color-swatch{border-radius:5px;border:none}.inner-content{position:relative;left:30px;width:90%}.label-properties{position:relative;top:-12px;left:-37px}.required-indicator{color:red;margin-left:4px}.toggle-item1{position:relative;left:-74px;width:124px;color:#b8b8b8}.toggle-item2{width:100px;position:relative;top:-44px;left:84px;color:#b8b8b8}.flex-gap-1{display:flex;grid-template-columns:repeat(4,auto)}.help-text,.error-message{font-size:12px;margin-top:4px}.help-text{color:#666}.error-message{color:#ef4444}.read-only{background-color:#f5f5f5;cursor:not-allowed}.font-selection,.font-weight{width:190px}.design-header{padding:17px;background-color:#fff;margin-bottom:2rem}.header-title{font-size:16px;font-weight:500;text-align:center;margin:0 0 20px 5px}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px}.menu-item{flex:1;text-align:center;padding:7px;cursor:pointer;transition:all .3s ease;border-right:2px solid #e9ecef}.menu-item span{color:#656f7b;font-size:1rem}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px;padding:.5rem}.menu-item{flex:1;text-align:center;padding:m;cursor:pointer;transition:all .3s ease;border-right:1px solid #e9ecef}.menu-item:last-child{border-right:none}.menu-item:hover{background-color:#e9ecef;border-radius:4px}.menu-item span{color:#495057;font-size:1rem}.switch{position:relative;display:inline-block;width:40px;height:24px;right:-20px;margin:0 8px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.4s;border-radius:24px}.slider:before{position:absolute;content:\"\";height:16px;width:16px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider{background-color:#2196f3}input:checked+.slider:before{transform:translate(16px)}.font-align{display:flex;gap:2px}.align-btn,.style-btn{width:36px;height:36px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;cursor:pointer;transition:all .2s}.align-btn:hover,.style-btn:hover{background:#e5e7eb}.align-btn.active,.style-btn.active{background:#202e3a;color:#fff;border-color:#4b5563}.align-btn.active img,.style-btn.active img{filter:brightness(0) invert(1)}.icon-size{width:16px;height:16px}.button-group{display:flex;gap:4px;padding:4px;background:#f9fafb;border-radius:6px}.field-size-controls{display:flex;flex-direction:row;position:relative;gap:13px;font-family:Arial,sans-serif}.size-group{display:flex;align-items:center}.size-label{font-size:15px;color:#000}.value-container{display:flex;height:43px;align-items:center;background-color:#f5f5f5;border-radius:11px;position:relative;right:74px}.font-style{display:flex;gap:1px}.size-input{font-size:15px;border:none;background:transparent;width:46px;text-align:center;outline:none}.size-input:focus{outline:none}.unit{font-size:13px;width:22px;color:#00000080}.file-upload-container{position:relative;margin-bottom:1rem}.file-upload-container input[type=file]{margin-top:.5rem}.text-font-medium{padding-left:15px;padding-bottom:20px}.options-container{display:flex;flex-direction:column;gap:.5rem}.option-item{display:flex;align-items:center;gap:1rem}.option-items{display:flex;gap:20px}.options{width:69px}.values{width:49px}.remove{width:34px;border-radius:50px;height:35px;background-color:#f7eff0}.remove img{position:relative;top:6px;left:9px}.add-btn{background:none;border:none;font-size:1rem;cursor:pointer;display:flex;align-items:center;width:328px;position:relative;right:123px;background-color:#f1f4f7}.add-btn:hover{color:#3182ce}.text-lg{border:1px solid gray;width:22px;border-radius:5px}.add-varient{display:flex;gap:13px;position:relative;left:101px}input{border:1px solid #ccc;padding:.5rem;border-radius:.25rem;width:100%}.space-y-4{position:relative;left:28px}.flex-items-center{display:flex;position:relative;top:2px;margin-bottom:28px}.input-box-field{width:207px}.text-sm{height:30px}.radio-item{position:relative;left:-5px}.flex-gap{display:flex;gap:18px}.design-footer{display:flex;justify-content:center;gap:30px;background-color:#f1f4f7}.btn{width:110px;color:#fff;margin-top:20px;margin-bottom:20px;background-color:#a5adbc}.btn:hover{background-color:#2196f3;color:#fff}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
470
472
  }
471
473
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PropertiesComponent, decorators: [{
472
474
  type: Component,
473
- args: [{ selector: 'app-properties', template: "<!-- AP 22JAN25 - Field and Element Properties -->\r\n<!-- properties.component.html -->\r\n<div class=\"container\">\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap\" rel=\"stylesheet\">\r\n<!-- Design Header Section -->\r\n<div class=\"design-header\">\r\n <h1 class=\"header-title\">Element Properties</h1>\r\n <div class=\"menu-container\">\r\n <div class=\"menu-item\" (click)=\"download()\">\r\n <span >Download</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Start</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Path</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Clone</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- properties.component.html -->\r\n<div class=\"all-properties\">\r\n <div *ngIf=\"errorMessage\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <!-- Element Properties -->\r\n <details class=\"first-properties\" open>\r\n <summary class=\"text-sm \">Elements Properties</summary>\r\n <div class=\"inner-content\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().elementProps\">\r\n <div class=\"flex-items-center\">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"label-properties\">\r\n <!-- Text Input -->\r\n <input *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [class.read-only]=\"selectedElement.readOnly\"\r\n [readonly]=\"selectedElement.readOnly\"\r\n class=\"text-sm1 \"\r\n />\r\n <div *ngIf=\"prop.key === 'helpText' && selectedElement.helpText\" class=\"help-text\">\r\n {{ selectedElement.helpText }}\r\n </div>\r\n\r\n\r\n <!-- Font Selection -->\r\n<div *ngIf=\"prop.key === 'font'\" class=\"font-selection\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'font'\"\r\n class=\"font-selection1\"\r\n [value]=\"selectedElement?.font\"\r\n (change)=\"updateProperty('font', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option\">\r\n {{ option }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n<!-- file -->\r\n<!-- Add this inside the elementProps loop where other inputs are rendered -->\r\n<select *ngIf=\"prop.type === 'select' && prop.key === 'supportType'\"\r\n class=\"file \"\r\n[value]=\"selectedElement[prop.key]\"\r\n(change)=\"updateProperty(prop.key, $event.target.value)\">\r\n<option value=\"\">Select file category</option>\r\n<option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n{{ option.label }}\r\n</option>\r\n</select>\r\n\r\n<!-- Font Weight Selection -->\r\n<div *ngIf=\"prop.key === 'fontWeight'\" class=\"font-weight\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'fontWeight'\"\r\n class=\"font-weight1 \"\r\n [value]=\"selectedElement?.fontWeight\"\r\n (change)=\"updateProperty('fontWeight', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n <!-- Number Input with Unit -->\r\n <div *ngIf=\"prop.type === 'number'\" class=\"size-controls\">\r\n <div class=\"size-input-group\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [min]=\"prop.min || 1\"\r\n [max]=\"prop.max || 999999\"\r\n class=\"size-value\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Toggle Group -->\r\n<!-- Toggle Group -->\r\n<div *ngIf=\"prop.type === 'toggleGroup'\" class=\"toggle-group\">\r\n<div class=\"toggle-item1\">\r\n <span class=\"toggle-label\">Read Only</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.readOnly\"\r\n (change)=\"onToggleChange('readOnly', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n\r\n<div class=\"toggle-item2\">\r\n <span class=\"toggle-label\">Is Hide</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.isHide\"\r\n (change)=\"onToggleChange('isHide', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n</div>\r\n\r\n <!-- Text Align Buttons -->\r\n <div *ngIf=\"prop.type === 'align'\"class=\"font-align\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onAlignSelect(option.value)\"\r\n [class.active]=\"selectedElement?.textAlign === option.value\"\r\n class=\"align-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.key === 'size'\" class=\"size-controls\">\r\n <label>{{ prop.label }}</label>\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.type === 'style'\" class=\"font-style\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onStyleSelect(option.value)\"\r\n [class.active]=\"isStyleActive(option.value)\"\r\n class=\"style-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n<!-- Field Size Controls -->\r\n<div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Width</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.width\"\r\n (input)=\"updateProperty('width', $event.target.value)\"\r\n class=\"size-input\"\r\n\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Height</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.height\"\r\n (input)=\"updateProperty('height', $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </details>\r\n\r\n <!-- Field Elements Properties -->\r\n<details class=\"second-property\">\r\n <summary class=\"text-font-medium\">Field Elements Properties</summary>\r\n <div class=\"space-y-4\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().fieldProps\">\r\n <div class=\"flex-items-center \">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"input-box-field\">\r\n <!-- Input Box -->\r\n <input\r\n *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n class=\"field-input\"\r\n />\r\n <!-- Radio Group -->\r\n<div *ngIf=\"prop.type === 'radio'\" class=\"radio-item\">\r\n\r\n\r\n <div class=\"sizes\">\r\n <div class=\"flex-gap\">\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"selectedElement.required\"\r\n (change)=\"onRequiredChange(true)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-label\"\r\n >\r\n Required\r\n </label>\r\n </div>\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"!selectedElement.required\"\r\n (change)=\"onRequiredChange(false)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-sm text-gray-400\"\r\n >\r\n Not Required\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n <!-- Chk Options Group -->\r\n <div *ngIf=\"prop.type === 'optionsGroup'\" class=\"options-container\">\r\n <div\r\n *ngFor=\"let option of prop.options; let i = index\"\r\n class=\"option-items\"\r\n >\r\n <!-- Option Input -->\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].label\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n class=\"options\"\r\n />\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].value\"\r\n placeholder=\"Value\"\r\n class=\"values\"\r\n />\r\n <!-- Remove Button -->\r\n <div class=\"remove\">\r\n <img src=\"../assets/icons/Trash.svg\" (click)=\"removeOption(prop.options, i)\"></div>\r\n </div>\r\n <!-- Add Button -->\r\n <button\r\n type=\"button\"\r\n class=\"add-btn\"\r\n (click)=\"addOption(prop.options)\"\r\n >\r\n <div class=\"add-varient\">\r\n <span class=\"text-lg\">+</span>\r\n <span>Add Variants</span></div>\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"design-footer\">\r\n <button class=\"btn\">Cancel</button>\r\n <button class=\"btn\" (click)=\"save()\">Save</button>\r\n </div>\r\n</details>\r\n</div>\r\n\r\n\r\n</div>\r\n", styles: [".container{position:absolute;right:0;top:0;width:25%}.all-properties{padding:0;margin:-32px -13px 0 0;background-color:#f8fafc;position:relative;top:3px;max-height:549px;overflow-y:auto}.first-properties{padding-top:16px;padding-left:15px}details summary{font-weight:700;color:#1b1b43;cursor:pointer}details[open] summary{padding-bottom:5px;margin-bottom:1rem}label{flex:0 0 120px;color:#b8b8b8;font-size:.875rem;font-weight:500;margin:0;padding:0}input,select{flex:1;background-color:#eaedf1;color:#bebfbf;border-radius:.375rem;padding:.5rem;font-size:.875rem;width:100%;box-sizing:border-box;transition:border-color .2s}input:focus,select:focus{border-color:#1b1b43;outline:none}button{background-color:#eaedf1;color:#6b7280;border:1px solid #D1D5DB;border-radius:.375rem;padding:.5rem;cursor:pointer;transition:all .2s}button:hover{background-color:#e5e7eb}button.selected{background-color:#0b1f34;color:#fff;border-color:#1e90ff}.color-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:50px;height:50px;background-color:transparent;border:none;cursor:pointer}.color-input::-webkit-color-swatch,.color-input::-moz-color-swatch{border-radius:5px;border:none}.inner-content{position:relative;left:30px;width:90%}.label-properties{position:relative;top:-12px;left:-37px}.required-indicator{color:red;margin-left:4px}.toggle-item1{position:relative;left:-94px;width:124px;color:#b8b8b8}.toggle-item2{width:100px;position:relative;top:-24px;left:84px;color:#b8b8b8}.flex-gap-1{display:flex;grid-template-columns:repeat(4,auto)}.help-text,.error-message{font-size:12px;margin-top:4px}.help-text{color:#666}.error-message{color:#ef4444}.read-only{background-color:#f5f5f5;cursor:not-allowed}.font-selection,.font-weight{width:190px}.design-header{padding:17px;background-color:#fff;margin-bottom:2rem}.header-title{font-size:16px;font-weight:500;text-align:center;margin:0 0 20px 5px}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px}.menu-item{flex:1;text-align:center;padding:7px;cursor:pointer;transition:all .3s ease;border-right:2px solid #e9ecef}.menu-item span{color:#656f7b;font-size:1rem}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px;padding:.5rem}.menu-item{flex:1;text-align:center;padding:m;cursor:pointer;transition:all .3s ease;border-right:1px solid #e9ecef}.menu-item:last-child{border-right:none}.menu-item:hover{background-color:#e9ecef;border-radius:4px}.menu-item span{color:#495057;font-size:1rem}.switch{position:relative;display:inline-block;width:40px;height:24px;right:-20px;margin:0 8px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.4s;border-radius:24px}.slider:before{position:absolute;content:\"\";height:16px;width:16px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider{background-color:#2196f3}input:checked+.slider:before{transform:translate(16px)}.font-align{display:flex;gap:2px}.align-btn,.style-btn{width:36px;height:36px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;cursor:pointer;transition:all .2s}.align-btn:hover,.style-btn:hover{background:#e5e7eb}.align-btn.active,.style-btn.active{background:#202e3a;color:#fff;border-color:#4b5563}.align-btn.active img,.style-btn.active img{filter:brightness(0) invert(1)}.icon-size{width:16px;height:16px}.button-group{display:flex;gap:4px;padding:4px;background:#f9fafb;border-radius:6px}.field-size-controls{display:flex;flex-direction:row;position:relative;gap:13px;font-family:Arial,sans-serif}.size-group{display:flex;align-items:center}.size-label{font-size:15px;color:#000}.value-container{display:flex;height:43px;align-items:center;background-color:#f5f5f5;border-radius:11px;position:relative;right:74px}.font-style{display:flex;gap:1px}.size-input{font-size:15px;border:none;background:transparent;width:46px;text-align:center;outline:none}.size-input:focus{outline:none}.unit{font-size:13px;width:22px;color:#00000080}.file-upload-container{position:relative;margin-bottom:1rem}.file-upload-container input[type=file]{margin-top:.5rem}.text-font-medium{padding-left:15px;padding-bottom:20px}.options-container{display:flex;flex-direction:column;gap:.5rem}.option-item{display:flex;align-items:center;gap:1rem}.option-items{display:flex;gap:20px}.options{width:69px}.values{width:49px}.remove{width:34px;border-radius:50px;height:35px;background-color:#f7eff0}.remove img{position:relative;top:6px;left:9px}.add-btn{background:none;border:none;font-size:1rem;cursor:pointer;display:flex;align-items:center;width:328px;position:relative;right:123px;background-color:#f1f4f7}.add-btn:hover{color:#3182ce}.text-lg{border:1px solid gray;width:22px;border-radius:5px}.add-varient{display:flex;gap:13px;position:relative;left:101px}input{border:1px solid #ccc;padding:.5rem;border-radius:.25rem;width:100%}.space-y-4{position:relative;left:28px}.flex-items-center{display:flex;position:relative;top:2px;margin-bottom:28px}.input-box-field{width:207px}.text-sm{height:30px}.radio-item{position:relative;left:-5px}.flex-gap{display:flex;gap:18px}.design-footer{display:flex;justify-content:center;gap:30px;background-color:#f1f4f7}.btn{width:110px;color:#fff;margin-top:20px;margin-bottom:20px;background-color:#a5adbc}.btn:hover{background-color:#2196f3;color:#fff}\n"] }]
475
+ args: [{ selector: 'app-properties', template: "<!-- AP 22JAN25 - Field and Element Properties -->\r\n<!-- properties.component.html -->\r\n<div class=\"container\">\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap\" rel=\"stylesheet\">\r\n <div class=\"properties\">\r\n<!-- Design Header Section -->\r\n<div class=\"design-header\">\r\n <h1 class=\"header-title\">Element Properties</h1>\r\n <div class=\"menu-container\">\r\n <div class=\"menu-item\" (click)=\"download()\">\r\n <span >Download</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Start</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Path</span>\r\n </div>\r\n <div class=\"menu-item\">\r\n <span>Clone</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- properties.component.html -->\r\n<div class=\"all-properties\">\r\n <div *ngIf=\"errorMessage\" class=\"error-message\">\r\n {{ errorMessage }}\r\n </div>\r\n <!-- Element Properties -->\r\n <details class=\"first-properties\" open>\r\n <summary class=\"text-sm \">Elements Properties</summary>\r\n <div class=\"inner-content\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().elementProps\">\r\n <div class=\"flex-items-center\">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"label-properties\">\r\n <!-- Text Input -->\r\n <input *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [class.read-only]=\"selectedElement.readOnly\"\r\n [readonly]=\"selectedElement.readOnly\"\r\n class=\"text-sm1 \"\r\n />\r\n <div *ngIf=\"prop.key === 'helpText' && selectedElement.helpText\" class=\"help-text\">\r\n {{ selectedElement.helpText }}\r\n </div>\r\n\r\n\r\n <!-- Font Selection -->\r\n<div *ngIf=\"prop.key === 'font'\" class=\"font-selection\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'font'\"\r\n class=\"font-selection1\"\r\n [value]=\"selectedElement?.font\"\r\n (change)=\"updateProperty('font', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option\">\r\n {{ option }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n<!-- file -->\r\n<!-- Add this inside the elementProps loop where other inputs are rendered -->\r\n<select *ngIf=\"prop.type === 'select' && prop.key === 'supportType'\"\r\n class=\"file \"\r\n[value]=\"selectedElement[prop.key]\"\r\n(change)=\"updateProperty(prop.key, $event.target.value)\">\r\n<option value=\"\">Select file category</option>\r\n<option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n{{ option.label }}\r\n</option>\r\n</select>\r\n\r\n<!-- Font Weight Selection -->\r\n<div *ngIf=\"prop.key === 'fontWeight'\" class=\"font-weight\">\r\n <!-- <label>{{ prop.label }}</label> -->\r\n <select\r\n *ngIf=\"prop.type === 'select' && prop.key === 'fontWeight'\"\r\n class=\"font-weight1 \"\r\n [value]=\"selectedElement?.fontWeight\"\r\n (change)=\"updateProperty('fontWeight', $event.target.value)\">\r\n <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </option>\r\n </select>\r\n</div>\r\n\r\n <!-- Number Input with Unit -->\r\n <div *ngIf=\"prop.type === 'number'\" class=\"size-controls\">\r\n <div class=\"size-input-group\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n [min]=\"prop.min || 1\"\r\n [max]=\"prop.max || 999999\"\r\n class=\"size-value\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Toggle Group -->\r\n<!-- Toggle Group -->\r\n<div *ngIf=\"prop.type === 'toggleGroup'\" class=\"toggle-group\">\r\n<div class=\"toggle-item1\">\r\n <span class=\"toggle-label\">Read Only</span>\r\n <label class=\"switch\">\r\n <input type=\"checkbox\"/>\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n\r\n<div class=\"toggle-item2\">\r\n <span class=\"toggle-label\">Is Hide</span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedElement?.isHide\"\r\n (change)=\"onToggleChange('isHide', $event)\"\r\n />\r\n <span class=\"slider\"></span>\r\n </label>\r\n</div>\r\n</div>\r\n\r\n <!-- Text Align Buttons -->\r\n <div *ngIf=\"prop.type === 'align'\"class=\"font-align\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onAlignSelect(option.value)\"\r\n [class.active]=\"selectedElement?.textAlign === option.value\"\r\n class=\"align-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.key === 'size'\" class=\"size-controls\">\r\n <label>{{ prop.label }}</label>\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement[prop.key]\"\r\n (input)=\"updateProperty(prop.key, $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"size-unit\">{{ prop.unit }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"prop.type === 'style'\" class=\"font-style\">\r\n <button\r\n *ngFor=\"let option of prop.options\"\r\n (click)=\"onStyleSelect(option.value)\"\r\n [class.active]=\"isStyleActive(option.value)\"\r\n class=\"style-btn\"\r\n [title]=\"option.value\"\r\n >\r\n <img\r\n [src]=\"'../assets/icons/' + option.icon + '.svg'\"\r\n [alt]=\"option.value\"\r\n class=\"icon-size\"\r\n />\r\n </button>\r\n </div>\r\n\r\n<!-- Field Size Controls -->\r\n<div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Width</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.width\"\r\n (input)=\"updateProperty('width', $event.target.value)\"\r\n class=\"size-input\"\r\n\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"prop.key === 'fieldSize'\" class=\"field-size-controls\">\r\n <div class=\"size-group\">\r\n <label class=\"size-label\">Height</label>\r\n <div class=\"value-container\">\r\n <input\r\n type=\"number\"\r\n [value]=\"selectedElement?.height\"\r\n (input)=\"updateProperty('height', $event.target.value)\"\r\n class=\"size-input\"\r\n />\r\n <span class=\"unit\">PX</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </details>\r\n\r\n <!-- Field Elements Properties -->\r\n<details class=\"second-property\">\r\n <summary class=\"text-font-medium\">Field Elements Properties</summary>\r\n <div class=\"space-y-4\" *ngIf=\"getProperties()\">\r\n <ng-container *ngFor=\"let prop of getProperties().fieldProps\">\r\n <div class=\"flex-items-center \">\r\n <label class=\"text-sm\">{{ prop.label }}</label>\r\n <div class=\"input-box-field\">\r\n <!-- Input Box -->\r\n <input\r\n *ngIf=\"prop.type === 'text'\"\r\n type=\"text\"\r\n [placeholder]=\"prop.placeholder\"\r\n class=\"field-input\"\r\n />\r\n <!-- Radio Group -->\r\n<div *ngIf=\"prop.type === 'radio'\" class=\"radio-item\">\r\n\r\n\r\n <div class=\"sizes\">\r\n <div class=\"flex-gap\">\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"selectedElement.required\"\r\n (change)=\"onRequiredChange(true)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-label\"\r\n >\r\n Required\r\n </label>\r\n </div>\r\n <div class=\"flex-items\">\r\n <input\r\n type=\"radio\"\r\n [checked]=\"!selectedElement.required\"\r\n (change)=\"onRequiredChange(false)\"\r\n name=\"required\"\r\n class=\"radio-input\"\r\n />\r\n <label\r\n class=\"text-sm text-gray-400\"\r\n >\r\n Not Required\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n <!-- Chk Options Group -->\r\n <div *ngIf=\"prop.type === 'optionsGroup'\" class=\"options-container\">\r\n <div\r\n *ngFor=\"let option of prop.options; let i = index\"\r\n class=\"option-items\"\r\n >\r\n <!-- Option Input -->\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].label\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n class=\"options\"\r\n />\r\n <input\r\n type=\"text\"\r\n [(ngModel)]=\"prop.options[i].value\"\r\n placeholder=\"Value\"\r\n class=\"values\"\r\n />\r\n <!-- Remove Button -->\r\n <div class=\"remove\">\r\n <img src=\"../assets/icons/Trash.svg\" (click)=\"removeOption(prop.options, i)\"></div>\r\n </div>\r\n <!-- Add Button -->\r\n <button\r\n type=\"button\"\r\n class=\"add-btn\"\r\n (click)=\"addOption(prop.options)\"\r\n >\r\n <div class=\"add-varient\">\r\n <span class=\"text-lg\">+</span>\r\n <span>Add Variants</span></div>\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"design-footer\">\r\n <button class=\"btn\">Cancel</button>\r\n <button class=\"btn\" (click)=\"save()\">Save</button>\r\n </div>\r\n</details>\r\n</div>\r\n</div>\r\n</div>\r\n", styles: [".container{position:absolute;right:0;top:0;width:25%}.all-properties{padding:0;margin:-32px -13px 0 0;background-color:#f8fafc;position:relative;top:3px;max-height:549px;overflow-y:auto}.first-properties{padding-top:16px;padding-left:15px}details summary{font-weight:700;color:#1b1b43;cursor:pointer}details[open] summary{padding-bottom:5px;margin-bottom:1rem}label{flex:0 0 120px;color:#b8b8b8;font-size:.875rem;font-weight:500;margin:0;padding:0}input,select{flex:1;background-color:#eaedf1;color:#bebfbf;border-radius:.375rem;padding:.5rem;font-size:.875rem;width:100%;box-sizing:border-box;transition:border-color .2s}input:focus,select:focus{border-color:#1b1b43;outline:none}button{background-color:#eaedf1;color:#6b7280;border:1px solid #D1D5DB;border-radius:.375rem;padding:.5rem;cursor:pointer;transition:all .2s}button:hover{background-color:#e5e7eb}button.selected{background-color:#0b1f34;color:#fff;border-color:#1e90ff}.color-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:50px;height:50px;background-color:transparent;border:none;cursor:pointer}.color-input::-webkit-color-swatch,.color-input::-moz-color-swatch{border-radius:5px;border:none}.inner-content{position:relative;left:30px;width:90%}.label-properties{position:relative;top:-12px;left:-37px}.required-indicator{color:red;margin-left:4px}.toggle-item1{position:relative;left:-74px;width:124px;color:#b8b8b8}.toggle-item2{width:100px;position:relative;top:-44px;left:84px;color:#b8b8b8}.flex-gap-1{display:flex;grid-template-columns:repeat(4,auto)}.help-text,.error-message{font-size:12px;margin-top:4px}.help-text{color:#666}.error-message{color:#ef4444}.read-only{background-color:#f5f5f5;cursor:not-allowed}.font-selection,.font-weight{width:190px}.design-header{padding:17px;background-color:#fff;margin-bottom:2rem}.header-title{font-size:16px;font-weight:500;text-align:center;margin:0 0 20px 5px}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px}.menu-item{flex:1;text-align:center;padding:7px;cursor:pointer;transition:all .3s ease;border-right:2px solid #e9ecef}.menu-item span{color:#656f7b;font-size:1rem}.menu-container{display:flex;justify-content:space-between;max-width:800px;margin:0 auto;background-color:#f8f9fa;border-radius:8px;padding:.5rem}.menu-item{flex:1;text-align:center;padding:m;cursor:pointer;transition:all .3s ease;border-right:1px solid #e9ecef}.menu-item:last-child{border-right:none}.menu-item:hover{background-color:#e9ecef;border-radius:4px}.menu-item span{color:#495057;font-size:1rem}.switch{position:relative;display:inline-block;width:40px;height:24px;right:-20px;margin:0 8px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ccc;transition:.4s;border-radius:24px}.slider:before{position:absolute;content:\"\";height:16px;width:16px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider{background-color:#2196f3}input:checked+.slider:before{transform:translate(16px)}.font-align{display:flex;gap:2px}.align-btn,.style-btn{width:36px;height:36px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;cursor:pointer;transition:all .2s}.align-btn:hover,.style-btn:hover{background:#e5e7eb}.align-btn.active,.style-btn.active{background:#202e3a;color:#fff;border-color:#4b5563}.align-btn.active img,.style-btn.active img{filter:brightness(0) invert(1)}.icon-size{width:16px;height:16px}.button-group{display:flex;gap:4px;padding:4px;background:#f9fafb;border-radius:6px}.field-size-controls{display:flex;flex-direction:row;position:relative;gap:13px;font-family:Arial,sans-serif}.size-group{display:flex;align-items:center}.size-label{font-size:15px;color:#000}.value-container{display:flex;height:43px;align-items:center;background-color:#f5f5f5;border-radius:11px;position:relative;right:74px}.font-style{display:flex;gap:1px}.size-input{font-size:15px;border:none;background:transparent;width:46px;text-align:center;outline:none}.size-input:focus{outline:none}.unit{font-size:13px;width:22px;color:#00000080}.file-upload-container{position:relative;margin-bottom:1rem}.file-upload-container input[type=file]{margin-top:.5rem}.text-font-medium{padding-left:15px;padding-bottom:20px}.options-container{display:flex;flex-direction:column;gap:.5rem}.option-item{display:flex;align-items:center;gap:1rem}.option-items{display:flex;gap:20px}.options{width:69px}.values{width:49px}.remove{width:34px;border-radius:50px;height:35px;background-color:#f7eff0}.remove img{position:relative;top:6px;left:9px}.add-btn{background:none;border:none;font-size:1rem;cursor:pointer;display:flex;align-items:center;width:328px;position:relative;right:123px;background-color:#f1f4f7}.add-btn:hover{color:#3182ce}.text-lg{border:1px solid gray;width:22px;border-radius:5px}.add-varient{display:flex;gap:13px;position:relative;left:101px}input{border:1px solid #ccc;padding:.5rem;border-radius:.25rem;width:100%}.space-y-4{position:relative;left:28px}.flex-items-center{display:flex;position:relative;top:2px;margin-bottom:28px}.input-box-field{width:207px}.text-sm{height:30px}.radio-item{position:relative;left:-5px}.flex-gap{display:flex;gap:18px}.design-footer{display:flex;justify-content:center;gap:30px;background-color:#f1f4f7}.btn{width:110px;color:#fff;margin-top:20px;margin-bottom:20px;background-color:#a5adbc}.btn:hover{background-color:#2196f3;color:#fff}\n"] }]
474
476
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.FormBuilderService }], propDecorators: { colorWheel: [{
475
477
  type: ViewChild,
476
478
  args: ['colorWheel']
477
479
  }], selectedElementType: [{
478
480
  type: Input
481
+ }], api: [{
482
+ type: Input
483
+ }], apiMethod: [{
484
+ type: Input
479
485
  }] } });
480
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRckgsTUFBTSxPQUFPLG1CQUFtQjtJQWlZVjtJQUF5QjtJQWhZN0Msd0JBQXdCO0lBQ0MsVUFBVSxDQUFnQztJQUMzRCxHQUFHLENBQTJCO0lBRXRDLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFFNUIsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbEMsaUNBQWlDO0lBQ3hCLG1CQUFtQixHQUFXLEVBQUUsQ0FBQztJQUMxQyxhQUFhLEdBQVcsWUFBWSxDQUFDLENBQUUsb0JBQW9CO0lBQzNELGNBQWMsR0FBYSxFQUFFLENBQUMsQ0FBRSxvREFBb0Q7SUFDcEYsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUUxQixlQUFlLEdBQVEsSUFBSSxDQUFDLENBQUUsK0JBQStCO0lBSTdELGNBQWMsQ0FBQyxRQUFnQixFQUFFLEtBQVU7UUFDekMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMs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O1FBQ3JDLENBQUMsRUFDRCxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7d0dBcGZVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHdOQ1ZoQyxrOVVBNFRBOzs0RkRsVGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjtnSEFNRCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBT2QsbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVAgMjJKQU4yNVxyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tYnVpbGRlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXByb3BlcnRpZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gc2VsZWN0ZWRFbGVtZW50OiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnY29sb3JXaGVlbCcpIGNvbG9yV2hlZWw6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xyXG4gIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcblxyXG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgc2VsZWN0ZWRFbGVtZW50SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIC8vIEBJbnB1dCgpIHNlbGVjdGVkRWxlbWVudDogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRWxlbWVudFR5cGU6IHN0cmluZyA9ICcnO1xyXG4gIHNlbGVjdGVkQWxpZ246IHN0cmluZyA9ICdhbGlnbi1sZWZ0JzsgIC8vIEFkZCB0aGlzIHByb3BlcnR5XHJcbiAgc2VsZWN0ZWRTdHlsZXM6IHN0cmluZ1tdID0gW107ICAvLyBVc2luZyBhcnJheSBzaW5jZSBtdWx0aXBsZSBzdHlsZXMgY2FuIGJlIHNlbGVjdGVkXHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgc2VsZWN0ZWRFbGVtZW50OiBhbnkgPSBudWxsOyAgLy8gUmVjZWl2ZSB0aGUgc2VsZWN0ZWQgZWxlbWVudFxyXG5cclxuXHJcblxyXG4gIG9uVG9nZ2xlQ2hhbmdlKHByb3BlcnR5OiBzdHJpbmcsIGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgY29uc3QgdXBkYXRlID0geyBbcHJvcGVydHldOiB2YWx1ZSB9O1xyXG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIHVwZGF0ZSk7XHJcblxyXG4gICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGVkIGVsZW1lbnQgZGlyZWN0bHkgZm9yIGltbWVkaWF0ZSBVSSBmZWVkYmFja1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFtwcm9wZXJ0eV0gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB1cGRhdGVQcm9wZXJ0aWVzKGVsZW1lbnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIFJlc2V0IGFsaWdubWVudCBhbmQgc3R5bGVzIGlmIHN3aXRjaGluZyBlbGVtZW50c1xyXG4gICAgdGhpcy5zZWxlY3RlZEFsaWduID0gJ2FsaWduLWxlZnQnO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0eWxlcyA9IFtdO1xyXG5cclxuICAgIC8vIEZldGNoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBlbGVtZW50IHR5cGVcclxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcclxuICAgIGlmIChwcm9wZXJ0aWVzKSB7XHJcbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvcGVydGllcyBhcmUgZHluYW1pY2FsbHkgdXBkYXRlZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BbGlnblNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudGV4dEFsaWduID0gdmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBTZWxlY3RlZCBhbGlnbm1lbnQ6ICR7dmFsdWV9YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb25TdHlsZVNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KSByZXR1cm47XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBzdHlsZXMgYXJyYXkgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGVzID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGVzIHx8IFtdO1xyXG5cclxuICAgIC8vIEVuc3VyZSBvbmx5IG9uZSBzdHlsZSBpcyBzZWxlY3RlZCBhdCBhIHRpbWVcclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyA9IFt2YWx1ZV07XHJcblxyXG4gICAgY29uc29sZS5sb2coJ1VwZGF0ZWQgc3R5bGVzOicsIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyk7XHJcbn1cclxuXHJcblxyXG4gIGlzU3R5bGVBY3RpdmUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5zdHlsZXM/LmluY2x1ZGVzKHZhbHVlKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBlbGVtZW50UHJvcGVydGllcyA9IHtcclxuXHJcbiAgICAgICAgLy8gQWRkIG90aGVyIGVsZW1lbnQgdHlwZXMgaGVyZSBzaW1pbGFybHlcclxuICAgJ1RleHQnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG5cclxuICAgICAgICAvLyBxdWVzdGlvblRleHQgLSBMYWJlbC1mb2xsb3cgYWxsIGVsZW1lbnQgcHJvcGVydGllc1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG5cclxuICAgICAgICAvLyBxdWVzdGlvbiAtIFBsYWNlaG9sZGVyLWZvbGxvdyBhbGwgZWxlbWVudCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgeyBsYWJlbDogJ3BsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0ICcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG5cclxuICAgICAgICAvLyBlcnJvck1lc3NhZ2UgLSBFcnJvciBNc2ctZm9sbG93IGFsbCBlbGVtZW50IHByb3BlcnRpZXNcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0ICcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRm9udCcsIHR5cGU6ICdzZWxlY3QnLCAga2V5OiAnZm9udCcgLFxyXG4gICAgICAgICAgb3B0aW9uczogWydIZWx2ZXRpY2EgTmV1ZScsICdBcmlhbCcsICdUaW1lcyBOZXcgUm9tYW4nLCAnUm9ib3RvJ10gfSxcclxuICAgICAgICB7IGxhYmVsOiAnV2VpZ2h0JywgdHlwZTogJ3NlbGVjdCcsa2V5OiAnZm9udFdlaWdodCcsXHJcbiAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc0MDAnLCBsYWJlbDogJzQwMC1Ob3JtYWwnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc1MDAnLCBsYWJlbDogJzUwMC1NZWRpdW0nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJzYwMC1TZW1pIEJvbGQnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICc3MDAnLCBsYWJlbDogJzcwMC1Cb2xkJyB9XHJcbiAgICAgICAgICBdIH0sXHJcbiAgICAgICAgLy8geyBsYWJlbDogJ1NpemUnLCB1bml0OiAnUFgnLCB0eXBlOiAnbnVtYmVyJywga2V5OiAnc2l6ZScgIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0FsaWduJywgdHlwZTogJ2FsaWduJywga2V5OiAndGV4dEFsaWduJyxcclxuICAgICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2xlZnQnLCBpY29uOiAndGV4dGFsaWduLWxlZnQnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjZW50ZXInLCBpY29uOiAnYWxpZ24tY2VudGVyJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAncmlnaHQnLCBpY29uOiAnYWxpZ24tcmlnaHQnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdqdXN0aWZ5bGVmdCcsIGljb246ICdhbGlnbi1qdXN0aWZ5bGVmdCcgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2p1c3RpZnlyaWdodCcsIGljb246ICdhbGlnbi1qdXN0aWZ5cmlnaHQnIH1cclxuXHJcbiAgICAgICAgICBdIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgdHlwZTogJ3N0eWxlJyxrZXk6ICdzdHlsZXMnLFxyXG5cclxuICAgICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ2l0YWxpYycsIGljb246ICdpdGFsaWMnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdib2xkJywgaWNvbjogJ2JvbGQnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICd1bmRlcmxpbmUnLCBpY29uOiAndW5kZXJsaW5lJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndGV4dGljb24nLCBpY29uOiAndGV4dGljb24nIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjYXBpdGFsaXplJywgaWNvbjogJ2NhcGl0YWxpemUnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdyZXNpemUnLCBpY29uOiAncmVzaXplJyB9XHJcblxyXG5cclxuICAgICAgICAgIF0gfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfVxyXG5cclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAnZGVmYXVsdFZhbHVlJyAgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgICcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICAnQ2hlY2tCb3gnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgJywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0ICcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdDaGsgT3B0aW9ucycsXHJcbiAgICAgICAgICB0eXBlOiAnb3B0aW9uc0dyb3VwJyxcclxuICAgICAgICAgIGtleTogJ2Noa09wdGlvbnMnLFxyXG4gICAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnT3B0aW9uIDEnLCB2YWx1ZTogJycsIHR5cGU6ICd0ZXh0Jywga2V5OiAnb3B0aW9uMScgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBhZGRPcHRpb25MYWJlbDogJ0FkZCBWYXJpYW50JywgLy8gVGV4dCBmb3IgdGhlIHBsdXMgaWNvblxyXG4gICAgICAgICAgaWNvbjogJ3BsdXMnIC8vIEljb24gZm9yIGFkZGluZyBvcHRpb25zXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG5cclxuICAgICdDYWxlbmRhcic6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgJ1RpbWUnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdsYWJlbCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncGxhY2Vob2xkZXInfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgJ0VtYWlsJzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgLCBrZXk6ICdxdWVzdGlvbid9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICAgICdGaWxlJzoge1xyXG4gICAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdxdWVzdGlvbicgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ2hlbHBUZXh0JyB9LFxyXG5cclxuICAgICAgICAgIHsgbGFiZWw6ICdTdXBwb3J0IFR5cGUnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnc3VwcG9ydFR5cGUnLCBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdJbWFnZXMgKEpQRUcsIFBORywgR0lGKScsIHZhbHVlOiAnaW1hZ2UvKicsIGV4dGVuc2lvbnM6IFsnLmpwZycsJy5qcGVnJywnLnBuZycsJy5naWYnXSB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnQXVkaW8gKE1QMywgV0FWLCBBSUZGKScsIHZhbHVlOiAnYXVkaW8vKicsIGV4dGVuc2lvbnM6IFsnLm1wMycsJy53YXYnLCcuYWlmZiddIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdWaWRlbyAoTVA0LCBBVkksIEhFVkMpJywgdmFsdWU6ICd2aWRlby8qJywgZXh0ZW5zaW9uczogWycubXA0JywnLmF2aScsJy5oZXZjJ10gfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0RvY3VtZW50cyAoRE9DLCBET0NYLCBQUFQsIFBERiknLCB2YWx1ZTogJ2FwcGxpY2F0aW9uL3BkZixhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLCBleHRlbnNpb25zOiBbJy5kb2MnLCcuZG9jeCcsJy5wcHQnLCcucGRmJ10gfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0V4ZWN1dGFibGVzIChFWEUsIEJBRCwgU0gpJywgdmFsdWU6ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQsYXBwbGljYXRpb24veC1zaCcsIGV4dGVuc2lvbnM6IFsnLmV4ZScsJy5iYWQnLCcuc2gnXSB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnQXJjaGl2ZXMgKFpJUCwgUkFSLCBHaXQtaHViKScsIHZhbHVlOiAnYXBwbGljYXRpb24vemlwLGFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQsYXBwbGljYXRpb24veC1naXQnLCBleHRlbnNpb25zOiBbJy56aXAnLCcucmFyJywnLmdpdCddIH1cclxuICAgICAgICAgIF19LFxyXG4gICAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAgJ0xpc3QnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSwgJ1RleHRBcmVhJzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgLCBrZXk6ICdxdWVzdGlvbid9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycsIGtleTogJ3JlcXVpcmVkJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdkZWZhdWx0VmFsdWUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSwnTnVtYmVycyc6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LCdEcm9wZG93bic6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ0NoayBPcHRpb25zJyxcclxuICAgICAgICAgIHR5cGU6ICdvcHRpb25zR3JvdXAnLFxyXG4gICAgICAgICAga2V5OiAnY2hrT3B0aW9ucycsXHJcbiAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdPcHRpb24gMScsIHZhbHVlOiAnJywgdHlwZTogJ3RleHQnLCBrZXk6ICdvcHRpb24xJyB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIGFkZE9wdGlvbkxhYmVsOiAnQWRkIFZhcmlhbnQnLCAvLyBUZXh0IGZvciB0aGUgcGx1cyBpY29uXHJcbiAgICAgICAgICBpY29uOiAncGx1cycgLy8gSWNvbiBmb3IgYWRkaW5nIG9wdGlvbnNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG5cclxuICAgICAgXVxyXG4gICAgfSwnSW1hZ2UnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSwnUmFkaW8nOiB7XHJcbiAgZWxlbWVudFByb3BzOiBbXHJcbiAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3F1ZXN0aW9uJyB9LFxyXG4gICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgXSxcclxuICBmaWVsZFByb3BzOiBbXHJcbiAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAge1xyXG4gICAgICBsYWJlbDogJ1JhZGlvIE9wdGlvbnMnLCAvLyBVcGRhdGVkIGxhYmVsIHRvIHJlZmxlY3QgcmFkaW8gY29udGV4dFxyXG4gICAgICB0eXBlOiAnb3B0aW9uc0dyb3VwJyxcclxuICAgICAga2V5OiAncmFkaW9PcHRpb25zJywgLy8gVXBkYXRlZCBrZXkgZm9yIHJhZGlvIGNvbnRleHRcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdPcHRpb24gMScsIHZhbHVlOiAnJywgdHlwZTogJ3RleHQnLCBrZXk6ICdvcHRpb24xJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdPcHRpb24gMicsIHZhbHVlOiAnJywgdHlwZTogJ3RleHQnLCBrZXk6ICdvcHRpb24yJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBhZGRPcHRpb25MYWJlbDogJ0FkZCBPcHRpb24nLCAvLyBVcGRhdGVkIGxhYmVsIGZvciBhZGQgYnV0dG9uXHJcbiAgICAgIGljb246ICdwbHVzJywgLy8gSWNvbiBmb3IgYWRkaW5nIG9wdGlvbnNcclxuICAgIH0sXHJcbiAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgXVxyXG59XHJcbiwnQm9vayc6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LCdCdXR0b24nOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQscHJpdmF0ZSBmb3JtQnVpbGRlclNlcnZpY2U6IEZvcm1CdWlsZGVyU2VydmljZSkge31cclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2VsZWN0ZWRFbGVtZW50JC5zdWJzY3JpYmUoaW5kZXggPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4ID0gaW5kZXg7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBlbGVtZW50OicsIGVsZW1lbnRzKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICh0eXBlID09PSAnbGFiZWwnIHx8IHR5cGUgPT09ICdwbGFjZWhvbGRlcicpIHtcclxuICAgICAgY29uc3QgcmVnZXggPSAvXlthLXpBLVowLTlcXHNdKiQvO1xyXG4gICAgICBpZiAoIXJlZ2V4LnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnT25seSBsZXR0ZXJzIGFuZCBudW1iZXJzIGFyZSBhbGxvd2VkJztcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChrZXkgPT09ICdxdWVzdGlvblRleHQnIHx8IGtleSA9PT0gJ3F1ZXN0aW9uJykge1xyXG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlLCBrZXkpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoa2V5ID09PSAnZm9udFdlaWdodCcpIHtcclxuICAgICAgICAvLyBFeHRyYWN0IGp1c3QgdGhlIG51bWJlciB2YWx1ZSBmcm9tIHRoZSBvcHRpb25cclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCctJylbMF07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGtleSA9PT0gJ3N0eWxlcycpIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50U3R5bGVzID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGVzIHx8IFtdO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2NhcGl0YWxpemUnIHx8IHZhbHVlID09PSAnbG93ZXJjYXNlJykge1xyXG4gICAgICAgICAgLy8gUmVtb3ZlIHRoZSBvcHBvc2l0ZSBjYXNlIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgICAgY29uc3Qgb3Bwb3NpdGVTdHlsZSA9IHZhbHVlID09PSAnY2FwaXRhbGl6ZScgPyAnbG93ZXJjYXNlJyA6ICdjYXBpdGFsaXplJztcclxuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU3R5bGVzID0gY3VycmVudFN0eWxlcy5maWx0ZXIocyA9PiBzICE9PSBvcHBvc2l0ZVN0eWxlKTtcclxuICAgICAgICAgIHZhbHVlID0gY3VycmVudFN0eWxlcy5pbmNsdWRlcyh2YWx1ZSlcclxuICAgICAgICAgICAgPyBmaWx0ZXJlZFN0eWxlcy5maWx0ZXIocyA9PiBzICE9PSB2YWx1ZSlcclxuICAgICAgICAgICAgOiBbLi4uZmlsdGVyZWRTdHlsZXMsIHZhbHVlXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gVG9nZ2xlIG90aGVyIHN0eWxlc1xyXG4gICAgICAgICAgdmFsdWUgPSBjdXJyZW50U3R5bGVzLmluY2x1ZGVzKHZhbHVlKVxyXG4gICAgICAgICAgICA/IGN1cnJlbnRTdHlsZXMuZmlsdGVyKHMgPT4gcyAhPT0gdmFsdWUpXHJcbiAgICAgICAgICAgIDogWy4uLmN1cnJlbnRTdHlsZXMsIHZhbHVlXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgW2tleV06IHZhbHVlIH07XHJcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgdXBkYXRlKTtcclxuXHJcbiAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGZvbnQgYW5kIGZvbnQgd2VpZ2h0XHJcbiAgICAgIGlmIChrZXkgPT09ICdmb250Jykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZvbnQgPSB2YWx1ZTsgLy8gRGlyZWN0bHkgdXBkYXRlIHRoZSBzZWxlY3RlZCBlbGVtZW50J3MgZm9udCBwcm9wZXJ0eVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb25SZXF1aXJlZENoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgYXN0ZXJpc2tzIGZpcnN0XHJcbiAgICAgIGxldCBsYWJlbCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50LmxhYmVsLnJlcGxhY2UoL1xccypcXCorJC8sICcnKTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgbGFiZWwgPSBgJHtsYWJlbH0gKmA7IC8vIEFkZCBzaW5nbGUgYXN0ZXJpc2tcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KCdsYWJlbCcsIGxhYmVsKTtcclxuICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eSgncmVxdWlyZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFByb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzW3RoaXMuc2VsZWN0ZWRFbGVtZW50LnR5cGVdO1xyXG4gIH1cclxuXHJcbiAgLy8gb3BlbkNvbG9yUGlja2VyKHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAvLyAgIC8vIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgYnJvd3NlcidzIG5hdGl2ZSBjb2xvciBwaWNrZXI6XHJcbiAgLy8gICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgLy8gICBpbnB1dC50eXBlID0gJ2NvbG9yJztcclxuICAvLyAgIGlucHV0LnZhbHVlID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRbcHJvcGVydHlLZXldO1xyXG4gIC8vICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGU6IGFueSkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KHByb3BlcnR5S2V5LCBlLnRhcmdldC52YWx1ZSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyAgIGlucHV0LmNsaWNrKCk7XHJcbiAgLy8gfVxyXG4gICAvLyBGdW5jdGlvbiB0byBhZGQgYSBuZXcgb3B0aW9uIHRvIHByb3Agb3B0aW9uc1xyXG4gICBhZGRPcHRpb24ob3B0aW9uczogYW55W10pIHtcclxuICAgIG9wdGlvbnMucHVzaCh7IGxhYmVsOiAnJywgdmFsdWU6ICcnIH0pO1xyXG4gIH1cclxuLy8gRnVuY3Rpb24gdG8gcmVtb3ZlIGFuIG9wdGlvbiBmcm9tIHByb3Agb3B0aW9uc1xyXG5yZW1vdmVPcHRpb24ob3B0aW9uczogYW55W10sIGluZGV4OiBudW1iZXIpIHtcclxuICAgIG9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgZG93bmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnUXVlc3Rpb24gQm9vazonLCB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5kb3dubG9hZEVsZW1lbnQoKSk7XHJcblxyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgY29uc3QgYXBpVVJMID0gJ2h0dHBzOi8vZGV2LWFwaS5yYW5nZXJmdXNpb24uY29tL254dC8nO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpVVJMLCB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5kb3dubG9hZEVsZW1lbnQoKSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2U6JywgcmVzcG9uc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLSBBUCAyMkpBTjI1IC0gRmllbGQgYW5kIEVsZW1lbnQgUHJvcGVydGllcyAtLT5cclxuPCEtLSBwcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGxpbmsgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Sb2JvdG86MzAwLDQwMCw1MDAmZGlzcGxheT1zd2FwXCIgcmVsPVwic3R5bGVzaGVldFwiPlxyXG48IS0tIERlc2lnbiBIZWFkZXIgU2VjdGlvbiAtLT5cclxuPGRpdiBjbGFzcz1cImRlc2lnbi1oZWFkZXJcIj5cclxuICA8aDEgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5FbGVtZW50IFByb3BlcnRpZXM8L2gxPlxyXG4gIDxkaXYgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiIChjbGljayk9XCJkb3dubG9hZCgpXCI+XHJcbiAgICAgIDxzcGFuID5Eb3dubG9hZDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiPlxyXG4gICAgICA8c3Bhbj5TdGFydDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiPlxyXG4gICAgICA8c3Bhbj5QYXRoPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtXCI+XHJcbiAgICAgIDxzcGFuPkNsb25lPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBwcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIC0tPlxyXG48ZGl2IGNsYXNzPVwiYWxsLXByb3BlcnRpZXNcIj5cclxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPCEtLSBFbGVtZW50IFByb3BlcnRpZXMgLS0+XHJcbiAgPGRldGFpbHMgY2xhc3M9XCJmaXJzdC1wcm9wZXJ0aWVzXCIgb3Blbj5cclxuICAgIDxzdW1tYXJ5IGNsYXNzPVwidGV4dC1zbSBcIj5FbGVtZW50cyBQcm9wZXJ0aWVzPC9zdW1tYXJ5PlxyXG4gICAgPGRpdiBjbGFzcz1cImlubmVyLWNvbnRlbnRcIiAqbmdJZj1cImdldFByb3BlcnRpZXMoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGdldFByb3BlcnRpZXMoKS5lbGVtZW50UHJvcHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1wcm9wZXJ0aWVzXCI+XHJcbiAgICAgICAgICAgIDwhLS0gVGV4dCBJbnB1dCAtLT5cclxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwidXBkYXRlUHJvcGVydHkocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJlYWQtb25seV09XCJzZWxlY3RlZEVsZW1lbnQucmVhZE9ubHlcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwic2VsZWN0ZWRFbGVtZW50LnJlYWRPbmx5XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtMSBcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2hlbHBUZXh0JyAmJiBzZWxlY3RlZEVsZW1lbnQuaGVscFRleHRcIiBjbGFzcz1cImhlbHAtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIHt7IHNlbGVjdGVkRWxlbWVudC5oZWxwVGV4dCB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICA8IS0tIEZvbnQgU2VsZWN0aW9uIC0tPlxyXG48ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmb250J1wiIGNsYXNzPVwiZm9udC1zZWxlY3Rpb25cIj5cclxuICA8IS0tIDxsYWJlbD57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD4gLS0+XHJcbiAgPHNlbGVjdFxyXG4gICpuZ0lmPVwicHJvcC50eXBlID09PSAnc2VsZWN0JyAmJiBwcm9wLmtleSA9PT0gJ2ZvbnQnXCJcclxuICAgIGNsYXNzPVwiZm9udC1zZWxlY3Rpb24xXCJcclxuICAgIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnQ/LmZvbnRcIlxyXG4gICAgKGNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eSgnZm9udCcsICRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbiAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxyXG4gICAgICB7eyBvcHRpb24gfX1cclxuICAgIDwvb3B0aW9uPlxyXG4gIDwvc2VsZWN0PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gZmlsZSAtLT5cclxuPCEtLSBBZGQgdGhpcyBpbnNpZGUgdGhlIGVsZW1lbnRQcm9wcyBsb29wIHdoZXJlIG90aGVyIGlucHV0cyBhcmUgcmVuZGVyZWQgLS0+XHJcbjxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnICYmIHByb3Aua2V5ID09PSAnc3VwcG9ydFR5cGUnXCJcclxuIGNsYXNzPVwiZmlsZSBcIlxyXG5bdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXHJcbihjaGFuZ2UpPVwidXBkYXRlUHJvcGVydHkocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbjxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgZmlsZSBjYXRlZ29yeTwvb3B0aW9uPlxyXG48b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxyXG57eyBvcHRpb24ubGFiZWwgfX1cclxuPC9vcHRpb24+XHJcbjwvc2VsZWN0PlxyXG5cclxuPCEtLSBGb250IFdlaWdodCBTZWxlY3Rpb24gLS0+XHJcbjxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2ZvbnRXZWlnaHQnXCIgY2xhc3M9XCJmb250LXdlaWdodFwiPlxyXG4gIDwhLS0gPGxhYmVsPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPiAtLT5cclxuICA8c2VsZWN0XHJcbiAgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnICYmIHByb3Aua2V5ID09PSAnZm9udFdlaWdodCdcIlxyXG4gICAgY2xhc3M9XCJmb250LXdlaWdodDEgXCJcclxuICAgIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnQ/LmZvbnRXZWlnaHRcIlxyXG4gICAgKGNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eSgnZm9udFdlaWdodCcsICRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbiAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxyXG4gICAgICB7eyBvcHRpb24ubGFiZWwgfX1cclxuICAgIDwvb3B0aW9uPlxyXG4gIDwvc2VsZWN0PlxyXG48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTnVtYmVyIElucHV0IHdpdGggVW5pdCAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ251bWJlcidcIiBjbGFzcz1cInNpemUtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1pbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVByb3BlcnR5KHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgIFttaW5dPVwicHJvcC5taW4gfHwgMVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXhdPVwicHJvcC5tYXggfHwgOTk5OTk5XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLXZhbHVlXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpemUtdW5pdFwiPnt7IHByb3AudW5pdCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgIDwhLS0gVG9nZ2xlIEdyb3VwIC0tPlxyXG48IS0tIFRvZ2dsZSBHcm91cCAtLT5cclxuPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3RvZ2dsZUdyb3VwJ1wiIGNsYXNzPVwidG9nZ2xlLWdyb3VwXCI+XHJcbjxkaXYgY2xhc3M9XCJ0b2dnbGUtaXRlbTFcIj5cclxuICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPlJlYWQgT25seTwvc3Bhbj5cclxuICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2hcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQ/LnJlYWRPbmx5XCJcclxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZUNoYW5nZSgncmVhZE9ubHknLCAkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNsaWRlclwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJ0b2dnbGUtaXRlbTJcIj5cclxuICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPklzIEhpZGU8L3NwYW4+XHJcbiAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50Py5pc0hpZGVcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlQ2hhbmdlKCdpc0hpZGUnLCAkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNsaWRlclwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRleHQgQWxpZ24gQnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2FsaWduJ1wiY2xhc3M9XCJmb250LWFsaWduXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWxpZ25TZWxlY3Qob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkRWxlbWVudD8udGV4dEFsaWduID09PSBvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cIicuLi9hc3NldHMvaWNvbnMvJyArIG9wdGlvbi5pY29uICsgJy5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdzaXplJ1wiIGNsYXNzPVwic2l6ZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbD57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVByb3BlcnR5KHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplLXVuaXRcIj57eyBwcm9wLnVuaXQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdHlsZSdcIiAgY2xhc3M9XCJmb250LXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3R5bGVTZWxlY3Qob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImlzU3R5bGVBY3RpdmUob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0eWxlLWJ0blwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiJy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb24gKyAnLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1zaXplXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuPCEtLSBGaWVsZCBTaXplIENvbnRyb2xzIC0tPlxyXG48ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmaWVsZFNpemUnXCIgY2xhc3M9XCJmaWVsZC1zaXplLWNvbnRyb2xzXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNpemUtZ3JvdXBcIj5cclxuICAgIDxsYWJlbCAgY2xhc3M9XCJzaXplLWxhYmVsXCI+V2lkdGg8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py53aWR0aFwiXHJcbiAgICAgIChpbnB1dCk9XCJ1cGRhdGVQcm9wZXJ0eSgnd2lkdGgnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgIGNsYXNzPVwic2l6ZS1pbnB1dFwiXHJcblxyXG4gICAgLz5cclxuICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPlBYPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmaWVsZFNpemUnXCIgY2xhc3M9XCJmaWVsZC1zaXplLWNvbnRyb2xzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2l6ZS1ncm91cFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzaXplLWxhYmVsXCI+SGVpZ2h0PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5oZWlnaHRcIlxyXG4gICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVByb3BlcnR5KCdoZWlnaHQnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICBjbGFzcz1cInNpemUtaW5wdXRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+UFg8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2RldGFpbHM+XHJcblxyXG4gIDwhLS0gRmllbGQgRWxlbWVudHMgUHJvcGVydGllcyAtLT5cclxuPGRldGFpbHMgY2xhc3M9XCJzZWNvbmQtcHJvcGVydHlcIj5cclxuICA8c3VtbWFyeSBjbGFzcz1cInRleHQtZm9udC1tZWRpdW1cIj5GaWVsZCBFbGVtZW50cyBQcm9wZXJ0aWVzPC9zdW1tYXJ5PlxyXG4gIDxkaXYgY2xhc3M9XCJzcGFjZS15LTRcIiAqbmdJZj1cImdldFByb3BlcnRpZXMoKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCkuZmllbGRQcm9wc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3gtZmllbGRcIj5cclxuICAgICAgICAgIDwhLS0gSW5wdXQgQm94IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1pbnB1dFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSBSYWRpbyBHcm91cCAtLT5cclxuPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3JhZGlvJ1wiIGNsYXNzPVwicmFkaW8taXRlbVwiPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaXplc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ2FwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1pdGVtc1wiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50LnJlcXVpcmVkXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblJlcXVpcmVkQ2hhbmdlKHRydWUpXCJcclxuICAgICAgbmFtZT1cInJlcXVpcmVkXCJcclxuICAgICAgY2xhc3M9XCJyYWRpby1pbnB1dFwiXHJcbiAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cInRleHQtbGFiZWxcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVxdWlyZWRcclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtaXRlbXNcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgIFtjaGVja2VkXT1cIiFzZWxlY3RlZEVsZW1lbnQucmVxdWlyZWRcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uUmVxdWlyZWRDaGFuZ2UoZmFsc2UpXCJcclxuICAgICAgbmFtZT1cInJlcXVpcmVkXCJcclxuICAgICAgY2xhc3M9XCJyYWRpby1pbnB1dFwiXHJcbiAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTQwMFwiXHJcbiAgICAgID5cclxuICAgICAgICBOb3QgUmVxdWlyZWRcclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbiA8IS0tIENoayBPcHRpb25zIEdyb3VwIC0tPlxyXG4gPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ29wdGlvbnNHcm91cCdcIiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgPGRpdlxyXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgY2xhc3M9XCJvcHRpb24taXRlbXNcIlxyXG4gID5cclxuICAgIDwhLS0gT3B0aW9uIElucHV0IC0tPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwcm9wLm9wdGlvbnNbaV0ubGFiZWxcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbiB7eyBpICsgMSB9fVwiXHJcbiAgICAgIGNsYXNzPVwib3B0aW9uc1wiXHJcbiAgICAvPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwcm9wLm9wdGlvbnNbaV0udmFsdWVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcclxuICAgICAgY2xhc3M9XCJ2YWx1ZXNcIlxyXG4gICAgLz5cclxuICAgIDwhLS0gUmVtb3ZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJyZW1vdmVcIj5cclxuICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ljb25zL1RyYXNoLnN2Z1wiIChjbGljayk9XCJyZW1vdmVPcHRpb24ocHJvcC5vcHRpb25zLCBpKVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gQWRkIEJ1dHRvbiAtLT5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiYWRkLWJ0blwiXHJcbiAgICAoY2xpY2spPVwiYWRkT3B0aW9uKHByb3Aub3B0aW9ucylcIlxyXG4gID5cclxuICA8ZGl2IGNsYXNzPVwiYWRkLXZhcmllbnRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sZ1wiPis8L3NwYW4+XHJcbiAgICA8c3Bhbj5BZGQgVmFyaWFudHM8L3NwYW4+PC9kaXY+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkZXNpZ24tZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kZXRhaWxzPlxyXG48L2Rpdj5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
486
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRckgsTUFBTSxPQUFPLG1CQUFtQjtJQW1ZVjtJQUF5QjtJQWxZN0Msd0JBQXdCO0lBQ0MsVUFBVSxDQUFnQztJQUMzRCxHQUFHLENBQTJCO0lBRXRDLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFFNUIsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbEMsaUNBQWlDO0lBQ3hCLG1CQUFtQixHQUFXLEVBQUUsQ0FBQztJQUNqQyxHQUFHLEdBQVcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDcEMsYUFBYSxHQUFXLFlBQVksQ0FBQyxDQUFFLG9CQUFvQjtJQUMzRCxjQUFjLEdBQWEsRUFBRSxDQUFDLENBQUUsb0RBQW9EO0lBQ3BGLFlBQVksR0FBVyxFQUFFLENBQUM7SUFFMUIsZUFBZSxHQUFRLElBQUksQ0FBQyxDQUFFLCtCQUErQjtJQUk3RCxjQUFjLENBQUMsUUFBZ0IsRUFBRSxLQUFVO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV6RSxpRUFBaUU7WUFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUNsQyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFFekIsb0RBQW9EO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsbURBQW1EO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFHRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBRWxDLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFaEUsOENBQThDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHQyxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDaEUsQ0FBQztJQUdELGlCQUFpQixHQUFHO1FBRWQseUNBQXlDO1FBQzlDLE1BQU0sRUFBRTtZQUNMLFlBQVksRUFBRTtnQkFFWixxREFBcUQ7Z0JBQ3JELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRTtnQkFFaEYsdURBQXVEO2dCQUN2RCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUM7Z0JBQ2xGLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDaEYsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBRWxDLHlEQUF5RDtnQkFDekQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNoRixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRyxHQUFHLEVBQUUsTUFBTTtvQkFDM0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNyRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxHQUFHLEVBQUUsWUFBWTtvQkFDakQsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO3dCQUNyQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTt3QkFDckMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7d0JBQ3hDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO3FCQUNwQyxFQUFFO2dCQUNMLCtEQUErRDtnQkFDL0QsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVc7b0JBQy9DLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO3dCQUN6QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTt3QkFDekMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7d0JBQ3ZDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7d0JBQ25ELEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7cUJBRXRELEVBQUU7Z0JBQ0wsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVE7b0JBRTNDLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDbkMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7d0JBQy9CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO3dCQUN6QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTt3QkFDdkMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7d0JBQzNDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUdwQyxFQUFFO2dCQUNILEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7YUFFL0Q7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFHO2dCQUN6RixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3BFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDakU7U0FDRjtRQUNELFVBQVUsRUFBRTtZQUNWLFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUU7Z0JBQ2hGLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUcsR0FBRyxFQUFFLFVBQVUsRUFBQztnQkFDcEYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNoRixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2hGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FO29CQUNFLEtBQUssRUFBRSxhQUFhO29CQUNwQixJQUFJLEVBQUUsY0FBYztvQkFDcEIsR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7cUJBQy9EO29CQUNELGNBQWMsRUFBRSxhQUFhLEVBQUUseUJBQXlCO29CQUN4RCxJQUFJLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtpQkFDeEM7Z0JBQ0QsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQy9EO1NBQ0Y7UUFFRCxVQUFVLEVBQUU7WUFDVixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUM7Z0JBQ25GLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7Z0JBQzVELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTthQUNoRjtZQUNELFVBQVUsRUFBRTtnQkFDVixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2dCQUMxQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNuRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3BFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDL0Q7U0FDRjtRQUNELE1BQU0sRUFBRTtZQUNOLFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUU7Z0JBQ3hFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUcsR0FBRyxFQUFFLGFBQWEsRUFBQztnQkFDdEYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2hGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDcEUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTthQUMvRDtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsWUFBWSxFQUFFO2dCQUNaLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRyxHQUFHLEVBQUUsVUFBVSxFQUFDO2dCQUNuRixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUNsQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO2dCQUM1RCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7YUFDaEY7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDbkUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQy9EO1NBQ0Y7UUFDQyxNQUFNLEVBQUU7WUFDTixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO2dCQUNoRixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQ25GLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFFaEYsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUU7d0JBQ3BFLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ2xHLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxPQUFPLENBQUMsRUFBRTt3QkFDMUYsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxRixFQUFFLEtBQUssRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsMElBQTBJLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQzNPLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLEtBQUssRUFBRSwyQ0FBMkMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUM5SCxFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxLQUFLLEVBQUUsZ0VBQWdFLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxNQUFNLENBQUMsRUFBRTtxQkFDdkosRUFBQztnQkFDRixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2pGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDcEUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTthQUMvRDtTQUNGO1FBQ0QsTUFBTSxFQUFFO1lBQ1IsWUFBWSxFQUFFO2dCQUNaLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRyxHQUFHLEVBQUUsVUFBVSxFQUFDO2dCQUNuRixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUNsQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO2dCQUM1RCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7YUFDaEY7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDbkUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQy9EO1NBQ0YsRUFBRSxVQUFVLEVBQUU7WUFDYixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUM7Z0JBQ25GLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7Z0JBQzVELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTthQUNoRjtZQUNELFVBQVUsRUFBRTtnQkFDVixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRTtnQkFDeEYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQy9EO1NBQ0YsRUFBQyxTQUFTLEVBQUU7WUFDWCxZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUM7Z0JBQ25GLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7Z0JBQzVELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTthQUNoRjtZQUNELFVBQVUsRUFBRTtnQkFDVixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2dCQUMxQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNuRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3BFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDL0Q7U0FDRixFQUFDLFVBQVUsRUFBRTtZQUNaLFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUcsR0FBRyxFQUFFLFVBQVUsRUFBQztnQkFDbkYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2hGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FO29CQUNFLEtBQUssRUFBRSxhQUFhO29CQUNwQixJQUFJLEVBQUUsY0FBYztvQkFDcEIsR0FBRyxFQUFFLFlBQVk7b0JBQ2pCLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7cUJBQy9EO29CQUNELGNBQWMsRUFBRSxhQUFhLEVBQUUseUJBQXlCO29CQUN4RCxJQUFJLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtpQkFDeEM7Z0JBQ0QsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBRS9EO1NBQ0YsRUFBQyxPQUFPLEVBQUU7WUFDVCxZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsY0FBYyxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFHLEdBQUcsRUFBRSxVQUFVLEVBQUM7Z0JBQ25GLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7Z0JBQzVELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTthQUNoRjtZQUNELFVBQVUsRUFBRTtnQkFDVixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2dCQUMxQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNuRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3BFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDL0Q7U0FDRixFQUFDLE9BQU8sRUFBRTtZQUNiLFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUU7Z0JBQ2hGLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtnQkFDbkYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNoRixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2pGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FO29CQUNFLEtBQUssRUFBRSxlQUFlLEVBQUUseUNBQXlDO29CQUNqRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsR0FBRyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0M7b0JBQ3JELE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7d0JBQzlELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtxQkFDL0Q7b0JBQ0QsY0FBYyxFQUFFLFlBQVksRUFBRSwrQkFBK0I7b0JBQzdELElBQUksRUFBRSxNQUFNLEVBQUUsMEJBQTBCO2lCQUN6QztnQkFDRCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3BFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzNELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7YUFDL0Q7U0FDRjtRQUNBLE1BQU0sRUFBRTtZQUNILFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUcsR0FBRyxFQUFFLFVBQVUsRUFBQztnQkFDbkYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUMvRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtnQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2FBQ2hGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ25FLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDcEUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTthQUMvRDtTQUNGLEVBQUMsUUFBUSxFQUFFO1lBQ1YsWUFBWSxFQUFFO2dCQUNaLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRyxHQUFHLEVBQUUsVUFBVSxFQUFDO2dCQUNuRixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7Z0JBQy9FLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUNsQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO2dCQUM1RCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUU7YUFDaEY7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDMUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDbkUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQy9EO1NBQ0Y7S0FDRixDQUFDO0lBRUYsWUFBb0IsSUFBZ0IsRUFBUyxrQkFBc0M7UUFBL0QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFTLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFBRyxDQUFDO0lBR3ZGLFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDbEMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQ3ZDLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDL0MsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxzQ0FBc0MsQ0FBQztnQkFDM0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNwQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEdBQUcsS0FBSyxjQUFjLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksR0FBRyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN6QixnREFBZ0Q7Z0JBQ2hELEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUN4RCxJQUFJLEtBQUssS0FBSyxZQUFZLElBQUksS0FBSyxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNwRCx3Q0FBd0M7b0JBQ3hDLE1BQU0sYUFBYSxHQUFHLEtBQUssS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO29CQUMxRSxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO29CQUN0RSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7d0JBQ25DLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixzQkFBc0I7b0JBQ3RCLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQzt3QkFDbkMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO3dCQUN4QyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFekUsNENBQTRDO1lBQzVDLElBQUksR0FBRyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyx1REFBdUQ7WUFDNUYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsS0FBYztRQUM3QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixzQ0FBc0M7WUFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLEtBQUssR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsc0JBQXNCO1lBQzlDLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsNkRBQTZEO0lBQzdELG1EQUFtRDtJQUNuRCwwQkFBMEI7SUFDMUIscURBQXFEO0lBQ3JELG1EQUFtRDtJQUNuRCx3REFBd0Q7SUFDeEQsUUFBUTtJQUNSLG1CQUFtQjtJQUNuQixJQUFJO0lBQ0gsK0NBQStDO0lBQy9DLFNBQVMsQ0FBQyxPQUFjO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDSCxpREFBaUQ7SUFDakQsWUFBWSxDQUFDLE9BQWMsRUFBRSxLQUFhO1FBQ3RDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUUzRSxDQUFDO0lBQ0QsSUFBSTtRQUNGLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUN0RyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQyxFQUNELENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzt3R0F0ZlUsbUJBQW1COzRGQUFuQixtQkFBbUIsNFBDVmhDLDAzVUF3VEE7OzRGRDlTYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO2dIQU1ELFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFPZCxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBUCAyMkpBTjI1XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvcGVydGllcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnRpZXMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvLyBzZWxlY3RlZEVsZW1lbnQ6IGFueTtcclxuICBAVmlld0NoaWxkKCdjb2xvcldoZWVsJykgY29sb3JXaGVlbDogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XHJcbiAgcHJpdmF0ZSBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcclxuXHJcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZyA9ICcnO1xyXG5cclxuICBzZWxlY3RlZEVsZW1lbnRJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgLy8gQElucHV0KCkgc2VsZWN0ZWRFbGVtZW50OiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRFbGVtZW50VHlwZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYXBpOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBhcGlNZXRob2Q6IHN0cmluZyA9ICdQT1NUJztcclxuICBzZWxlY3RlZEFsaWduOiBzdHJpbmcgPSAnYWxpZ24tbGVmdCc7ICAvLyBBZGQgdGhpcyBwcm9wZXJ0eVxyXG4gIHNlbGVjdGVkU3R5bGVzOiBzdHJpbmdbXSA9IFtdOyAgLy8gVXNpbmcgYXJyYXkgc2luY2UgbXVsdGlwbGUgc3R5bGVzIGNhbiBiZSBzZWxlY3RlZFxyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIHNlbGVjdGVkRWxlbWVudDogYW55ID0gbnVsbDsgIC8vIFJlY2VpdmUgdGhlIHNlbGVjdGVkIGVsZW1lbnRcclxuXHJcblxyXG5cclxuICBvblRvZ2dsZUNoYW5nZShwcm9wZXJ0eTogc3RyaW5nLCBldmVudDogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgW3Byb3BlcnR5XTogdmFsdWUgfTtcclxuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB1cGRhdGUpO1xyXG5cclxuICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBlbGVtZW50IGRpcmVjdGx5IGZvciBpbW1lZGlhdGUgVUkgZmVlZGJhY2tcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbcHJvcGVydHldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgdXBkYXRlUHJvcGVydGllcyhlbGVtZW50VHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBSZXNldCBhbGlnbm1lbnQgYW5kIHN0eWxlcyBpZiBzd2l0Y2hpbmcgZWxlbWVudHNcclxuICAgIHRoaXMuc2VsZWN0ZWRBbGlnbiA9ICdhbGlnbi1sZWZ0JztcclxuICAgIHRoaXMuc2VsZWN0ZWRTdHlsZXMgPSBbXTtcclxuXHJcbiAgICAvLyBGZXRjaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudCB0eXBlXHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICBpZiAocHJvcGVydGllcykge1xyXG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIHByb3BlcnRpZXMgYXJlIGR5bmFtaWNhbGx5IHVwZGF0ZWRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWxpZ25TZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnRleHRBbGlnbiA9IHZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyhgU2VsZWN0ZWQgYWxpZ25tZW50OiAke3ZhbHVlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uU3R5bGVTZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgc3R5bGVzIGFycmF5IGlmIGl0IGRvZXNuJ3QgZXhpc3RcclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyB8fCBbXTtcclxuXHJcbiAgICAvLyBFbnN1cmUgb25seSBvbmUgc3R5bGUgaXMgc2VsZWN0ZWQgYXQgYSB0aW1lXHJcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zdHlsZXMgPSBbdmFsdWVdO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIHN0eWxlczonLCB0aGlzLnNlbGVjdGVkRWxlbWVudC5zdHlsZXMpO1xyXG59XHJcblxyXG5cclxuICBpc1N0eWxlQWN0aXZlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uc3R5bGVzPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgZWxlbWVudFByb3BlcnRpZXMgPSB7XHJcblxyXG4gICAgICAgIC8vIEFkZCBvdGhlciBlbGVtZW50IHR5cGVzIGhlcmUgc2ltaWxhcmx5XHJcbiAgICdUZXh0Jzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuXHJcbiAgICAgICAgLy8gcXVlc3Rpb25UZXh0IC0gTGFiZWwtZm9sbG93IGFsbCBlbGVtZW50IHByb3BlcnRpZXNcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgJywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuXHJcbiAgICAgICAgLy8gcXVlc3Rpb24gLSBQbGFjZWhvbGRlci1mb2xsb3cgYWxsIGVsZW1lbnQgcHJvcGVydGllc1xyXG4gICAgICAgIHsgbGFiZWw6ICdwbGFjZWhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuXHJcbiAgICAgICAgLy8gZXJyb3JNZXNzYWdlIC0gRXJyb3IgTXNnLWZvbGxvdyBhbGwgZWxlbWVudCBwcm9wZXJ0aWVzXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZvbnQnLCB0eXBlOiAnc2VsZWN0JywgIGtleTogJ2ZvbnQnICxcclxuICAgICAgICAgIG9wdGlvbnM6IFsnSGVsdmV0aWNhIE5ldWUnLCAnQXJpYWwnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1JvYm90byddIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1dlaWdodCcsIHR5cGU6ICdzZWxlY3QnLGtleTogJ2ZvbnRXZWlnaHQnLFxyXG4gICAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IHZhbHVlOiAnNDAwJywgbGFiZWw6ICc0MDAtTm9ybWFsJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnNTAwJywgbGFiZWw6ICc1MDAtTWVkaXVtJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnNjAwJywgbGFiZWw6ICc2MDAtU2VtaSBCb2xkJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnNzAwJywgbGFiZWw6ICc3MDAtQm9sZCcgfVxyXG4gICAgICAgICAgXSB9LFxyXG4gICAgICAgIC8vIHsgbGFiZWw6ICdTaXplJywgdW5pdDogJ1BYJywgdHlwZTogJ251bWJlcicsIGtleTogJ3NpemUnICB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdBbGlnbicsIHR5cGU6ICdhbGlnbicsIGtleTogJ3RleHRBbGlnbicsXHJcbiAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdsZWZ0JywgaWNvbjogJ3RleHRhbGlnbi1sZWZ0JyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2VudGVyJywgaWNvbjogJ2FsaWduLWNlbnRlcicgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3JpZ2h0JywgaWNvbjogJ2FsaWduLXJpZ2h0JyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnanVzdGlmeWxlZnQnLCBpY29uOiAnYWxpZ24tanVzdGlmeWxlZnQnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdqdXN0aWZ5cmlnaHQnLCBpY29uOiAnYWxpZ24tanVzdGlmeXJpZ2h0JyB9XHJcblxyXG4gICAgICAgICAgXSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHR5cGU6ICdzdHlsZScsa2V5OiAnc3R5bGVzJyxcclxuXHJcbiAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6ICdpdGFsaWMnLCBpY29uOiAnaXRhbGljJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnYm9sZCcsIGljb246ICdib2xkJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAndW5kZXJsaW5lJywgaWNvbjogJ3VuZGVybGluZScgfSxcclxuICAgICAgICAgICAgeyB2YWx1ZTogJ3RleHRpY29uJywgaWNvbjogJ3RleHRpY29uJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAnY2FwaXRhbGl6ZScsIGljb246ICdjYXBpdGFsaXplJyB9LFxyXG4gICAgICAgICAgICB7IHZhbHVlOiAncmVzaXplJywgaWNvbjogJ3Jlc2l6ZScgfVxyXG5cclxuXHJcbiAgICAgICAgICBdIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH1cclxuXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgJywgdHlwZTogJ3RleHQnLGtleTogJ2RlZmF1bHRWYWx1ZScgIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0ICAnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgJ0NoZWNrQm94Jzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgJywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0ICcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnQ2hrIE9wdGlvbnMnLFxyXG4gICAgICAgICAgdHlwZTogJ29wdGlvbnNHcm91cCcsXHJcbiAgICAgICAgICBrZXk6ICdjaGtPcHRpb25zJyxcclxuICAgICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ09wdGlvbiAxJywgdmFsdWU6ICcnLCB0eXBlOiAndGV4dCcsIGtleTogJ29wdGlvbjEnIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgYWRkT3B0aW9uTGFiZWw6ICdBZGQgVmFyaWFudCcsIC8vIFRleHQgZm9yIHRoZSBwbHVzIGljb25cclxuICAgICAgICAgIGljb246ICdwbHVzJyAvLyBJY29uIGZvciBhZGRpbmcgb3B0aW9uc1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSxcclxuXHJcbiAgICAnQ2FsZW5kYXInOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgICdUaW1lJzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnbGFiZWwnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3BsYWNlaG9sZGVyJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgICdFbWFpbCc6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAgICAnRmlsZSc6IHtcclxuICAgICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAncXVlc3Rpb24nIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdoZWxwVGV4dCcgfSxcclxuXHJcbiAgICAgICAgICB7IGxhYmVsOiAnU3VwcG9ydCBUeXBlJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ3N1cHBvcnRUeXBlJywgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnSW1hZ2VzIChKUEVHLCBQTkcsIEdJRiknLCB2YWx1ZTogJ2ltYWdlLyonLCBleHRlbnNpb25zOiBbJy5qcGcnLCcuanBlZycsJy5wbmcnLCcuZ2lmJ10gfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0F1ZGlvIChNUDMsIFdBViwgQUlGRiknLCB2YWx1ZTogJ2F1ZGlvLyonLCBleHRlbnNpb25zOiBbJy5tcDMnLCcud2F2JywnLmFpZmYnXSB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnVmlkZW8gKE1QNCwgQVZJLCBIRVZDKScsIHZhbHVlOiAndmlkZW8vKicsIGV4dGVuc2lvbnM6IFsnLm1wNCcsJy5hdmknLCcuaGV2YyddIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdEb2N1bWVudHMgKERPQywgRE9DWCwgUFBULCBQREYpJywgdmFsdWU6ICdhcHBsaWNhdGlvbi9wZGYsYXBwbGljYXRpb24vbXN3b3JkLGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50LGFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywgZXh0ZW5zaW9uczogWycuZG9jJywnLmRvY3gnLCcucHB0JywnLnBkZiddIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdFeGVjdXRhYmxlcyAoRVhFLCBCQUQsIFNIKScsIHZhbHVlOiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkLGFwcGxpY2F0aW9uL3gtc2gnLCBleHRlbnNpb25zOiBbJy5leGUnLCcuYmFkJywnLnNoJ10gfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ0FyY2hpdmVzIChaSVAsIFJBUiwgR2l0LWh1YiknLCB2YWx1ZTogJ2FwcGxpY2F0aW9uL3ppcCxhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkLGFwcGxpY2F0aW9uL3gtZ2l0JywgZXh0ZW5zaW9uczogWycuemlwJywnLnJhcicsJy5naXQnXSB9XHJcbiAgICAgICAgICBdfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgICdMaXN0Jzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgLCBrZXk6ICdxdWVzdGlvbid9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sICdUZXh0QXJlYSc6IHtcclxuICAgICAgZWxlbWVudFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ3F1ZXN0aW9uVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnICwga2V5OiAncXVlc3Rpb24nfSxcclxuICAgICAgICB7IGxhYmVsOiAnSGVscCBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICcnLCB0eXBlOiAndG9nZ2xlR3JvdXAnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnZmllbGRTaXplJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnZXJyb3JNc2cnIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpZWxkUHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgUmVxdWlyZWQnLCB0eXBlOiAncmFkaW8nLCBrZXk6ICdyZXF1aXJlZCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAnZGVmYXVsdFZhbHVlJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sJ051bWJlcnMnOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSwnRHJvcGRvd24nOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdDaGsgT3B0aW9ucycsXHJcbiAgICAgICAgICB0eXBlOiAnb3B0aW9uc0dyb3VwJyxcclxuICAgICAgICAgIGtleTogJ2Noa09wdGlvbnMnLFxyXG4gICAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnT3B0aW9uIDEnLCB2YWx1ZTogJycsIHR5cGU6ICd0ZXh0Jywga2V5OiAnb3B0aW9uMScgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBhZGRPcHRpb25MYWJlbDogJ0FkZCBWYXJpYW50JywgLy8gVGV4dCBmb3IgdGhlIHBsdXMgaWNvblxyXG4gICAgICAgICAgaWNvbjogJ3BsdXMnIC8vIEljb24gZm9yIGFkZGluZyBvcHRpb25zXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnU3ViIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuXHJcbiAgICAgIF1cclxuICAgIH0sJ0ltYWdlJzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgLCBrZXk6ICdxdWVzdGlvbid9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sJ1JhZGlvJzoge1xyXG4gIGVsZW1lbnRQcm9wczogW1xyXG4gICAgeyBsYWJlbDogJ0xhYmVsJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICB7IGxhYmVsOiAnUGxhY2UgSG9sZGVyJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLCBrZXk6ICdxdWVzdGlvbicgfSxcclxuICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ2hlbHBUZXh0JyB9LFxyXG4gICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgIHsgbGFiZWw6ICdFcnJvciBNc2cnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gIF0sXHJcbiAgZmllbGRQcm9wczogW1xyXG4gICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgeyBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgIHtcclxuICAgICAgbGFiZWw6ICdSYWRpbyBPcHRpb25zJywgLy8gVXBkYXRlZCBsYWJlbCB0byByZWZsZWN0IHJhZGlvIGNvbnRleHRcclxuICAgICAgdHlwZTogJ29wdGlvbnNHcm91cCcsXHJcbiAgICAgIGtleTogJ3JhZGlvT3B0aW9ucycsIC8vIFVwZGF0ZWQga2V5IGZvciByYWRpbyBjb250ZXh0XHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnT3B0aW9uIDEnLCB2YWx1ZTogJycsIHR5cGU6ICd0ZXh0Jywga2V5OiAnb3B0aW9uMScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnT3B0aW9uIDInLCB2YWx1ZTogJycsIHR5cGU6ICd0ZXh0Jywga2V5OiAnb3B0aW9uMicgfSxcclxuICAgICAgXSxcclxuICAgICAgYWRkT3B0aW9uTGFiZWw6ICdBZGQgT3B0aW9uJywgLy8gVXBkYXRlZCBsYWJlbCBmb3IgYWRkIGJ1dHRvblxyXG4gICAgICBpY29uOiAncGx1cycsIC8vIEljb24gZm9yIGFkZGluZyBvcHRpb25zXHJcbiAgICB9LFxyXG4gICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICB7IGxhYmVsOiAnU3R5bGUnLCBwbGFjZWhvbGRlcjogJ1N0eWxlIEpTT04nLCB0eXBlOiAndGV4dCcgfSxcclxuICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gIF1cclxufVxyXG4sJ0Jvb2snOiB7XHJcbiAgICAgIGVsZW1lbnRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdxdWVzdGlvblRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1BsYWNlIEhvbGRlcicsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyAsIGtleTogJ3F1ZXN0aW9uJ30sXHJcbiAgICAgICAgeyBsYWJlbDogJ0hlbHAgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdoZWxwVGV4dCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgdHlwZTogJ3RvZ2dsZUdyb3VwJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ2ZpZWxkU2l6ZScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRXJyb3IgTXNnJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnLGtleTogJ2Vycm9yTXNnJyB9LFxyXG4gICAgICBdLFxyXG4gICAgICBmaWVsZFByb3BzOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFJlcXVpcmVkJywgdHlwZTogJ3JhZGlvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdEZWZhdWx0IFZhbHVlJywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N0eWxlJywgcGxhY2Vob2xkZXI6ICdTdHlsZSBKU09OJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1N1YiBUZXh0JywgcGxhY2Vob2xkZXI6ICdFbnRlciBUZXh0JywgdHlwZTogJ3RleHQnIH1cclxuICAgICAgXVxyXG4gICAgfSwnQnV0dG9uJzoge1xyXG4gICAgICBlbGVtZW50UHJvcHM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAncXVlc3Rpb25UZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdQbGFjZSBIb2xkZXInLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcgLCBrZXk6ICdxdWVzdGlvbid9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdIZWxwIFRleHQnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsa2V5OiAnaGVscFRleHQnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIHR5cGU6ICd0b2dnbGVHcm91cCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdmaWVsZFNpemUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0Vycm9yIE1zZycsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyxrZXk6ICdlcnJvck1zZycgfSxcclxuICAgICAgXSxcclxuICAgICAgZmllbGRQcm9wczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBSZXF1aXJlZCcsIHR5cGU6ICdyYWRpbycgfSxcclxuICAgICAgICB7IGxhYmVsOiAnRGVmYXVsdCBWYWx1ZScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdSZWZlcmVuY2UnLCBwbGFjZWhvbGRlcjogJ1JlZmVyZW5jZSBGaWVsZCcsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdHlsZScsIHBsYWNlaG9sZGVyOiAnU3R5bGUgSlNPTicsIHR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdTdWIgVGV4dCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0JyB9XHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LHByaXZhdGUgZm9ybUJ1aWxkZXJTZXJ2aWNlOiBGb3JtQnVpbGRlclNlcnZpY2UpIHt9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnNlbGVjdGVkRWxlbWVudCQuc3Vic2NyaWJlKGluZGV4ID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0RWxlbWVudHMoKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgZWxlbWVudDonLCBlbGVtZW50cyk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBlbGVtZW50c1tpbmRleF07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlSW5wdXQodmFsdWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2xhYmVsJyB8fCB0eXBlID09PSAncGxhY2Vob2xkZXInKSB7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aMC05XFxzXSokLztcclxuICAgICAgaWYgKCFyZWdleC50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ09ubHkgbGV0dGVycyBhbmQgbnVtYmVycyBhcmUgYWxsb3dlZCc7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAoa2V5ID09PSAncXVlc3Rpb25UZXh0JyB8fCBrZXkgPT09ICdxdWVzdGlvbicpIHtcclxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVJbnB1dCh2YWx1ZSwga2V5KSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGtleSA9PT0gJ2ZvbnRXZWlnaHQnKSB7XHJcbiAgICAgICAgLy8gRXh0cmFjdCBqdXN0IHRoZSBudW1iZXIgdmFsdWUgZnJvbSB0aGUgb3B0aW9uXHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdCgnLScpWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT09ICdzdHlsZXMnKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFN0eWxlcyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyB8fCBbXTtcclxuICAgICAgICBpZiAodmFsdWUgPT09ICdjYXBpdGFsaXplJyB8fCB2YWx1ZSA9PT0gJ2xvd2VyY2FzZScpIHtcclxuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgb3Bwb3NpdGUgY2FzZSBpZiBpdCBleGlzdHNcclxuICAgICAgICAgIGNvbnN0IG9wcG9zaXRlU3R5bGUgPSB2YWx1ZSA9PT0gJ2NhcGl0YWxpemUnID8gJ2xvd2VyY2FzZScgOiAnY2FwaXRhbGl6ZSc7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFN0eWxlcyA9IGN1cnJlbnRTdHlsZXMuZmlsdGVyKHMgPT4gcyAhPT0gb3Bwb3NpdGVTdHlsZSk7XHJcbiAgICAgICAgICB2YWx1ZSA9IGN1cnJlbnRTdHlsZXMuaW5jbHVkZXModmFsdWUpXHJcbiAgICAgICAgICAgID8gZmlsdGVyZWRTdHlsZXMuZmlsdGVyKHMgPT4gcyAhPT0gdmFsdWUpXHJcbiAgICAgICAgICAgIDogWy4uLmZpbHRlcmVkU3R5bGVzLCB2YWx1ZV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFRvZ2dsZSBvdGhlciBzdHlsZXNcclxuICAgICAgICAgIHZhbHVlID0gY3VycmVudFN0eWxlcy5pbmNsdWRlcyh2YWx1ZSlcclxuICAgICAgICAgICAgPyBjdXJyZW50U3R5bGVzLmZpbHRlcihzID0+IHMgIT09IHZhbHVlKVxyXG4gICAgICAgICAgICA6IFsuLi5jdXJyZW50U3R5bGVzLCB2YWx1ZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB1cGRhdGUgPSB7IFtrZXldOiB2YWx1ZSB9O1xyXG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIHVwZGF0ZSk7XHJcblxyXG4gICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBmb250IGFuZCBmb250IHdlaWdodFxyXG4gICAgICBpZiAoa2V5ID09PSAnZm9udCcpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5mb250ID0gdmFsdWU7IC8vIERpcmVjdGx5IHVwZGF0ZSB0aGUgc2VsZWN0ZWQgZWxlbWVudCdzIGZvbnQgcHJvcGVydHlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uUmVxdWlyZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFzdGVyaXNrcyBmaXJzdFxyXG4gICAgICBsZXQgbGFiZWwgPSB0aGlzLnNlbGVjdGVkRWxlbWVudC5sYWJlbC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIGxhYmVsID0gYCR7bGFiZWx9ICpgOyAvLyBBZGQgc2luZ2xlIGFzdGVyaXNrXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eSgnbGFiZWwnLCBsYWJlbCk7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRWxlbWVudCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllc1t0aGlzLnNlbGVjdGVkRWxlbWVudC50eXBlXTtcclxuICB9XHJcblxyXG4gIC8vIG9wZW5Db2xvclBpY2tlcihwcm9wZXJ0eUtleTogc3RyaW5nKSB7XHJcbiAgLy8gICAvLyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJyb3dzZXIncyBuYXRpdmUgY29sb3IgcGlja2VyOlxyXG4gIC8vICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgaW5wdXQudHlwZSA9ICdjb2xvcic7XHJcbiAgLy8gICBpbnB1dC52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50W3Byb3BlcnR5S2V5XTtcclxuICAvLyAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eShwcm9wZXJ0eUtleSwgZS50YXJnZXQudmFsdWUpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBpbnB1dC5jbGljaygpO1xyXG4gIC8vIH1cclxuICAgLy8gRnVuY3Rpb24gdG8gYWRkIGEgbmV3IG9wdGlvbiB0byBwcm9wIG9wdGlvbnNcclxuICAgYWRkT3B0aW9uKG9wdGlvbnM6IGFueVtdKSB7XHJcbiAgICBvcHRpb25zLnB1c2goeyBsYWJlbDogJycsIHZhbHVlOiAnJyB9KTtcclxuICB9XHJcbi8vIEZ1bmN0aW9uIHRvIHJlbW92ZSBhbiBvcHRpb24gZnJvbSBwcm9wIG9wdGlvbnNcclxucmVtb3ZlT3B0aW9uKG9wdGlvbnM6IGFueVtdLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBvcHRpb25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgY29uc29sZS5sb2coJ1F1ZXN0aW9uIEJvb2s6JywgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZG93bmxvYWRFbGVtZW50KCkpO1xyXG5cclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIC8vIGNvbnN0IGFwaVVSTCA9ICdodHRwczovL2Rldi1hcGkucmFuZ2VyZnVzaW9uLmNvbS9ueHQvJztcclxuICAgIHRoaXMuaHR0cC5yZXF1ZXN0KHRoaXMuYXBpTWV0aG9kLCB0aGlzLmFwaSwgeyBib2R5OiB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5kb3dubG9hZEVsZW1lbnQgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2U6JywgcmVzcG9uc2UpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLSBBUCAyMkpBTjI1IC0gRmllbGQgYW5kIEVsZW1lbnQgUHJvcGVydGllcyAtLT5cclxuPCEtLSBwcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGxpbmsgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Sb2JvdG86MzAwLDQwMCw1MDAmZGlzcGxheT1zd2FwXCIgcmVsPVwic3R5bGVzaGVldFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9wZXJ0aWVzXCI+XHJcbjwhLS0gRGVzaWduIEhlYWRlciBTZWN0aW9uIC0tPlxyXG48ZGl2IGNsYXNzPVwiZGVzaWduLWhlYWRlclwiPlxyXG4gIDxoMSBjbGFzcz1cImhlYWRlci10aXRsZVwiPkVsZW1lbnQgUHJvcGVydGllczwvaDE+XHJcbiAgPGRpdiBjbGFzcz1cIm1lbnUtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtXCIgKGNsaWNrKT1cImRvd25sb2FkKClcIj5cclxuICAgICAgPHNwYW4gPkRvd25sb2FkPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtXCI+XHJcbiAgICAgIDxzcGFuPlN0YXJ0PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtXCI+XHJcbiAgICAgIDxzcGFuPlBhdGg8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIj5cclxuICAgICAgPHNwYW4+Q2xvbmU8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIHByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwgLS0+XHJcbjxkaXYgY2xhc3M9XCJhbGwtcHJvcGVydGllc1wiPlxyXG4gIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8IS0tIEVsZW1lbnQgUHJvcGVydGllcyAtLT5cclxuICA8ZGV0YWlscyBjbGFzcz1cImZpcnN0LXByb3BlcnRpZXNcIiBvcGVuPlxyXG4gICAgPHN1bW1hcnkgY2xhc3M9XCJ0ZXh0LXNtIFwiPkVsZW1lbnRzIFByb3BlcnRpZXM8L3N1bW1hcnk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItY29udGVudFwiICpuZ0lmPVwiZ2V0UHJvcGVydGllcygpXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3Agb2YgZ2V0UHJvcGVydGllcygpLmVsZW1lbnRQcm9wc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXByb3BlcnRpZXNcIj5cclxuICAgICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3AucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJ1cGRhdGVQcm9wZXJ0eShwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxyXG4gICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudC5yZWFkT25seVwiXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQucmVhZE9ubHlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc20xIFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnaGVscFRleHQnICYmIHNlbGVjdGVkRWxlbWVudC5oZWxwVGV4dFwiIGNsYXNzPVwiaGVscC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0ZWRFbGVtZW50LmhlbHBUZXh0IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgIDwhLS0gRm9udCBTZWxlY3Rpb24gLS0+XHJcbjxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2ZvbnQnXCIgY2xhc3M9XCJmb250LXNlbGVjdGlvblwiPlxyXG4gIDwhLS0gPGxhYmVsPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPiAtLT5cclxuICA8c2VsZWN0XHJcbiAgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnICYmIHByb3Aua2V5ID09PSAnZm9udCdcIlxyXG4gICAgY2xhc3M9XCJmb250LXNlbGVjdGlvbjFcIlxyXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudD8uZm9udFwiXHJcbiAgICAoY2hhbmdlKT1cInVwZGF0ZVByb3BlcnR5KCdmb250JywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cclxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XHJcbiAgICAgIHt7IG9wdGlvbiB9fVxyXG4gICAgPC9vcHRpb24+XHJcbiAgPC9zZWxlY3Q+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBmaWxlIC0tPlxyXG48IS0tIEFkZCB0aGlzIGluc2lkZSB0aGUgZWxlbWVudFByb3BzIGxvb3Agd2hlcmUgb3RoZXIgaW5wdXRzIGFyZSByZW5kZXJlZCAtLT5cclxuPHNlbGVjdCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3NlbGVjdCcgJiYgcHJvcC5rZXkgPT09ICdzdXBwb3J0VHlwZSdcIlxyXG4gY2xhc3M9XCJmaWxlIFwiXHJcblt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldXCJcclxuKGNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eShwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cclxuPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBmaWxlIGNhdGVnb3J5PC9vcHRpb24+XHJcbjxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XHJcbnt7IG9wdGlvbi5sYWJlbCB9fVxyXG48L29wdGlvbj5cclxuPC9zZWxlY3Q+XHJcblxyXG48IS0tIEZvbnQgV2VpZ2h0IFNlbGVjdGlvbiAtLT5cclxuPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnZm9udFdlaWdodCdcIiBjbGFzcz1cImZvbnQtd2VpZ2h0XCI+XHJcbiAgPCEtLSA8bGFiZWw+e3sgcHJvcC5sYWJlbCB9fTwvbGFiZWw+IC0tPlxyXG4gIDxzZWxlY3RcclxuICAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3NlbGVjdCcgJiYgcHJvcC5rZXkgPT09ICdmb250V2VpZ2h0J1wiXHJcbiAgICBjbGFzcz1cImZvbnQtd2VpZ2h0MSBcIlxyXG4gICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudD8uZm9udFdlaWdodFwiXHJcbiAgICAoY2hhbmdlKT1cInVwZGF0ZVByb3BlcnR5KCdmb250V2VpZ2h0JywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cclxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgPC9vcHRpb24+XHJcbiAgPC9zZWxlY3Q+XHJcbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgd2l0aCBVbml0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnbnVtYmVyJ1wiIGNsYXNzPVwic2l6ZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwidXBkYXRlUHJvcGVydHkocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgW21pbl09XCJwcm9wLm1pbiB8fCAxXCJcclxuICAgICAgICAgICAgICAgICAgW21heF09XCJwcm9wLm1heCB8fCA5OTk5OTlcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2l6ZS11bml0XCI+e3sgcHJvcC51bml0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgPCEtLSBUb2dnbGUgR3JvdXAgLS0+XHJcbjwhLS0gVG9nZ2xlIEdyb3VwIC0tPlxyXG48ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAndG9nZ2xlR3JvdXAnXCIgY2xhc3M9XCJ0b2dnbGUtZ3JvdXBcIj5cclxuPGRpdiBjbGFzcz1cInRvZ2dsZS1pdGVtMVwiPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+UmVhZCBPbmx5PC9zcGFuPlxyXG4gIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgPGlucHV0ICB0eXBlPVwiY2hlY2tib3hcIi8+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNsaWRlclwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJ0b2dnbGUtaXRlbTJcIj5cclxuICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPklzIEhpZGU8L3NwYW4+XHJcbiAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50Py5pc0hpZGVcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlQ2hhbmdlKCdpc0hpZGUnLCAkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNsaWRlclwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRleHQgQWxpZ24gQnV0dG9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2FsaWduJ1wiY2xhc3M9XCJmb250LWFsaWduXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWxpZ25TZWxlY3Qob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkRWxlbWVudD8udGV4dEFsaWduID09PSBvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGlnbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cIicuLi9hc3NldHMvaWNvbnMvJyArIG9wdGlvbi5pY29uICsgJy5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJvcHRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdzaXplJ1wiIGNsYXNzPVwic2l6ZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbD57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVByb3BlcnR5KHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplLXVuaXRcIj57eyBwcm9wLnVuaXQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdHlsZSdcIiAgY2xhc3M9XCJmb250LXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3R5bGVTZWxlY3Qob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImlzU3R5bGVBY3RpdmUob3B0aW9uLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0eWxlLWJ0blwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiJy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb24gKyAnLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1zaXplXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuPCEtLSBGaWVsZCBTaXplIENvbnRyb2xzIC0tPlxyXG48ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmaWVsZFNpemUnXCIgY2xhc3M9XCJmaWVsZC1zaXplLWNvbnRyb2xzXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNpemUtZ3JvdXBcIj5cclxuICAgIDxsYWJlbCAgY2xhc3M9XCJzaXplLWxhYmVsXCI+V2lkdGg8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py53aWR0aFwiXHJcbiAgICAgIChpbnB1dCk9XCJ1cGRhdGVQcm9wZXJ0eSgnd2lkdGgnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgIGNsYXNzPVwic2l6ZS1pbnB1dFwiXHJcblxyXG4gICAgLz5cclxuICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPlBYPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmaWVsZFNpemUnXCIgY2xhc3M9XCJmaWVsZC1zaXplLWNvbnRyb2xzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2l6ZS1ncm91cFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzaXplLWxhYmVsXCI+SGVpZ2h0PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5oZWlnaHRcIlxyXG4gICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVByb3BlcnR5KCdoZWlnaHQnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICBjbGFzcz1cInNpemUtaW5wdXRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+UFg8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2RldGFpbHM+XHJcblxyXG4gIDwhLS0gRmllbGQgRWxlbWVudHMgUHJvcGVydGllcyAtLT5cclxuPGRldGFpbHMgY2xhc3M9XCJzZWNvbmQtcHJvcGVydHlcIj5cclxuICA8c3VtbWFyeSBjbGFzcz1cInRleHQtZm9udC1tZWRpdW1cIj5GaWVsZCBFbGVtZW50cyBQcm9wZXJ0aWVzPC9zdW1tYXJ5PlxyXG4gIDxkaXYgY2xhc3M9XCJzcGFjZS15LTRcIiAqbmdJZj1cImdldFByb3BlcnRpZXMoKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCkuZmllbGRQcm9wc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3gtZmllbGRcIj5cclxuICAgICAgICAgIDwhLS0gSW5wdXQgQm94IC0tPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmaWVsZC1pbnB1dFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPCEtLSBSYWRpbyBHcm91cCAtLT5cclxuPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3JhZGlvJ1wiIGNsYXNzPVwicmFkaW8taXRlbVwiPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaXplc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ2FwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1pdGVtc1wiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50LnJlcXVpcmVkXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblJlcXVpcmVkQ2hhbmdlKHRydWUpXCJcclxuICAgICAgbmFtZT1cInJlcXVpcmVkXCJcclxuICAgICAgY2xhc3M9XCJyYWRpby1pbnB1dFwiXHJcbiAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cInRleHQtbGFiZWxcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUmVxdWlyZWRcclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtaXRlbXNcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgIFtjaGVja2VkXT1cIiFzZWxlY3RlZEVsZW1lbnQucmVxdWlyZWRcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uUmVxdWlyZWRDaGFuZ2UoZmFsc2UpXCJcclxuICAgICAgbmFtZT1cInJlcXVpcmVkXCJcclxuICAgICAgY2xhc3M9XCJyYWRpby1pbnB1dFwiXHJcbiAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTQwMFwiXHJcbiAgICAgID5cclxuICAgICAgICBOb3QgUmVxdWlyZWRcclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbiA8IS0tIENoayBPcHRpb25zIEdyb3VwIC0tPlxyXG4gPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ29wdGlvbnNHcm91cCdcIiBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgPGRpdlxyXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgY2xhc3M9XCJvcHRpb24taXRlbXNcIlxyXG4gID5cclxuICAgIDwhLS0gT3B0aW9uIElucHV0IC0tPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwcm9wLm9wdGlvbnNbaV0ubGFiZWxcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbiB7eyBpICsgMSB9fVwiXHJcbiAgICAgIGNsYXNzPVwib3B0aW9uc1wiXHJcbiAgICAvPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwcm9wLm9wdGlvbnNbaV0udmFsdWVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlZhbHVlXCJcclxuICAgICAgY2xhc3M9XCJ2YWx1ZXNcIlxyXG4gICAgLz5cclxuICAgIDwhLS0gUmVtb3ZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJyZW1vdmVcIj5cclxuICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ljb25zL1RyYXNoLnN2Z1wiIChjbGljayk9XCJyZW1vdmVPcHRpb24ocHJvcC5vcHRpb25zLCBpKVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gQWRkIEJ1dHRvbiAtLT5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiYWRkLWJ0blwiXHJcbiAgICAoY2xpY2spPVwiYWRkT3B0aW9uKHByb3Aub3B0aW9ucylcIlxyXG4gID5cclxuICA8ZGl2IGNsYXNzPVwiYWRkLXZhcmllbnRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sZ1wiPis8L3NwYW4+XHJcbiAgICA8c3Bhbj5BZGQgVmFyaWFudHM8L3NwYW4+PC9kaXY+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkZXNpZ24tZm9vdGVyXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInNhdmUoKVwiPlNhdmU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kZXRhaWxzPlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=