@clr/angular 17.10.0 → 17.11.0

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 (86) hide show
  1. package/clarity.api.md +96 -40
  2. package/data/datagrid/datagrid-column.d.ts +6 -1
  3. package/data/datagrid/datagrid-filter.d.ts +2 -9
  4. package/data/datagrid/datagrid-row.d.ts +1 -0
  5. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +2 -0
  6. package/data/datagrid/datagrid.d.ts +4 -1
  7. package/data/datagrid/utils/datagrid-filter-registrar.d.ts +1 -1
  8. package/data/datagrid/utils/key-navigation-grid.controller.d.ts +7 -8
  9. package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -2
  10. package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -2
  11. package/data/datagrid/utils/key-navigation-utils.d.ts +2 -0
  12. package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
  13. package/esm2020/button/button-group/button.mjs +20 -4
  14. package/esm2020/data/datagrid/datagrid-column.mjs +33 -17
  15. package/esm2020/data/datagrid/datagrid-detail-header.mjs +3 -3
  16. package/esm2020/data/datagrid/datagrid-filter.mjs +2 -21
  17. package/esm2020/data/datagrid/datagrid-pagination.mjs +35 -31
  18. package/esm2020/data/datagrid/datagrid-row.mjs +6 -7
  19. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +30 -32
  20. package/esm2020/data/datagrid/datagrid.mjs +43 -11
  21. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +1 -1
  22. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +32 -34
  23. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +1 -4
  24. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +1 -4
  25. package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +15 -2
  26. package/esm2020/data/stack-view/stack-block.mjs +3 -3
  27. package/esm2020/emphasis/alert/alert.mjs +3 -3
  28. package/esm2020/forms/combobox/combobox.mjs +3 -3
  29. package/esm2020/forms/combobox/combobox.module.mjs +20 -3
  30. package/esm2020/forms/combobox/index.mjs +2 -1
  31. package/esm2020/forms/combobox/option-group.mjs +42 -0
  32. package/esm2020/forms/combobox/option-items.directive.mjs +5 -1
  33. package/esm2020/forms/combobox/options.mjs +3 -3
  34. package/esm2020/forms/common/abstract-control.mjs +1 -1
  35. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +1 -1
  36. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +3 -3
  37. package/esm2020/forms/file-input/file-input-container.mjs +2 -2
  38. package/esm2020/forms/file-input/file-input.mjs +11 -4
  39. package/esm2020/forms/number-input/number-input-container.mjs +6 -3
  40. package/esm2020/forms/number-input/number-input.mjs +10 -3
  41. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +2 -2
  42. package/esm2020/modal/index.mjs +2 -2
  43. package/esm2020/modal/modal-host.component.mjs +29 -0
  44. package/esm2020/modal/modal.mjs +7 -3
  45. package/esm2020/modal/modal.module.mjs +4 -4
  46. package/esm2020/modal/side-panel.mjs +102 -47
  47. package/esm2020/popover/common/abstract-popover.mjs +8 -2
  48. package/esm2020/popover/dropdown/dropdown-item.mjs +10 -4
  49. package/esm2020/popover/dropdown/dropdown-trigger.mjs +12 -4
  50. package/esm2020/popover/dropdown/utils/content-wrapping.mjs +22 -0
  51. package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +9 -1
  52. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +5 -6
  53. package/esm2020/utils/chocolate/oompa-loompa.mjs +1 -1
  54. package/esm2020/utils/i18n/common-strings.default.mjs +2 -1
  55. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  56. package/esm2020/wizard/wizard-stepnav-item.mjs +60 -24
  57. package/esm2020/wizard/wizard.mjs +3 -3
  58. package/fesm2015/clr-angular.mjs +594 -315
  59. package/fesm2015/clr-angular.mjs.map +1 -1
  60. package/fesm2020/clr-angular.mjs +589 -313
  61. package/fesm2020/clr-angular.mjs.map +1 -1
  62. package/forms/combobox/combobox.module.d.ts +12 -11
  63. package/forms/combobox/index.d.ts +1 -0
  64. package/forms/combobox/option-group.d.ts +9 -0
  65. package/forms/combobox/option-items.directive.d.ts +1 -0
  66. package/forms/common/abstract-control.d.ts +1 -1
  67. package/forms/common/if-control-state/abstract-if-state.d.ts +1 -1
  68. package/forms/file-input/file-input.d.ts +2 -0
  69. package/forms/number-input/number-input-container.d.ts +1 -0
  70. package/forms/number-input/number-input.d.ts +2 -0
  71. package/modal/index.d.ts +1 -1
  72. package/modal/modal-host.component.d.ts +5 -0
  73. package/modal/modal.module.d.ts +2 -2
  74. package/modal/side-panel.d.ts +18 -10
  75. package/package.json +2 -2
  76. package/popover/common/abstract-popover.d.ts +1 -1
  77. package/popover/dropdown/dropdown-item.d.ts +5 -1
  78. package/popover/dropdown/dropdown-trigger.d.ts +5 -2
  79. package/popover/dropdown/utils/content-wrapping.d.ts +2 -0
  80. package/utils/animations/expandable-animation/base-expandable-animation.d.ts +3 -0
  81. package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -3
  82. package/utils/chocolate/oompa-loompa.d.ts +1 -1
  83. package/utils/i18n/common-strings.interface.d.ts +4 -0
  84. package/wizard/wizard-stepnav-item.d.ts +16 -2
  85. package/esm2020/modal/modal-host.directive.mjs +0 -20
  86. package/modal/modal-host.directive.d.ts +0 -5
@@ -96,7 +96,7 @@ export class ClrModal {
96
96
  }
97
97
  }
98
98
  ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, deps: [{ token: i1.ScrollingService }, { token: i2.ClrCommonStringsService }, { token: i3.ModalStackService }, { token: i4.ClrModalConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
99
- ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, queries: [{ propertyName: "modalContentTemplate", first: true, predicate: ["clrInternalModalContentTemplate"], descendants: true }], viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i7.CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
99
+ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, queries: [{ propertyName: "modalContentTemplate", first: true, predicate: ["clrInternalModalContentTemplate"], descendants: true }], viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i7.CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
100
100
  trigger('fadeMove', [
101
101
  transition('* => fadeDown', [
102
102
  style({ opacity: 0, transform: 'translate(0, -25%)' }),
@@ -107,6 +107,8 @@ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
107
107
  ]),
108
108
  transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
109
109
  transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
110
+ transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),
111
+ transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),
110
112
  ]),
111
113
  trigger('fade', [
112
114
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
@@ -126,12 +128,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
126
128
  ]),
127
129
  transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
128
130
  transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
131
+ transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),
132
+ transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),
129
133
  ]),
130
134
  trigger('fade', [
131
135
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
132
136
  transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
133
137
  ]),
134
- ], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
138
+ ], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
135
139
  }], ctorParameters: function () { return [{ type: i1.ScrollingService }, { type: i2.ClrCommonStringsService }, { type: i3.ModalStackService }, { type: i4.ClrModalConfigurationService }]; }, propDecorators: { title: [{
136
140
  type: ViewChild,
137
141
  args: ['title']
@@ -178,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
178
182
  type: ViewChild,
179
183
  args: ['body']
180
184
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9tb2RhbC9tb2RhbC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL21vZGFsL21vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFrQixLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7QUFvQ3hFLE1BQU0sT0FBTyxRQUFRO0lBMEJuQixZQUNVLGlCQUFtQyxFQUNwQyxhQUFzQyxFQUNyQyxpQkFBb0MsRUFDcEMsYUFBMkM7UUFIM0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBOEI7UUE3QnJELFlBQU8sR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUdzQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbkQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNKLHlCQUFvQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ0YsbUJBQWMsR0FBRyxJQUFJ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QUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRWdDLEtBQUs7c0JBQXRELEtBQUs7dUJBQUMsY0FBYzs7c0JBQUcsV0FBVzt1QkFBQyxZQUFZO2dCQUNsQixZQUFZO3NCQUF6QyxNQUFNO3VCQUFDLG9CQUFvQjtnQkFFRCxRQUFRO3NCQUFsQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDYyxvQkFBb0I7c0JBQTFELEtBQUs7dUJBQUMsOEJBQThCO2dCQUNkLElBQUk7c0JBQTFCLEtBQUs7dUJBQUMsY0FBYztnQkFDWSxjQUFjO3NCQUE5QyxLQUFLO3VCQUFDLHdCQUF3QjtnQkFDQyxhQUFhO3NCQUE1QyxLQUFLO3VCQUFDLHVCQUF1QjtnQkFFQyxTQUFTO3NCQUF2QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFDSyxRQUFRO3NCQUF6QyxNQUFNO3VCQUFDLHdCQUF3QjtnQkFFRCxVQUFVO3NCQUF4QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFHVyxtQkFBbUI7c0JBQTFELEtBQUs7dUJBQUMsK0JBQStCO2dCQUc4QixvQkFBb0I7c0JBQXZGLFlBQVk7dUJBQUMsaUNBQWlDO2dCQUVYLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXF1ZUlkRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL2lkLWdlbmVyYXRvci9pZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JvbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2Nyb2xsaW5nL3Njcm9sbGluZy1zZXJ2aWNlJztcbmltcG9ydCB7IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFN0YWNrU2VydmljZSB9IGZyb20gJy4vbW9kYWwtc3RhY2suc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1tb2RhbCcsXG4gIHZpZXdQcm92aWRlcnM6IFtTY3JvbGxpbmdTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmh0bWwnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICA6aG9zdC5vcGVuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlTW92ZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmFkZURvd24nLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC0yNSUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCdmYWRlRG93biA9PiAqJywgW1xuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMCwgLTI1JSknIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignKiA9PiBmYWRlTGVmdCcsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgyNSUsIDApJyB9KSwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpXSksXG4gICAgICB0cmFuc2l0aW9uKCdmYWRlTGVmdCA9PiAqJywgW2FuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgyNSUsIDApJyB9KSldKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMC44NSB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFthbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKV0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJNb2RhbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgbW9kYWxJZCA9IHVuaXF1ZUlkRmFjdG9yeSgpO1xuICBAVmlld0NoaWxkKCd0aXRsZScpIHRpdGxlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBASW5wdXQoJ2Nsck1vZGFsT3BlbicpIEBIb3N0QmluZGluZygnY2xhc3Mub3BlbicpIF9vcGVuID0gZmFsc2U7XG4gIEBPdXRwdXQoJ2Nsck1vZGFsT3BlbkNoYW5nZScpIF9vcGVuQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgnY2xyTW9kYWxDbG9zYWJsZScpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJNb2RhbENsb3NlQnV0dG9uQXJpYUxhYmVsJykgY2xvc2VCdXR0b25BcmlhTGFiZWwgPSB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZTtcbiAgQElucHV0KCdjbHJNb2RhbFNpemUnKSBzaXplID0gJ21kJztcbiAgQElucHV0KCdjbHJNb2RhbFN0YXRpY0JhY2tkcm9wJykgc3RhdGljQmFja2Ryb3AgPSB0cnVlO1xuICBASW5wdXQoJ2Nsck1vZGFsU2tpcEFuaW1hdGlvbicpIHNraXBBbmltYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2Nsck1vZGFsUHJldmVudENsb3NlJykgc3RvcENsb3NlID0gZmFsc2U7XG4gIEBPdXRwdXQoJ2Nsck1vZGFsQWx0ZXJuYXRlQ2xvc2UnKSBhbHRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgnY2xyTW9kYWxMYWJlbGxlZEJ5SWQnKSBsYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgLy8gcHJlc2VudGx5IHRoaXMgaXMgb25seSB1c2VkIGJ5IGlubGluZSB3aXphcmRzXG4gIEBJbnB1dCgnY2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2UnKSBieXBhc3NTY3JvbGxTZXJ2aWNlID0gZmFsc2U7XG5cbiAgLy8gUHJvdmlkZSByYXcgbW9kYWwgY29udGVudC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSB3aXphcmQgc28gdGhhdCB0aGUgc2FtZSB0ZW1wbGF0ZSBjYW4gYmUgcmVuZGVyZWQgd2l0aCBhbmQgd2l0aG91dCBhIG1vZGFsLlxuICBAQ29udGVudENoaWxkKCdjbHJJbnRlcm5hbE1vZGFsQ29udGVudFRlbXBsYXRlJykgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2JvZHknKSBwcml2YXRlIHJlYWRvbmx5IGJvZHlFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zY3JvbGxpbmdTZXJ2aWNlOiBTY3JvbGxpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU3RhY2tTZXJ2aWNlOiBNb2RhbFN0YWNrU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCBmYWRlTW92ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNraXBBbmltYXRpb24gPyAnJyA6IHRoaXMuY29uZmlndXJhdGlvbi5mYWRlTW92ZTtcbiAgfVxuICBzZXQgZmFkZU1vdmUobW92ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLmZhZGVNb3ZlID0gbW92ZTtcbiAgfVxuXG4gIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmJhY2tkcm9wO1xuICB9XG5cbiAgLy8gRGV0ZWN0IHdoZW4gX29wZW4gaXMgc2V0IHRvIHRydWUgYW5kIHNldCBuby1zY3JvbGxpbmcgdG8gdHJ1ZVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYnlwYXNzU2Nyb2xsU2VydmljZSAmJiBjaGFuZ2VzICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnX29wZW4nKSkge1xuICAgICAgaWYgKGNoYW5nZXMuX29wZW4uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbGluZ1NlcnZpY2Uuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICB0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxPcGVuKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsaW5nU2VydmljZS5yZXN1bWVTY3JvbGxpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnJlc3VtZVNjcm9sbGluZygpO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9vcGVuQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMubW9kYWxTdGFja1NlcnZpY2UudHJhY2tNb2RhbE9wZW4odGhpcyk7XG4gIH1cblxuICBiYWNrZHJvcENsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRpY0JhY2tkcm9wKSB7XG4gICAgICB0aGlzLnRpdGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9wQ2xvc2UpIHtcbiAgICAgIHRoaXMuYWx0Q2xvc2UuZW1pdChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5jbG9zYWJsZSB8fCAhdGhpcy5fb3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gIH1cblxuICBmYWRlRG9uZShlOiBBbmltYXRpb25FdmVudCkge1xuICAgIGlmIChlLnRvU3RhdGUgPT09ICd2b2lkJykge1xuICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgaWYgd2UgY2FuIGRlY291cGxlIGZyb20gYW5pbWF0aW9uIGV2ZW50c1xuICAgICAgdGhpcy5fb3BlbkNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxDbG9zZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb3AoKSB7XG4gICAgdGhpcy5ib2R5RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKDAsIDApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gIH4gVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICB+IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gIH4gVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICAtLT5cblxuPGRpdiAqbmdJZj1cIl9vcGVuXCIgY2xhc3M9XCJtb2RhbFwiIFtjbGFzcy5tb2RhbC1mdWxsLXNjcmVlbl09XCJzaXplID09ICdmdWxsLXNjcmVlbidcIj5cbiAgPCEtLWZpeG1lOiByZXZpc2l0IHdoZW4gbmdDbGFzcyB3b3JrcyB3aXRoIGV4aXQgYW5pbWF0aW9uLS0+XG4gIDxkaXZcbiAgICBjZGtUcmFwRm9jdXNcbiAgICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiXG4gICAgW0BmYWRlTW92ZV09XCJmYWRlTW92ZVwiXG4gICAgKEBmYWRlTW92ZS5kb25lKT1cImZhZGVEb25lKCRldmVudClcIlxuICAgIGNsYXNzPVwibW9kYWwtZGlhbG9nXCJcbiAgICBbY2xhc3MubW9kYWwtc21dPVwic2l6ZSA9PSAnc20nXCJcbiAgICBbY2xhc3MubW9kYWwtbGddPVwic2l6ZSA9PSAnbGcnXCJcbiAgICBbY2xhc3MubW9kYWwteGxdPVwic2l6ZSA9PSAneGwnXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIV9vcGVuXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxsZWRCeSB8fCBtb2RhbElkXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItc3Itb25seVwiPnt7Y29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudFN0YXJ0fX08L2Rpdj5cbiAgICA8IS0tIFRoaXMgd2l6YXJkIGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgbW9kYWwgc3R5bGVzLCBzbyBjaGFuZ2VzIGhlcmUgY291bGQgcmVxdWlyZSBjaGFuZ2VzIGluIHRoZSB3aXphcmQuIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhbW9kYWxDb250ZW50VGVtcGxhdGU7IGVsc2UgbW9kYWxDb250ZW50VGVtcGxhdGVcIiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5sZWFkaW5nLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUtd3JhcHBlclwiICN0aXRsZSBbaWRdPVwibW9kYWxJZFwiIGNka0ZvY3VzSW5pdGlhbCB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIubW9kYWwtdGl0bGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNsb3NlQnV0dG9uQXJpYUxhYmVsIHx8IGNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY2xvc2FibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cIndpbmRvdy1jbG9zZVwiPjwvY2RzLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICNib2R5IGNsYXNzPVwibW9kYWwtYm9keS13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLm1vZGFsLWJvZHlcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIubW9kYWwtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNsci1zci1vbmx5XCI+e3tjb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBbQGZhZGVdICpuZ0lmPVwiYmFja2Ryb3BcIiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cImJhY2tkcm9wQ2xpY2soKVwiPjwvZGl2PlxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9tb2RhbC9tb2RhbC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL21vZGFsL21vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFrQixLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7QUFzQ3hFLE1BQU0sT0FBTyxRQUFRO0lBMEJuQixZQUNVLGlCQUFtQyxFQUNwQyxhQUFzQyxFQUNyQyxpQkFBb0MsRUFDcEMsYUFBMkM7UUFIM0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBOEI7UUE3QnJELFlBQU8sR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUdzQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbkQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNKLHlCQUFvQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ0YsbUJBQWMsR0FBRyxJQUFJ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O3NCQUF4QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFHVyxtQkFBbUI7c0JBQTFELEtBQUs7dUJBQUMsK0JBQStCO2dCQUc4QixvQkFBb0I7c0JBQXZGLFlBQVk7dUJBQUMsaUNBQWlDO2dCQUVYLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uRXZlbnQsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IHVuaXF1ZUlkRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL2lkLWdlbmVyYXRvci9pZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JvbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2Nyb2xsaW5nL3Njcm9sbGluZy1zZXJ2aWNlJztcbmltcG9ydCB7IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFN0YWNrU2VydmljZSB9IGZyb20gJy4vbW9kYWwtc3RhY2suc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1tb2RhbCcsXG4gIHZpZXdQcm92aWRlcnM6IFtTY3JvbGxpbmdTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmh0bWwnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICA6aG9zdC5vcGVuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlTW92ZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmFkZURvd24nLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIC0yNSUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCdmYWRlRG93biA9PiAqJywgW1xuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMCwgLTI1JSknIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignKiA9PiBmYWRlTGVmdCcsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgyNSUsIDApJyB9KSwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpXSksXG4gICAgICB0cmFuc2l0aW9uKCdmYWRlTGVmdCA9PiAqJywgW2FuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgyNSUsIDApJyB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmFkZVVwJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDUwJSknIH0pLCBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0JyldKSxcbiAgICAgIHRyYW5zaXRpb24oJ2ZhZGVVcCA9PiAqJywgW2FuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgwLCA1MCUpJyB9KSldKSxcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMC44NSB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFthbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKV0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJNb2RhbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgbW9kYWxJZCA9IHVuaXF1ZUlkRmFjdG9yeSgpO1xuICBAVmlld0NoaWxkKCd0aXRsZScpIHRpdGxlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBASW5wdXQoJ2Nsck1vZGFsT3BlbicpIEBIb3N0QmluZGluZygnY2xhc3Mub3BlbicpIF9vcGVuID0gZmFsc2U7XG4gIEBPdXRwdXQoJ2Nsck1vZGFsT3BlbkNoYW5nZScpIF9vcGVuQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgnY2xyTW9kYWxDbG9zYWJsZScpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJNb2RhbENsb3NlQnV0dG9uQXJpYUxhYmVsJykgY2xvc2VCdXR0b25BcmlhTGFiZWwgPSB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZTtcbiAgQElucHV0KCdjbHJNb2RhbFNpemUnKSBzaXplID0gJ21kJztcbiAgQElucHV0KCdjbHJNb2RhbFN0YXRpY0JhY2tkcm9wJykgc3RhdGljQmFja2Ryb3AgPSB0cnVlO1xuICBASW5wdXQoJ2Nsck1vZGFsU2tpcEFuaW1hdGlvbicpIHNraXBBbmltYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2Nsck1vZGFsUHJldmVudENsb3NlJykgc3RvcENsb3NlID0gZmFsc2U7XG4gIEBPdXRwdXQoJ2Nsck1vZGFsQWx0ZXJuYXRlQ2xvc2UnKSBhbHRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgnY2xyTW9kYWxMYWJlbGxlZEJ5SWQnKSBsYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgLy8gcHJlc2VudGx5IHRoaXMgaXMgb25seSB1c2VkIGJ5IGlubGluZSB3aXphcmRzXG4gIEBJbnB1dCgnY2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2UnKSBieXBhc3NTY3JvbGxTZXJ2aWNlID0gZmFsc2U7XG5cbiAgLy8gUHJvdmlkZSByYXcgbW9kYWwgY29udGVudC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSB3aXphcmQgc28gdGhhdCB0aGUgc2FtZSB0ZW1wbGF0ZSBjYW4gYmUgcmVuZGVyZWQgd2l0aCBhbmQgd2l0aG91dCBhIG1vZGFsLlxuICBAQ29udGVudENoaWxkKCdjbHJJbnRlcm5hbE1vZGFsQ29udGVudFRlbXBsYXRlJykgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGFsQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2JvZHknKSBwcml2YXRlIHJlYWRvbmx5IGJvZHlFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zY3JvbGxpbmdTZXJ2aWNlOiBTY3JvbGxpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU3RhY2tTZXJ2aWNlOiBNb2RhbFN0YWNrU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCBmYWRlTW92ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNraXBBbmltYXRpb24gPyAnJyA6IHRoaXMuY29uZmlndXJhdGlvbi5mYWRlTW92ZTtcbiAgfVxuICBzZXQgZmFkZU1vdmUobW92ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLmZhZGVNb3ZlID0gbW92ZTtcbiAgfVxuXG4gIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmJhY2tkcm9wO1xuICB9XG5cbiAgLy8gRGV0ZWN0IHdoZW4gX29wZW4gaXMgc2V0IHRvIHRydWUgYW5kIHNldCBuby1zY3JvbGxpbmcgdG8gdHJ1ZVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYnlwYXNzU2Nyb2xsU2VydmljZSAmJiBjaGFuZ2VzICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnX29wZW4nKSkge1xuICAgICAgaWYgKGNoYW5nZXMuX29wZW4uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3Njcm9sbGluZ1NlcnZpY2Uuc3RvcFNjcm9sbGluZygpO1xuICAgICAgICB0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxPcGVuKHRoaXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsaW5nU2VydmljZS5yZXN1bWVTY3JvbGxpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zY3JvbGxpbmdTZXJ2aWNlLnJlc3VtZVNjcm9sbGluZygpO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9vcGVuQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMubW9kYWxTdGFja1NlcnZpY2UudHJhY2tNb2RhbE9wZW4odGhpcyk7XG4gIH1cblxuICBiYWNrZHJvcENsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRpY0JhY2tkcm9wKSB7XG4gICAgICB0aGlzLnRpdGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdG9wQ2xvc2UpIHtcbiAgICAgIHRoaXMuYWx0Q2xvc2UuZW1pdChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5jbG9zYWJsZSB8fCAhdGhpcy5fb3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gIH1cblxuICBmYWRlRG9uZShlOiBBbmltYXRpb25FdmVudCkge1xuICAgIGlmIChlLnRvU3RhdGUgPT09ICd2b2lkJykge1xuICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgaWYgd2UgY2FuIGRlY291cGxlIGZyb20gYW5pbWF0aW9uIGV2ZW50c1xuICAgICAgdGhpcy5fb3BlbkNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLm1vZGFsU3RhY2tTZXJ2aWNlLnRyYWNrTW9kYWxDbG9zZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb3AoKSB7XG4gICAgdGhpcy5ib2R5RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKDAsIDApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gIH4gVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICB+IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gIH4gVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICAtLT5cblxuPGRpdiAqbmdJZj1cIl9vcGVuXCIgY2xhc3M9XCJtb2RhbFwiIFtjbGFzcy5tb2RhbC1mdWxsLXNjcmVlbl09XCJzaXplID09ICdmdWxsLXNjcmVlbidcIj5cbiAgPCEtLWZpeG1lOiByZXZpc2l0IHdoZW4gbmdDbGFzcyB3b3JrcyB3aXRoIGV4aXQgYW5pbWF0aW9uLS0+XG4gIDxkaXZcbiAgICBjZGtUcmFwRm9jdXNcbiAgICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiXG4gICAgW0BmYWRlTW92ZV09XCJmYWRlTW92ZVwiXG4gICAgKEBmYWRlTW92ZS5kb25lKT1cImZhZGVEb25lKCRldmVudClcIlxuICAgIGNsYXNzPVwibW9kYWwtZGlhbG9nXCJcbiAgICBbY2xhc3MubW9kYWwtc21dPVwic2l6ZSA9PSAnc20nXCJcbiAgICBbY2xhc3MubW9kYWwtbGddPVwic2l6ZSA9PSAnbGcnXCJcbiAgICBbY2xhc3MubW9kYWwteGxdPVwic2l6ZSA9PSAneGwnXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIV9vcGVuXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxsZWRCeSB8fCBtb2RhbElkXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItc3Itb25seVwiPnt7Y29tbW9uU3RyaW5ncy5rZXlzLm1vZGFsQ29udGVudFN0YXJ0fX08L2Rpdj5cbiAgICA8IS0tIFRoaXMgd2l6YXJkIGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgbW9kYWwgc3R5bGVzLCBzbyBjaGFuZ2VzIGhlcmUgY291bGQgcmVxdWlyZSBjaGFuZ2VzIGluIHRoZSB3aXphcmQuIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhbW9kYWxDb250ZW50VGVtcGxhdGU7IGVsc2UgbW9kYWxDb250ZW50VGVtcGxhdGVcIiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlci0tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5sZWFkaW5nLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUtd3JhcHBlclwiICN0aXRsZSBbaWRdPVwibW9kYWxJZFwiIGNka0ZvY3VzSW5pdGlhbCB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIubW9kYWwtdGl0bGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNsb3NlQnV0dG9uQXJpYUxhYmVsIHx8IGNvbW1vblN0cmluZ3Mua2V5cy5jbG9zZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNsb3NlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY2xvc2FibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cIndpbmRvdy1jbG9zZVwiPjwvY2RzLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICNib2R5IGNsYXNzPVwibW9kYWwtYm9keS13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLm1vZGFsLWJvZHlcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIubW9kYWwtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNsci1zci1vbmx5XCI+e3tjb21tb25TdHJpbmdzLmtleXMubW9kYWxDb250ZW50RW5kfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgW0BmYWRlXSAqbmdJZj1cImJhY2tkcm9wXCIgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJiYWNrZHJvcENsaWNrKClcIj48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -11,16 +11,16 @@ import { ClrIconModule } from '../icon/icon.module';
11
11
  import { CdkTrapFocusModule } from '../utils/cdk/cdk-trap-focus.module';
12
12
  import { ClrModal } from './modal';
13
13
  import { ClrModalBody } from './modal-body';
14
- import { ClrModalHostDirective } from './modal-host.directive';
14
+ import { ClrModalHostComponent } from './modal-host.component';
15
15
  import * as i0 from "@angular/core";
16
- export const CLR_MODAL_DIRECTIVES = [ClrModal, ClrModalBody, ClrModalHostDirective];
16
+ export const CLR_MODAL_DIRECTIVES = [ClrModal, ClrModalBody, ClrModalHostComponent];
17
17
  export class ClrModalModule {
18
18
  constructor() {
19
19
  ClarityIcons.addIcons(windowCloseIcon);
20
20
  }
21
21
  }
22
22
  ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody, ClrModalHostDirective], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrModalHostDirective, ClrIconModule] });
23
+ ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody, ClrModalHostComponent], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrModalHostComponent, ClrIconModule] });
24
24
  ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
26
26
  type: NgModule,
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
30
30
  exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],
31
31
  }]
32
32
  }], ctorParameters: function () { return []; } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUvRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFPakcsTUFBTSxPQUFPLGNBQWM7SUFDekI7UUFDRSxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzJHQUhVLGNBQWM7NEdBQWQsY0FBYyxpQkFQdUIsUUFBUSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsYUFHbkYsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsYUFIVCxRQUFRLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUs3RCxhQUFhOzRHQUVsQyxjQUFjLFlBSmYsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFFekIsYUFBYTsyRkFFbEMsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO29CQUMxRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGFyaXR5SWNvbnMsIHdpbmRvd0Nsb3NlSWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuaW1wb3J0IHsgQ2xySWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2RrVHJhcEZvY3VzTW9kdWxlIH0gZnJvbSAnLi4vdXRpbHMvY2RrL2Nkay10cmFwLWZvY3VzLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgQ2xyTW9kYWxCb2R5IH0gZnJvbSAnLi9tb2RhbC1ib2R5JztcbmltcG9ydCB7IENsck1vZGFsSG9zdERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwtaG9zdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgQ0xSX01PREFMX0RJUkVDVElWRVM6IFR5cGU8YW55PltdID0gW0Nsck1vZGFsLCBDbHJNb2RhbEJvZHksIENsck1vZGFsSG9zdERpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENka1RyYXBGb2N1c01vZHVsZSwgQ2xySWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0NMUl9NT0RBTF9ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogW0NMUl9NT0RBTF9ESVJFQ1RJVkVTLCBDbHJJY29uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyTW9kYWxNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBDbGFyaXR5SWNvbnMuYWRkSWNvbnMod2luZG93Q2xvc2VJY29uKTtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUvRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFPakcsTUFBTSxPQUFPLGNBQWM7SUFDekI7UUFDRSxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzJHQUhVLGNBQWM7NEdBQWQsY0FBYyxpQkFQdUIsUUFBUSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsYUFHbkYsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsYUFIVCxRQUFRLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUs3RCxhQUFhOzRHQUVsQyxjQUFjLFlBSmYsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFFekIsYUFBYTsyRkFFbEMsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO29CQUMxRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGFyaXR5SWNvbnMsIHdpbmRvd0Nsb3NlSWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuaW1wb3J0IHsgQ2xySWNvbk1vZHVsZSB9IGZyb20gJy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2RrVHJhcEZvY3VzTW9kdWxlIH0gZnJvbSAnLi4vdXRpbHMvY2RrL2Nkay10cmFwLWZvY3VzLm1vZHVsZSc7XG5pbXBvcnQgeyBDbHJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgQ2xyTW9kYWxCb2R5IH0gZnJvbSAnLi9tb2RhbC1ib2R5JztcbmltcG9ydCB7IENsck1vZGFsSG9zdENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtaG9zdC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQ0xSX01PREFMX0RJUkVDVElWRVM6IFR5cGU8YW55PltdID0gW0Nsck1vZGFsLCBDbHJNb2RhbEJvZHksIENsck1vZGFsSG9zdENvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENka1RyYXBGb2N1c01vZHVsZSwgQ2xySWNvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0NMUl9NT0RBTF9ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogW0NMUl9NT0RBTF9ESVJFQ1RJVkVTLCBDbHJJY29uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyTW9kYWxNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBDbGFyaXR5SWNvbnMuYWRkSWNvbnMod2luZG93Q2xvc2VJY29uKTtcbiAgfVxufVxuIl19
@@ -4,7 +4,7 @@
4
4
  * This software is released under MIT license.
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
6
6
  */
7
- import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
7
+ import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';
8
8
  import { ClrModal } from './modal';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "./modal-configuration.service";
@@ -18,16 +18,29 @@ export class ClrSidePanel {
18
18
  this.element = element;
19
19
  this.configuration = configuration;
20
20
  this.commonStrings = commonStrings;
21
- this._open = false;
22
21
  this.openChange = new EventEmitter(false);
23
22
  this.skipAnimation = false;
24
23
  this.staticBackdrop = false;
24
+ this.closable = true;
25
25
  this.preventClose = false;
26
26
  this.altClose = new EventEmitter(false);
27
27
  this._pinnable = false;
28
28
  this._pinned = false;
29
+ this._position = 'right';
30
+ this.__open = false;
29
31
  this._size = 'md';
30
32
  }
33
+ get _open() {
34
+ return this.__open;
35
+ }
36
+ set _open(open) {
37
+ if (open !== this.__open) {
38
+ this.__open = open;
39
+ if (this.pinned) {
40
+ this.updateModalState();
41
+ }
42
+ }
43
+ }
31
44
  get size() {
32
45
  return this._size;
33
46
  }
@@ -37,9 +50,22 @@ export class ClrSidePanel {
37
50
  }
38
51
  if (this._size !== value) {
39
52
  this._size = value;
40
- if (this.clrSidePanelPinnable && this.pinned) {
41
- this.displayOverlapping();
42
- this.displaySideBySide();
53
+ if (this.pinned) {
54
+ this.updateModalState();
55
+ }
56
+ }
57
+ }
58
+ get position() {
59
+ return this._position;
60
+ }
61
+ set position(position) {
62
+ if (position && position !== this._position) {
63
+ this._position = position;
64
+ if (this._position === 'right') {
65
+ this.configuration.fadeMove = 'fadeLeft';
66
+ }
67
+ else if (this._position === 'bottom') {
68
+ this.configuration.fadeMove = 'fadeUp';
43
69
  }
44
70
  }
45
71
  }
@@ -47,17 +73,9 @@ export class ClrSidePanel {
47
73
  return this._pinned;
48
74
  }
49
75
  set pinned(pinned) {
50
- if (this.clrSidePanelPinnable) {
51
- this._pinned = pinned;
52
- if (pinned) {
53
- this.originalStopClose = this.modal.stopClose;
54
- this.modal.stopClose = true;
55
- this.displaySideBySide();
56
- }
57
- else {
58
- this.modal.stopClose = this.originalStopClose;
59
- this.displayOverlapping();
60
- }
76
+ this._pinned = pinned;
77
+ if (this.modal) {
78
+ this.updateModalState();
61
79
  }
62
80
  }
63
81
  get clrSidePanelBackdrop() {
@@ -74,28 +92,37 @@ export class ClrSidePanel {
74
92
  set clrSidePanelPinnable(pinnable) {
75
93
  this._pinnable = pinnable;
76
94
  }
95
+ get modal() {
96
+ return this._modal;
97
+ }
98
+ set modal(modal) {
99
+ this._modal = modal;
100
+ this.originalStopClose = this.modal.stopClose;
101
+ this.updateModalState();
102
+ }
77
103
  get hostElement() {
78
104
  return this.element.nativeElement.closest('.clr-modal-host') || document.body;
79
105
  }
106
+ get bottomPositionCssClass() {
107
+ return this.position === 'bottom';
108
+ }
80
109
  ngOnInit() {
81
110
  this.configuration.fadeMove = 'fadeLeft';
82
- }
83
- ngOnChanges(changes) {
84
- if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
85
- if (changes._open.currentValue) {
86
- if (this.clrSidePanelPinnable && this.pinned) {
87
- this.displaySideBySide();
88
- }
89
- }
90
- else {
91
- if (this.clrSidePanelPinnable && this.pinned) {
92
- this.displayOverlapping();
93
- }
94
- }
111
+ if (this.position === 'bottom') {
112
+ this.configuration.fadeMove = 'fadeUp';
95
113
  }
96
114
  }
97
115
  ngOnDestroy() {
98
- this.displayOverlapping();
116
+ this.cleanupPinnedClasses();
117
+ }
118
+ handleModalOpen(open) {
119
+ if (open) {
120
+ this.updateModalState();
121
+ }
122
+ else {
123
+ this.cleanupPinnedClasses();
124
+ }
125
+ this.openChange.emit(open);
99
126
  }
100
127
  open() {
101
128
  this.modal.open();
@@ -113,28 +140,41 @@ export class ClrSidePanel {
113
140
  this.modal.close();
114
141
  }
115
142
  }
116
- displaySideBySide() {
117
- this.hostElement.classList.add('clr-side-panel-pinned-' + this.size);
143
+ updateModalState() {
144
+ if (!this.modal) {
145
+ return;
146
+ }
147
+ if (this.pinned) {
148
+ this.modal.stopClose = true;
149
+ this.updatePinnedClasses();
150
+ }
151
+ else {
152
+ this.modal.stopClose = this.originalStopClose;
153
+ this.cleanupPinnedClasses();
154
+ }
118
155
  }
119
- displayOverlapping() {
120
- this.hostElement.classList.forEach(className => {
121
- if (className.startsWith('clr-side-panel-pinned-')) {
122
- this.hostElement.classList.remove(className);
123
- }
156
+ cleanupPinnedClasses() {
157
+ [this.hostElement, document.body].forEach(host => {
158
+ host.classList.forEach(className => {
159
+ if (className.startsWith('clr-side-panel-pinned-')) {
160
+ host.classList.remove(className);
161
+ }
162
+ });
124
163
  });
125
164
  }
165
+ updatePinnedClasses() {
166
+ this.cleanupPinnedClasses();
167
+ this.hostElement.classList.add(`clr-side-panel-pinned-${this.position}-${this.size}`);
168
+ }
126
169
  }
127
170
  ClrSidePanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, deps: [{ token: i0.ElementRef }, { token: i1.ClrModalConfigurationService }, { token: i2.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
128
- ClrSidePanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrSidePanel, selector: "clr-side-panel", inputs: { _open: ["clrSidePanelOpen", "_open"], closeButtonAriaLabel: ["clrSidePanelCloseButtonAriaLabel", "closeButtonAriaLabel"], skipAnimation: ["clrSidePanelSkipAnimation", "skipAnimation"], labelledById: ["clrSidePanelLabelledById", "labelledById"], staticBackdrop: ["clrSidePanelStaticBackdrop", "staticBackdrop"], preventClose: ["clrSidePanelPreventClose", "preventClose"], size: ["clrSidePanelSize", "size"], clrSidePanelBackdrop: "clrSidePanelBackdrop", clrSidePanelPinnable: "clrSidePanelPinnable" }, outputs: { openChange: "clrSidePanelOpenChange", altClose: "clrSidePanelAlternateClose" }, host: { listeners: { "document:pointerup": "documentClick($event)" }, properties: { "class.side-panel": "true" } }, viewQueries: [{ propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"openChange.emit($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i5.ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: i6.ClrModalBody, selector: ".modal-body" }] });
171
+ ClrSidePanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrSidePanel, selector: "clr-side-panel", inputs: { closeButtonAriaLabel: ["clrSidePanelCloseButtonAriaLabel", "closeButtonAriaLabel"], skipAnimation: ["clrSidePanelSkipAnimation", "skipAnimation"], labelledById: ["clrSidePanelLabelledById", "labelledById"], staticBackdrop: ["clrSidePanelStaticBackdrop", "staticBackdrop"], closable: ["clrSidePanelClosable", "closable"], preventClose: ["clrSidePanelPreventClose", "preventClose"], _open: ["clrSidePanelOpen", "_open"], size: ["clrSidePanelSize", "size"], position: ["clrSidePanelPosition", "position"], pinned: ["clrSidePanelPinned", "pinned"], clrSidePanelBackdrop: "clrSidePanelBackdrop", clrSidePanelPinnable: "clrSidePanelPinnable" }, outputs: { openChange: "clrSidePanelOpenChange", altClose: "clrSidePanelAlternateClose" }, host: { listeners: { "document:pointerup": "documentClick($event)" }, properties: { "class.side-panel": "true", "class.side-panel-bottom": "this.bottomPositionCssClass" } }, viewQueries: [{ propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], ngImport: i0, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i5.ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: i6.ClrModalBody, selector: ".modal-body" }] });
129
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, decorators: [{
130
173
  type: Component,
131
174
  args: [{ selector: 'clr-side-panel', host: {
132
175
  '[class.side-panel]': 'true',
133
- }, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"openChange.emit($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n" }]
134
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ClrModalConfigurationService }, { type: i2.ClrCommonStringsService }]; }, propDecorators: { _open: [{
135
- type: Input,
136
- args: ['clrSidePanelOpen']
137
- }], openChange: [{
176
+ }, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n" }]
177
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ClrModalConfigurationService }, { type: i2.ClrCommonStringsService }]; }, propDecorators: { openChange: [{
138
178
  type: Output,
139
179
  args: ['clrSidePanelOpenChange']
140
180
  }], closeButtonAriaLabel: [{
@@ -149,24 +189,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
149
189
  }], staticBackdrop: [{
150
190
  type: Input,
151
191
  args: ['clrSidePanelStaticBackdrop']
192
+ }], closable: [{
193
+ type: Input,
194
+ args: ['clrSidePanelClosable']
152
195
  }], preventClose: [{
153
196
  type: Input,
154
197
  args: ['clrSidePanelPreventClose']
155
198
  }], altClose: [{
156
199
  type: Output,
157
200
  args: ['clrSidePanelAlternateClose']
158
- }], modal: [{
159
- type: ViewChild,
160
- args: [ClrModal]
201
+ }], _open: [{
202
+ type: Input,
203
+ args: ['clrSidePanelOpen']
161
204
  }], size: [{
162
205
  type: Input,
163
206
  args: ['clrSidePanelSize']
207
+ }], position: [{
208
+ type: Input,
209
+ args: ['clrSidePanelPosition']
210
+ }], pinned: [{
211
+ type: Input,
212
+ args: ['clrSidePanelPinned']
164
213
  }], clrSidePanelBackdrop: [{
165
214
  type: Input
166
215
  }], clrSidePanelPinnable: [{
167
216
  type: Input
217
+ }], modal: [{
218
+ type: ViewChild,
219
+ args: [ClrModal]
220
+ }], bottomPositionCssClass: [{
221
+ type: HostBinding,
222
+ args: ['class.side-panel-bottom']
168
223
  }], documentClick: [{
169
224
  type: HostListener,
170
225
  args: ['document:pointerup', ['$event']]
171
226
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL21vZGFsL3NpZGUtcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9tb2RhbC9zaWRlLXBhbmVsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7QUFVbkMsTUFBTSxPQUFPLFlBQVk7SUFpQnZCLFlBQ1UsT0FBZ0MsRUFDaEMsYUFBMkMsRUFDNUMsYUFBc0M7UUFGckMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsa0JBQWEsR0FBYixhQUFhLENBQThCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQW5CcEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNQLGVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU1QyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFHMUUsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR2hCLFVBQUssR0FBRyxJQUFJLENBQUM7SUFNbEIsQ0FBQztJQUVKLElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FB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QUE5QyxLQUFLO3VCQUFDLDBCQUEwQjtnQkFDSyxRQUFRO3NCQUE3QyxNQUFNO3VCQUFDLDRCQUE0QjtnQkFDUCxLQUFLO3NCQUFqQyxTQUFTO3VCQUFDLFFBQVE7Z0JBZWYsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLGtCQUFrQjtnQkFxQ3JCLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFZRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBZ0RFLGFBQWE7c0JBRHBCLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDbHJNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHsgQ2xyTW9kYWxDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vbW9kYWwtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXNpZGUtcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJ3NpZGUtcGFuZWwuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLnNpZGUtcGFuZWxdJzogJ3RydWUnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDbHJTaWRlUGFuZWwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxPcGVuJykgX29wZW4gPSBmYWxzZTtcbiAgQE91dHB1dCgnY2xyU2lkZVBhbmVsT3BlbkNoYW5nZScpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxDbG9zZUJ1dHRvbkFyaWFMYWJlbCcpIGNsb3NlQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgnY2xyU2lkZVBhbmVsU2tpcEFuaW1hdGlvbicpIHNraXBBbmltYXRpb24gPSBmYWxzZTtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxMYWJlbGxlZEJ5SWQnKSBsYWJlbGxlZEJ5SWQ6IHN0cmluZztcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxTdGF0aWNCYWNrZHJvcCcpIHN0YXRpY0JhY2tkcm9wID0gZmFsc2U7XG4gIEBJbnB1dCgnY2xyU2lkZVBhbmVsUHJldmVudENsb3NlJykgcHJldmVudENsb3NlID0gZmFsc2U7XG4gIEBPdXRwdXQoJ2NsclNpZGVQYW5lbEFsdGVybmF0ZUNsb3NlJykgYWx0Q2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KGZhbHNlKTtcbiAgQFZpZXdDaGlsZChDbHJNb2RhbCkgcHJpdmF0ZSBtb2RhbDogQ2xyTW9kYWw7XG5cbiAgcHJpdmF0ZSBfcGlubmFibGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGlubmVkID0gZmFsc2U7XG4gIHByaXZhdGUgb3JpZ2luYWxTdG9wQ2xvc2U6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfc2l6ZSA9ICdtZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlXG4gICkge31cblxuICBASW5wdXQoJ2NsclNpZGVQYW5lbFNpemUnKVxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gJ21kJztcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpemUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5jbHJTaWRlUGFuZWxQaW5uYWJsZSAmJiB0aGlzLnBpbm5lZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlPdmVybGFwcGluZygpO1xuICAgICAgICB0aGlzLmRpc3BsYXlTaWRlQnlTaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBpbm5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGlubmVkO1xuICB9XG5cbiAgc2V0IHBpbm5lZChwaW5uZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5jbHJTaWRlUGFuZWxQaW5uYWJsZSkge1xuICAgICAgdGhpcy5fcGlubmVkID0gcGlubmVkO1xuICAgICAgaWYgKHBpbm5lZCkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsU3RvcENsb3NlID0gdGhpcy5tb2RhbC5zdG9wQ2xvc2U7XG4gICAgICAgIHRoaXMubW9kYWwuc3RvcENsb3NlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U2lkZUJ5U2lkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RhbC5zdG9wQ2xvc2UgPSB0aGlzLm9yaWdpbmFsU3RvcENsb3NlO1xuICAgICAgICB0aGlzLmRpc3BsYXlPdmVybGFwcGluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBjbHJTaWRlUGFuZWxCYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmJhY2tkcm9wO1xuICB9XG5cbiAgc2V0IGNsclNpZGVQYW5lbEJhY2tkcm9wKGJhY2tkcm9wOiBib29sZWFuKSB7XG4gICAgaWYgKGJhY2tkcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iYWNrZHJvcCA9IGJhY2tkcm9wO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBjbHJTaWRlUGFuZWxQaW5uYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGlubmFibGU7XG4gIH1cblxuICBzZXQgY2xyU2lkZVBhbmVsUGlubmFibGUocGlubmFibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9waW5uYWJsZSA9IHBpbm5hYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaG9zdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiAodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5jbHItbW9kYWwtaG9zdCcpIHx8IGRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZmFkZU1vdmUgPSAnZmFkZUxlZnQnO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNoYW5nZXMsICdfb3BlbicpKSB7XG4gICAgICBpZiAoY2hhbmdlcy5fb3Blbi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xyU2lkZVBhbmVsUGlubmFibGUgJiYgdGhpcy5waW5uZWQpIHtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlTaWRlQnlTaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmNsclNpZGVQYW5lbFBpbm5hYmxlICYmIHRoaXMucGlubmVkKSB7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5T3ZlcmxhcHBpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheU92ZXJsYXBwaW5nKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMubW9kYWwub3BlbigpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xuICB9XG5cbiAgdG9nZ2xlUGlubmVkKCkge1xuICAgIHRoaXMucGlubmVkID0gIXRoaXMucGlubmVkO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cG9pbnRlcnVwJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAgIHRoaXMubW9kYWwuX29wZW4gJiZcbiAgICAgICF0aGlzLmNvbmZpZ3VyYXRpb24uYmFja2Ryb3BcbiAgICApIHtcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlTaWRlQnlTaWRlKCkge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2xyLXNpZGUtcGFuZWwtcGlubmVkLScgKyB0aGlzLnNpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5T3ZlcmxhcHBpbmcoKSB7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QuZm9yRWFjaChjbGFzc05hbWUgPT4ge1xuICAgICAgaWYgKGNsYXNzTmFtZS5zdGFydHNXaXRoKCdjbHItc2lkZS1wYW5lbC1waW5uZWQtJykpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjbHItbW9kYWxcbiAgW2Nsck1vZGFsT3Blbl09XCJfb3BlblwiXG4gIChjbHJNb2RhbE9wZW5DaGFuZ2UpPVwib3BlbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICBbY2xyTW9kYWxDbG9zZUJ1dHRvbkFyaWFMYWJlbF09XCJjbG9zZUJ1dHRvbkFyaWFMYWJlbFwiXG4gIFtjbHJNb2RhbFNpemVdPVwic2l6ZVwiXG4gIFtjbHJNb2RhbFNraXBBbmltYXRpb25dPVwic2tpcEFuaW1hdGlvblwiXG4gIFtjbHJNb2RhbFN0YXRpY0JhY2tkcm9wXT1cInN0YXRpY0JhY2tkcm9wXCJcbiAgW2Nsck1vZGFsTGFiZWxsZWRCeUlkXT1cImxhYmVsbGVkQnlJZFwiXG4gIFtjbHJNb2RhbFByZXZlbnRDbG9zZV09XCJwcmV2ZW50Q2xvc2VcIlxuICAoY2xyTW9kYWxBbHRlcm5hdGVDbG9zZSk9XCJhbHRDbG9zZS5lbWl0KCRldmVudClcIlxuICBbY2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2VdPVwidHJ1ZVwiXG4+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5zaWRlUGFuZWxQaW5cIlxuICAgIGNsYXNzPVwibGVhZGluZy1idXR0b24gcGlubmFibGVcIlxuICAgICpuZ0lmPVwiY2xyU2lkZVBhbmVsUGlubmFibGVcIlxuICAgIChjbGljayk9XCJ0b2dnbGVQaW5uZWQoKVwiXG4gID5cbiAgICA8Y2RzLWljb24gW2F0dHIuc2hhcGVdPVwicGlubmVkID8gJ3VucGluJyA6ICdwaW4nXCI+PC9jZHMtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPjxuZy1jb250ZW50IHNlbGVjdD1cIi5zaWRlLXBhbmVsLXRpdGxlXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPjxuZy1jb250ZW50IHNlbGVjdD1cIi5zaWRlLXBhbmVsLWJvZHlcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj48bmctY29udGVudCBzZWxlY3Q9XCIuc2lkZS1wYW5lbC1mb290ZXJcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG48L2Nsci1tb2RhbD5cbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL21vZGFsL3NpZGUtcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9tb2RhbC9zaWRlLXBhbmVsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7Ozs7O0FBVW5DLE1BQU0sT0FBTyxZQUFZO0lBbUJ2QixZQUNVLE9BQWdDLEVBQ2hDLGFBQTJDLEVBQzVDLGFBQXNDO1FBRnJDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFyQmIsZUFBVSxHQUFHLElBQUksWUFBWSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTVDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFMUUsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFVBQUssR0FBRyxJQUFJLENBQUM7SUFNbEIsQ0FBQztJQUVKLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFD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O3VCQUFDLDBCQUEwQjtnQkFDSSxjQUFjO3NCQUFsRCxLQUFLO3VCQUFDLDRCQUE0QjtnQkFDSixRQUFRO3NCQUF0QyxLQUFLO3VCQUFDLHNCQUFzQjtnQkFDTSxZQUFZO3NCQUE5QyxLQUFLO3VCQUFDLDBCQUEwQjtnQkFDSyxRQUFRO3NCQUE3QyxNQUFNO3VCQUFDLDRCQUE0QjtnQkFrQmhDLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBY3JCLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBa0JyQixRQUFRO3NCQURYLEtBQUs7dUJBQUMsc0JBQXNCO2dCQWlCekIsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFhdkIsb0JBQW9CO3NCQUR2QixLQUFLO2dCQVlGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFVTSxLQUFLO3NCQURoQixTQUFTO3VCQUFDLFFBQVE7Z0JBZ0JQLHNCQUFzQjtzQkFEakMsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBc0M5QixhQUFhO3NCQURwQixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ2xyTW9kYWwgfSBmcm9tICcuL21vZGFsJztcbmltcG9ydCB7IENsck1vZGFsQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICdzaWRlLXBhbmVsLmh0bWwnLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zaWRlLXBhbmVsXSc6ICd0cnVlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyU2lkZVBhbmVsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCdjbHJTaWRlUGFuZWxPcGVuQ2hhbmdlJykgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuICBASW5wdXQoJ2NsclNpZGVQYW5lbENsb3NlQnV0dG9uQXJpYUxhYmVsJykgY2xvc2VCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxTa2lwQW5pbWF0aW9uJykgc2tpcEFuaW1hdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoJ2NsclNpZGVQYW5lbExhYmVsbGVkQnlJZCcpIGxhYmVsbGVkQnlJZDogc3RyaW5nO1xuICBASW5wdXQoJ2NsclNpZGVQYW5lbFN0YXRpY0JhY2tkcm9wJykgc3RhdGljQmFja2Ryb3AgPSBmYWxzZTtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxDbG9zYWJsZScpIGNsb3NhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJTaWRlUGFuZWxQcmV2ZW50Q2xvc2UnKSBwcmV2ZW50Q2xvc2UgPSBmYWxzZTtcbiAgQE91dHB1dCgnY2xyU2lkZVBhbmVsQWx0ZXJuYXRlQ2xvc2UnKSBhbHRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX3Bpbm5hYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgX3Bpbm5lZCA9IGZhbHNlO1xuICBwcml2YXRlIG9yaWdpbmFsU3RvcENsb3NlOiBib29sZWFuO1xuICBwcml2YXRlIF9wb3NpdGlvbiA9ICdyaWdodCc7XG4gIHByaXZhdGUgX21vZGFsOiBDbHJNb2RhbDtcbiAgcHJpdmF0ZSBfX29wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9zaXplID0gJ21kJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbjogQ2xyTW9kYWxDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2VcbiAgKSB7fVxuXG4gIEBJbnB1dCgnY2xyU2lkZVBhbmVsT3BlbicpXG4gIGdldCBfb3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fX29wZW47XG4gIH1cbiAgc2V0IF9vcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiAhPT0gdGhpcy5fX29wZW4pIHtcbiAgICAgIHRoaXMuX19vcGVuID0gb3BlbjtcbiAgICAgIGlmICh0aGlzLnBpbm5lZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1vZGFsU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2NsclNpZGVQYW5lbFNpemUnKVxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gJ21kJztcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpemUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9zaXplID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5waW5uZWQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RhbFN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdjbHJTaWRlUGFuZWxQb3NpdGlvbicpXG4gIGdldCBwb3NpdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgfVxuXG4gIHNldCBwb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uICE9PSB0aGlzLl9wb3NpdGlvbikge1xuICAgICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgIGlmICh0aGlzLl9wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZmFkZU1vdmUgPSAnZmFkZUxlZnQnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmZhZGVNb3ZlID0gJ2ZhZGVVcCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdjbHJTaWRlUGFuZWxQaW5uZWQnKVxuICBnZXQgcGlubmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9waW5uZWQ7XG4gIH1cblxuICBzZXQgcGlubmVkKHBpbm5lZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Bpbm5lZCA9IHBpbm5lZDtcbiAgICBpZiAodGhpcy5tb2RhbCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RhbFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGNsclNpZGVQYW5lbEJhY2tkcm9wKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uYmFja2Ryb3A7XG4gIH1cblxuICBzZXQgY2xyU2lkZVBhbmVsQmFja2Ryb3AoYmFja2Ryb3A6IGJvb2xlYW4pIHtcbiAgICBpZiAoYmFja2Ryb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmJhY2tkcm9wID0gYmFja2Ryb3A7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGNsclNpZGVQYW5lbFBpbm5hYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9waW5uYWJsZTtcbiAgfVxuXG4gIHNldCBjbHJTaWRlUGFuZWxQaW5uYWJsZShwaW5uYWJsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Bpbm5hYmxlID0gcGlubmFibGU7XG4gIH1cblxuICBAVmlld0NoaWxkKENsck1vZGFsKVxuICBwcml2YXRlIGdldCBtb2RhbCgpOiBDbHJNb2RhbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXQgbW9kYWwobW9kYWw6IENsck1vZGFsKSB7XG4gICAgdGhpcy5fbW9kYWwgPSBtb2RhbDtcbiAgICB0aGlzLm9yaWdpbmFsU3RvcENsb3NlID0gdGhpcy5tb2RhbC5zdG9wQ2xvc2U7XG4gICAgdGhpcy51cGRhdGVNb2RhbFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuICh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmNsci1tb2RhbC1ob3N0JykgfHwgZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2lkZS1wYW5lbC1ib3R0b20nKVxuICBwcml2YXRlIGdldCBib3R0b21Qb3NpdGlvbkNzc0NsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbi5mYWRlTW92ZSA9ICdmYWRlTGVmdCc7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZmFkZU1vdmUgPSAnZmFkZVVwJztcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBQaW5uZWRDbGFzc2VzKCk7XG4gIH1cblxuICBoYW5kbGVNb2RhbE9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgIGlmIChvcGVuKSB7XG4gICAgICB0aGlzLnVwZGF0ZU1vZGFsU3RhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhbnVwUGlubmVkQ2xhc3NlcygpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XG4gIH1cblxuICB0b2dnbGVQaW5uZWQoKSB7XG4gICAgdGhpcy5waW5uZWQgPSAhdGhpcy5waW5uZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpwb2ludGVydXAnLCBbJyRldmVudCddKVxuICBwcml2YXRlIGRvY3VtZW50Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgdGhpcy5tb2RhbC5fb3BlbiAmJlxuICAgICAgIXRoaXMuY29uZmlndXJhdGlvbi5iYWNrZHJvcFxuICAgICkge1xuICAgICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kYWxTdGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kYWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGlubmVkKSB7XG4gICAgICB0aGlzLm1vZGFsLnN0b3BDbG9zZSA9IHRydWU7XG4gICAgICB0aGlzLnVwZGF0ZVBpbm5lZENsYXNzZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RhbC5zdG9wQ2xvc2UgPSB0aGlzLm9yaWdpbmFsU3RvcENsb3NlO1xuICAgICAgdGhpcy5jbGVhbnVwUGlubmVkQ2xhc3NlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cFBpbm5lZENsYXNzZXMoKSB7XG4gICAgW3RoaXMuaG9zdEVsZW1lbnQsIGRvY3VtZW50LmJvZHldLmZvckVhY2goaG9zdCA9PiB7XG4gICAgICBob3N0LmNsYXNzTGlzdC5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgICAgIGlmIChjbGFzc05hbWUuc3RhcnRzV2l0aCgnY2xyLXNpZGUtcGFuZWwtcGlubmVkLScpKSB7XG4gICAgICAgICAgaG9zdC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQaW5uZWRDbGFzc2VzKCkge1xuICAgIHRoaXMuY2xlYW51cFBpbm5lZENsYXNzZXMoKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGNsci1zaWRlLXBhbmVsLXBpbm5lZC0ke3RoaXMucG9zaXRpb259LSR7dGhpcy5zaXplfWApO1xuICB9XG59XG4iLCI8Y2xyLW1vZGFsXG4gIFtjbHJNb2RhbE9wZW5dPVwiX29wZW5cIlxuICAoY2xyTW9kYWxPcGVuQ2hhbmdlKT1cImhhbmRsZU1vZGFsT3BlbigkZXZlbnQpXCJcbiAgW2Nsck1vZGFsQ2xvc2VCdXR0b25BcmlhTGFiZWxdPVwiY2xvc2VCdXR0b25BcmlhTGFiZWxcIlxuICBbY2xyTW9kYWxTaXplXT1cInNpemVcIlxuICBbY2xyTW9kYWxTa2lwQW5pbWF0aW9uXT1cInNraXBBbmltYXRpb25cIlxuICBbY2xyTW9kYWxTdGF0aWNCYWNrZHJvcF09XCJzdGF0aWNCYWNrZHJvcFwiXG4gIFtjbHJNb2RhbExhYmVsbGVkQnlJZF09XCJsYWJlbGxlZEJ5SWRcIlxuICBbY2xyTW9kYWxQcmV2ZW50Q2xvc2VdPVwicHJldmVudENsb3NlXCJcbiAgW2Nsck1vZGFsQ2xvc2FibGVdPVwiY2xvc2FibGVcIlxuICAoY2xyTW9kYWxBbHRlcm5hdGVDbG9zZSk9XCJhbHRDbG9zZS5lbWl0KCRldmVudClcIlxuICBbY2xyTW9kYWxPdmVycmlkZVNjcm9sbFNlcnZpY2VdPVwidHJ1ZVwiXG4+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5zaWRlUGFuZWxQaW5cIlxuICAgIGNsYXNzPVwibGVhZGluZy1idXR0b24gcGlubmFibGVcIlxuICAgICpuZ0lmPVwiY2xyU2lkZVBhbmVsUGlubmFibGVcIlxuICAgIChjbGljayk9XCJ0b2dnbGVQaW5uZWQoKVwiXG4gID5cbiAgICA8Y2RzLWljb24gW2F0dHIuc2hhcGVdPVwicGlubmVkID8gJ3VucGluJyA6ICdwaW4nXCI+PC9jZHMtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPjxuZy1jb250ZW50IHNlbGVjdD1cIi5zaWRlLXBhbmVsLXRpdGxlXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPjxuZy1jb250ZW50IHNlbGVjdD1cIi5zaWRlLXBhbmVsLWJvZHlcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj48bmctY29udGVudCBzZWxlY3Q9XCIuc2lkZS1wYW5lbC1mb290ZXJcIj48L25nLWNvbnRlbnQ+PC9kaXY+XG48L2Nsci1tb2RhbD5cbiJdfQ==
@@ -28,7 +28,13 @@ export class AbstractPopover {
28
28
  this.documentESCListener = null;
29
29
  this.closeOnOutsideClickCallback = event => {
30
30
  // The anchor element containing the click event origin means, the click wasn't triggered outside.
31
- if (this.anchorElem.contains(event.target)) {
31
+ if (event.target.shadowRoot) {
32
+ const containsNode = event.composedPath().some((element) => element === this.anchorElem);
33
+ if (containsNode) {
34
+ return;
35
+ }
36
+ }
37
+ else if (this.anchorElem.contains(event.target)) {
32
38
  return;
33
39
  }
34
40
  this.toggleService.open = false;
@@ -129,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
129
135
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef, decorators: [{
130
136
  type: SkipSelf
131
137
  }] }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3BvcG92ZXIvY29tbW9uL2Fic3RyYWN0LXBvcG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFTLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHM0M7O0dBRUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUc3QyxNQUFNLE9BQWdCLGVBQWU7SUF1Qm5DLFlBQVksUUFBa0IsRUFBd0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUF0QnpGOzs7V0FHRztRQUNILHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQVVsQixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFHdEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHckIsd0JBQW1CLEdBQXdCLElBQUksQ0FBQztRQW1GaEQsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDLEVBQUU7WUFDNUMsa0dBQWtHO1lBQ2xHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQyxPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FB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Q0FBQyxtQkFBbUIsRUFBRTtnQkFDNUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDL0U7U0FDRjtJQUNILENBQUM7OzRHQWhJbUIsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRHBDLFNBQVM7OzBCQXdCeUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFNraXBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMva2V5cy5lbnVtJztcbmltcG9ydCB7IG5vcm1hbGl6ZUtleSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZvY3VzL2tleS1mb2N1cy91dGlsJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludCwgUG9wb3ZlciB9IGZyb20gJy4vcG9wb3Zlcic7XG5pbXBvcnQgeyBQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4vcG9wb3Zlci1vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogRmFsbGJhY2sgdG8gaGlkZSB3aGVuICpjbHJJZk9wZW4gaXMgbm90IGJlaW5nIHVzZWRcbiAqL1xuY29uc3QgaXNPZmZTY3JlZW5DbGFzc05hbWUgPSAnaXMtb2ZmLXNjcmVlbic7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UG9wb3ZlciBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gIC8qXG4gICAqIFVudGlsIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzg3ODUgaXMgc3VwcG9ydGVkLCB3ZSBkb24ndCBoYXZlIGFueSB3YXkgdG8gaW5zdGFudGlhdGVcbiAgICogYSBzZXBhcmF0ZSBkaXJlY3RpdmUgb24gdGhlIGhvc3QuIFNvIGxldCdzIGRvIGRpcnR5IGJ1dCBwZXJmb3JtYW50IGZvciBub3cuXG4gICAqL1xuICBjbG9zZU9uT3V0c2lkZUNsaWNrID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJvdGVjdGVkIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lO1xuICBwcm90ZWN0ZWQgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgcHJvdGVjdGVkIGFuY2hvckVsZW06IGFueTtcbiAgcHJvdGVjdGVkIGFuY2hvclBvaW50OiBQb2ludDtcbiAgcHJvdGVjdGVkIHBvcG92ZXJQb2ludDogUG9pbnQ7XG4gIHByb3RlY3RlZCBwb3BvdmVyT3B0aW9uczogUG9wb3Zlck9wdGlvbnMgPSB7fTtcbiAgcHJvdGVjdGVkIGlnbm9yZWRFbGVtZW50OiBhbnk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVBbmNob3IgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwb3BvdmVySW5zdGFuY2U6IFBvcG92ZXI7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZG9jdW1lbnRFU0NMaXN0ZW5lcjogVm9pZEZ1bmN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgcGFyZW50SG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICB0aGlzLmVsID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgIHRoaXMudG9nZ2xlU2VydmljZSA9IGluamVjdG9yLmdldChDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSk7XG4gICAgdGhpcy5yZW5kZXJlciA9IGluamVjdG9yLmdldChSZW5kZXJlcjIpO1xuICAgIHRoaXMubmdab25lID0gaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgdGhpcy5yZWYgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIC8vIERlZmF1bHQgYW5jaG9yIGlzIHRoZSBwYXJlbnQgaG9zdFxuICAgIHRoaXMuYW5jaG9yRWxlbSA9IHBhcmVudEhvc3QubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMucG9wb3Zlckluc3RhbmNlID0gbmV3IFBvcG92ZXIodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuKSkuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgdGhpcy5hbmNob3IoKTtcbiAgICAgICAgdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgaXNPZmZTY3JlZW5DbGFzc05hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgICAgIHRoaXMuZGV0YWNoRVNDTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGlzT2ZmU2NyZWVuQ2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4pIHtcbiAgICAgIHRoaXMuYW5jaG9yKCk7XG4gICAgICB0aGlzLmF0dGFjaEVTQ0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLnVwZGF0ZUFuY2hvcikge1xuICAgICAgdGhpcy51cGRhdGVBbmNob3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucG9wb3Zlckluc3RhbmNlXG4gICAgICAgIC5hbmNob3IodGhpcy5hbmNob3JFbGVtLCB0aGlzLmFuY2hvclBvaW50LCB0aGlzLnBvcG92ZXJQb2ludCwgdGhpcy5wb3BvdmVyT3B0aW9ucylcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gaWYgYSBzY3JvbGwgZXZlbnQgaXMgZGV0ZWN0ZWQsIGNsb3NlIHRoZSBwb3BvdmVyXG4gICAgICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmF0dGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgdGhpcy5kZXRhY2hFU0NMaXN0ZW5lcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYW5jaG9yKCkge1xuICAgIHRoaXMudXBkYXRlQW5jaG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWxlYXNlKCkge1xuICAgIHRoaXMuZGV0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICB0aGlzLnBvcG92ZXJJbnN0YW5jZS5yZWxlYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEVTQ0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPcHRpb25zLmlnbm9yZUdsb2JhbEVTQ0xpc3RlbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC5rZXkpIHtcbiAgICAgICAgICBpZiAobm9ybWFsaXplS2V5KGV2ZW50LmtleSkgPT09IEtleXMuRXNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGFjaEVTQ0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50RVNDTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT25PdXRzaWRlQ2xpY2tDYWxsYmFjayA9IGV2ZW50ID0+IHtcbiAgICAvLyBUaGUgYW5jaG9yIGVsZW1lbnQgY29udGFpbmluZyB0aGUgY2xpY2sgZXZlbnQgb3JpZ2luIG1lYW5zLCB0aGUgY2xpY2sgd2Fzbid0IHRyaWdnZXJlZCBvdXRzaWRlLlxuICAgIGlmICh0aGlzLmFuY2hvckVsZW0uY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlO1xuICB9O1xuXG4gIHByaXZhdGUgYXR0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbk91dHNpZGVDbGljayAmJiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbikge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gVG8gbGlzdGVuIG91dHNpZGUgY2xpY2ssIHRoZSBsaXN0ZW5lciBzaG91bGQgY2F0Y2ggdGhlIGV2ZW50IGR1cmluZyB0aGUgY2FwdHVyaW5nIHBoYXNlLlxuICAgICAgICAvLyBXZSBoYXZlIHRvIGRvIHRoaXMgdWdseSBkb2N1bWVudCBjaGVjayBhcyBSZW5kZXJlcjIubGlzdGVuIGRvZXNuJ3QgYWxsb3cgcGFzc2l2ZS91c2VDYXB0dXJlIGxpc3Rlbi5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2tDYWxsYmFjaywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hPdXRzaWRlQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xvc2VPbk91dHNpZGVDbGlja0NhbGxiYWNrLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3BvcG92ZXIvY29tbW9uL2Fic3RyYWN0LXBvcG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFTLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHM0M7O0dBRUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUc3QyxNQUFNLE9BQWdCLGVBQWU7SUF1Qm5DLFlBQXNCLFFBQWtCLEVBQXdCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBdEJuRzs7O1dBR0c7UUFDSCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFVbEIsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLHdCQUFtQixHQUF3QixJQUFJLENBQUM7UUFtRmhELGdDQUEyQixHQUFHLEtBQUssQ0FBQyxFQUFFO1lBQzVDLGtHQUFrRztZQUNsRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUMzQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBb0IsRUFBRSxF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QUFnQixFQUFFO2dCQUN6QywyRkFBMkY7Z0JBQzNGLHNHQUFzRztnQkFDdEcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDNUU7U0FDRjtJQUNILENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLG1CQUFtQixFQUFFO2dCQUM1QyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMvRTtTQUNGO0lBQ0gsQ0FBQzs7NEdBdEltQixlQUFlO2dHQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEcEMsU0FBUzs7MEJBd0JtQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3RvcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2tpcFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtleXMgfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcy9rZXlzLmVudW0nO1xuaW1wb3J0IHsgbm9ybWFsaXplS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9jdXMva2V5LWZvY3VzL3V0aWwnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL3Byb3ZpZGVycy9wb3BvdmVyLXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50LCBQb3BvdmVyIH0gZnJvbSAnLi9wb3BvdmVyJztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb25zIH0gZnJvbSAnLi9wb3BvdmVyLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBGYWxsYmFjayB0byBoaWRlIHdoZW4gKmNscklmT3BlbiBpcyBub3QgYmVpbmcgdXNlZFxuICovXG5jb25zdCBpc09mZlNjcmVlbkNsYXNzTmFtZSA9ICdpcy1vZmYtc2NyZWVuJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RQb3BvdmVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcbiAgLypcbiAgICogVW50aWwgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvODc4NSBpcyBzdXBwb3J0ZWQsIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBpbnN0YW50aWF0ZVxuICAgKiBhIHNlcGFyYXRlIGRpcmVjdGl2ZSBvbiB0aGUgaG9zdC4gU28gbGV0J3MgZG8gZGlydHkgYnV0IHBlcmZvcm1hbnQgZm9yIG5vdy5cbiAgICovXG4gIGNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcm90ZWN0ZWQgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2U7XG4gIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyO1xuICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmU7XG4gIHByb3RlY3RlZCByZWY6IENoYW5nZURldGVjdG9yUmVmO1xuICBwcm90ZWN0ZWQgYW5jaG9yRWxlbTogYW55O1xuICBwcm90ZWN0ZWQgYW5jaG9yUG9pbnQ6IFBvaW50O1xuICBwcm90ZWN0ZWQgcG9wb3ZlclBvaW50OiBQb2ludDtcbiAgcHJvdGVjdGVkIHBvcG92ZXJPcHRpb25zOiBQb3BvdmVyT3B0aW9ucyA9IHt9O1xuICBwcm90ZWN0ZWQgaWdub3JlZEVsZW1lbnQ6IGFueTtcblxuICBwcml2YXRlIHVwZGF0ZUFuY2hvciA9IGZhbHNlO1xuICBwcml2YXRlIHBvcG92ZXJJbnN0YW5jZTogUG9wb3ZlcjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkb2N1bWVudEVTQ0xpc3RlbmVyOiBWb2lkRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBAU2tpcFNlbGYoKSBwcm90ZWN0ZWQgcGFyZW50SG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICB0aGlzLmVsID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYpO1xuICAgIHRoaXMudG9nZ2xlU2VydmljZSA9IGluamVjdG9yLmdldChDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSk7XG4gICAgdGhpcy5yZW5kZXJlciA9IGluamVjdG9yLmdldChSZW5kZXJlcjIpO1xuICAgIHRoaXMubmdab25lID0gaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgdGhpcy5yZWYgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIC8vIERlZmF1bHQgYW5jaG9yIGlzIHRoZSBwYXJlbnQgaG9zdFxuICAgIHRoaXMuYW5jaG9yRWxlbSA9IHBhcmVudEhvc3QubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMucG9wb3Zlckluc3RhbmNlID0gbmV3IFBvcG92ZXIodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMudG9nZ2xlU2VydmljZS5vcGVuKSkuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgdGhpcy5hbmNob3IoKTtcbiAgICAgICAgdGhpcy5hdHRhY2hFU0NMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgaXNPZmZTY3JlZW5DbGFzc05hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgICAgIHRoaXMuZGV0YWNoRVNDTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGlzT2ZmU2NyZWVuQ2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4pIHtcbiAgICAgIHRoaXMuYW5jaG9yKCk7XG4gICAgICB0aGlzLmF0dGFjaEVTQ0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLnVwZGF0ZUFuY2hvcikge1xuICAgICAgdGhpcy51cGRhdGVBbmNob3IgPSBmYWxzZTtcbiAgICAgIHRoaXMucG9wb3Zlckluc3RhbmNlXG4gICAgICAgIC5hbmNob3IodGhpcy5hbmNob3JFbGVtLCB0aGlzLmFuY2hvclBvaW50LCB0aGlzLnBvcG92ZXJQb2ludCwgdGhpcy5wb3BvdmVyT3B0aW9ucylcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gaWYgYSBzY3JvbGwgZXZlbnQgaXMgZGV0ZWN0ZWQsIGNsb3NlIHRoZSBwb3BvdmVyXG4gICAgICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmF0dGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZWxlYXNlKCk7XG4gICAgdGhpcy5kZXRhY2hFU0NMaXN0ZW5lcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYW5jaG9yKCkge1xuICAgIHRoaXMudXBkYXRlQW5jaG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWxlYXNlKCkge1xuICAgIHRoaXMuZGV0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICB0aGlzLnBvcG92ZXJJbnN0YW5jZS5yZWxlYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEVTQ0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPcHRpb25zLmlnbm9yZUdsb2JhbEVTQ0xpc3RlbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC5rZXkpIHtcbiAgICAgICAgICBpZiAobm9ybWFsaXplS2V5KGV2ZW50LmtleSkgPT09IEtleXMuRXNjYXBlKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGFjaEVTQ0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvY3VtZW50RVNDTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRFU0NMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5kb2N1bWVudEVTQ0xpc3RlbmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT25PdXRzaWRlQ2xpY2tDYWxsYmFjayA9IGV2ZW50ID0+IHtcbiAgICAvLyBUaGUgYW5jaG9yIGVsZW1lbnQgY29udGFpbmluZyB0aGUgY2xpY2sgZXZlbnQgb3JpZ2luIG1lYW5zLCB0aGUgY2xpY2sgd2Fzbid0IHRyaWdnZXJlZCBvdXRzaWRlLlxuICAgIGlmIChldmVudC50YXJnZXQuc2hhZG93Um9vdCkge1xuICAgICAgY29uc3QgY29udGFpbnNOb2RlID0gZXZlbnQuY29tcG9zZWRQYXRoKCkuc29tZSgoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IGVsZW1lbnQgPT09IHRoaXMuYW5jaG9yRWxlbSk7XG5cbiAgICAgIGlmIChjb250YWluc05vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5hbmNob3JFbGVtLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgfTtcblxuICBwcml2YXRlIGF0dGFjaE91dHNpZGVDbGlja0xpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2sgJiYgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4pIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIC8vIFRvIGxpc3RlbiBvdXRzaWRlIGNsaWNrLCB0aGUgbGlzdGVuZXIgc2hvdWxkIGNhdGNoIHRoZSBldmVudCBkdXJpbmcgdGhlIGNhcHR1cmluZyBwaGFzZS5cbiAgICAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGlzIHVnbHkgZG9jdW1lbnQgY2hlY2sgYXMgUmVuZGVyZXIyLmxpc3RlbiBkb2Vzbid0IGFsbG93IHBhc3NpdmUvdXNlQ2FwdHVyZSBsaXN0ZW4uXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZU9uT3V0c2lkZUNsaWNrQ2FsbGJhY2ssIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoT3V0c2lkZUNsaWNrTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbk91dHNpZGVDbGljaykge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlT25PdXRzaWRlQ2xpY2tDYWxsYmFjaywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=