@pega/angular-sdk-components 0.23.5 → 0.24.1

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.
Files changed (46) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +14 -2
  2. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
  3. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +6 -3
  4. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -5
  5. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +2 -2
  6. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +107 -42
  7. package/esm2022/lib/_components/field/group/group.component.mjs +6 -3
  8. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +311 -0
  9. package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
  10. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +3 -3
  11. package/esm2022/lib/_components/field/time/time.component.mjs +5 -3
  12. package/esm2022/lib/_components/field/url/url.component.mjs +5 -3
  13. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +6 -6
  14. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
  15. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +6 -3
  16. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +33 -4
  17. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +8 -3
  18. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +23 -25
  19. package/esm2022/lib/_components/template/list-view/utils.mjs +5 -3
  20. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +2 -2
  21. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +41 -12
  22. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -3
  23. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +7 -3
  24. package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
  25. package/esm2022/lib/_helpers/utils.mjs +2 -2
  26. package/fesm2022/pega-angular-sdk-components.mjs +782 -114
  27. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  28. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  29. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
  30. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
  31. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
  32. package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
  33. package/lib/_components/field/multiselect/multiselect.component.d.ts +64 -0
  34. package/lib/_components/field/multiselect/utils.d.ts +8 -0
  35. package/lib/_components/field/time/time.component.d.ts +1 -0
  36. package/lib/_components/field/url/url.component.d.ts +1 -0
  37. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -0
  38. package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
  39. package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
  40. package/lib/_components/template/list-view/list-view.component.d.ts +0 -2
  41. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +2 -0
  42. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +2 -0
  43. package/lib/_components/widget/attachment/attachment.component.d.ts +4 -0
  44. package/lib/_helpers/instructions-utils.d.ts +4 -0
  45. package/lib/doc/KeyReleaseUpdates.md +63 -0
  46. package/package.json +1 -1
@@ -33,17 +33,19 @@ export class OperatorComponent {
33
33
  }
34
34
  updateSelf() {
35
35
  const configProps$ = this.pConn$.getConfigProps();
36
- if (configProps$?.label?.toLowerCase() == 'create operator') {
36
+ this.displayLabel = this.displayLabel?.toLowerCase();
37
+ const label = configProps$?.label?.toLowerCase();
38
+ if (label === 'create operator' || this.displayLabel === 'create operator') {
37
39
  this.name$ = configProps$.createOperator.userName;
38
40
  this.id$ = configProps$.createOperator.userId;
39
41
  this.label$ = configProps$.createLabel;
40
42
  }
41
- else if (configProps$?.label?.toLowerCase() == 'update operator') {
43
+ else if (label === 'update operator' || this.displayLabel === 'update operator') {
42
44
  this.name$ = configProps$.updateOperator.userName;
43
45
  this.id$ = configProps$.updateOperator.userId;
44
46
  this.label$ = configProps$.updateLabel;
45
47
  }
46
- else if (configProps$?.label?.toLowerCase() == 'resolve operator') {
48
+ else if (label === 'resolve operator' || this.displayLabel === 'resolve operator') {
47
49
  this.name$ = configProps$.resolveOperator.userName;
48
50
  this.id$ = configProps$.resolveOperator.userId;
49
51
  this.label$ = configProps$.resolveLabel;
@@ -125,12 +127,14 @@ export class OperatorComponent {
125
127
  });
126
128
  }
127
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OperatorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OperatorComponent, isStandalone: true, selector: "app-operator", inputs: { pConn$: "pConn$" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-operator psdk-double\">\n <div class=\"psdk-label\">\n {{ label$ }}\n </div>\n <div class=\"psdk-double\">\n <button mat-button color=\"primary\" style=\"text-decoration: underline\" (click)=\"showOperator()\">{{ name$ }}</button>\n </div>\n <div>{{ date$ }}</div>\n</div>\n\n<div>\n <div *ngIf=\"bShowPopover$\" class=\"psdk-operator-popover\">\n <dl>\n <div *ngFor=\"let field of fields$; let i = index\">\n <dt class=\"psdk-operator-name\">{{ field.name }}</dt>\n <dd class=\"psdk-operator-value\">{{ field.value }}</dd>\n </div>\n </dl>\n </div>\n</div>\n", styles: [".psdk-operator{display:flex;flex-direction:row;font-size:.8rem;color:var(--app-neutral-color);align-items:center}.psdk-operator-popover{display:table;margin:auto;min-width:100px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color);position:absolute;z-index:99}.psdk-operator-name{color:var(--app-neutral-color)}.psdk-operator-value{padding-left:5px;color:var(--app-neutral-dark-color);margin:0}.psdk-single{flex:1}.psdk-double{column-gap:1rem;text-align:center}.psdk-top-pad{padding-top:10px}dl{display:grid;grid-template-columns:auto 1fr;grid-column-gap:1rem;grid-row-gap:.5rem}dl:before,dl:after{box-sizing:border-box;margin:0;padding:0}dt{max-width:20ch;grid-column-start:1}dd{max-width:75ch;grid-column-start:2}.mat-mdc-button.mat-primary,.mat-mdc-icon-button.mat-primary,.mat-mdc-outlined-button.mat-primary{padding:0;line-height:unset}.psdk-label{word-break:break-word;grid-column-start:1;max-width:max-content;color:var(--app-field-header-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OperatorComponent, isStandalone: true, selector: "app-operator", inputs: { pConn$: "pConn$", displayLabel: "displayLabel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-operator psdk-double\">\n <div class=\"psdk-label\">\n {{ label$ }}\n </div>\n <div class=\"psdk-double\">\n <button mat-button color=\"primary\" style=\"text-decoration: underline\" (click)=\"showOperator()\">{{ name$ }}</button>\n </div>\n <div>{{ date$ }}</div>\n</div>\n\n<div>\n <div *ngIf=\"bShowPopover$\" class=\"psdk-operator-popover\">\n <dl>\n <div *ngFor=\"let field of fields$; let i = index\">\n <dt class=\"psdk-operator-name\">{{ field.name }}</dt>\n <dd class=\"psdk-operator-value\">{{ field.value }}</dd>\n </div>\n </dl>\n </div>\n</div>\n", styles: [".psdk-operator{display:flex;flex-direction:row;font-size:.8rem;color:var(--app-neutral-color);align-items:center}.psdk-operator-popover{display:table;margin:auto;min-width:100px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color);position:absolute;z-index:99}.psdk-operator-name{color:var(--app-neutral-color)}.psdk-operator-value{padding-left:5px;color:var(--app-neutral-dark-color);margin:0}.psdk-single{flex:1}.psdk-double{column-gap:1rem;text-align:center}.psdk-top-pad{padding-top:10px}dl{display:grid;grid-template-columns:auto 1fr;grid-column-gap:1rem;grid-row-gap:.5rem}dl:before,dl:after{box-sizing:border-box;margin:0;padding:0}dt{max-width:20ch;grid-column-start:1}dd{max-width:75ch;grid-column-start:2}.mat-mdc-button.mat-primary,.mat-mdc-icon-button.mat-primary,.mat-mdc-outlined-button.mat-primary{padding:0;line-height:unset}.psdk-label{word-break:break-word;grid-column-start:1;max-width:max-content;color:var(--app-field-header-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] }); }
129
131
  }
130
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OperatorComponent, decorators: [{
131
133
  type: Component,
132
134
  args: [{ selector: 'app-operator', standalone: true, imports: [CommonModule, MatButtonModule], template: "<div class=\"psdk-operator psdk-double\">\n <div class=\"psdk-label\">\n {{ label$ }}\n </div>\n <div class=\"psdk-double\">\n <button mat-button color=\"primary\" style=\"text-decoration: underline\" (click)=\"showOperator()\">{{ name$ }}</button>\n </div>\n <div>{{ date$ }}</div>\n</div>\n\n<div>\n <div *ngIf=\"bShowPopover$\" class=\"psdk-operator-popover\">\n <dl>\n <div *ngFor=\"let field of fields$; let i = index\">\n <dt class=\"psdk-operator-name\">{{ field.name }}</dt>\n <dd class=\"psdk-operator-value\">{{ field.value }}</dd>\n </div>\n </dl>\n </div>\n</div>\n", styles: [".psdk-operator{display:flex;flex-direction:row;font-size:.8rem;color:var(--app-neutral-color);align-items:center}.psdk-operator-popover{display:table;margin:auto;min-width:100px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color);position:absolute;z-index:99}.psdk-operator-name{color:var(--app-neutral-color)}.psdk-operator-value{padding-left:5px;color:var(--app-neutral-dark-color);margin:0}.psdk-single{flex:1}.psdk-double{column-gap:1rem;text-align:center}.psdk-top-pad{padding-top:10px}dl{display:grid;grid-template-columns:auto 1fr;grid-column-gap:1rem;grid-row-gap:.5rem}dl:before,dl:after{box-sizing:border-box;margin:0;padding:0}dt{max-width:20ch;grid-column-start:1}dd{max-width:75ch;grid-column-start:2}.mat-mdc-button.mat-primary,.mat-mdc-icon-button.mat-primary,.mat-mdc-outlined-button.mat-primary{padding:0;line-height:unset}.psdk-label{word-break:break-word;grid-column-start:1;max-width:max-content;color:var(--app-field-header-color)}\n"] }]
133
135
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.Utils }]; }, propDecorators: { pConn$: [{
134
136
  type: Input
137
+ }], displayLabel: [{
138
+ type: Input
135
139
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2Rlc2lnblN5c3RlbUV4dGVuc2lvbi9vcGVyYXRvci9vcGVyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZGVzaWduU3lzdGVtRXh0ZW5zaW9uL29wZXJhdG9yL29wZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBcUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLGlCQUFpQjtJQVM1QixZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixLQUF3QixFQUN4QixLQUFZO1FBSFosT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVZ0QixZQUFPLEdBQVUsRUFBRSxDQUFDO0lBV2pCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhFLElBQUksQ0FBQyxhQUFhLEVBQUU7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VlksWUFBWSwrUEFBRSxlQUFlOzs0RkFFNUIsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDOzZLQUcvQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSW5wdXQsIFJlbmRlcmVyMiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtb3BlcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vb3BlcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcGVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE9wZXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIGZpZWxkcyQ6IGFueVtdID0gW107XG4gIGJTaG93UG9wb3ZlciQ6IGJvb2xlYW47XG4gIGRhdGUkOiBzdHJpbmc7XG4gIG5hbWUkOiBzdHJpbmc7XG4gIGxhYmVsJDogc3RyaW5nO1xuICBpZCQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnY2xpY2snLCBlbCA9PiB7XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGVsLnRhcmdldCk7XG5cbiAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICB0aGlzLmJTaG93UG9wb3ZlciQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYlNob3dQb3BvdmVyJCA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgcENvbm4kIH0gPSBjaGFuZ2VzO1xuICAgIGlmIChwQ29ubiQucHJldmlvdXNWYWx1ZSAhPT0gcENvbm4kLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5kZXN0cm95KCk7XG4gIH1cblxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgYW55O1xuICAgIGlmIChjb25maWdQcm9wcyQ/LmxhYmVsPy50b0xvd2VyQ2FzZSgpID09ICdjcmVhdGUgb3BlcmF0b3InKSB7XG4gICAgICB0aGlzLm5hbWUkID0gY29uZmlnUHJvcHMkLmNyZWF0ZU9wZXJhdG9yLnVzZXJOYW1lO1xuICAgICAgdGhpcy5pZCQgPSBjb25maWdQcm9wcyQuY3JlYXRlT3BlcmF0b3IudXNlcklkO1xuICAgICAgdGhpcy5sYWJlbCQgPSBjb25maWdQcm9wcyQuY3JlYXRlTGFiZWw7XG4gICAgfSBlbHNlIGlmIChjb25maWdQcm9wcyQ/LmxhYmVsPy50b0xvd2VyQ2FzZSgpID09ICd1cGRhdGUgb3BlcmF0b3InKSB7XG4gICAgICB0aGlzLm5hbWUkID0gY29uZmlnUHJvcHMkLnVwZGF0ZU9wZXJhdG9yLnVzZXJOYW1lO1xuICAgICAgdGhpcy5pZCQgPSBjb25maWdQcm9wcyQudXBkYXRlT3BlcmF0b3IudXNlcklkO1xuICAgICAgdGhpcy5sYWJlbCQgPSBjb25maWdQcm9wcyQudXBkYXRlTGFiZWw7XG4gICAgfSBlbHNlIGlmIChjb25maWdQcm9wcyQ/LmxhYmVsPy50b0xvd2VyQ2FzZSgpID09ICdyZXNvbHZlIG9wZXJhdG9yJykge1xuICAgICAgdGhpcy5uYW1lJCA9IGNvbmZpZ1Byb3BzJC5yZXNvbHZlT3BlcmF0b3IudXNlck5hbWU7XG4gICAgICB0aGlzLmlkJCA9IGNvbmZpZ1Byb3BzJC5yZXNvbHZlT3BlcmF0b3IudXNlcklkO1xuICAgICAgdGhpcy5sYWJlbCQgPSBjb25maWdQcm9wcyQucmVzb2x2ZUxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWUkID0gY29uZmlnUHJvcHMkPy52YWx1ZS51c2VyTmFtZTtcbiAgICAgIHRoaXMuaWQkID0gY29uZmlnUHJvcHMkPy52YWx1ZS51c2VySWQ7XG4gICAgICB0aGlzLmxhYmVsJCA9IGNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgICB9XG4gICAgdGhpcy5kYXRlJCA9IHRoaXMudXRpbHMuZ2VuZXJhdGVEYXRlKGNvbmZpZ1Byb3BzJD8udXBkYXRlRGF0ZVRpbWUsICdEYXRlVGltZS1TaW5jZScpO1xuICB9XG5cbiAgc2hvd09wZXJhdG9yKCkge1xuICAgIGNvbnN0IG9wZXJhdG9yUHJldmlld1Byb21pc2UgPSBQQ29yZS5nZXRVc2VyQXBpKCkuZ2V0T3BlcmF0b3JEZXRhaWxzKHRoaXMuaWQkKTtcbiAgICBjb25zdCBsb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICAgIGNvbnN0IGxvY2FsZUNhdGVnb3J5ID0gJ09wZXJhdG9yJztcbiAgICBjb25zdCBmaWxsZXJTdHJpbmcgPSAnLS0tJztcblxuICAgIG9wZXJhdG9yUHJldmlld1Byb21pc2UudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YS5weU9wZXJhdG9ySW5mbyAmJiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVVzZXJOYW1lKSB7XG4gICAgICAgIHRoaXMuZmllbGRzJCA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5UG9zaXRpb24nLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdQb3NpdGlvbicsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVBvc2l0aW9uICE9ICcnID8gcmVzLmRhdGEucHlPcGVyYXRvckluZm8ucHlQb3NpdGlvbiA6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweU9yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbGl6ZWRWYWwoJ09yZ2FuaXphdGlvbicsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weU9yZ2FuaXphdGlvbiAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5T3JnYW5pemF0aW9uIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ1JlcG9ydFRvVXNlck5hbWUnLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdSZXBvcnRzIHRvJywgbG9jYWxlQ2F0ZWdvcnkpLFxuICAgICAgICAgICAgdmFsdWU6IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5UmVwb3J0VG9Vc2VyTmFtZSAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5UmVwb3J0VG9Vc2VyTmFtZSA6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweVRlbGVwaG9uZScsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbGl6ZWRWYWwoJ1RlbGVwaG9uZScsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVRlbGVwaG9uZSAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5VGVsZXBob25lIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5RW1haWxBZGRyZXNzJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnRW1haWwgYWRkcmVzcycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weUVtYWlsQWRkcmVzcyAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5RW1haWxBZGRyZXNzIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuYlNob3dQb3BvdmVyJCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYE9wZXJhdG9yOiBQQ29yZS5nZXRVc2VyQXBpKCkuZ2V0T3BlcmF0b3JEZXRhaWxzKCR7dGhpcy5pZCR9KTsgcmV0dXJuZWQgZW1wdHkgcmVzLmRhdGEucHlPcGVyYXRvckluZm8ucHlVc2VyTmFtZSAtIGFkZGluZyBkZWZhdWx0YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkcyQgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweVBvc2l0aW9uJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnUG9zaXRpb24nLCBsb2NhbGVDYXRlZ29yeSksXG4gICAgICAgICAgICB2YWx1ZTogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5T3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnT3JnYW5pemF0aW9uJywgbG9jYWxlQ2F0ZWdvcnkpLFxuICAgICAgICAgICAgdmFsdWU6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdSZXBvcnRUb1VzZXJOYW1lJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnUmVwb3J0cyB0bycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWxsZXJTdHJpbmdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAncHlUZWxlcGhvbmUnLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdUZWxlcGhvbmUnLCBsb2NhbGVDYXRlZ29yeSksXG4gICAgICAgICAgICB2YWx1ZTogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5RW1haWxBZGRyZXNzJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnRW1haWwgYWRkcmVzcycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWxsZXJTdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLW9wZXJhdG9yIHBzZGstZG91YmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLWxhYmVsXCI+XG4gICAge3sgbGFiZWwkIH19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHNkay1kb3VibGVcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZVwiIChjbGljayk9XCJzaG93T3BlcmF0b3IoKVwiPnt7IG5hbWUkIH19PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2Pnt7IGRhdGUkIH19PC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93UG9wb3ZlciRcIiBjbGFzcz1cInBzZGstb3BlcmF0b3ItcG9wb3ZlclwiPlxuICAgIDxkbD5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkcyQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwicHNkay1vcGVyYXRvci1uYW1lXCI+e3sgZmllbGQubmFtZSB9fTwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cInBzZGstb3BlcmF0b3ItdmFsdWVcIj57eyBmaWVsZC52YWx1ZSB9fTwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2Rlc2lnblN5c3RlbUV4dGVuc2lvbi9vcGVyYXRvci9vcGVyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZGVzaWduU3lzdGVtRXh0ZW5zaW9uL29wZXJhdG9yL29wZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBcUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLGlCQUFpQjtJQVM1QixZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixLQUF3QixFQUN4QixLQUFZO1FBSFosT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVZ0QixZQUFPLEdBQVUsRUFBRSxDQUFDO0lBV2pCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMzQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhFLElBQUksQ0FBQyxhQUFhLEVBQUU7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LEVBQUUsY0FBYyxDQUFDO3dCQUNuRCxLQUFLLEVBQUUsWUFBWTtxQkFDcEI7aUJBQ0YsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXRJVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix5SkNaOUIsOG1CQW9CQSx5bUNEVlksWUFBWSwrUEFBRSxlQUFlOzs0RkFFNUIsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDOzZLQUcvQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBJbnB1dCwgUmVuZGVyZXIyLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1vcGVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcGVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29wZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgT3BlcmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGRpc3BsYXlMYWJlbDtcbiAgZmllbGRzJDogYW55W10gPSBbXTtcbiAgYlNob3dQb3BvdmVyJDogYm9vbGVhbjtcbiAgZGF0ZSQ6IHN0cmluZztcbiAgbmFtZSQ6IHN0cmluZztcbiAgbGFiZWwkOiBzdHJpbmc7XG4gIGlkJDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIGVsID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZWwudGFyZ2V0KTtcblxuICAgICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICAgIHRoaXMuYlNob3dQb3BvdmVyJCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5iU2hvd1BvcG92ZXIkID0gZmFsc2U7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBwQ29ubiQgfSA9IGNoYW5nZXM7XG4gICAgaWYgKHBDb25uJC5wcmV2aW91c1ZhbHVlICE9PSBwQ29ubiQuY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnk7XG4gICAgdGhpcy5kaXNwbGF5TGFiZWwgPSB0aGlzLmRpc3BsYXlMYWJlbD8udG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBsYWJlbCA9IGNvbmZpZ1Byb3BzJD8ubGFiZWw/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxhYmVsID09PSAnY3JlYXRlIG9wZXJhdG9yJyB8fCB0aGlzLmRpc3BsYXlMYWJlbCA9PT0gJ2NyZWF0ZSBvcGVyYXRvcicpIHtcbiAgICAgIHRoaXMubmFtZSQgPSBjb25maWdQcm9wcyQuY3JlYXRlT3BlcmF0b3IudXNlck5hbWU7XG4gICAgICB0aGlzLmlkJCA9IGNvbmZpZ1Byb3BzJC5jcmVhdGVPcGVyYXRvci51c2VySWQ7XG4gICAgICB0aGlzLmxhYmVsJCA9IGNvbmZpZ1Byb3BzJC5jcmVhdGVMYWJlbDtcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09PSAndXBkYXRlIG9wZXJhdG9yJyB8fCB0aGlzLmRpc3BsYXlMYWJlbCA9PT0gJ3VwZGF0ZSBvcGVyYXRvcicpIHtcbiAgICAgIHRoaXMubmFtZSQgPSBjb25maWdQcm9wcyQudXBkYXRlT3BlcmF0b3IudXNlck5hbWU7XG4gICAgICB0aGlzLmlkJCA9IGNvbmZpZ1Byb3BzJC51cGRhdGVPcGVyYXRvci51c2VySWQ7XG4gICAgICB0aGlzLmxhYmVsJCA9IGNvbmZpZ1Byb3BzJC51cGRhdGVMYWJlbDtcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09PSAncmVzb2x2ZSBvcGVyYXRvcicgfHwgdGhpcy5kaXNwbGF5TGFiZWwgPT09ICdyZXNvbHZlIG9wZXJhdG9yJykge1xuICAgICAgdGhpcy5uYW1lJCA9IGNvbmZpZ1Byb3BzJC5yZXNvbHZlT3BlcmF0b3IudXNlck5hbWU7XG4gICAgICB0aGlzLmlkJCA9IGNvbmZpZ1Byb3BzJC5yZXNvbHZlT3BlcmF0b3IudXNlcklkO1xuICAgICAgdGhpcy5sYWJlbCQgPSBjb25maWdQcm9wcyQucmVzb2x2ZUxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWUkID0gY29uZmlnUHJvcHMkPy52YWx1ZS51c2VyTmFtZTtcbiAgICAgIHRoaXMuaWQkID0gY29uZmlnUHJvcHMkPy52YWx1ZS51c2VySWQ7XG4gICAgICB0aGlzLmxhYmVsJCA9IGNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgICB9XG4gICAgdGhpcy5kYXRlJCA9IHRoaXMudXRpbHMuZ2VuZXJhdGVEYXRlKGNvbmZpZ1Byb3BzJD8udXBkYXRlRGF0ZVRpbWUsICdEYXRlVGltZS1TaW5jZScpO1xuICB9XG5cbiAgc2hvd09wZXJhdG9yKCkge1xuICAgIGNvbnN0IG9wZXJhdG9yUHJldmlld1Byb21pc2UgPSBQQ29yZS5nZXRVc2VyQXBpKCkuZ2V0T3BlcmF0b3JEZXRhaWxzKHRoaXMuaWQkKTtcbiAgICBjb25zdCBsb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICAgIGNvbnN0IGxvY2FsZUNhdGVnb3J5ID0gJ09wZXJhdG9yJztcbiAgICBjb25zdCBmaWxsZXJTdHJpbmcgPSAnLS0tJztcblxuICAgIG9wZXJhdG9yUHJldmlld1Byb21pc2UudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMuZGF0YSAmJiByZXMuZGF0YS5weU9wZXJhdG9ySW5mbyAmJiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVVzZXJOYW1lKSB7XG4gICAgICAgIHRoaXMuZmllbGRzJCA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5UG9zaXRpb24nLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdQb3NpdGlvbicsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVBvc2l0aW9uICE9ICcnID8gcmVzLmRhdGEucHlPcGVyYXRvckluZm8ucHlQb3NpdGlvbiA6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweU9yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbGl6ZWRWYWwoJ09yZ2FuaXphdGlvbicsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weU9yZ2FuaXphdGlvbiAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5T3JnYW5pemF0aW9uIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ1JlcG9ydFRvVXNlck5hbWUnLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdSZXBvcnRzIHRvJywgbG9jYWxlQ2F0ZWdvcnkpLFxuICAgICAgICAgICAgdmFsdWU6IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5UmVwb3J0VG9Vc2VyTmFtZSAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5UmVwb3J0VG9Vc2VyTmFtZSA6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweVRlbGVwaG9uZScsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbGl6ZWRWYWwoJ1RlbGVwaG9uZScsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weVRlbGVwaG9uZSAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5VGVsZXBob25lIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5RW1haWxBZGRyZXNzJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnRW1haWwgYWRkcmVzcycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiByZXMuZGF0YS5weU9wZXJhdG9ySW5mby5weUVtYWlsQWRkcmVzcyAhPSAnJyA/IHJlcy5kYXRhLnB5T3BlcmF0b3JJbmZvLnB5RW1haWxBZGRyZXNzIDogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuYlNob3dQb3BvdmVyJCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYE9wZXJhdG9yOiBQQ29yZS5nZXRVc2VyQXBpKCkuZ2V0T3BlcmF0b3JEZXRhaWxzKCR7dGhpcy5pZCR9KTsgcmV0dXJuZWQgZW1wdHkgcmVzLmRhdGEucHlPcGVyYXRvckluZm8ucHlVc2VyTmFtZSAtIGFkZGluZyBkZWZhdWx0YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkcyQgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdweVBvc2l0aW9uJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnUG9zaXRpb24nLCBsb2NhbGVDYXRlZ29yeSksXG4gICAgICAgICAgICB2YWx1ZTogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5T3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnT3JnYW5pemF0aW9uJywgbG9jYWxlQ2F0ZWdvcnkpLFxuICAgICAgICAgICAgdmFsdWU6IGZpbGxlclN0cmluZ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdSZXBvcnRUb1VzZXJOYW1lJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnUmVwb3J0cyB0bycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWxsZXJTdHJpbmdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAncHlUZWxlcGhvbmUnLFxuICAgICAgICAgICAgbmFtZTogbG9jYWxpemVkVmFsKCdUZWxlcGhvbmUnLCBsb2NhbGVDYXRlZ29yeSksXG4gICAgICAgICAgICB2YWx1ZTogZmlsbGVyU3RyaW5nXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3B5RW1haWxBZGRyZXNzJyxcbiAgICAgICAgICAgIG5hbWU6IGxvY2FsaXplZFZhbCgnRW1haWwgYWRkcmVzcycsIGxvY2FsZUNhdGVnb3J5KSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWxsZXJTdHJpbmdcbiAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLW9wZXJhdG9yIHBzZGstZG91YmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLWxhYmVsXCI+XG4gICAge3sgbGFiZWwkIH19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHNkay1kb3VibGVcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZVwiIChjbGljayk9XCJzaG93T3BlcmF0b3IoKVwiPnt7IG5hbWUkIH19PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2Pnt7IGRhdGUkIH19PC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93UG9wb3ZlciRcIiBjbGFzcz1cInBzZGstb3BlcmF0b3ItcG9wb3ZlclwiPlxuICAgIDxkbD5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkcyQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwicHNkay1vcGVyYXRvci1uYW1lXCI+e3sgZmllbGQubmFtZSB9fTwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cInBzZGstb3BlcmF0b3ItdmFsdWVcIj57eyBmaWVsZC52YWx1ZSB9fTwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -70,7 +70,7 @@ export class AutoCompleteComponent {
70
70
  }
71
71
  _filter(value) {
72
72
  const filterVal = (value || this.filterValue).toLowerCase();
73
- return this.options$?.filter(option => option.value.toLowerCase().includes(filterVal));
73
+ return this.options$?.filter(option => option.value?.toLowerCase().includes(filterVal));
74
74
  }
75
75
  // Callback passed when subscribing to store change
76
76
  async onStateChange() {
@@ -283,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
283
283
  }], formGroup$: [{
284
284
  type: Input
285
285
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7O0FBOEIzRCxNQUFNLE9BQU8scUJBQXFCO0lB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LE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxVQUFVLEdBQUcsd0JBQXdCLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsRDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7K0dBNVNVLHFCQUFxQjttR0FBckIscUJBQXFCLHFJQzNDbEMsczlDQWdDQSxpYURFSSxZQUFZLGdkQUNaLG1CQUFtQixvMkNBQ25CLGtCQUFrQixtaUJBQ2xCLGNBQWMsd2JBQ2QscUJBQXFCLDRsQkFDckIsZUFBZSxzRUFDRSx3QkFBd0I7OzRGQUdoQyxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOytMQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9kYXRhcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgQXV0b0NvbXBsZXRlUHJvcHMgZXh0ZW5kcyBQQ29ubkZpZWxkUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIEF1dG9Db21wbGV0ZSBoZXJlXG4gIGRlZmVyRGF0YXNvdXJjZT86IGJvb2xlYW47XG4gIGRhdGFzb3VyY2VNZXRhZGF0YT86IGFueTtcbiAgb25SZWNvcmRDaGFuZ2U/OiBhbnk7XG4gIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdDtcbiAgbGlzdFR5cGU6IHN0cmluZztcbiAgcGFyYW1ldGVycz86IGFueTtcbiAgZGF0YXNvdXJjZTogYW55O1xuICBjb2x1bW5zOiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF1dG8tY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBBdXRvQ29tcGxldGVQcm9wcztcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkID0gJyc7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgb3B0aW9ucyQ6IGFueVtdO1xuICBjb21wb25lbnRSZWZlcmVuY2UgPSAnJztcbiAgdGVzdElkOiBzdHJpbmc7XG4gIGxpc3RUeXBlOiBzdHJpbmc7XG4gIGNvbHVtbnMgPSBbXTtcbiAgaGVscGVyVGV4dDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGZpZWxkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgbnVsbCk7XG4gIHBhcmFtZXRlcnM6IHt9O1xuICBoaWRlTGFiZWw6IGJvb2xlYW47XG4gIGZpbHRlcmVkT3B0aW9uczogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIGZpbHRlclZhbHVlID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBkYXRhUGFnZVNlcnZpY2U6IERhdGFwYWdlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jb250cm9sTmFtZSQgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGNhbGwgdXBkYXRlU2VsZiB3aGVuIGluaXRpYWxpemluZ1xuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpZWxkQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5fZmlsdGVyKHZhbHVlIHx8ICcnKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAkLnJlbW92ZUNvbnRyb2wodGhpcy5jb250cm9sTmFtZSQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWwgPSAodmFsdWUgfHwgdGhpcy5maWx0ZXJWYWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zJD8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWwpKTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBhc3luYyBvblN0YXRlQ2hhbmdlKCkge1xuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICBhc3luYyB1cGRhdGVTZWxmKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIHN0YXJ0aW5nIHZlcnkgc2ltcGxlLi4uXG5cbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEF1dG9Db21wbGV0ZVByb3BzO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMkPy5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LmtleSA9PT0gdGhpcy5jb25maWdQcm9wcyQudmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZSQgPSBpbmRleCA+IC0xID8gdGhpcy5vcHRpb25zJFtpbmRleF0udmFsdWUgOiB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCB7IGNvbHVtbnMsIGRhdGFzb3VyY2UgfSA9IHRoaXMuZ2VuZXJhdGVDb2x1bW5zQW5kRGF0YVNvdXJjZSgpO1xuXG4gICAgaWYgKGNvbHVtbnMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMucHJlUHJvY2Vzc0NvbHVtbnMoY29sdW1ucyk7XG4gICAgfVxuICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5iUmVxdWlyZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmJWaXNpYmxlJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkpO1xuICAgIH1cblxuICAgIC8vIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5iRGlzYWJsZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJEaXNhYmxlZCQpIHtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnJlYWRPbmx5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnJlYWRPbmx5KTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSA9ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZTtcbiAgICBpZiAodGhpcy5saXN0VHlwZSA9PT0gJ2Fzc29jaWF0ZWQnKSB7XG4gICAgICB0aGlzLm9wdGlvbnMkID0gdGhpcy51dGlscy5nZXRPcHRpb25MaXN0KHRoaXMuY29uZmlnUHJvcHMkLCB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCcnKSk7IC8vIDFzdCBhcmcgZW1wdHkgc3RyaW5nIHVudGlsIHR5cGVkZWYgbWFya2VkIGNvcnJlY3RseVxuICAgIH1cblxuICAgIGlmICghdGhpcy5kaXNwbGF5TW9kZSQgJiYgdGhpcy5saXN0VHlwZSAhPT0gJ2Fzc29jaWF0ZWQnKSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5kYXRhUGFnZVNlcnZpY2UuZ2V0RGF0YVBhZ2VEYXRhKGRhdGFzb3VyY2UsIHRoaXMucGFyYW1ldGVycywgY29udGV4dCk7XG4gICAgICB0aGlzLmZpbGxPcHRpb25zKHJlc3VsdHMpO1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXIgZGlzcGxheSBvZiBlcnJvciBtZXNzYWdlIHdpdGggZmllbGQgY29udHJvbFxuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9IG51bGwgJiYgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSAnJykge1xuICAgICAgY29uc3QgdGltZXIgPSBpbnRlcnZhbCgxMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldEVycm9ycyh7IG1lc3NhZ2U6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuZmllbGRDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICB0aW1lci51bnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0UHJvcGVydHlWYWx1ZXNGcm9tUHJvcHMoKSB7XG4gICAgdGhpcy50ZXN0SWQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50ZXN0SWQ7XG4gICAgdGhpcy5sYWJlbCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5jb25maWdQcm9wcyQucGxhY2Vob2xkZXIgfHwgJyc7XG4gICAgdGhpcy5kaXNwbGF5TW9kZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kaXNwbGF5TW9kZTtcbiAgICB0aGlzLmxpc3RUeXBlID0gdGhpcy5jb25maWdQcm9wcyQubGlzdFR5cGU7XG4gICAgdGhpcy5oaWRlTGFiZWwgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oaWRlTGFiZWw7XG4gICAgdGhpcy5oZWxwZXJUZXh0ID0gdGhpcy5jb25maWdQcm9wcyQuaGVscGVyVGV4dDtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLmNvbmZpZ1Byb3BzJD8ucGFyYW1ldGVycztcbiAgfVxuXG4gIGdlbmVyYXRlQ29sdW1uc0FuZERhdGFTb3VyY2UoKSB7XG4gICAgbGV0IGRhdGFzb3VyY2UgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlO1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5jb25maWdQcm9wcyQuY29sdW1ucztcbiAgICAvLyBjb25zdCB7IGRlZmVyRGF0YXNvdXJjZSwgZGF0YXNvdXJjZU1ldGFkYXRhIH0gPSB0aGlzLmNvbmZpZ1Byb3BzJDtcbiAgICBjb25zdCB7IGRlZmVyRGF0YXNvdXJjZSwgZGF0YXNvdXJjZU1ldGFkYXRhIH06IGFueSA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgLy8gY29udmVydCBhc3NvY2lhdGVkIHRvIGRhdGFwYWdlIGxpc3R0eXBlIGFuZCB0cmFuc2Zvcm0gcHJvcHNcbiAgICAvLyBQcm9jZXNzIGRlZmVyRGF0YXNvdXJjZSB3aGVuIGRhdGFwYWdlIG5hbWUgaXMgcHJlc2VudC4gV0hoZW4gdGFibGVUeXBlIGlzIHByb21wdExpc3QgLyBsb2NhbExpc3RcbiAgICBpZiAoZGVmZXJEYXRhc291cmNlICYmIGRhdGFzb3VyY2VNZXRhZGF0YT8uZGF0YXNvdXJjZT8ubmFtZSkge1xuICAgICAgdGhpcy5saXN0VHlwZSA9ICdkYXRhcGFnZSc7XG4gICAgICBkYXRhc291cmNlID0gZGF0YXNvdXJjZU1ldGFkYXRhLmRhdGFzb3VyY2UubmFtZTtcbiAgICAgIGNvbnN0IHsgcGFyYW1ldGVycywgcHJvcGVydHlGb3JEaXNwbGF5VGV4dCwgcHJvcGVydHlGb3JWYWx1ZSB9ID0gZGF0YXNvdXJjZU1ldGFkYXRhLmRhdGFzb3VyY2U7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLmZsYXR0ZW5QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgY29uc3QgZGlzcGxheVByb3AgPSBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0Py5zdGFydHNXaXRoKCdAUCcpID8gcHJvcGVydHlGb3JEaXNwbGF5VGV4dC5zdWJzdHJpbmcoMykgOiBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0O1xuICAgICAgY29uc3QgdmFsdWVQcm9wID0gcHJvcGVydHlGb3JWYWx1ZT8uc3RhcnRzV2l0aCgnQFAnKSA/IHByb3BlcnR5Rm9yVmFsdWUuc3Vic3RyaW5nKDMpIDogcHJvcGVydHlGb3JWYWx1ZTtcbiAgICAgIGNvbHVtbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICd0cnVlJyxcbiAgICAgICAgICBzZXRQcm9wZXJ0eTogJ0Fzc29jaWF0ZWQgcHJvcGVydHknLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVByb3BcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXk6ICd0cnVlJyxcbiAgICAgICAgICBwcmltYXJ5OiAndHJ1ZScsXG4gICAgICAgICAgdXNlRm9yU2VhcmNoOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBkaXNwbGF5UHJvcFxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNvbHVtbnMsIGRhdGFzb3VyY2UgfTtcbiAgfVxuXG4gIGZpbGxPcHRpb25zKHJlc3VsdHM6IGFueSkge1xuICAgIGNvbnN0IG9wdGlvbnNEYXRhOiBhbnlbXSA9IFtdO1xuICAgIGNvbnN0IGRpc3BsYXlDb2x1bW4gPSB0aGlzLmdldERpc3BsYXlGaWVsZHNNZXRhRGF0YSh0aGlzLmNvbHVtbnMpO1xuICAgIHJlc3VsdHM/LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIGtleTogZWxlbWVudFtkaXNwbGF5Q29sdW1uLmtleV0gfHwgZWxlbWVudC5weUdVSUQsXG4gICAgICAgIHZhbHVlOiBlbGVtZW50W2Rpc3BsYXlDb2x1bW4ucHJpbWFyeV0/LnRvU3RyaW5nKClcbiAgICAgIH07XG4gICAgICBvcHRpb25zRGF0YS5wdXNoKG9iaik7XG4gICAgfSk7XG4gICAgdGhpcy5vcHRpb25zJCA9IG9wdGlvbnNEYXRhO1xuICB9XG5cbiAgZmxhdHRlblBhcmFtZXRlcnMocGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBmbGF0UGFyYW1zID0ge307XG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIHZhbHVlOiB0aGVWYWwgfSA9IHBhcmFtc1trZXldO1xuICAgICAgZmxhdFBhcmFtc1tuYW1lXSA9IHRoZVZhbDtcbiAgICB9KTtcblxuICAgIHJldHVybiBmbGF0UGFyYW1zO1xuICB9XG5cbiAgZ2V0RGlzcGxheUZpZWxkc01ldGFEYXRhKGNvbHVtbkxpc3QpIHtcbiAgICBjb25zdCBkaXNwbGF5Q29sdW1ucyA9IGNvbHVtbkxpc3QuZmlsdGVyKGNvbCA9PiBjb2wuZGlzcGxheSA9PT0gJ3RydWUnKTtcbiAgICBjb25zdCBtZXRhRGF0YU9iajogYW55ID0geyBrZXk6ICcnLCBwcmltYXJ5OiAnJywgc2Vjb25kYXJ5OiBbXSB9O1xuICAgIGNvbnN0IGtleUNvbCA9IGNvbHVtbkxpc3QuZmlsdGVyKGNvbCA9PiBjb2wua2V5ID09PSAndHJ1ZScpO1xuICAgIG1ldGFEYXRhT2JqLmtleSA9IGtleUNvbC5sZW5ndGggPiAwID8ga2V5Q29sWzBdLnZhbHVlIDogJ2F1dG8nO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Q29sdW1ucy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGlmIChkaXNwbGF5Q29sdW1uc1tpbmRleF0ucHJpbWFyeSA9PT0gJ3RydWUnKSB7XG4gICAgICAgIG1ldGFEYXRhT2JqLnByaW1hcnkgPSBkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXRhRGF0YU9iai5zZWNvbmRhcnkucHVzaChkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWV0YURhdGFPYmo7XG4gIH1cblxuICBwcmVQcm9jZXNzQ29sdW1ucyhjb2x1bW5MaXN0KSB7XG4gICAgcmV0dXJuIGNvbHVtbkxpc3Q/Lm1hcChjb2wgPT4ge1xuICAgICAgY29uc3QgdGVtcENvbE9iaiA9IHsgLi4uY29sIH07XG4gICAgICB0ZW1wQ29sT2JqLnZhbHVlID0gY29sLnZhbHVlICYmIGNvbC52YWx1ZS5zdGFydHNXaXRoKCcuJykgPyBjb2wudmFsdWUuc3Vic3RyaW5nKDEpIDogY29sLnZhbHVlO1xuICAgICAgcmV0dXJuIHRlbXBDb2xPYmo7XG4gICAgfSk7XG4gIH1cblxuICBmaWVsZE9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIC8vIHRoaXMgd29ya3MgLSB0aGlzLnBDb25uJC5zZXRWYWx1ZSggdGhpcy5jb21wb25lbnRSZWZlcmVuY2UsIGBwcm9wZXJ0eTogJHt0aGlzLmNvbXBvbmVudFJlZmVyZW5jZX1gKTtcbiAgICAvLyB0aGlzIHdvcmtzIC0gdGhpcy5wQ29ubiQuc2V0VmFsdWUoIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlLCB0aGlzLmZpZWxkQ29udHJvbC52YWx1ZSk7XG4gICAgLy8gUENvbm5lY3Qgd2FudHMgdG8gdXNlIGNoYW5nZUhhbmRsZXIgZm9yIG9uQ2hhbmdlXG4gICAgLy8gdGhpcy5hbmd1bGFyUENvbm5lY3QuY2hhbmdlSGFuZGxlciggdGhpcywgZXZlbnQpO1xuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLmFjdGlvbnM/Lm9uQ2hhbmdlKHRoaXMsIGV2ZW50KTtcbiAgfVxuXG4gIG9wdGlvbkNoYW5nZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEuYWN0aW9ucz8ub25DaGFuZ2UodGhpcywgZXZlbnQpO1xuICB9XG5cbiAgZmllbGRPbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgbGV0IGtleSA9ICcnO1xuICAgIGNvbnN0IGVsID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChlbD8udmFsdWUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zJD8uZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudC52YWx1ZSA9PT0gZWwudmFsdWUpO1xuICAgICAga2V5ID0gaW5kZXggPiAtMSA/IChrZXkgPSB0aGlzLm9wdGlvbnMkW2luZGV4XS5rZXkpIDogZWwudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBrZXk7XG4gICAgY29uc3QgYWN0aW9uc0FwaSA9IHRoaXMucENvbm4kPy5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3QgcHJvcE5hbWUgPSAodGhpcy5wQ29ubiQ/LmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgIGhhbmRsZUV2ZW50KGFjdGlvbnNBcGksICdjaGFuZ2VOYmx1cicsIHByb3BOYW1lLCB2YWx1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkPy5vblJlY29yZENoYW5nZSkge1xuICAgICAgZWwudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY29uZmlnUHJvcHMkLm9uUmVjb3JkQ2hhbmdlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvck1lc3NhZ2UoKSB7XG4gICAgbGV0IGVyck1lc3NhZ2UgPSAnJztcblxuICAgIC8vIGxvb2sgZm9yIHZhbGlkYXRpb24gbWVzc2FnZXMgZm9yIGpzb24sIHByZS1kZWZpbmVkIG9yIGp1c3QgYW4gZXJyb3IgcHVzaGVkIGZyb20gd29ya2l0ZW0gKDQwMClcbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ21lc3NhZ2UnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgPz8gJyc7XG4gICAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gJ1lvdSBtdXN0IGVudGVyIGEgdmFsdWUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZENvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5maWVsZENvbnRyb2wuZXJyb3JzLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJkaXNwbGF5TW9kZSQ7IGVsc2Ugbm9EaXNwbGF5TW9kZVwiPlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiRmllbGRWYWx1ZUxpc3RcIiBbcHJvcHNdPVwieyBsYWJlbCQsIHZhbHVlJCwgZGlzcGxheU1vZGUkLCBoaWRlTGFiZWwgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0Rpc3BsYXlNb2RlPlxuICA8ZGl2ICpuZ0lmPVwiIWJSZWFkb25seSQgJiYgYkhhc0Zvcm0kOyBlbHNlIG5vRWRpdFwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAkXCIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBbaGludExhYmVsXT1cImhlbHBlclRleHRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbCQgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWVsZENvbnRyb2xcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZSRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgIChpbnB1dCk9XCJmaWVsZE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cImZpZWxkT25CbHVyKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG9wdC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZpZWxkQ29udHJvbC5pbnZhbGlkXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9FZGl0PlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiVGV4dFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybWF0QXMkOiAndGV4dCcgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7O0FBOEIzRCxNQUFNLE9BQU8scUJBQXFCO0lB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LE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxVQUFVLEdBQUcsd0JBQXdCLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsRDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7K0dBNVNVLHFCQUFxQjttR0FBckIscUJBQXFCLHFJQzNDbEMsczlDQWdDQSxpYURFSSxZQUFZLGdkQUNaLG1CQUFtQixvMkNBQ25CLGtCQUFrQixtaUJBQ2xCLGNBQWMsd2JBQ2QscUJBQXFCLDRsQkFDckIsZUFBZSxzRUFDRSx3QkFBd0I7OzRGQUdoQyxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOytMQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9kYXRhcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgQXV0b0NvbXBsZXRlUHJvcHMgZXh0ZW5kcyBQQ29ubkZpZWxkUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIEF1dG9Db21wbGV0ZSBoZXJlXG4gIGRlZmVyRGF0YXNvdXJjZT86IGJvb2xlYW47XG4gIGRhdGFzb3VyY2VNZXRhZGF0YT86IGFueTtcbiAgb25SZWNvcmRDaGFuZ2U/OiBhbnk7XG4gIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdDtcbiAgbGlzdFR5cGU6IHN0cmluZztcbiAgcGFyYW1ldGVycz86IGFueTtcbiAgZGF0YXNvdXJjZTogYW55O1xuICBjb2x1bW5zOiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF1dG8tY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBBdXRvQ29tcGxldGVQcm9wcztcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkID0gJyc7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgb3B0aW9ucyQ6IGFueVtdO1xuICBjb21wb25lbnRSZWZlcmVuY2UgPSAnJztcbiAgdGVzdElkOiBzdHJpbmc7XG4gIGxpc3RUeXBlOiBzdHJpbmc7XG4gIGNvbHVtbnMgPSBbXTtcbiAgaGVscGVyVGV4dDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGZpZWxkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgbnVsbCk7XG4gIHBhcmFtZXRlcnM6IHt9O1xuICBoaWRlTGFiZWw6IGJvb2xlYW47XG4gIGZpbHRlcmVkT3B0aW9uczogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIGZpbHRlclZhbHVlID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBkYXRhUGFnZVNlcnZpY2U6IERhdGFwYWdlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jb250cm9sTmFtZSQgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGNhbGwgdXBkYXRlU2VsZiB3aGVuIGluaXRpYWxpemluZ1xuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpZWxkQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5fZmlsdGVyKHZhbHVlIHx8ICcnKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAkLnJlbW92ZUNvbnRyb2wodGhpcy5jb250cm9sTmFtZSQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWwgPSAodmFsdWUgfHwgdGhpcy5maWx0ZXJWYWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zJD8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udmFsdWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsKSk7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgYXN5bmMgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBhc3luYyBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZVNlbGZcbiAgYXN5bmMgdXBkYXRlU2VsZigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBzdGFydGluZyB2ZXJ5IHNpbXBsZS4uLlxuXG4gICAgLy8gbW92ZWQgdGhpcyBmcm9tIG5nT25Jbml0KCkgYW5kIGNhbGwgdGhpcyBmcm9tIHRoZXJlIGluc3RlYWQuLi5cbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBBdXRvQ29tcGxldGVQcm9wcztcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zJD8uZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudC5rZXkgPT09IHRoaXMuY29uZmlnUHJvcHMkLnZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWUkID0gaW5kZXggPiAtMSA/IHRoaXMub3B0aW9ucyRbaW5kZXhdLnZhbHVlIDogdGhpcy5jb25maWdQcm9wcyQudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlc0Zyb21Qcm9wcygpO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBkYXRhc291cmNlIH0gPSB0aGlzLmdlbmVyYXRlQ29sdW1uc0FuZERhdGFTb3VyY2UoKTtcblxuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLnByZVByb2Nlc3NDb2x1bW5zKGNvbHVtbnMpO1xuICAgIH1cbiAgICAvLyB0aW1lb3V0IGFuZCBkZXRlY3RDaGFuZ2VzIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuYlJlcXVpcmVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYkRpc2FibGVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5iRGlzYWJsZWQkKSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wb25lbnRSZWZlcmVuY2UgPSAodGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgaWYgKHRoaXMubGlzdFR5cGUgPT09ICdhc3NvY2lhdGVkJykge1xuICAgICAgdGhpcy5vcHRpb25zJCA9IHRoaXMudXRpbHMuZ2V0T3B0aW9uTGlzdCh0aGlzLmNvbmZpZ1Byb3BzJCwgdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgnJykpOyAvLyAxc3QgYXJnIGVtcHR5IHN0cmluZyB1bnRpbCB0eXBlZGVmIG1hcmtlZCBjb3JyZWN0bHlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlzcGxheU1vZGUkICYmIHRoaXMubGlzdFR5cGUgIT09ICdhc3NvY2lhdGVkJykge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZGF0YVBhZ2VTZXJ2aWNlLmdldERhdGFQYWdlRGF0YShkYXRhc291cmNlLCB0aGlzLnBhcmFtZXRlcnMsIGNvbnRleHQpO1xuICAgICAgdGhpcy5maWxsT3B0aW9ucyhyZXN1bHRzKTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VyIGRpc3BsYXkgb2YgZXJyb3IgbWVzc2FnZSB3aXRoIGZpZWxkIGNvbnRyb2xcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSBudWxsICYmIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgIGNvbnN0IHRpbWVyID0gaW50ZXJ2YWwoMTAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRFcnJvcnMoeyBtZXNzYWdlOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCkge1xuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnUHJvcHMkLnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIHRoaXMuZGlzcGxheU1vZGUkID0gdGhpcy5jb25maWdQcm9wcyQuZGlzcGxheU1vZGU7XG4gICAgdGhpcy5saXN0VHlwZSA9IHRoaXMuY29uZmlnUHJvcHMkLmxpc3RUeXBlO1xuICAgIHRoaXMuaGlkZUxhYmVsID0gdGhpcy5jb25maWdQcm9wcyQuaGlkZUxhYmVsO1xuICAgIHRoaXMuaGVscGVyVGV4dCA9IHRoaXMuY29uZmlnUHJvcHMkLmhlbHBlclRleHQ7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5jb25maWdQcm9wcyQ/LnBhcmFtZXRlcnM7XG4gIH1cblxuICBnZW5lcmF0ZUNvbHVtbnNBbmREYXRhU291cmNlKCkge1xuICAgIGxldCBkYXRhc291cmNlID0gdGhpcy5jb25maWdQcm9wcyQuZGF0YXNvdXJjZTtcbiAgICBsZXQgY29sdW1ucyA9IHRoaXMuY29uZmlnUHJvcHMkLmNvbHVtbnM7XG4gICAgLy8gY29uc3QgeyBkZWZlckRhdGFzb3VyY2UsIGRhdGFzb3VyY2VNZXRhZGF0YSB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG4gICAgY29uc3QgeyBkZWZlckRhdGFzb3VyY2UsIGRhdGFzb3VyY2VNZXRhZGF0YSB9OiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpO1xuICAgIC8vIGNvbnZlcnQgYXNzb2NpYXRlZCB0byBkYXRhcGFnZSBsaXN0dHlwZSBhbmQgdHJhbnNmb3JtIHByb3BzXG4gICAgLy8gUHJvY2VzcyBkZWZlckRhdGFzb3VyY2Ugd2hlbiBkYXRhcGFnZSBuYW1lIGlzIHByZXNlbnQuIFdIaGVuIHRhYmxlVHlwZSBpcyBwcm9tcHRMaXN0IC8gbG9jYWxMaXN0XG4gICAgaWYgKGRlZmVyRGF0YXNvdXJjZSAmJiBkYXRhc291cmNlTWV0YWRhdGE/LmRhdGFzb3VyY2U/Lm5hbWUpIHtcbiAgICAgIHRoaXMubGlzdFR5cGUgPSAnZGF0YXBhZ2UnO1xuICAgICAgZGF0YXNvdXJjZSA9IGRhdGFzb3VyY2VNZXRhZGF0YS5kYXRhc291cmNlLm5hbWU7XG4gICAgICBjb25zdCB7IHBhcmFtZXRlcnMsIHByb3BlcnR5Rm9yRGlzcGxheVRleHQsIHByb3BlcnR5Rm9yVmFsdWUgfSA9IGRhdGFzb3VyY2VNZXRhZGF0YS5kYXRhc291cmNlO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5mbGF0dGVuUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTtcbiAgICAgIGNvbnN0IGRpc3BsYXlQcm9wID0gcHJvcGVydHlGb3JEaXNwbGF5VGV4dD8uc3RhcnRzV2l0aCgnQFAnKSA/IHByb3BlcnR5Rm9yRGlzcGxheVRleHQuc3Vic3RyaW5nKDMpIDogcHJvcGVydHlGb3JEaXNwbGF5VGV4dDtcbiAgICAgIGNvbnN0IHZhbHVlUHJvcCA9IHByb3BlcnR5Rm9yVmFsdWU/LnN0YXJ0c1dpdGgoJ0BQJykgPyBwcm9wZXJ0eUZvclZhbHVlLnN1YnN0cmluZygzKSA6IHByb3BlcnR5Rm9yVmFsdWU7XG4gICAgICBjb2x1bW5zID0gW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiAndHJ1ZScsXG4gICAgICAgICAgc2V0UHJvcGVydHk6ICdBc3NvY2lhdGVkIHByb3BlcnR5JyxcbiAgICAgICAgICB2YWx1ZTogdmFsdWVQcm9wXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5OiAndHJ1ZScsXG4gICAgICAgICAgcHJpbWFyeTogJ3RydWUnLFxuICAgICAgICAgIHVzZUZvclNlYXJjaDogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogZGlzcGxheVByb3BcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2x1bW5zLCBkYXRhc291cmNlIH07XG4gIH1cblxuICBmaWxsT3B0aW9ucyhyZXN1bHRzOiBhbnkpIHtcbiAgICBjb25zdCBvcHRpb25zRGF0YTogYW55W10gPSBbXTtcbiAgICBjb25zdCBkaXNwbGF5Q29sdW1uID0gdGhpcy5nZXREaXNwbGF5RmllbGRzTWV0YURhdGEodGhpcy5jb2x1bW5zKTtcbiAgICByZXN1bHRzPy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBrZXk6IGVsZW1lbnRbZGlzcGxheUNvbHVtbi5rZXldIHx8IGVsZW1lbnQucHlHVUlELFxuICAgICAgICB2YWx1ZTogZWxlbWVudFtkaXNwbGF5Q29sdW1uLnByaW1hcnldPy50b1N0cmluZygpXG4gICAgICB9O1xuICAgICAgb3B0aW9uc0RhdGEucHVzaChvYmopO1xuICAgIH0pO1xuICAgIHRoaXMub3B0aW9ucyQgPSBvcHRpb25zRGF0YTtcbiAgfVxuXG4gIGZsYXR0ZW5QYXJhbWV0ZXJzKHBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgZmxhdFBhcmFtcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgeyBuYW1lLCB2YWx1ZTogdGhlVmFsIH0gPSBwYXJhbXNba2V5XTtcbiAgICAgIGZsYXRQYXJhbXNbbmFtZV0gPSB0aGVWYWw7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmxhdFBhcmFtcztcbiAgfVxuXG4gIGdldERpc3BsYXlGaWVsZHNNZXRhRGF0YShjb2x1bW5MaXN0KSB7XG4gICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBjb2x1bW5MaXN0LmZpbHRlcihjb2wgPT4gY29sLmRpc3BsYXkgPT09ICd0cnVlJyk7XG4gICAgY29uc3QgbWV0YURhdGFPYmo6IGFueSA9IHsga2V5OiAnJywgcHJpbWFyeTogJycsIHNlY29uZGFyeTogW10gfTtcbiAgICBjb25zdCBrZXlDb2wgPSBjb2x1bW5MaXN0LmZpbHRlcihjb2wgPT4gY29sLmtleSA9PT0gJ3RydWUnKTtcbiAgICBtZXRhRGF0YU9iai5rZXkgPSBrZXlDb2wubGVuZ3RoID4gMCA/IGtleUNvbFswXS52YWx1ZSA6ICdhdXRvJztcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGlzcGxheUNvbHVtbnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBpZiAoZGlzcGxheUNvbHVtbnNbaW5kZXhdLnByaW1hcnkgPT09ICd0cnVlJykge1xuICAgICAgICBtZXRhRGF0YU9iai5wcmltYXJ5ID0gZGlzcGxheUNvbHVtbnNbaW5kZXhdLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWV0YURhdGFPYmouc2Vjb25kYXJ5LnB1c2goZGlzcGxheUNvbHVtbnNbaW5kZXhdLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1ldGFEYXRhT2JqO1xuICB9XG5cbiAgcHJlUHJvY2Vzc0NvbHVtbnMoY29sdW1uTGlzdCkge1xuICAgIHJldHVybiBjb2x1bW5MaXN0Py5tYXAoY29sID0+IHtcbiAgICAgIGNvbnN0IHRlbXBDb2xPYmogPSB7IC4uLmNvbCB9O1xuICAgICAgdGVtcENvbE9iai52YWx1ZSA9IGNvbC52YWx1ZSAmJiBjb2wudmFsdWUuc3RhcnRzV2l0aCgnLicpID8gY29sLnZhbHVlLnN1YnN0cmluZygxKSA6IGNvbC52YWx1ZTtcbiAgICAgIHJldHVybiB0ZW1wQ29sT2JqO1xuICAgIH0pO1xuICB9XG5cbiAgZmllbGRPbkNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAvLyB0aGlzIHdvcmtzIC0gdGhpcy5wQ29ubiQuc2V0VmFsdWUoIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlLCBgcHJvcGVydHk6ICR7dGhpcy5jb21wb25lbnRSZWZlcmVuY2V9YCk7XG4gICAgLy8gdGhpcyB3b3JrcyAtIHRoaXMucENvbm4kLnNldFZhbHVlKCB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSwgdGhpcy5maWVsZENvbnRyb2wudmFsdWUpO1xuICAgIC8vIFBDb25uZWN0IHdhbnRzIHRvIHVzZSBjaGFuZ2VIYW5kbGVyIGZvciBvbkNoYW5nZVxuICAgIC8vIHRoaXMuYW5ndWxhclBDb25uZWN0LmNoYW5nZUhhbmRsZXIoIHRoaXMsIGV2ZW50KTtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS5hY3Rpb25zPy5vbkNoYW5nZSh0aGlzLCBldmVudCk7XG4gIH1cblxuICBvcHRpb25DaGFuZ2VkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLmFjdGlvbnM/Lm9uQ2hhbmdlKHRoaXMsIGV2ZW50KTtcbiAgfVxuXG4gIGZpZWxkT25CbHVyKGV2ZW50OiBFdmVudCkge1xuICAgIGxldCBrZXkgPSAnJztcbiAgICBjb25zdCBlbCA9IGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoZWw/LnZhbHVlKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucyQ/LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQudmFsdWUgPT09IGVsLnZhbHVlKTtcbiAgICAgIGtleSA9IGluZGV4ID4gLTEgPyAoa2V5ID0gdGhpcy5vcHRpb25zJFtpbmRleF0ua2V5KSA6IGVsLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0ga2V5O1xuICAgIGNvbnN0IGFjdGlvbnNBcGkgPSB0aGlzLnBDb25uJD8uZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IHByb3BOYW1lID0gKHRoaXMucENvbm4kPy5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZTtcbiAgICBoYW5kbGVFdmVudChhY3Rpb25zQXBpLCAnY2hhbmdlTmJsdXInLCBwcm9wTmFtZSwgdmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJD8ub25SZWNvcmRDaGFuZ2UpIHtcbiAgICAgIGVsLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNvbmZpZ1Byb3BzJC5vblJlY29yZENoYW5nZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGxldCBlcnJNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBsb29rIGZvciB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBqc29uLCBwcmUtZGVmaW5lZCBvciBqdXN0IGFuIGVycm9yIHB1c2hlZCBmcm9tIHdvcmtpdGVtICg0MDApXG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdtZXNzYWdlJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID8/ICcnO1xuICAgICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9ICdZb3UgbXVzdCBlbnRlciBhIHZhbHVlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRDb250cm9sLmVycm9ycykge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuZmllbGRDb250cm9sLmVycm9ycy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGlzcGxheU1vZGUkOyBlbHNlIG5vRGlzcGxheU1vZGVcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIkZpZWxkVmFsdWVMaXN0XCIgW3Byb3BzXT1cInsgbGFiZWwkLCB2YWx1ZSQsIGRpc3BsYXlNb2RlJCwgaGlkZUxhYmVsIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9EaXNwbGF5TW9kZT5cbiAgPGRpdiAqbmdJZj1cIiFiUmVhZG9ubHkkICYmIGJIYXNGb3JtJDsgZWxzZSBub0VkaXRcIj5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwJFwiICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgW2hpbnRMYWJlbF09XCJoZWxwZXJUZXh0XCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwkIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmFsdWUkXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiYlJlcXVpcmVkJFwiXG4gICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAoaW5wdXQpPVwiZmllbGRPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoYmx1cik9XCJmaWVsZE9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gKG9wdGlvblNlbGVjdGVkKT1cIm9wdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmNcIiBbdmFsdWVdPVwib3B0LnZhbHVlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBvcHQudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRWRpdD5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIlRleHRcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGZvcm1hdEFzJDogJ3RleHQnIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19