@cuby-ui/core 0.0.592 → 0.0.593

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 (29) hide show
  1. package/components/badge/badge.options.d.ts +1 -1
  2. package/esm2022/components/badge/badge.component.mjs +2 -2
  3. package/esm2022/components/badge/badge.options.mjs +1 -1
  4. package/esm2022/components/context-menu/context-menu.component.mjs +2 -2
  5. package/esm2022/components/date-range-calendar/date-range-calendar.component.mjs +2 -2
  6. package/esm2022/components/dialog/dialog.component.mjs +2 -2
  7. package/esm2022/components/dropdown/dropdown-wrapper.component.mjs +3 -3
  8. package/esm2022/components/ghost-input/ghost-input.component.mjs +2 -2
  9. package/esm2022/components/input-number/input-number.component.mjs +2 -2
  10. package/esm2022/components/input-password/input-password.component.mjs +2 -2
  11. package/esm2022/components/input-text/input-text.component.mjs +2 -2
  12. package/esm2022/components/input-time/input-time.component.mjs +2 -2
  13. package/esm2022/components/letter-box/letter-box.component.mjs +2 -2
  14. package/esm2022/components/notification/notification.component.mjs +2 -2
  15. package/esm2022/components/select/select.component.mjs +2 -2
  16. package/esm2022/components/textarea/textarea.component.mjs +2 -2
  17. package/esm2022/editor/components/editor-tooltip/editor-tooltip.component.mjs +3 -3
  18. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +3 -3
  19. package/esm2022/editor/components/marker-select/marker-select.component.mjs +3 -3
  20. package/esm2022/widgets/ui/button-change-theme/button-change-theme.component.mjs +2 -2
  21. package/esm2022/widgets/ui/categories/components/category-item/category-item.component.mjs +2 -2
  22. package/esm2022/widgets/ui/categories-tree/components/category-tree-item/category-tree-item.component.mjs +2 -2
  23. package/esm2022/widgets/ui/delete-modal/delete-modal.component.mjs +3 -3
  24. package/fesm2022/cuby-ui-core.mjs +42 -42
  25. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  26. package/package.json +4 -4
  27. package/styles/mixins/shadows.scss +11 -12
  28. package/styles/theme.scss +394 -7
  29. package/styles/variables/colors.scss +147 -0
@@ -146,7 +146,7 @@ export class CuiCategoryTreeItemComponent {
146
146
  .subscribe((storages) => this.storageChildren.set(storages));
147
147
  }
148
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryTreeItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCategoryTreeItemComponent, isStandalone: true, selector: "cui-category-tree-item", inputs: { storage: { classPropertyName: "storage", publicName: "storage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { deleted: "deleted" }, ngImport: i0, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CuiButtonModule) }, { kind: "component", type: i0.forwardRef(() => i1.CuiButtonComponent), selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiIconButtonModule) }, { kind: "directive", type: i0.forwardRef(() => CuiLetDirective), selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiSvgModule) }, { kind: "component", type: i0.forwardRef(() => i2.CuiSvgComponent), selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoryTreeFormComponent), selector: "cui-category-tree-form", inputs: ["isDisabled", "defaultTitle"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCreateCategoryTreeItemComponent), selector: "cui-create-category-tree-item", inputs: ["isDisabled"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoriesTreeListComponent), selector: "cui-categories-tree-list", inputs: ["storages"], outputs: ["deleted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCategoryTreeItemComponent, isStandalone: true, selector: "cui-category-tree-item", inputs: { storage: { classPropertyName: "storage", publicName: "storage", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { deleted: "deleted" }, ngImport: i0, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:6px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CuiButtonModule) }, { kind: "component", type: i0.forwardRef(() => i1.CuiButtonComponent), selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiIconButtonModule) }, { kind: "directive", type: i0.forwardRef(() => CuiLetDirective), selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: i0.forwardRef(() => CuiSvgModule) }, { kind: "component", type: i0.forwardRef(() => i2.CuiSvgComponent), selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoryTreeFormComponent), selector: "cui-category-tree-form", inputs: ["isDisabled", "defaultTitle"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCreateCategoryTreeItemComponent), selector: "cui-create-category-tree-item", inputs: ["isDisabled"], outputs: ["created", "canceled"] }, { kind: "component", type: i0.forwardRef(() => CuiCategoriesTreeListComponent), selector: "cui-categories-tree-list", inputs: ["storages"], outputs: ["deleted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryTreeItemComponent, decorators: [{
152
152
  type: Component,
@@ -158,6 +158,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
158
158
  CuiCategoryTreeFormComponent,
159
159
  CuiCreateCategoryTreeItemComponent,
160
160
  forwardRef(() => CuiCategoriesTreeListComponent)
161
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:4px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"] }]
161
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *cuiLet=\"category() as stage\">\n <button\n type=\"button\"\n [style.align-items]=\"alignItems()\"\n class=\"category\"\n (click)=\"onSelectCategory()\"\n >\n <button\n type=\"button\"\n class=\"toggle-button\"\n [class.toggle-button_hidden]=\"isOpenCloseButtonHidden()\"\n (click)=\"onToggleChildren($event)\"\n >\n <cui-svg\n [icon]=\"openCloseButtonIcon()\"\n color=\"var(--cui-base-500)\"\n />\n </button>\n <cui-svg\n [icon]=\"storageIcon()\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n @if (isTitleEdit()) {\n <cui-category-tree-form\n [defaultTitle]=\"stage.title\"\n (created)=\"onTitleChanged($event)\"\n (canceled)=\"onCancelTitleEdit()\"\n />\n } @else {\n <span class=\"title\">{{ stage.title }}</span>\n\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n class=\"button edit-button\"\n (click)=\"onStartTitleEdit($event)\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n class=\"button add-button\"\n (click)=\"onStartCreatingSubcategory($event)\"\n ></button>\n @if (isDeleteSupported) {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n class=\"button delete-button\"\n (click)=\"onDelete($event)\"\n ></button>\n }\n }\n </button>\n <div\n [hidden]=\"!areChildrenOpened()\"\n class=\"list-wrapper\"\n >\n <cui-categories-tree-list\n [storages]=\"storageChildren()\"\n (deleted)=\"onChildDeleted($event)\"\n />\n @if (isCreateCategoryControlVisible()) {\n <cui-create-category-tree-item\n class=\"create-category\"\n [isDisabled]=\"isSubcategoryCreationLoading()\"\n (created)=\"onCreateNewSubcategory($event)\"\n (canceled)=\"onCreatingSubcategoryCanceled()\"\n />\n }\n </div>\n</ng-container>\n", styles: [".category{display:flex;flex-direction:row;gap:4px;padding:2px 4px;width:100%;min-height:32px;border-radius:8px}@media (hover: hover){.category:hover{background:var(--cui-base-10)}.category:hover .delete-button{display:inline-block}}.category:active{background:var(--cui-base-10)}.toggle-button{display:flex;flex-direction:row;gap:0;padding:2px;border-radius:6px;margin:4px 0}@media (hover: hover){.toggle-button:hover{background:var(--cui-base-100)}}.toggle-button:active{background:var(--cui-base-100)}.toggle-button_hidden{visibility:hidden}.title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:start}.button{--cui-base-50: var(--cui-base-200)}@media (hover: hover){.delete-button{display:none}}.list-wrapper{padding-left:8px}.create-category{margin-left:24px}.icon{padding-right:2px;padding-left:2px;height:28px}\n"] }]
162
162
  }], ctorParameters: () => [] });
163
163
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jYXRlZ29yaWVzLXRyZWUvY29tcG9uZW50cy9jYXRlZ29yeS10cmVlLWl0ZW0vY2F0ZWdvcnktdHJlZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFP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QUMsQ0FBQztZQUVuRCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQywyQkFBMkI7YUFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQzsrR0F4TFEsNEJBQTRCO21HQUE1Qiw0QkFBNEIsNFBDM0N6QyxxcEZBaUZBLDI1QkRuRFEsZUFBZSw2UUFDZixtQkFBbUIsb0RBQ25CLGVBQWUsNkZBQ2YsWUFBWSxrTkFDWiw0QkFBNEIsa0tBQzVCLGtDQUFrQyx5SkFDakIsOEJBQThCOzs0RkFPMUMsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFDSSx3QkFBd0IsV0FDekI7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWiw0QkFBNEI7d0JBQzVCLGtDQUFrQzt3QkFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDhCQUE4QixDQUFDO3FCQUNuRCxjQUNXLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ3VpTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB0eXBlIHsgVHJlZVN0cnVjdCB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgdHlwZSB7IEN1aUljb24gfSBmcm9tICdAY3VieS11aS9pY29ucyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlCdXR0b25Nb2R1bGUsIEN1aURpYWxvZ1NlcnZpY2UsIEN1aUljb25CdXR0b25Nb2R1bGUsIEN1aVN2Z01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9kZWxldGUtbW9kYWwnO1xuaW1wb3J0IHsgQ1VJX0NBVEVHT1JJRVNfVFJFRV9EQVRBX1NPVVJDRV9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEN1aUNhdGVnb3JpZXNUcmVlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NhdGVnb3JpZXMtdHJlZS1saXN0JztcbmltcG9ydCB7IEN1aUNhdGVnb3J5VHJlZUZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jYXRlZ29yeS10cmVlLWZvcm0nO1xuaW1wb3J0IHsgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1jYXRlZ29yeS10cmVlLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jYXRlZ29yeS10cmVlLWl0ZW0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlJY29uQnV0dG9uTW9kdWxlLFxuICAgICAgICBDdWlMZXREaXJlY3RpdmUsXG4gICAgICAgIEN1aVN2Z01vZHVsZSxcbiAgICAgICAgQ3VpQ2F0ZWdvcnlUcmVlRm9ybUNvbXBvbmVudCxcbiAgICAgICAgQ3VpQ3JlYXRlQ2F0ZWdvcnlUcmVlSXRlbUNvbXBvbmVudCxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBDdWlDYXRlZ29yaWVzVHJlZUxpc3RDb21wb25lbnQpXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYXRlZ29yeS10cmVlLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEN1aUNhdGVnb3J5VHJlZUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZSA9IGluamVjdChDVUlfQ0FURUdPUklFU19UUkVFX0RBVEFfU09VUkNFX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEN1aUNhdGVnb3J5VHJlZVN0YXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlEaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEN1aURpYWxvZ1NlcnZpY2UpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRGVsZXRlU3VwcG9ydGVkID0gISF0aGlzLmNhdGVnb3JpZXNEYXRhU291cmNlU2VydmljZS5kZWxldGU7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmFnZUNoaWxkcmVuID0gc2lnbmFsPFRyZWVTdHJ1Y3RbXT4oW10pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhcmVDaGlsZHJlbk9wZW5lZCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3ViY2F0ZWdvcnlDcmVhdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzU3ViY2F0ZWdvcnlDcmVhdGlvbkxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvcGVuQ2xvc2VCdXR0b25JY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpID8gJ2N1aUljb25DaGV2cm9uRG93bicgOiAnY3VpSWNvbkNoZXZyb25SaWdodCdcbiAgICApO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkb0NoaWxkcmVuRXhpc3QgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zdG9yYWdlKCkuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMuc3RvcmFnZUNoaWxkcmVuKCkubGVuZ3RoXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcGVuQ2xvc2VCdXR0b25IaWRkZW4gPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5kb0NoaWxkcmVuRXhpc3QoKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JhZ2VJY29uID0gY29tcHV0ZWQ8Q3VpSWNvbj4oKCkgPT5cbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpICYmIHRoaXMuZG9DaGlsZHJlbkV4aXN0KCkgPyAnY3VpSWNvbkZvbGRlck9wZW4nIDogJ2N1aUljb25Gb2xkZXInXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxpZ25JdGVtcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlzVGl0bGVFZGl0KCkgPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJykpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1RpdGxlRWRpdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmVkaXRpbmdJZCgpID09PSB0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ3JlYXRlQ2F0ZWdvcnlDb250cm9sVmlzaWJsZSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNyZWF0aW5nUGFyZW50SWQoKSA9PT0gdGhpcy5zdG9yYWdlKCkuaWQgJiYgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcoKSkgfHxcbiAgICAgICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZygpXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNFbXB0eSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgIXRoaXMuc3RvcmFnZSgpLmVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICAgICAgKHRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSA/ICF0aGlzLnN0b3JhZ2VDaGlsZHJlbigpLmxlbmd0aCA6ICF0aGlzLnN0b3JhZ2UoKS5jaGlsZHJlbi5sZW5ndGgpXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnlUaXRsZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0ZWdvcnkgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICAgICAuLi50aGlzLnN0b3JhZ2UoKSxcbiAgICAgICAgdGl0bGU6IHRoaXMuY2F0ZWdvcnlUaXRsZSgpIHx8IHRoaXMuc3RvcmFnZSgpLnRpdGxlXG4gICAgfSkpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbnB1dC5yZXF1aXJlZDxUcmVlU3RydWN0PigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JhZ2VDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3J5VHJlZVN0YXRlU2VydmljZS5zZXRDdXJyZW50Q2F0ZWdvcnkodGhpcy5jYXRlZ29yeSgpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Ub2dnbGVDaGlsZHJlbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmFyZUNoaWxkcmVuT3BlbmVkLnVwZGF0ZSgodmFsdWUpID0+ICF2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJlQ2hpbGRyZW5PcGVuZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UaXRsZUNoYW5nZWQodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2FuY2VsVGl0bGVFZGl0KCk7XG5cbiAgICAgICAgaWYgKHRpdGxlID09PSB0aGlzLmNhdGVnb3J5KCkudGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlVGl0bGUodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5VGl0bGUuc2V0KHRpdGxlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhdGVnb3J5KCkuaWQgPT09IHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNhdGVnb3J5KCk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEN1cnJlbnRDYXRlZ29yeSh0aGlzLmNhdGVnb3J5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXJ0VGl0bGVFZGl0KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnNldEVkaXRpbmdJZCh0aGlzLnN0b3JhZ2UoKS5pZCk7XG4gICAgICAgIHRoaXMub25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYW5jZWxUaXRsZUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyRWRpdGluZ0lkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RhcnRDcmVhdGluZ1N1YmNhdGVnb3J5KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5hcmVDaGlsZHJlbk9wZW5lZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLnN0YXJ0Q3JlYXRpbmdDaGlsZE9mKHRoaXMuc3RvcmFnZSgpLmlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGVOZXdTdWJjYXRlZ29yeSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW9uTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlQ2hpbGQodGhpcy5zdG9yYWdlKCkuaWQsIHRpdGxlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1N1YmNhdGVnb3J5Q3JlYXRpb25Mb2FkaW5nLnNldChmYWxzZSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdG9yYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlQ2hpbGRyZW4udXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBzdG9yYWdlXSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DcmVhdGluZ1N1YmNhdGVnb3J5Q2FuY2VsZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTdWJjYXRlZ29yeUNyZWF0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlUcmVlU3RhdGVTZXJ2aWNlLmNsZWFyQ3JlYXRpbmcoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgZGVsZXRlUmVxdWVzdCA9IHRoaXMuY2F0ZWdvcmllc0RhdGFTb3VyY2VTZXJ2aWNlLmRlbGV0ZTtcblxuICAgICAgICBpZiAoIWRlbGV0ZVJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VpRGlhbG9nU2VydmljZVxuICAgICAgICAgICAgLm9wZW4oQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnREVMRVRFX0NBVEVHT1JZX1FVRVNUSU9OJyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogWydBQ1RJT05fV0lMTF9ERUxFVEVfQ0FURUdPUlknXSxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlOiAoKSA9PiBkZWxldGVSZXF1ZXN0LmNhbGwodGhpcy5jYXRlZ29yaWVzRGF0YVNvdXJjZVNlcnZpY2UsIHRoaXMuc3RvcmFnZSgpLmlkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YT8uY2FuY2VsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KHRoaXMuc3RvcmFnZSgpLmlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNoaWxkRGVsZXRlZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmFnZUNoaWxkcmVuLnVwZGF0ZSgoY2hpbGRyZW4pID0+IGNoaWxkcmVuLmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLmlkICE9PSBpZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFN0b3JhZ2VDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWZmZWN0UmVmID0gZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hcmVDaGlsZHJlbk9wZW5lZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlZmZlY3RSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmxvYWRDaGlsZHJlbigpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuc3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHN0b3JhZ2UuY2hpbGRyZW47XG5cbiAgICAgICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW5bMF0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VDaGlsZHJlbi5zZXQoY2hpbGRyZW4gYXMgVHJlZVN0cnVjdFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzRGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgIC5sb2FkQ2hpbGRyZW4oc3RvcmFnZS5pZClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RvcmFnZXMpID0+IHRoaXMuc3RvcmFnZUNoaWxkcmVuLnNldChzdG9yYWdlcykpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKmN1aUxldD1cImNhdGVnb3J5KCkgYXMgc3RhZ2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtcygpXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeVwiXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdENhdGVnb3J5KClcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxuICAgICAgICAgICAgW2NsYXNzLnRvZ2dsZS1idXR0b25faGlkZGVuXT1cImlzT3BlbkNsb3NlQnV0dG9uSGlkZGVuKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgICAgICAgW2ljb25dPVwib3BlbkNsb3NlQnV0dG9uSWNvbigpXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTUwMClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxjdWktc3ZnXG4gICAgICAgICAgICBbaWNvbl09XCJzdG9yYWdlSWNvbigpXCJcbiAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKGlzVGl0bGVFZGl0KCkpIHtcbiAgICAgICAgICAgIDxjdWktY2F0ZWdvcnktdHJlZS1mb3JtXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRUaXRsZV09XCJzdGFnZS50aXRsZVwiXG4gICAgICAgICAgICAgICAgKGNyZWF0ZWQpPVwib25UaXRsZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNhbmNlbGVkKT1cIm9uQ2FuY2VsVGl0bGVFZGl0KClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgc3RhZ2UudGl0bGUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uRWRpdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gZWRpdC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN0YXJ0VGl0bGVFZGl0KCRldmVudClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGN1aUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXG4gICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25QbHVzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBhZGQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdGFydENyZWF0aW5nU3ViY2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKGlzRGVsZXRlU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIFtoaWRkZW5dPVwiIWFyZUNoaWxkcmVuT3BlbmVkKClcIlxuICAgICAgICBjbGFzcz1cImxpc3Qtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8Y3VpLWNhdGVnb3JpZXMtdHJlZS1saXN0XG4gICAgICAgICAgICBbc3RvcmFnZXNdPVwic3RvcmFnZUNoaWxkcmVuKClcIlxuICAgICAgICAgICAgKGRlbGV0ZWQpPVwib25DaGlsZERlbGV0ZWQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoaXNDcmVhdGVDYXRlZ29yeUNvbnRyb2xWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgIDxjdWktY3JlYXRlLWNhdGVnb3J5LXRyZWUtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlLWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJpc1N1YmNhdGVnb3J5Q3JlYXRpb25Mb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIChjcmVhdGVkKT1cIm9uQ3JlYXRlTmV3U3ViY2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNhbmNlbGVkKT1cIm9uQ3JlYXRpbmdTdWJjYXRlZ29yeUNhbmNlbGVkKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -30,10 +30,10 @@ export class CuiDeleteModalComponent {
30
30
  this.context.completeWith({ canceled: true });
31
31
  }
32
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDeleteModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiDeleteModalComponent, isStandalone: true, selector: "cui-delete-modal", ngImport: i0, template: "<div\n *transloco=\"let t\"\n class=\"wrapper\"\n>\n <div class=\"content\">\n <div class=\"header\">\n <h3 class=\"title\">{{ t(title) }}</h3>\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconX\"\n appearance=\"ghost\"\n [disabled]=\"isLoading()\"\n class=\"close-btn\"\n (click)=\"onCancel()\"\n ></button>\n </div>\n <div class=\"info\">\n @for (text of content; track text) {\n <p [innerHTML]=\"t(text)\"></p>\n }\n </div>\n </div>\n\n <div class=\"footer\">\n <button\n type=\"button\"\n cuiButton\n (click)=\"onCancel()\"\n [disabled]=\"isLoading()\"\n appearance=\"secondary\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n type=\"button\"\n cuiButton\n [isLoaderShown]=\"isLoading()\"\n [disabled]=\"isDisabled\"\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\n appearance=\"destructive\"\n (click)=\"onDelete()\"\n >\n {{ t('YES_DELETE') }}\n </button>\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;gap:24px;padding:23px;border-radius:12px;width:400px}.header{display:flex;flex-direction:row;gap:8px;align-items:stretch;justify-content:space-between}.content{display:flex;flex-direction:column;gap:12px}.title{font-weight:500;font-size:18px;line-height:28px}.info{display:flex;flex-direction:column;gap:16px;font-weight:400;font-size:14px;line-height:20px}.footer{display:flex;flex-direction:row;gap:12px;align-items:stretch;justify-content:flex-end}.close-btn{margin:-8px}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i3.CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiDeleteModalComponent, isStandalone: true, selector: "cui-delete-modal", ngImport: i0, template: "<div\n *transloco=\"let t\"\n class=\"wrapper\"\n>\n <div class=\"content\">\n <div class=\"header\">\n <h3 class=\"title\">{{ t(title) }}</h3>\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconX\"\n appearance=\"ghost\"\n [disabled]=\"isLoading()\"\n class=\"close-btn\"\n (click)=\"onCancel()\"\n ></button>\n </div>\n <div class=\"info\">\n @for (text of content; track text) {\n <p [innerHTML]=\"t(text)\"></p>\n }\n </div>\n </div>\n\n <div class=\"footer\">\n <button\n type=\"button\"\n cuiButton\n (click)=\"onCancel()\"\n [disabled]=\"isLoading()\"\n appearance=\"secondary\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n type=\"button\"\n cuiButton\n [isLoaderShown]=\"isLoading()\"\n [disabled]=\"isDisabled\"\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\n appearance=\"destructive\"\n (click)=\"onDelete()\"\n >\n {{ t('YES_DELETE') }}\n </button>\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;gap:24px;padding:23px;border-radius:8px;width:400px}.header{display:flex;flex-direction:row;gap:8px;align-items:stretch;justify-content:space-between}.content{display:flex;flex-direction:column;gap:12px}.title{font-weight:500;font-size:18px;line-height:28px}.info{display:flex;flex-direction:column;gap:16px;font-weight:400;font-size:14px;line-height:20px}.footer{display:flex;flex-direction:row;gap:12px;align-items:stretch;justify-content:flex-end}.close-btn{margin:-8px}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i3.CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDeleteModalComponent, decorators: [{
36
36
  type: Component,
37
- args: [{ selector: 'cui-delete-modal', imports: [CuiButtonModule, TranslocoModule, CuiTooltip], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *transloco=\"let t\"\n class=\"wrapper\"\n>\n <div class=\"content\">\n <div class=\"header\">\n <h3 class=\"title\">{{ t(title) }}</h3>\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconX\"\n appearance=\"ghost\"\n [disabled]=\"isLoading()\"\n class=\"close-btn\"\n (click)=\"onCancel()\"\n ></button>\n </div>\n <div class=\"info\">\n @for (text of content; track text) {\n <p [innerHTML]=\"t(text)\"></p>\n }\n </div>\n </div>\n\n <div class=\"footer\">\n <button\n type=\"button\"\n cuiButton\n (click)=\"onCancel()\"\n [disabled]=\"isLoading()\"\n appearance=\"secondary\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n type=\"button\"\n cuiButton\n [isLoaderShown]=\"isLoading()\"\n [disabled]=\"isDisabled\"\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\n appearance=\"destructive\"\n (click)=\"onDelete()\"\n >\n {{ t('YES_DELETE') }}\n </button>\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;gap:24px;padding:23px;border-radius:12px;width:400px}.header{display:flex;flex-direction:row;gap:8px;align-items:stretch;justify-content:space-between}.content{display:flex;flex-direction:column;gap:12px}.title{font-weight:500;font-size:18px;line-height:28px}.info{display:flex;flex-direction:column;gap:16px;font-weight:400;font-size:14px;line-height:20px}.footer{display:flex;flex-direction:row;gap:12px;align-items:stretch;justify-content:flex-end}.close-btn{margin:-8px}\n"] }]
37
+ args: [{ selector: 'cui-delete-modal', imports: [CuiButtonModule, TranslocoModule, CuiTooltip], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *transloco=\"let t\"\n class=\"wrapper\"\n>\n <div class=\"content\">\n <div class=\"header\">\n <h3 class=\"title\">{{ t(title) }}</h3>\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconX\"\n appearance=\"ghost\"\n [disabled]=\"isLoading()\"\n class=\"close-btn\"\n (click)=\"onCancel()\"\n ></button>\n </div>\n <div class=\"info\">\n @for (text of content; track text) {\n <p [innerHTML]=\"t(text)\"></p>\n }\n </div>\n </div>\n\n <div class=\"footer\">\n <button\n type=\"button\"\n cuiButton\n (click)=\"onCancel()\"\n [disabled]=\"isLoading()\"\n appearance=\"secondary\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n type=\"button\"\n cuiButton\n [isLoaderShown]=\"isLoading()\"\n [disabled]=\"isDisabled\"\n [cuiTooltip]=\"isDisabled && t('IN_DEVELOPMENT')\"\n appearance=\"destructive\"\n (click)=\"onDelete()\"\n >\n {{ t('YES_DELETE') }}\n </button>\n </div>\n</div>\n", styles: [".wrapper{display:flex;flex-direction:column;gap:24px;padding:23px;border-radius:8px;width:400px}.header{display:flex;flex-direction:row;gap:8px;align-items:stretch;justify-content:space-between}.content{display:flex;flex-direction:column;gap:12px}.title{font-weight:500;font-size:18px;line-height:28px}.info{display:flex;flex-direction:column;gap:16px;font-weight:400;font-size:14px;line-height:20px}.footer{display:flex;flex-direction:row;gap:12px;align-items:stretch;justify-content:flex-end}.close-btn{margin:-8px}\n"] }]
38
38
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9kZWxldGUtbW9kYWwvZGVsZXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9kZWxldGUtbW9kYWwvZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFXakcsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQVNxQixZQUFPLEdBQUcsTUFBTSxDQUF3QyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTVFLFNBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV2QixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztLQWlCakU7SUFmYSxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSTthQUNKLE1BQU0sRUFBRTthQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFUyxRQUFRO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOytHQXhCUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0RUNoQnBDLGl5Q0ErQ0EsaWtCRHJDYyxlQUFlLG1PQUFFLGVBQWU7OzRGQU1qQyx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0ksa0JBQWtCLFdBQ25CLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsY0FDM0MsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlUb29sdGlwIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDVUlfRElBTE9HX0NPTlRFWFQsIEN1aUJ1dHRvbk1vZHVsZSwgdHlwZSBDdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEN1aURpYWxvZ0RlbGV0ZURhdGEgfSBmcm9tICcuL2RlbGV0ZS1tb2RhbC5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjdWktZGVsZXRlLW1vZGFsJyxcbiAgICBpbXBvcnRzOiBbQ3VpQnV0dG9uTW9kdWxlLCBUcmFuc2xvY29Nb2R1bGUsIEN1aVRvb2x0aXBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RlbGV0ZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdDxDdWlEaWFsb2dDb250ZXh0PEN1aURpYWxvZ0RlbGV0ZURhdGE+PihDVUlfRElBTE9HX0NPTlRFWFQpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhID0gdGhpcy5jb250ZXh0LmRhdGE7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGl0bGUgPSB0aGlzLmRhdGEudGl0bGU7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPSB0aGlzLmRhdGEuY29udGVudDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IHRoaXMuZGF0YS5pc0Rpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5kZWxldGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aCh7IGNhbmNlbGVkOiB0cnVlIH0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuICAgIGNsYXNzPVwid3JhcHBlclwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0KHRpdGxlKSB9fTwvaDM+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY3VpQnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25YXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICBAZm9yICh0ZXh0IG9mIGNvbnRlbnQ7IHRyYWNrIHRleHQpIHtcbiAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInQodGV4dClcIj48L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGN1aUJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0KCdDQU5DRUwnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgIFtpc0xvYWRlclNob3duXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjdWlUb29sdGlwXT1cImlzRGlzYWJsZWQgJiYgdCgnSU5fREVWRUxPUE1FTlQnKVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZGVzdHJ1Y3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0KCdZRVNfREVMRVRFJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9kZWxldGUtbW9kYWwvZGVsZXRlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9kZWxldGUtbW9kYWwvZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFXakcsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQVNxQixZQUFPLEdBQUcsTUFBTSxDQUF3QyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTVFLFNBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV2QixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQztLQWlCakU7SUFmYSxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSTthQUNKLE1BQU0sRUFBRTthQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFUyxRQUFRO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOytHQXhCUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0RUNoQnBDLGl5Q0ErQ0EsZ2tCRHJDYyxlQUFlLG1PQUFFLGVBQWU7OzRGQU1qQyx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0ksa0JBQWtCLFdBQ25CLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsY0FDM0MsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlUb29sdGlwIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDVUlfRElBTE9HX0NPTlRFWFQsIEN1aUJ1dHRvbk1vZHVsZSwgdHlwZSBDdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEN1aURpYWxvZ0RlbGV0ZURhdGEgfSBmcm9tICcuL2RlbGV0ZS1tb2RhbC5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjdWktZGVsZXRlLW1vZGFsJyxcbiAgICBpbXBvcnRzOiBbQ3VpQnV0dG9uTW9kdWxlLCBUcmFuc2xvY29Nb2R1bGUsIEN1aVRvb2x0aXBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RlbGV0ZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGVsZXRlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3VpRGVsZXRlTW9kYWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdDxDdWlEaWFsb2dDb250ZXh0PEN1aURpYWxvZ0RlbGV0ZURhdGE+PihDVUlfRElBTE9HX0NPTlRFWFQpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhID0gdGhpcy5jb250ZXh0LmRhdGE7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGl0bGUgPSB0aGlzLmRhdGEudGl0bGU7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRlbnQgPSB0aGlzLmRhdGEuY29udGVudDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IHRoaXMuZGF0YS5pc0Rpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5kZWxldGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aCh7IGNhbmNlbGVkOiB0cnVlIH0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuICAgIGNsYXNzPVwid3JhcHBlclwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0KHRpdGxlKSB9fTwvaDM+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY3VpQnV0dG9uXG4gICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25YXCJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZS1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gICAgICAgICAgICBAZm9yICh0ZXh0IG9mIGNvbnRlbnQ7IHRyYWNrIHRleHQpIHtcbiAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInQodGV4dClcIj48L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGN1aUJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0KCdDQU5DRUwnKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgIFtpc0xvYWRlclNob3duXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtjdWlUb29sdGlwXT1cImlzRGlzYWJsZWQgJiYgdCgnSU5fREVWRUxPUE1FTlQnKVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiZGVzdHJ1Y3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0KCdZRVNfREVMRVRFJykgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==