@eui/components 18.0.0-rc.11 → 18.0.0-rc.13

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 (60) hide show
  1. package/docs/classes/EuiChip.html +0 -29
  2. package/docs/components/EuiAlertComponent.html +1 -1
  3. package/docs/components/EuiChipComponent.html +2 -2
  4. package/docs/components/EuiChipListComponent.html +1 -1
  5. package/docs/components/EuiDialogContainerComponent.html +1 -1
  6. package/docs/components/EuiFileUploadComponent.html +1 -1
  7. package/docs/components/EuiGrowlComponent.html +1 -1
  8. package/docs/components/EuiPopoverComponent.html +1 -1
  9. package/docs/components/EuiTabsComponent.html +1 -1
  10. package/docs/components/EuiUserProfileCardComponent.html +1 -1
  11. package/docs/dependencies.html +1 -1
  12. package/docs/js/search/search_index.js +2 -2
  13. package/docs/miscellaneous/variables.html +2 -2
  14. package/esm2022/eui-alert/eui-alert.component.mjs +3 -3
  15. package/esm2022/eui-autocomplete/animations/animations.mjs +2 -2
  16. package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +3 -3
  17. package/esm2022/eui-chip/eui-chip.component.mjs +3 -7
  18. package/esm2022/eui-chip/models/eui-chip.model.mjs +1 -2
  19. package/esm2022/eui-chip-list/eui-chip-list.component.mjs +3 -3
  20. package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +4 -4
  21. package/esm2022/eui-dropdown/animations/open-close.mjs +2 -2
  22. package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +2 -2
  23. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +3 -3
  24. package/esm2022/eui-file-upload/eui-file-upload.component.mjs +4 -10
  25. package/esm2022/eui-growl/eui-growl.component.mjs +3 -3
  26. package/esm2022/eui-icon-button/eui-icon-button.component.mjs +2 -2
  27. package/esm2022/eui-popover/eui-popover.component.mjs +3 -3
  28. package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +2 -2
  29. package/esm2022/eui-tabs/eui-tabs.component.mjs +3 -3
  30. package/esm2022/eui-user-profile/user-profile-card/user-profile-card.component.mjs +3 -3
  31. package/eui-chip/eui-chip.component.d.ts +1 -1
  32. package/eui-chip/eui-chip.component.d.ts.map +1 -1
  33. package/eui-chip/models/eui-chip.model.d.ts +0 -1
  34. package/eui-chip/models/eui-chip.model.d.ts.map +1 -1
  35. package/eui-file-upload/eui-file-upload.component.d.ts.map +1 -1
  36. package/fesm2022/eui-components-eui-alert.mjs +2 -2
  37. package/fesm2022/eui-components-eui-alert.mjs.map +1 -1
  38. package/fesm2022/eui-components-eui-autocomplete.mjs +3 -3
  39. package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
  40. package/fesm2022/eui-components-eui-chip-list.mjs +2 -2
  41. package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
  42. package/fesm2022/eui-components-eui-chip.mjs +2 -7
  43. package/fesm2022/eui-components-eui-chip.mjs.map +1 -1
  44. package/fesm2022/eui-components-eui-dialog.mjs +5 -5
  45. package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
  46. package/fesm2022/eui-components-eui-dropdown.mjs +5 -5
  47. package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
  48. package/fesm2022/eui-components-eui-file-upload.mjs +3 -9
  49. package/fesm2022/eui-components-eui-file-upload.mjs.map +1 -1
  50. package/fesm2022/eui-components-eui-growl.mjs +2 -2
  51. package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
  52. package/fesm2022/eui-components-eui-icon-button.mjs +2 -2
  53. package/fesm2022/eui-components-eui-icon-button.mjs.map +1 -1
  54. package/fesm2022/eui-components-eui-popover.mjs +2 -2
  55. package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
  56. package/fesm2022/eui-components-eui-tabs.mjs +4 -4
  57. package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
  58. package/fesm2022/eui-components-eui-user-profile.mjs +2 -2
  59. package/fesm2022/eui-components-eui-user-profile.mjs.map +1 -1
  60. package/package.json +9 -9
@@ -419,11 +419,11 @@ export class EuiDropdownComponent {
419
419
  }
420
420
  }
421
421
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiDropdownComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i1.ScrollDispatcher }, { token: i2.EuiDropdownService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
422
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: EuiDropdownComponent, selector: "eui-dropdown", inputs: { e2eAttr: "e2eAttr", tabIndex: "tabIndex", width: "width", position: "position", isBlock: ["isBlock", "isBlock", booleanAttribute], isDropDownRightAligned: ["isDropDownRightAligned", "isDropDownRightAligned", booleanAttribute], hasClosedOnClickInside: ["hasClosedOnClickInside", "hasClosedOnClickInside", booleanAttribute], isLabelUpdatedFromSelectedItem: ["isLabelUpdatedFromSelectedItem", "isLabelUpdatedFromSelectedItem", booleanAttribute], isExpandOnHover: ["isExpandOnHover", "isExpandOnHover", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isRightClickEnabled: ["isRightClickEnabled", "isRightClickEnabled", booleanAttribute], euiDisabled: ["euiDisabled", "euiDisabled", booleanAttribute] }, outputs: { expand: "expand" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "euiDropdownItems", predicate: EuiDropdownItemComponent, descendants: true }], viewQueries: [{ propertyName: "templatePortalContent", first: true, predicate: ["templatePortalContent"], descendants: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }], ngImport: i0, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inherit}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-c-white);border-radius:var(--eui-br-m);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:var(--eui-bw-none);box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-s-xs) var(--eui-s-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-s-m) + var(--eui-s-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-dropdown-item:hover{background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-c-neutral-lighter)}.eui-dropdown-item:disabled:hover{background:none}.eui-dropdown-item--active{background-color:var(--eui-c-primary-bg)!important;outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important}.eui-dropdown-item--active:disabled{background:none!important}.eui-dropdown--block .eui-dropdown__trigger-container .eui-button{display:inherit;width:100%}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container button{outline:1px dashed mediumvioletred}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a{border-bottom:1px dashed mediumvioletred;color:#c71585;text-decoration:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], animations: [openClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
422
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0", type: EuiDropdownComponent, selector: "eui-dropdown", inputs: { e2eAttr: "e2eAttr", tabIndex: "tabIndex", width: "width", position: "position", isBlock: ["isBlock", "isBlock", booleanAttribute], isDropDownRightAligned: ["isDropDownRightAligned", "isDropDownRightAligned", booleanAttribute], hasClosedOnClickInside: ["hasClosedOnClickInside", "hasClosedOnClickInside", booleanAttribute], isLabelUpdatedFromSelectedItem: ["isLabelUpdatedFromSelectedItem", "isLabelUpdatedFromSelectedItem", booleanAttribute], isExpandOnHover: ["isExpandOnHover", "isExpandOnHover", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isRightClickEnabled: ["isRightClickEnabled", "isRightClickEnabled", booleanAttribute], euiDisabled: ["euiDisabled", "euiDisabled", booleanAttribute] }, outputs: { expand: "expand" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "euiDropdownItems", predicate: EuiDropdownItemComponent, descendants: true }], viewQueries: [{ propertyName: "templatePortalContent", first: true, predicate: ["templatePortalContent"], descendants: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }], ngImport: i0, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inherit}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-c-white);border-radius:var(--eui-br-m);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:var(--eui-bw-none);box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-s-xs) var(--eui-s-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-s-m) + var(--eui-s-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-dropdown-item:hover{background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-c-neutral-lighter)}.eui-dropdown-item:disabled:hover{background:none}.eui-dropdown-item--active{background-color:var(--eui-c-primary-lightest)!important}.eui-dropdown-item--active:disabled{background:none!important}.eui-dropdown--block .eui-dropdown__trigger-container .eui-button{display:inherit;width:100%}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container button{outline:1px dashed mediumvioletred}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a{border-bottom:1px dashed mediumvioletred;color:#c71585;text-decoration:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }], animations: [openClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
423
423
  }
424
424
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiDropdownComponent, decorators: [{
425
425
  type: Component,
426
- args: [{ selector: 'eui-dropdown', animations: [openClose], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inherit}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-c-white);border-radius:var(--eui-br-m);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:var(--eui-bw-none);box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-s-xs) var(--eui-s-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-s-m) + var(--eui-s-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-dropdown-item:hover{background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-c-neutral-lighter)}.eui-dropdown-item:disabled:hover{background:none}.eui-dropdown-item--active{background-color:var(--eui-c-primary-bg)!important;outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important}.eui-dropdown-item--active:disabled{background:none!important}.eui-dropdown--block .eui-dropdown__trigger-container .eui-button{display:inherit;width:100%}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container button{outline:1px dashed mediumvioletred}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a{border-bottom:1px dashed mediumvioletred;color:#c71585;text-decoration:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}\n"] }]
426
+ args: [{ selector: 'eui-dropdown', animations: [openClose], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inherit}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-c-white);border-radius:var(--eui-br-m);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:var(--eui-bw-none);box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-s-xs) var(--eui-s-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-s-m) + var(--eui-s-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-s-s)}.eui-dropdown-item:hover{background-color:var(--eui-c-neutral-bg-light)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-c-neutral-lighter)}.eui-dropdown-item:disabled:hover{background:none}.eui-dropdown-item--active{background-color:var(--eui-c-primary-lightest)!important}.eui-dropdown-item--active:disabled{background:none!important}.eui-dropdown--block .eui-dropdown__trigger-container .eui-button{display:inherit;width:100%}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container button{outline:1px dashed mediumvioletred}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a{border-bottom:1px dashed mediumvioletred;color:#c71585;text-decoration:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}.eui-dropdown--contextual-menu .eui-dropdown__trigger-container a [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:2px!important;transition:none}\n"] }]
427
427
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i1.ScrollDispatcher }, { type: i2.EuiDropdownService }, { type: i0.Renderer2 }], propDecorators: { e2eAttr: [{
428
428
  type: Input
429
429
  }], tabIndex: [{
@@ -471,4 +471,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
471
471
  type: HostBinding,
472
472
  args: ['class']
473
473
  }] } });
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1kcm9wZG93bi9ldWktZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2V1aS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFLTCxTQUFTLEVBRVQsZUFBZSxFQUlmLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxzQkFBc0IsR0FPekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBVXZGLE1BQU0sT0FBTyxvQkFBb0I7SUE0QzdCLElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxjQUFjO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNsRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lB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TztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ2tDLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0Usc0JBQXNCO3NCQUE3RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLHNCQUFzQjtzQkFBN0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSw4QkFBOEI7c0JBQXJFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsbUJBQW1CO3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLE1BQU07c0JBQWYsTUFBTTtnQkFFNkIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDVCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQzJDLGdCQUFnQjtzQkFBakYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBMkI1RCxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5UmVmLFxuICAgIFNjcm9sbERpc3BhdGNoZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBvcGVuQ2xvc2UgfSBmcm9tICcuL2FuaW1hdGlvbnMvb3Blbi1jbG9zZSc7XG5pbXBvcnQgeyBFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0vZXVpLWRyb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV1aURyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZXVpLWRyb3Bkb3duLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtvcGVuQ2xvc2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRyb3Bkb3duJztcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IC0xO1xuICAgIEBJbnB1dCgpIHdpZHRoID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyA9ICdib3R0b20nO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0Jsb2NrID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRHJvcERvd25SaWdodEFsaWduZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzQ2xvc2VkT25DbGlja0luc2lkZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTGFiZWxVcGRhdGVkRnJvbVNlbGVjdGVkSXRlbSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0V4cGFuZE9uSG92ZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzVGFiTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1JpZ2h0Q2xpY2tFbmFibGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aURpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgZXhwYW5kOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVBvcnRhbENvbnRlbnQnKSB0ZW1wbGF0ZVBvcnRhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICAgIEBWaWV3Q2hpbGQoJ3RyaWdnZXJSZWYnKSB0cmlnZ2VyUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkcmVuKEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBldWlEcm9wZG93bkl0ZW1zOiBRdWVyeUxpc3Q8SGlnaGxpZ2h0YWJsZSAmIEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgdHJhcEZvY3VzQXV0b0NhcHR1cmUgPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJlbnREcm9wZG93bjogRXVpRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBwcml2YXRlIG1vdXNlUG9zaXRpb25YID0gMDtcbiAgICBwcml2YXRlIG1vdXNlUG9zaXRpb25ZID0gMDtcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxYID0gMDtcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxZID0gMDtcbiAgICBwcml2YXRlIG9yaWdpblg6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcbiAgICBwcml2YXRlIG9yaWdpblk6ICd0b3AnIHwgJ2JvdHRvbScgfCAnY2VudGVyJyA9ICdib3R0b20nO1xuICAgIHByaXZhdGUgb3ZlcmxheVg6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcbiAgICBwcml2YXRlIG92ZXJsYXlZOiAndG9wJyB8ICdib3R0b20nIHwgJ2NlbnRlcicgPSAndG9wJztcbiAgICBwcml2YXRlIHRlbXBsYXRlUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDtcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUga2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIGFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyQ2hhbmdlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBvcmlnaW46IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuICAgIHByaXZhdGUgc2Nyb2xsU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWktZHJvcGRvd24nLFxuICAgICAgICAgICAgdGhpcy5pc0Jsb2NrID8gJ2V1aS1kcm9wZG93bi0tYmxvY2snIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQgPyAnZXVpLWRyb3Bkb3duLS1jb250ZXh0dWFsLW1lbnUnIDogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IEV1aURyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBDdXJyZW50bHkgdGhlIGBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZWAgaXMgb25seSBjaGVja2VkIG9uY2Ugb24gaW5pdC5cbiAgICAgICAgaWYgKHRoaXMuaGFzRHJvcGRvd25JdGVtcykge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2xvc2VkT25DbGlja0luc2lkZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSaWdodENsaWNrRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5oYXNUYWJOYXZpZ2F0aW9uID0gZmFsc2U7ICAvLyBVWCB3aXNlLCBjb250ZXh0dWFsIG1lbnUgY29udGFpbnMgb25seSBtZW51IGl0ZW1zIGFjY2Vzc2libGUgdGhyb3VnaCBhcnJvdyBrZXlzIG5hdlxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlUG9ydGFsQ29udGVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcblxuICAgICAgICBpZih0aGlzLnRyaWdnZXJSZWYgJiYgdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCl7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCwgJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICAgICAgICBldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBldWktZHJvcGRvd24gaXMgb3Blbi5cbiAgICAgKlxuICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxldWktZHJvcGRvd24gI2Ryb3Bkb3duPlxuICAgICAqICAgICAgPG15LWNvbXBvbmVudCAqbmdJZj1cImRyb3Bkb3duLmlzT3BlblwiPjwvbXktY29tcG9uZW50PlxuICAgICAqIDwvZXVpLWRyb3Bkb3duPlxuICAgICAqIGBgYFxuICAgICAqIEByZXR1cm5zIEEgYm9vbGVhbiB3aXRoIHZhbHVlIGB0cnVlYCB3aGVuIG9wZW4sIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT3BlbiQudmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVHJpZ2dlckNsaWNrZWQoZTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignLmRpc2FibGVkJykgJiZcbiAgICAgICAgICAgICEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJzpkaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Jsb2NrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMudHJpZ2dlclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5leHBhbmQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25UcmlnZ2VyUmlnaHRDbGlja2VkKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJy5kaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAhKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCc6ZGlzYWJsZWQnKSAmJlxuICAgICAgICAgICAgIXRoaXMuaXNPcGVuXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNCbG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnRyaWdnZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubW91c2VQb3NpdGlvblggPSAoZSBhcyBQb2ludGVyRXZlbnQpLmNsaWVudFg7XG4gICAgICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb25ZID0gKGUgYXMgUG9pbnRlckV2ZW50KS5jbGllbnRZO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5oYXNDbG9zZWRPbkNsaWNrSW5zaWRlICYmXG4gICAgICAgICAgICAhdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93biAmJlxuICAgICAgICAgICAgIXRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZGlzYWJsZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIGEgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmlnaW4gT3JpZ2luIG9mIHRoZSBkcm9wZG93biBwb3NpdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuRHJvcGRvd24ob3JpZ2luOiBIVE1MRWxlbWVudCwgcG9zaXRpb24/OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW47XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb25YID0gcG9zaXRpb24ueDtcbiAgICAgICAgICAgIHRoaXMubW91c2VQb3NpdGlvblkgPSBwb3NpdGlvbi55O1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JpZ2h0Q2xpY2tFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh3aW5kb3csICdzY3JvbGwnKS5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmdldENvbnRleHR1YWxNZW51UG9zaXRpb25TdHJhdGVneSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVHJpZ2dlckZvY3VzYWJsZU9uQ2xvc2Uob3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW4uY2xvc2VzdCgnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScpIHx8ICh0aGlzLnRyaWdnZXJSZWYubmF0aXZlRWxlbWVudC5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luLmNsb3Nlc3QoJ2EnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gdGhpcy5zY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmFuY2VzdG9yU2Nyb2xsZWQodGhpcy5vcmlnaW4pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDZGtTY3JvbGxhYmxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1Zpc2libGUodGhpcy5vcmlnaW4sIGV2ZW50ID8gZXZlbnQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5pc1JpZ2h0Q2xpY2tFbmFibGVkID8gdGhpcy5nZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKSA6IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHsgc2Nyb2xsVGhyb3R0bGU6IDEwIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2V1aS1kcm9wZG93bl9fYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdldWktZHJvcGRvd25fX3BhbmVsJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5nZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAgICAgLmtleWRvd25FdmVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Ryb3Bkb3duSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXMudG9BcnJheSgpLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uc1tpXSA9IGZyb21FdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlEcm9wZG93bkl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3VzZWVudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzID0gKHN1YkRyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bj8ub3ZlcmxheVJlZj8uX291dHNpZGVQb2ludGVyRXZlbnRzLm5leHQoZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YkRyb3Bkb3duPy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bi5ldWlEcm9wZG93bkl0ZW1zLnRvQXJyYXkoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzKHMuc3ViRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtSGF2aW5nU3ViRHJvcGRvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPdXRzaWRlUG9pbnRlckV2ZW50cyhldWlEcm9wZG93bkl0ZW1IYXZpbmdTdWJEcm9wZG93bi5zdWJEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnNbaV0gPSBmcm9tRXZlbnQoZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5zZXRQYXJlbnREcm9wZG93bih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uIC5ldWktbGFiZWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtICYmIGxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0ID0gZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLmV1aURyb3Bkb3duSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoSG9tZUFuZEVuZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhXcmFwKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bihyZWN1cnNpdmVseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5leHBhbmQuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9ucy5mb3JFYWNoKChldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICAgIGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzRHJvcGRvd25JdGVtcykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW4uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjdXJzaXZlbHkgJiYgdGhpcy5wYXJlbnREcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnREcm9wZG93bi5jbG9zZURyb3Bkb3duKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2plY3RDb250ZW50Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5wb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29kZSA9PT0gJ0VudGVyJyAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5oYXNUYWJOYXZpZ2F0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0V4cGFuZE9uSG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5tb3VzZWVudGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5jbGljaygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudERyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duLmNyZWF0ZUtleWJvYXJkSGFuZGxlclN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kT25Ib3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLm1vdXNlZW50ZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnVGFiJyAmJiAhdGhpcy5oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhcmVudERyb3Bkb3duKHBhcmVudERyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duID0gcGFyZW50RHJvcGRvd247XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSAncmlnaHQnO1xuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNEcm9wZG93bkl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ldWlEcm9wZG93bkl0ZW1zPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5vcmlnaW4gYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICAgICAgICAgICAgICB7IG9yaWdpblg6IHRoaXMub3JpZ2luWCwgb3JpZ2luWTogdGhpcy5vcmlnaW5ZIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgb3ZlcmxheVg6IHRoaXMub3ZlcmxheVgsIG92ZXJsYXlZOiB0aGlzLm92ZXJsYXlZIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKTogR2xvYmFsUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IHBhbmVsSGVpZ2h0ID0gdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWCA9IHdpbmRvdy5zY3JvbGxYIHx8IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZIHx8IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgY29uc3QgbmV3WCA9IHRoaXMubW91c2VQb3NpdGlvblggKyAodGhpcy5pbml0aWFsU2Nyb2xsWCAtIHNjcm9sbFgpO1xuICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5tb3VzZVBvc2l0aW9uWSArICh0aGlzLmluaXRpYWxTY3JvbGxZIC0gc2Nyb2xsWSk7XG4gICAgICAgIGNvbnN0IG1lbnVCb3R0b21Qb3NpdGlvbiA9IG5ld1kgKyBwYW5lbEhlaWdodDtcbiAgICAgICAgY29uc3QgaXNNZW51QmVsb3dXaW5kb3dCb3R0b20gPSBtZW51Qm90dG9tUG9zaXRpb24gPiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5nbG9iYWwoKVxuICAgICAgICAgICAgLmxlZnQobmV3WCArICdweCcpO1xuXG4gICAgICAgIGlmIChpc01lbnVCZWxvd1dpbmRvd0JvdHRvbSkge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneS5ib3R0b20od2luZG93LmlubmVySGVpZ2h0IC0gbmV3WSArICdweCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneS50b3AobmV3WSArICdweCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUob3JpZ2luOiBIVE1MRWxlbWVudCwgc2Nyb2xsYWJsZVBhcmVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luWSA9IG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55O1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50WSA9IE1hdGguYWJzKHNjcm9sbGFibGVQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSk7XG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQgPSBzY3JvbGxhYmxlUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIDUwO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAob3JpZ2luWSA+IDAgJiYgb3JpZ2luWSA8IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQpIHx8XG4gICAgICAgICAgICAob3JpZ2luWSAtIHNjcm9sbGFibGVQYXJlbnRZID4gMCAmJiBvcmlnaW5ZIDwgc2Nyb2xsYWJsZVBhcmVudFkgKyBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUcmlnZ2VyRm9jdXNhYmxlT25DbG9zZShvcmlnaW46IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBvcmlnaW4ubWF0Y2hlcygnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScpIHx8IG9yaWdpbi5tYXRjaGVzKCdhJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpblkgPSAndG9wJztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnYm90dG9tJztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wRG93blJpZ2h0QWxpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdlbmQnO1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVggPSAnZW5kJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ3N0YXJ0JztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnY2VudGVyJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWSA9ICdib3R0b20nO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5WSA9ICd0b3AnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duUmlnaHRBbGlnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5WCA9ICdlbmQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdzdGFydCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlZID0gJ2NlbnRlcic7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICN0cmlnZ2VyUmVmIGNsYXNzPVwiZXVpLWRyb3Bkb3duX190cmlnZ2VyLWNvbnRhaW5lclwiXG4gICAgKGNsaWNrKT1cIiFpc1JpZ2h0Q2xpY2tFbmFibGVkID8gb25UcmlnZ2VyQ2xpY2tlZCgkZXZlbnQpIDogbnVsbFwiXG4gICAgKGNvbnRleHRtZW51KT1cImlzUmlnaHRDbGlja0VuYWJsZWQgPyBvblRyaWdnZXJSaWdodENsaWNrZWQoJGV2ZW50KSA6IG51bGxcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBvcnRhbENvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiXG4gICAgICAgIFtAb3BlbkNsb3NlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cmFwRm9jdXNBdXRvQ2FwdHVyZVwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiZVVJIGRyb3Bkb3duIHBhbmVsXCJcbiAgICAgICAgY2xhc3M9XCJldWktZHJvcGRvd25fX3BhbmVsLWNvbnRhaW5lclwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwicHJvamVjdENvbnRlbnRDaGFuZ2VkKClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLWRyb3Bkb3duLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1kcm9wZG93bi9ldWktZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2V1aS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFLTCxTQUFTLEVBRVQsZUFBZSxFQUlmLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxzQkFBc0IsR0FPekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBVXZGLE1BQU0sT0FBTyxvQkFBb0I7SUE0QzdCLElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxjQUFjO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNsRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lB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TztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ2tDLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0Usc0JBQXNCO3NCQUE3RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLHNCQUFzQjtzQkFBN0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSw4QkFBOEI7c0JBQXJFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsbUJBQW1CO3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLE1BQU07c0JBQWYsTUFBTTtnQkFFNkIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDVCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQzJDLGdCQUFnQjtzQkFBakYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBMkI1RCxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5UmVmLFxuICAgIFNjcm9sbERpc3BhdGNoZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBvcGVuQ2xvc2UgfSBmcm9tICcuL2FuaW1hdGlvbnMvb3Blbi1jbG9zZSc7XG5pbXBvcnQgeyBFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0vZXVpLWRyb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV1aURyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZXVpLWRyb3Bkb3duLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtvcGVuQ2xvc2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRyb3Bkb3duJztcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IC0xO1xuICAgIEBJbnB1dCgpIHdpZHRoID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyA9ICdib3R0b20nO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0Jsb2NrID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRHJvcERvd25SaWdodEFsaWduZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzQ2xvc2VkT25DbGlja0luc2lkZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTGFiZWxVcGRhdGVkRnJvbVNlbGVjdGVkSXRlbSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0V4cGFuZE9uSG92ZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzVGFiTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1JpZ2h0Q2xpY2tFbmFibGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aURpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgZXhwYW5kOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVBvcnRhbENvbnRlbnQnKSB0ZW1wbGF0ZVBvcnRhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICAgIEBWaWV3Q2hpbGQoJ3RyaWdnZXJSZWYnKSB0cmlnZ2VyUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkcmVuKEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBldWlEcm9wZG93bkl0ZW1zOiBRdWVyeUxpc3Q8SGlnaGxpZ2h0YWJsZSAmIEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgdHJhcEZvY3VzQXV0b0NhcHR1cmUgPSB0cnVlO1xuICAgIHB1YmxpYyBwYXJlbnREcm9wZG93bjogRXVpRHJvcGRvd25Db21wb25lbnQ7XG5cbiAgICBwcml2YXRlIG1vdXNlUG9zaXRpb25YID0gMDtcbiAgICBwcml2YXRlIG1vdXNlUG9zaXRpb25ZID0gMDtcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxYID0gMDtcbiAgICBwcml2YXRlIGluaXRpYWxTY3JvbGxZID0gMDtcbiAgICBwcml2YXRlIG9yaWdpblg6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcbiAgICBwcml2YXRlIG9yaWdpblk6ICd0b3AnIHwgJ2JvdHRvbScgfCAnY2VudGVyJyA9ICdib3R0b20nO1xuICAgIHByaXZhdGUgb3ZlcmxheVg6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInID0gJ3N0YXJ0JztcbiAgICBwcml2YXRlIG92ZXJsYXlZOiAndG9wJyB8ICdib3R0b20nIHwgJ2NlbnRlcicgPSAndG9wJztcbiAgICBwcml2YXRlIHRlbXBsYXRlUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDtcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUga2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIGFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyQ2hhbmdlU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBvcmlnaW46IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuICAgIHByaXZhdGUgc2Nyb2xsU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWktZHJvcGRvd24nLFxuICAgICAgICAgICAgdGhpcy5pc0Jsb2NrID8gJ2V1aS1kcm9wZG93bi0tYmxvY2snIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQgPyAnZXVpLWRyb3Bkb3duLS1jb250ZXh0dWFsLW1lbnUnIDogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IEV1aURyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBDdXJyZW50bHkgdGhlIGBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZWAgaXMgb25seSBjaGVja2VkIG9uY2Ugb24gaW5pdC5cbiAgICAgICAgaWYgKHRoaXMuaGFzRHJvcGRvd25JdGVtcykge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ2xvc2VkT25DbGlja0luc2lkZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSaWdodENsaWNrRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5oYXNUYWJOYXZpZ2F0aW9uID0gZmFsc2U7ICAvLyBVWCB3aXNlLCBjb250ZXh0dWFsIG1lbnUgY29udGFpbnMgb25seSBtZW51IGl0ZW1zIGFjY2Vzc2libGUgdGhyb3VnaCBhcnJvdyBrZXlzIG5hdlxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlUG9ydGFsQ29udGVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcblxuICAgICAgICBpZih0aGlzLnRyaWdnZXJSZWYgJiYgdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCl7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCwgJ2FyaWEtaGFzcG9wdXAnLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICAgICAgICBldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBldWktZHJvcGRvd24gaXMgb3Blbi5cbiAgICAgKlxuICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxldWktZHJvcGRvd24gI2Ryb3Bkb3duPlxuICAgICAqICAgICAgPG15LWNvbXBvbmVudCAqbmdJZj1cImRyb3Bkb3duLmlzT3BlblwiPjwvbXktY29tcG9uZW50PlxuICAgICAqIDwvZXVpLWRyb3Bkb3duPlxuICAgICAqIGBgYFxuICAgICAqIEByZXR1cm5zIEEgYm9vbGVhbiB3aXRoIHZhbHVlIGB0cnVlYCB3aGVuIG9wZW4sIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT3BlbiQudmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVHJpZ2dlckNsaWNrZWQoZTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignLmRpc2FibGVkJykgJiZcbiAgICAgICAgICAgICEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJzpkaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Jsb2NrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMudHJpZ2dlclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5leHBhbmQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25UcmlnZ2VyUmlnaHRDbGlja2VkKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJy5kaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAhKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCc6ZGlzYWJsZWQnKSAmJlxuICAgICAgICAgICAgIXRoaXMuaXNPcGVuXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNCbG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnRyaWdnZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubW91c2VQb3NpdGlvblggPSAoZSBhcyBQb2ludGVyRXZlbnQpLmNsaWVudFg7XG4gICAgICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb25ZID0gKGUgYXMgUG9pbnRlckV2ZW50KS5jbGllbnRZO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5oYXNDbG9zZWRPbkNsaWNrSW5zaWRlICYmXG4gICAgICAgICAgICAhdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93biAmJlxuICAgICAgICAgICAgIXRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZGlzYWJsZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVuIGEgZHJvcGRvd25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmlnaW4gT3JpZ2luIG9mIHRoZSBkcm9wZG93biBwb3NpdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuRHJvcGRvd24ob3JpZ2luOiBIVE1MRWxlbWVudCwgcG9zaXRpb24/OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW47XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb25YID0gcG9zaXRpb24ueDtcbiAgICAgICAgICAgIHRoaXMubW91c2VQb3NpdGlvblkgPSBwb3NpdGlvbi55O1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU2Nyb2xsWCA9IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JpZ2h0Q2xpY2tFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh3aW5kb3csICdzY3JvbGwnKS5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmdldENvbnRleHR1YWxNZW51UG9zaXRpb25TdHJhdGVneSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVHJpZ2dlckZvY3VzYWJsZU9uQ2xvc2Uob3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW4uY2xvc2VzdCgnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScpIHx8ICh0aGlzLnRyaWdnZXJSZWYubmF0aXZlRWxlbWVudC5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luLmNsb3Nlc3QoJ2EnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gdGhpcy5zY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmFuY2VzdG9yU2Nyb2xsZWQodGhpcy5vcmlnaW4pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDZGtTY3JvbGxhYmxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1Zpc2libGUodGhpcy5vcmlnaW4sIGV2ZW50ID8gZXZlbnQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5pc1JpZ2h0Q2xpY2tFbmFibGVkID8gdGhpcy5nZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKSA6IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHsgc2Nyb2xsVGhyb3R0bGU6IDEwIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2V1aS1kcm9wZG93bl9fYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdldWktZHJvcGRvd25fX3BhbmVsJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5nZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAgICAgLmtleWRvd25FdmVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Ryb3Bkb3duSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXMudG9BcnJheSgpLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uc1tpXSA9IGZyb21FdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlEcm9wZG93bkl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3VzZWVudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzID0gKHN1YkRyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bj8ub3ZlcmxheVJlZj8uX291dHNpZGVQb2ludGVyRXZlbnRzLm5leHQoZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YkRyb3Bkb3duPy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bi5ldWlEcm9wZG93bkl0ZW1zLnRvQXJyYXkoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzKHMuc3ViRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtSGF2aW5nU3ViRHJvcGRvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPdXRzaWRlUG9pbnRlckV2ZW50cyhldWlEcm9wZG93bkl0ZW1IYXZpbmdTdWJEcm9wZG93bi5zdWJEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnNbaV0gPSBmcm9tRXZlbnQoZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5zZXRQYXJlbnREcm9wZG93bih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uIC5ldWktbGFiZWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtICYmIGxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0ID0gZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLmV1aURyb3Bkb3duSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoSG9tZUFuZEVuZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhXcmFwKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bihyZWN1cnNpdmVseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5leHBhbmQuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9ucy5mb3JFYWNoKChldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICAgIGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzRHJvcGRvd25JdGVtcykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy50cmFwRm9jdXNBdXRvQ2FwdHVyZSkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW4uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjdXJzaXZlbHkgJiYgdGhpcy5wYXJlbnREcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnREcm9wZG93bi5jbG9zZURyb3Bkb3duKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb2plY3RDb250ZW50Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUmlnaHRDbGlja0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5wb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29kZSA9PT0gJ0VudGVyJyAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5oYXNUYWJOYXZpZ2F0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0V4cGFuZE9uSG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5tb3VzZWVudGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5jbGljaygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudERyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duLmNyZWF0ZUtleWJvYXJkSGFuZGxlclN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kT25Ib3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLm1vdXNlZW50ZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnVGFiJyAmJiAhdGhpcy5oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhcmVudERyb3Bkb3duKHBhcmVudERyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duID0gcGFyZW50RHJvcGRvd247XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSAncmlnaHQnO1xuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNEcm9wZG93bkl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ldWlEcm9wZG93bkl0ZW1zPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5vcmlnaW4gYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICAgICAgICAgICAgICB7IG9yaWdpblg6IHRoaXMub3JpZ2luWCwgb3JpZ2luWTogdGhpcy5vcmlnaW5ZIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgb3ZlcmxheVg6IHRoaXMub3ZlcmxheVgsIG92ZXJsYXlZOiB0aGlzLm92ZXJsYXlZIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250ZXh0dWFsTWVudVBvc2l0aW9uU3RyYXRlZ3koKTogR2xvYmFsUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IHBhbmVsSGVpZ2h0ID0gdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWCA9IHdpbmRvdy5zY3JvbGxYIHx8IHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZIHx8IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgICAgY29uc3QgbmV3WCA9IHRoaXMubW91c2VQb3NpdGlvblggKyAodGhpcy5pbml0aWFsU2Nyb2xsWCAtIHNjcm9sbFgpO1xuICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5tb3VzZVBvc2l0aW9uWSArICh0aGlzLmluaXRpYWxTY3JvbGxZIC0gc2Nyb2xsWSk7XG4gICAgICAgIGNvbnN0IG1lbnVCb3R0b21Qb3NpdGlvbiA9IG5ld1kgKyBwYW5lbEhlaWdodDtcbiAgICAgICAgY29uc3QgaXNNZW51QmVsb3dXaW5kb3dCb3R0b20gPSBtZW51Qm90dG9tUG9zaXRpb24gPiB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5nbG9iYWwoKVxuICAgICAgICAgICAgLmxlZnQobmV3WCArICdweCcpO1xuXG4gICAgICAgIGlmIChpc01lbnVCZWxvd1dpbmRvd0JvdHRvbSkge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneS5ib3R0b20od2luZG93LmlubmVySGVpZ2h0IC0gbmV3WSArICdweCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneS50b3AobmV3WSArICdweCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUob3JpZ2luOiBIVE1MRWxlbWVudCwgc2Nyb2xsYWJsZVBhcmVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luWSA9IG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55O1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50WSA9IE1hdGguYWJzKHNjcm9sbGFibGVQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSk7XG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQgPSBzY3JvbGxhYmxlUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIDUwO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAob3JpZ2luWSA+IDAgJiYgb3JpZ2luWSA8IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQpIHx8XG4gICAgICAgICAgICAob3JpZ2luWSAtIHNjcm9sbGFibGVQYXJlbnRZID4gMCAmJiBvcmlnaW5ZIDwgc2Nyb2xsYWJsZVBhcmVudFkgKyBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUcmlnZ2VyRm9jdXNhYmxlT25DbG9zZShvcmlnaW46IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBvcmlnaW4ubWF0Y2hlcygnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScpIHx8IG9yaWdpbi5tYXRjaGVzKCdhJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpblkgPSAndG9wJztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnYm90dG9tJztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wRG93blJpZ2h0QWxpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdlbmQnO1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVggPSAnZW5kJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ3N0YXJ0JztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnY2VudGVyJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWSA9ICdib3R0b20nO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5WSA9ICd0b3AnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duUmlnaHRBbGlnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5WCA9ICdlbmQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdzdGFydCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlZID0gJ2NlbnRlcic7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICN0cmlnZ2VyUmVmIGNsYXNzPVwiZXVpLWRyb3Bkb3duX190cmlnZ2VyLWNvbnRhaW5lclwiXG4gICAgKGNsaWNrKT1cIiFpc1JpZ2h0Q2xpY2tFbmFibGVkID8gb25UcmlnZ2VyQ2xpY2tlZCgkZXZlbnQpIDogbnVsbFwiXG4gICAgKGNvbnRleHRtZW51KT1cImlzUmlnaHRDbGlja0VuYWJsZWQgPyBvblRyaWdnZXJSaWdodENsaWNrZWQoJGV2ZW50KSA6IG51bGxcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBvcnRhbENvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiXG4gICAgICAgIFtAb3BlbkNsb3NlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cmFwRm9jdXNBdXRvQ2FwdHVyZVwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiZVVJIGRyb3Bkb3duIHBhbmVsXCJcbiAgICAgICAgY2xhc3M9XCJldWktZHJvcGRvd25fX3BhbmVsLWNvbnRhaW5lclwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwicHJvamVjdENvbnRlbnRDaGFuZ2VkKClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLWRyb3Bkb3duLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -20,7 +20,7 @@ export class EuiFileUploadComponent {
20
20
  this.randomNumberId = Math.floor(Math.random() * 10000);
21
21
  this.uploadedFiles = [];
22
22
  this.dragEntered = false;
23
- this.isMultiple = false;
23
+ this.isMultiple = true;
24
24
  this.hasProgressBar = true;
25
25
  this.hasPreview = true;
26
26
  this.hasPreviewAsImage = true;
@@ -67,12 +67,6 @@ export class EuiFileUploadComponent {
67
67
  get isDropAreaDisabled() {
68
68
  return (!this.isMultiple && this.files.length === 1) || [...this.uploadedFiles, ...this.files].length === this.maxFiles;
69
69
  }
70
- // TODO check this function has never called (not implemented class level)
71
- // ngOnChanges(c: SimpleChanges): void {
72
- // if (c?.isMultiple) {
73
- // this.maxFiles = 1;
74
- // }
75
- // }
76
70
  ngOnInit() {
77
71
  if (this.hasPreviewAsIcon) {
78
72
  this.hasPreviewAsImage = false;
@@ -145,7 +139,7 @@ export class EuiFileUploadComponent {
145
139
  useExisting: EuiFileUploadComponent,
146
140
  multi: true,
147
141
  },
148
- ], viewQueries: [{ propertyName: "fileInputs", predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\"\n *ngIf=\"hasDragArea\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n</div>\n<div class=\"eui-file-upload__simple-input-file\" *ngIf=\"!hasDragArea\">\n <label for=\"file-{{ randomNumberId }}\">\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n </label>\n\n <input\n #input\n *ngIf=\"isMultiple\"\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n <input\n #input\n *ngIf=\"!isMultiple\"\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n</div>\n<eui-file-upload-progress *ngIf=\"hasProgressBar\" [progress]=\"progress\"></eui-file-upload-progress>\n\n<div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n</div>\n\n<div *ngFor=\"let file of files; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n</div>\n\n<div class=\"eui-file-upload__total-size\" *ngIf=\"filesTotalSize && hasTotalSizeDisplayed\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n</div>\n\n<ng-content></ng-content>\n<button euiButton type=\"button\" (click)=\"resetList()\" *ngIf=\"showResetBtn\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n</button>\n", styles: [".eui-file-upload__total-size{margin-bottom:1rem;font:var(--eui-f-m-bold)}.eui-file-upload__drop-area{outline:1px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--active{background-color:var(--eui-c-primary-bg);outline:3px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--disabled{opacity:.75;cursor:not-allowed}.eui-file-upload__drop-area--disabled .file-input{cursor:default}.eui-file-upload__fake-btn{background-color:#fff;border:var(--eui-bw-xs) solid #9e9ec4;border-radius:var(--eui-br-m);margin-right:8px;padding:8px 15px}.eui-file-upload__file-input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.eui-file-upload__simple-input-file{margin-bottom:var(--eui-s-xs)}.eui-file-upload__simple-input-file .file-input{display:none}.eui-file-upload__preview{align-items:center;display:flex;justify-content:space-between;margin:5px 0}.eui-file-upload__preview--left{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-file-upload__preview--left__image{margin-right:var(--eui-s-m)}.eui-file-upload__preview--left__image img{width:180px}.eui-file-upload__preview--left__image .loading-container{text-align:center;width:180px}.eui-file-upload__preview--left__filename{display:block}.eui-file-upload__preview--right{align-items:center;display:flex;margin-left:auto}.eui-file-upload__progress-bar-container{margin-bottom:var(--eui-s-2xs)}.eui-file-upload__progress-bar-container .progress-bar{background-color:var(--eui-c-primary);height:var(--eui-s-2xs)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiFileUploadProgressComponent, selector: "eui-file-upload-progress", inputs: ["progress"] }, { kind: "component", type: i4.EuiFilePreviewComponent, selector: "eui-file-preview", inputs: ["file", "index", "previewAsIconConfig", "hasPreview", "isFilenameDisplayed", "isFilesizeDisplayed", "isFiletypeDisplayed", "hasPreviewAsImage", "hasPreviewAsIcon", "isItemsClickable"], outputs: ["removeFromList", "itemClick"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.EuiFileSizePipe, name: "filesize" }], encapsulation: i0.ViewEncapsulation.None }); }
142
+ ], viewQueries: [{ propertyName: "fileInputs", predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\"\n *ngIf=\"hasDragArea\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n</div>\n<div class=\"eui-file-upload__simple-input-file\" *ngIf=\"!hasDragArea\">\n <label for=\"file-{{ randomNumberId }}\">\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n </label>\n\n <input\n #input\n *ngIf=\"isMultiple\"\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n <input\n #input\n *ngIf=\"!isMultiple\"\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n</div>\n<eui-file-upload-progress *ngIf=\"hasProgressBar\" [progress]=\"progress\"></eui-file-upload-progress>\n\n<div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n</div>\n\n<div *ngFor=\"let file of files; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n</div>\n\n<div class=\"eui-file-upload__total-size\" *ngIf=\"filesTotalSize && hasTotalSizeDisplayed\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n</div>\n\n<ng-content></ng-content>\n<button euiButton type=\"button\" (click)=\"resetList()\" *ngIf=\"showResetBtn\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n</button>\n", styles: [".eui-file-upload__total-size{margin-bottom:1rem;font:var(--eui-f-m-bold)}.eui-file-upload__drop-area{outline:1px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--active{background-color:var(--eui-c-primary-bg);outline:3px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--disabled{opacity:.75;cursor:not-allowed}.eui-file-upload__drop-area--disabled .file-input{cursor:default}.eui-file-upload__fake-btn{background-color:#fff;border:var(--eui-bw-xs) solid #9e9ec4;border-radius:var(--eui-br-m);margin-right:8px;padding:8px 15px}.eui-file-upload__file-input{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.eui-file-upload__file-input:not(:disabled){cursor:pointer}.eui-file-upload__simple-input-file{margin-bottom:var(--eui-s-xs)}.eui-file-upload__simple-input-file .file-input{display:none}.eui-file-upload__preview{align-items:center;display:flex;justify-content:space-between;margin:5px 0}.eui-file-upload__preview--left{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-file-upload__preview--left__image{margin-right:var(--eui-s-m)}.eui-file-upload__preview--left__image img{width:180px}.eui-file-upload__preview--left__image .loading-container{text-align:center;width:180px}.eui-file-upload__preview--left__filename{display:block}.eui-file-upload__preview--right{align-items:center;display:flex;margin-left:auto}.eui-file-upload__progress-bar-container{margin-bottom:var(--eui-s-2xs)}.eui-file-upload__progress-bar-container .progress-bar{background-color:var(--eui-c-primary);height:var(--eui-s-2xs)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiFileUploadProgressComponent, selector: "eui-file-upload-progress", inputs: ["progress"] }, { kind: "component", type: i4.EuiFilePreviewComponent, selector: "eui-file-preview", inputs: ["file", "index", "previewAsIconConfig", "hasPreview", "isFilenameDisplayed", "isFilesizeDisplayed", "isFiletypeDisplayed", "hasPreviewAsImage", "hasPreviewAsIcon", "isItemsClickable"], outputs: ["removeFromList", "itemClick"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.EuiFileSizePipe, name: "filesize" }], encapsulation: i0.ViewEncapsulation.None }); }
149
143
  }
150
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiFileUploadComponent, decorators: [{
151
145
  type: Component,
@@ -155,7 +149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
155
149
  useExisting: EuiFileUploadComponent,
156
150
  multi: true,
157
151
  },
158
- ], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\"\n *ngIf=\"hasDragArea\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n</div>\n<div class=\"eui-file-upload__simple-input-file\" *ngIf=\"!hasDragArea\">\n <label for=\"file-{{ randomNumberId }}\">\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n </label>\n\n <input\n #input\n *ngIf=\"isMultiple\"\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n <input\n #input\n *ngIf=\"!isMultiple\"\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n</div>\n<eui-file-upload-progress *ngIf=\"hasProgressBar\" [progress]=\"progress\"></eui-file-upload-progress>\n\n<div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n</div>\n\n<div *ngFor=\"let file of files; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n</div>\n\n<div class=\"eui-file-upload__total-size\" *ngIf=\"filesTotalSize && hasTotalSizeDisplayed\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n</div>\n\n<ng-content></ng-content>\n<button euiButton type=\"button\" (click)=\"resetList()\" *ngIf=\"showResetBtn\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n</button>\n", styles: [".eui-file-upload__total-size{margin-bottom:1rem;font:var(--eui-f-m-bold)}.eui-file-upload__drop-area{outline:1px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--active{background-color:var(--eui-c-primary-bg);outline:3px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--disabled{opacity:.75;cursor:not-allowed}.eui-file-upload__drop-area--disabled .file-input{cursor:default}.eui-file-upload__fake-btn{background-color:#fff;border:var(--eui-bw-xs) solid #9e9ec4;border-radius:var(--eui-br-m);margin-right:8px;padding:8px 15px}.eui-file-upload__file-input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.eui-file-upload__simple-input-file{margin-bottom:var(--eui-s-xs)}.eui-file-upload__simple-input-file .file-input{display:none}.eui-file-upload__preview{align-items:center;display:flex;justify-content:space-between;margin:5px 0}.eui-file-upload__preview--left{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-file-upload__preview--left__image{margin-right:var(--eui-s-m)}.eui-file-upload__preview--left__image img{width:180px}.eui-file-upload__preview--left__image .loading-container{text-align:center;width:180px}.eui-file-upload__preview--left__filename{display:block}.eui-file-upload__preview--right{align-items:center;display:flex;margin-left:auto}.eui-file-upload__progress-bar-container{margin-bottom:var(--eui-s-2xs)}.eui-file-upload__progress-bar-container .progress-bar{background-color:var(--eui-c-primary);height:var(--eui-s-2xs)}\n"] }]
152
+ ], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\"\n *ngIf=\"hasDragArea\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n</div>\n<div class=\"eui-file-upload__simple-input-file\" *ngIf=\"!hasDragArea\">\n <label for=\"file-{{ randomNumberId }}\">\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n </label>\n\n <input\n #input\n *ngIf=\"isMultiple\"\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n <input\n #input\n *ngIf=\"!isMultiple\"\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n</div>\n<eui-file-upload-progress *ngIf=\"hasProgressBar\" [progress]=\"progress\"></eui-file-upload-progress>\n\n<div *ngFor=\"let uploadedFile of uploadedFiles; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n</div>\n\n<div *ngFor=\"let file of files; let i = index\">\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n</div>\n\n<div class=\"eui-file-upload__total-size\" *ngIf=\"filesTotalSize && hasTotalSizeDisplayed\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n</div>\n\n<ng-content></ng-content>\n<button euiButton type=\"button\" (click)=\"resetList()\" *ngIf=\"showResetBtn\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n</button>\n", styles: [".eui-file-upload__total-size{margin-bottom:1rem;font:var(--eui-f-m-bold)}.eui-file-upload__drop-area{outline:1px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--active{background-color:var(--eui-c-primary-bg);outline:3px dashed var(--eui-c-info);border-radius:var(--eui-br-m);margin:0 0 10px;padding:30px;position:relative;-webkit-transition:.2s;transition:.2s}.eui-file-upload__drop-area--disabled{opacity:.75;cursor:not-allowed}.eui-file-upload__drop-area--disabled .file-input{cursor:default}.eui-file-upload__fake-btn{background-color:#fff;border:var(--eui-bw-xs) solid #9e9ec4;border-radius:var(--eui-br-m);margin-right:8px;padding:8px 15px}.eui-file-upload__file-input{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.eui-file-upload__file-input:not(:disabled){cursor:pointer}.eui-file-upload__simple-input-file{margin-bottom:var(--eui-s-xs)}.eui-file-upload__simple-input-file .file-input{display:none}.eui-file-upload__preview{align-items:center;display:flex;justify-content:space-between;margin:5px 0}.eui-file-upload__preview--left{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-file-upload__preview--left__image{margin-right:var(--eui-s-m)}.eui-file-upload__preview--left__image img{width:180px}.eui-file-upload__preview--left__image .loading-container{text-align:center;width:180px}.eui-file-upload__preview--left__filename{display:block}.eui-file-upload__preview--right{align-items:center;display:flex;margin-left:auto}.eui-file-upload__progress-bar-container{margin-bottom:var(--eui-s-2xs)}.eui-file-upload__progress-bar-container .progress-bar{background-color:var(--eui-c-primary);height:var(--eui-s-2xs)}\n"] }]
159
153
  }], propDecorators: { e2eAttr: [{
160
154
  type: Input
161
155
  }], progress: [{
@@ -205,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
205
199
  type: HostListener,
206
200
  args: ['change', ['$event.target.files']]
207
201
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1maWxlLXVwbG9hZC9ldWktZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWZpbGUtdXBsb2FkL2V1aS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLGlCQUFpQixFQUVqQixZQUFZLEVBRVosTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWlCekUsTUFBTSxPQUFPLHNCQUFzQjtJQWJuQztRQWNhLFlBQU8sR0FBRyxpQkFBaUIsQ0FBQztRQUU1QixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBRVosYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXlDLENBQUM7UUFXekUsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGtCQUFhLEdBQStCLEVBQUUsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdhLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pC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LFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsaUJBQWlCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxxQkFBcUI7c0JBQTVELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFVyxTQUFTO3NCQUF6RCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRXVpVXBsb2FkZWRGaWxlSW50ZXJmYWNlIH0gZnJvbSAnLi9tb2RlbHMvdXBsb2FkZWQtZmlsZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRXVpRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWZpbGUtdXBsb2FkJztcbiAgICBASW5wdXQoKSBwcm9ncmVzczogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcbiAgICBASW5wdXQoKSBtYXhGaWxlczogbnVtYmVyO1xuICAgIEBPdXRwdXQoKSBmaWxlRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxCbG9iIHwgRXVpVXBsb2FkZWRGaWxlSW50ZXJmYWNlIHwgYW55PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpLWZpbGUtdXBsb2FkJyxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgIHB1YmxpYyBmaWxlc1RvdGFsU2l6ZSA9IDA7XG4gICAgcHVibGljIHJhbmRvbU51bWJlcklkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDApO1xuICAgIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBFdWlVcGxvYWRlZEZpbGVJbnRlcmZhY2VbXSA9IFtdO1xuICAgIHB1YmxpYyBkcmFnRW50ZXJlZCA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2lucHV0JykgZmlsZUlucHV0czogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTXVsdGlwbGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzUHJvZ3Jlc3NCYXIgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNQcmV2aWV3ID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzUHJldmlld0FzSW1hZ2UgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNQcmV2aWV3QXNJY29uID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1RvdGFsU2l6ZURpc3BsYXllZCA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzRHJhZ0FyZWEgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNJdGVtc0NsaWNrYWJsZSA9IGZhbHNlO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQudGFyZ2V0LmZpbGVzJ10pIGVtaXRGaWxlcyhmaWxlTGlzdDogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi50aGlzLmZpbGVzXS5sZW5ndGg7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmlsZUxpc3QpIHtcbiAgICAgICAgICAgIGlmIChmaWxlTGlzdFtwcm9wZXJ0eV0gJiYgdHlwZW9mIGZpbGVMaXN0W3Byb3BlcnR5XSA9PT0gJ29iamVjdCcgJiYgKCF0aGlzLm1heEZpbGVzIHx8IGkgPCB0aGlzLm1heEZpbGVzKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gZmlsZUxpc3RbcHJvcGVydHldLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVbZmlsZU5hbWUubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY2NlcHQuaW5kZXhPZihmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpICE9PSAtMSB8fCB0aGlzLmFjY2VwdCA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlTGlzdFtwcm9wZXJ0eV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRUb3RhbFNpemUoKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID8gdGhpcy5vbkNoYW5nZShbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi50aGlzLmZpbGVzXSkgOiB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZXMpO1xuICAgICAgICBpZiAodGhpcy5maWxlSW5wdXRzKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dHMuZmlyc3QubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXRzLmxhc3QubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcmFnRW50ZXJlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbGVEcm9wLmVtaXQoKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd1Jlc2V0QnRuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNSZXNldEJ1dHRvbiAmJiB0aGlzLmlzTXVsdGlwbGUgJiYgKHRoaXMuZmlsZXMubGVuZ3RoID4gMCB8fCB0aGlzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzRHJvcEFyZWFEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghdGhpcy5pc011bHRpcGxlICYmIHRoaXMuZmlsZXMubGVuZ3RoID09PSAxKSB8fCBbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi50aGlzLmZpbGVzXS5sZW5ndGggPT09IHRoaXMubWF4RmlsZXM7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBjaGVjayB0aGlzIGZ1bmN0aW9uIGhhcyBuZXZlciBjYWxsZWQgKG5vdCBpbXBsZW1lbnRlZCBjbGFzcyBsZXZlbClcbiAgICAvLyBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gICAgIGlmIChjPy5pc011bHRpcGxlKSB7XG4gICAgLy8gICAgICAgICB0aGlzLm1heEZpbGVzID0gMTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNQcmV2aWV3QXNJY29uKSB7XG4gICAgICAgICAgICB0aGlzLmhhc1ByZXZpZXdBc0ltYWdlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyYWdFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRHJvcEFyZWFEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kcmFnRW50ZXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnRW50ZXJlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGcm9tTGlzdChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcigoZiwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRUb3RhbFNpemUoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi50aGlzLmZpbGVzXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZyb21VcGxvYWRlZExpc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZmlsdGVyKChmLCBpKSA9PiBpICE9PSBpbmRleCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2V0VG90YWxTaXplKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4udGhpcy5maWxlc10pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldExpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XG4gICAgICAgIHRoaXMuZ2V0VG90YWxTaXplKCk7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLnRoaXMuZmlsZXNdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkJyb3dzZVdpbmRvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlSW5wdXRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgb25JdGVtQ2xpY2soZTogQmxvYiB8IEV1aVVwbG9hZGVkRmlsZUludGVyZmFjZSB8IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGUpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB2YWx1ZSB8fCBbXTtcbiAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB0aGlzLmdldFRvdGFsU2l6ZSgpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgey8qIE5vdGhpbmcgdG8gYmUgRG9uZSBzbyBmYXIgKi99XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBhbnkgPSAoKTogdm9pZCA9PiB7LyogTm90aGluZyB0byBiZSBEb25lIHNvIGZhciAqL307XG5cbiAgICBwcml2YXRlIGdldFRvdGFsU2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlc1RvdGFsU2l6ZSA9IDA7XG4gICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWxlc1RvdGFsU2l6ZSArPSBmLnNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1maWxlLXVwbG9hZF9fZHJvcC1hcmVhXCJcbiAgICBbY2xhc3MuZXVpLWZpbGUtdXBsb2FkX19kcm9wLWFyZWEtLWFjdGl2ZV09XCJkcmFnRW50ZXJlZFwiXG4gICAgW2NsYXNzLmV1aS1maWxlLXVwbG9hZF9fZHJvcC1hcmVhLS1kaXNhYmxlZF09XCJpc0Ryb3BBcmVhRGlzYWJsZWRcIlxuICAgICpuZ0lmPVwiaGFzRHJhZ0FyZWFcIj5cbiAgICA8c3BhbiBjbGFzcz1cImV1aS1maWxlLXVwbG9hZF9fZmFrZS1idG5cIj57eyAnZXVpLmV1aWZpbGV1cGxvYWQuQ0hPT1NFLUZJTEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDxzcGFuPnt7ICdldWkuZXVpZmlsZXVwbG9hZC5EUkFHLUFORC1EUk9QLUZJTEUtSEVSRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBjbGFzcz1cImV1aS1maWxlLXVwbG9hZF9fZmlsZS1pbnB1dFwiXG4gICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdldWkuZXVpZmlsZXVwbG9hZC5DSE9PU0UtRklMRScgfCB0cmFuc2xhdGUgfX0gJ29yJyB7e1xuICAgICAgICAgICAgJ2V1aS5ldWlmaWxldXBsb2FkLkRSQUctQU5ELURST1AtRklMRS1IRVJFJyB8IHRyYW5zbGF0ZVxuICAgICAgICB9fVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwie3sgYWNjZXB0IH19XCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEcm9wQXJlYURpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZVwiXG4gICAgICAgIChkcmFnZW50ZXIpPVwib25EcmFnRW50ZXIoKVwiXG4gICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoKVwiIC8+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJldWktZmlsZS11cGxvYWRfX3NpbXBsZS1pbnB1dC1maWxlXCIgKm5nSWY9XCIhaGFzRHJhZ0FyZWFcIj5cbiAgICA8bGFiZWwgZm9yPVwiZmlsZS17eyByYW5kb21OdW1iZXJJZCB9fVwiPlxuICAgICAgICA8YnV0dG9uIGV1aUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Ccm93c2VXaW5kb3coKVwiPnt7ICdldWkuZXVpZmlsZXVwbG9hZC5DSE9PU0UtRklMRScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICAqbmdJZj1cImlzTXVsdGlwbGVcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiQ2hvb3NlIE11bHRpcGxlIEZpbGVzXCJcbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgaWQ9XCJmaWxlLXt7IHJhbmRvbU51bWJlcklkIH19XCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBhY2NlcHQ9XCJ7eyBhY2NlcHQgfX1cIlxuICAgICAgICBtdWx0aXBsZSAvPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKm5nSWY9XCIhaXNNdWx0aXBsZVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJDaG9vc2UgYSBzaW5nbGUgZmlsZVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGlkPVwiZmlsZS17eyByYW5kb21OdW1iZXJJZCB9fVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwie3sgYWNjZXB0IH19XCIgLz5cbjwvZGl2PlxuPGV1aS1maWxlLXVwbG9hZC1wcm9ncmVzcyAqbmdJZj1cImhhc1Byb2dyZXNzQmFyXCIgW3Byb2dyZXNzXT1cInByb2dyZXNzXCI+PC9ldWktZmlsZS11cGxvYWQtcHJvZ3Jlc3M+XG5cbjxkaXYgKm5nRm9yPVwibGV0IHVwbG9hZGVkRmlsZSBvZiB1cGxvYWRlZEZpbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGV1aS1maWxlLXByZXZpZXdcbiAgICAgICAgW2lzSXRlbXNDbGlja2FibGVdPVwiaXNJdGVtc0NsaWNrYWJsZVwiXG4gICAgICAgIFtpbmRleF09XCJpXCJcbiAgICAgICAgW2ZpbGVdPVwidXBsb2FkZWRGaWxlXCJcbiAgICAgICAgW2hhc1ByZXZpZXddPVwiaGFzUHJldmlld1wiXG4gICAgICAgIFtoYXNQcmV2aWV3QXNJbWFnZV09XCJoYXNQcmV2aWV3QXNJbWFnZVwiXG4gICAgICAgIFtoYXNQcmV2aWV3QXNJY29uXT1cImhhc1ByZXZpZXdBc0ljb25cIlxuICAgICAgICAoaXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAocmVtb3ZlRnJvbUxpc3QpPVwicmVtb3ZlRnJvbVVwbG9hZGVkTGlzdCgkZXZlbnQpXCI+XG4gICAgPC9ldWktZmlsZS1wcmV2aWV3PlxuPC9kaXY+XG5cbjxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8ZXVpLWZpbGUtcHJldmlld1xuICAgICAgICBbaXNJdGVtc0NsaWNrYWJsZV09XCJpc0l0ZW1zQ2xpY2thYmxlXCJcbiAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgW2hhc1ByZXZpZXddPVwiaGFzUHJldmlld1wiXG4gICAgICAgIFtoYXNQcmV2aWV3QXNJbWFnZV09XCJoYXNQcmV2aWV3QXNJbWFnZVwiXG4gICAgICAgIFtoYXNQcmV2aWV3QXNJY29uXT1cImhhc1ByZXZpZXdBc0ljb25cIlxuICAgICAgICAoaXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAocmVtb3ZlRnJvbUxpc3QpPVwicmVtb3ZlRnJvbUxpc3QoJGV2ZW50KVwiPlxuICAgIDwvZXVpLWZpbGUtcHJldmlldz5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZXVpLWZpbGUtdXBsb2FkX190b3RhbC1zaXplXCIgKm5nSWY9XCJmaWxlc1RvdGFsU2l6ZSAmJiBoYXNUb3RhbFNpemVEaXNwbGF5ZWRcIj5cbiAgICB7eyBmaWxlc1RvdGFsU2l6ZSB8IGZpbGVzaXplIH19IHt7ICdldWkuZXVpZmlsZXVwbG9hZC5UT1RBTC1TSVpFJyB8IHRyYW5zbGF0ZSB9fVxuPC9kaXY+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjxidXR0b24gZXVpQnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXRMaXN0KClcIiAqbmdJZj1cInNob3dSZXNldEJ0blwiPlxuICAgIHt7ICdldWkuZXVpZmlsZXVwbG9hZC5SRVNFVC1MSVNUJyB8IHRyYW5zbGF0ZSB9fVxuPC9idXR0b24+XG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1maWxlLXVwbG9hZC9ldWktZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWZpbGUtdXBsb2FkL2V1aS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLGlCQUFpQixFQUVqQixZQUFZLEVBRVosTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWlCekUsTUFBTSxPQUFPLHNCQUFzQjtJQWJuQztRQWNhLFlBQU8sR0FBRyxpQkFBaUIsQ0FBQztRQUU1QixXQUFNLEdBQUcsR0FBRyxDQUFDO1FBRVosYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEMsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXlDLENBQUM7UUFXekUsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixtQkFBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGtCQUFhLEdBQStCLEVBQUUsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdhLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pC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QixFQUFFO2dCQUNFLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsaUJBQWlCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxxQkFBcUI7c0JBQTVELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFVyxTQUFTO3NCQUF6RCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRXVpVXBsb2FkZWRGaWxlSW50ZXJmYWNlIH0gZnJvbSAnLi9tb2RlbHMvdXBsb2FkZWQtZmlsZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWZpbGUtdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogRXVpRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWZpbGUtdXBsb2FkJztcbiAgICBASW5wdXQoKSBwcm9ncmVzczogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcbiAgICBASW5wdXQoKSBtYXhGaWxlczogbnVtYmVyO1xuICAgIEBPdXRwdXQoKSBmaWxlRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxCbG9iIHwgRXVpVXBsb2FkZWRGaWxlSW50ZXJmYWNlIHwgYW55PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpLWZpbGUtdXBsb2FkJyxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgIHB1YmxpYyBmaWxlc1RvdGFsU2l6ZSA9IDA7XG4gICAgcHVibGljIHJhbmRvbU51bWJlcklkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDApO1xuICAgIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBFdWlVcGxvYWRlZEZpbGVJbnRlcmZhY2VbXSA9IFtdO1xuICAgIHB1YmxpYyBkcmFnRW50ZXJlZCA9IGZhbHNlO1xuICAgIEBWaWV3Q2hpbGRyZW4oJ2lucHV0JykgZmlsZUlucHV0czogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTXVsdGlwbGUgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNQcm9ncmVzc0JhciA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1ByZXZpZXcgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNQcmV2aWV3QXNJbWFnZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1ByZXZpZXdBc0ljb24gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzVG90YWxTaXplRGlzcGxheWVkID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzUmVzZXRCdXR0b24gPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNEcmFnQXJlYSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0l0ZW1zQ2xpY2thYmxlID0gZmFsc2U7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudC50YXJnZXQuZmlsZXMnXSkgZW1pdEZpbGVzKGZpbGVMaXN0OiBGaWxlTGlzdCk6IHZvaWQge1xuICAgICAgICBsZXQgaSA9IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLnRoaXMuZmlsZXNdLmxlbmd0aDtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmaWxlTGlzdCkge1xuICAgICAgICAgICAgaWYgKGZpbGVMaXN0W3Byb3BlcnR5XSAmJiB0eXBlb2YgZmlsZUxpc3RbcHJvcGVydHldID09PSAnb2JqZWN0JyAmJiAoIXRoaXMubWF4RmlsZXMgfHwgaSA8IHRoaXMubWF4RmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlTGlzdFtwcm9wZXJ0eV0ubmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVtmaWxlTmFtZS5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjY2VwdC5pbmRleE9mKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8IHRoaXMuYWNjZXB0ID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVMaXN0W3Byb3BlcnR5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldFRvdGFsU2l6ZSgpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPyB0aGlzLm9uQ2hhbmdlKFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLnRoaXMuZmlsZXNdKSA6IHRoaXMub25DaGFuZ2UodGhpcy5maWxlcyk7XG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dHMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUlucHV0cy5maXJzdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dHMubGFzdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyYWdFbnRlcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmlsZURyb3AuZW1pdCgpO1xuICAgIH1cblxuICAgIGdldCBzaG93UmVzZXRCdG4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1Jlc2V0QnV0dG9uICYmIHRoaXMuaXNNdWx0aXBsZSAmJiAodGhpcy5maWxlcy5sZW5ndGggPiAwIHx8IHRoaXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEcm9wQXJlYURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCF0aGlzLmlzTXVsdGlwbGUgJiYgdGhpcy5maWxlcy5sZW5ndGggPT09IDEpIHx8IFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLnRoaXMuZmlsZXNdLmxlbmd0aCA9PT0gdGhpcy5tYXhGaWxlcztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJldmlld0FzSWNvbikge1xuICAgICAgICAgICAgdGhpcy5oYXNQcmV2aWV3QXNJbWFnZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3BBcmVhRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0VudGVyZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnTGVhdmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJhZ0VudGVyZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRnJvbUxpc3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGYsIGkpID0+IGkgIT09IGluZGV4KTtcblxuICAgICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0VG90YWxTaXplKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMudXBsb2FkZWRGaWxlcywgLi4udGhpcy5maWxlc10pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGcm9tVXBsb2FkZWRMaXN0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcigoZiwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldFRvdGFsU2l6ZSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKFsuLi50aGlzLnVwbG9hZGVkRmlsZXMsIC4uLnRoaXMuZmlsZXNdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xuICAgICAgICB0aGlzLmdldFRvdGFsU2l6ZSgpO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gMDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShbLi4udGhpcy51cGxvYWRlZEZpbGVzLCAuLi50aGlzLmZpbGVzXSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5Ccm93c2VXaW5kb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZUlucHV0cy5maXJzdC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIG9uSXRlbUNsaWNrKGU6IEJsb2IgfCBFdWlVcGxvYWRlZEZpbGVJbnRlcmZhY2UgfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdChlKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdmFsdWUgfHwgW107XG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRUb3RhbFNpemUoKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsvKiBOb3RoaW5nIHRvIGJlIERvbmUgc28gZmFyICovfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCk6IHZvaWQgPT4gey8qIE5vdGhpbmcgdG8gYmUgRG9uZSBzbyBmYXIgKi99O1xuXG4gICAgcHJpdmF0ZSBnZXRUb3RhbFNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZXNUb3RhbFNpemUgPSAwO1xuICAgICAgICB0aGlzLmZpbGVzLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXNUb3RhbFNpemUgKz0gZi5zaXplO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJldWktZmlsZS11cGxvYWRfX2Ryb3AtYXJlYVwiXG4gICAgW2NsYXNzLmV1aS1maWxlLXVwbG9hZF9fZHJvcC1hcmVhLS1hY3RpdmVdPVwiZHJhZ0VudGVyZWRcIlxuICAgIFtjbGFzcy5ldWktZmlsZS11cGxvYWRfX2Ryb3AtYXJlYS0tZGlzYWJsZWRdPVwiaXNEcm9wQXJlYURpc2FibGVkXCJcbiAgICAqbmdJZj1cImhhc0RyYWdBcmVhXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJldWktZmlsZS11cGxvYWRfX2Zha2UtYnRuXCI+e3sgJ2V1aS5ldWlmaWxldXBsb2FkLkNIT09TRS1GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8c3Bhbj57eyAnZXVpLmV1aWZpbGV1cGxvYWQuRFJBRy1BTkQtRFJPUC1GSUxFLUhFUkUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgY2xhc3M9XCJldWktZmlsZS11cGxvYWRfX2ZpbGUtaW5wdXRcIlxuICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnZXVpLmV1aWZpbGV1cGxvYWQuQ0hPT1NFLUZJTEUnIHwgdHJhbnNsYXRlIH19ICdvcicge3tcbiAgICAgICAgICAgICdldWkuZXVpZmlsZXVwbG9hZC5EUkFHLUFORC1EUk9QLUZJTEUtSEVSRScgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGFjY2VwdD1cInt7IGFjY2VwdCB9fVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRHJvcEFyZWFEaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxuICAgICAgICAoZHJhZ2VudGVyKT1cIm9uRHJhZ0VudGVyKClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKClcIiAvPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZXVpLWZpbGUtdXBsb2FkX19zaW1wbGUtaW5wdXQtZmlsZVwiICpuZ0lmPVwiIWhhc0RyYWdBcmVhXCI+XG4gICAgPGxhYmVsIGZvcj1cImZpbGUte3sgcmFuZG9tTnVtYmVySWQgfX1cIj5cbiAgICAgICAgPGJ1dHRvbiBldWlCdXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQnJvd3NlV2luZG93KClcIj57eyAnZXVpLmV1aWZpbGV1cGxvYWQuQ0hPT1NFLUZJTEUnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKm5nSWY9XCJpc011bHRpcGxlXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNob29zZSBNdWx0aXBsZSBGaWxlc1wiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGlkPVwiZmlsZS17eyByYW5kb21OdW1iZXJJZCB9fVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwie3sgYWNjZXB0IH19XCJcbiAgICAgICAgbXVsdGlwbGUgLz5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgICpuZ0lmPVwiIWlzTXVsdGlwbGVcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiQ2hvb3NlIGEgc2luZ2xlIGZpbGVcIlxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXRcIlxuICAgICAgICBpZD1cImZpbGUte3sgcmFuZG9tTnVtYmVySWQgfX1cIlxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIGFjY2VwdD1cInt7IGFjY2VwdCB9fVwiIC8+XG48L2Rpdj5cbjxldWktZmlsZS11cGxvYWQtcHJvZ3Jlc3MgKm5nSWY9XCJoYXNQcm9ncmVzc0JhclwiIFtwcm9ncmVzc109XCJwcm9ncmVzc1wiPjwvZXVpLWZpbGUtdXBsb2FkLXByb2dyZXNzPlxuXG48ZGl2ICpuZ0Zvcj1cImxldCB1cGxvYWRlZEZpbGUgb2YgdXBsb2FkZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxldWktZmlsZS1wcmV2aWV3XG4gICAgICAgIFtpc0l0ZW1zQ2xpY2thYmxlXT1cImlzSXRlbXNDbGlja2FibGVcIlxuICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgIFtmaWxlXT1cInVwbG9hZGVkRmlsZVwiXG4gICAgICAgIFtoYXNQcmV2aWV3XT1cImhhc1ByZXZpZXdcIlxuICAgICAgICBbaGFzUHJldmlld0FzSW1hZ2VdPVwiaGFzUHJldmlld0FzSW1hZ2VcIlxuICAgICAgICBbaGFzUHJldmlld0FzSWNvbl09XCJoYXNQcmV2aWV3QXNJY29uXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKHJlbW92ZUZyb21MaXN0KT1cInJlbW92ZUZyb21VcGxvYWRlZExpc3QoJGV2ZW50KVwiPlxuICAgIDwvZXVpLWZpbGUtcHJldmlldz5cbjwvZGl2PlxuXG48ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGV1aS1maWxlLXByZXZpZXdcbiAgICAgICAgW2lzSXRlbXNDbGlja2FibGVdPVwiaXNJdGVtc0NsaWNrYWJsZVwiXG4gICAgICAgIFtpbmRleF09XCJpXCJcbiAgICAgICAgW2ZpbGVdPVwiZmlsZVwiXG4gICAgICAgIFtoYXNQcmV2aWV3XT1cImhhc1ByZXZpZXdcIlxuICAgICAgICBbaGFzUHJldmlld0FzSW1hZ2VdPVwiaGFzUHJldmlld0FzSW1hZ2VcIlxuICAgICAgICBbaGFzUHJldmlld0FzSWNvbl09XCJoYXNQcmV2aWV3QXNJY29uXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKHJlbW92ZUZyb21MaXN0KT1cInJlbW92ZUZyb21MaXN0KCRldmVudClcIj5cbiAgICA8L2V1aS1maWxlLXByZXZpZXc+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImV1aS1maWxlLXVwbG9hZF9fdG90YWwtc2l6ZVwiICpuZ0lmPVwiZmlsZXNUb3RhbFNpemUgJiYgaGFzVG90YWxTaXplRGlzcGxheWVkXCI+XG4gICAge3sgZmlsZXNUb3RhbFNpemUgfCBmaWxlc2l6ZSB9fSB7eyAnZXVpLmV1aWZpbGV1cGxvYWQuVE9UQUwtU0laRScgfCB0cmFuc2xhdGUgfX1cbjwvZGl2PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48YnV0dG9uIGV1aUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0TGlzdCgpXCIgKm5nSWY9XCJzaG93UmVzZXRCdG5cIj5cbiAgICB7eyAnZXVpLmV1aWZpbGV1cGxvYWQuUkVTRVQtTElTVCcgfCB0cmFuc2xhdGUgfX1cbjwvYnV0dG9uPlxuIl19