keevo-components 1.8.306 → 1.8.308
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.
- package/README.md +24 -24
- package/esm2022/lib/api/base-components/base-component-button.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-chart.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-crud.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-input.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component-table.mjs +1 -1
- package/esm2022/lib/api/base-components/base-component.mjs +1 -1
- package/esm2022/lib/api/components/chart/chart.config.mjs +1 -1
- package/esm2022/lib/api/components/chart/chart.model.mjs +1 -1
- package/esm2022/lib/api/components/chart/orchart.config.mjs +1 -1
- package/esm2022/lib/api/components/chart/orchart.item.mjs +1 -1
- package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +1 -1
- package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +1 -1
- package/esm2022/lib/api/components/table/action-item.mjs +1 -1
- package/esm2022/lib/api/components/table/kv-menuitem.mjs +1 -1
- package/esm2022/lib/api/components/table/table-dropdown-control.mjs +1 -1
- package/esm2022/lib/api/components/table/table.config.column.mjs +1 -1
- package/esm2022/lib/api/components/table/table.config.mjs +1 -1
- package/esm2022/lib/api/components/table/table.paginate.mjs +1 -1
- package/esm2022/lib/api/components/table/tabledit.config.mjs +1 -1
- package/esm2022/lib/api/components/table/tableedit.config.column.mjs +1 -1
- package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +1 -1
- package/esm2022/lib/api/directives/directives.module.mjs +1 -1
- package/esm2022/lib/api/directives/drag/drag.directive.mjs +1 -1
- package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +1 -1
- package/esm2022/lib/api/directives/template/template.directive.mjs +1 -1
- package/esm2022/lib/api/helpers/component-providers.mjs +1 -1
- package/esm2022/lib/api/helpers/keevo-validators.mjs +1 -1
- package/esm2022/lib/api/helpers/translate-primeng.mjs +1 -1
- package/esm2022/lib/api/modules/primeng.module.mjs +1 -1
- package/esm2022/lib/api/pipes/capitalize.pipe.mjs +1 -1
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +1 -1
- package/esm2022/lib/api/pipes/mask.pipe.mjs +1 -1
- package/esm2022/lib/api/pipes/pipes.module.mjs +1 -1
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +1 -1
- package/esm2022/lib/api/services/base.api.service.mjs +1 -1
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +1 -1
- package/esm2022/lib/api/services/component.service.mjs +1 -1
- package/esm2022/lib/api/services/docs.service.mjs +1 -1
- package/esm2022/lib/api/services/form.service.mjs +1 -1
- package/esm2022/lib/api/services/imagens.service.mjs +1 -1
- package/esm2022/lib/api/services/notification.service.mjs +1 -1
- package/esm2022/lib/api/services/object.service.mjs +1 -1
- package/esm2022/lib/api/types/breadcrumb.model.mjs +1 -1
- package/esm2022/lib/api/types/severity.mjs +1 -1
- package/esm2022/lib/components/keevo-components.module.mjs +1 -1
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +223 -48
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +1 -1
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +3 -3
- package/esm2022/lib/components/kv-button/kv-button.module.mjs +1 -1
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +3 -3
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +1 -1
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +3 -3
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +1 -1
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +3 -3
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +1 -1
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +3 -3
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +1 -1
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +3 -3
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +1 -1
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +3 -3
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +1 -1
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +3 -3
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +1 -1
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +3 -3
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +1 -1
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +1 -1
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +1 -1
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +3 -3
- package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +1 -1
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +3 -3
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +3 -3
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +3 -3
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +1 -1
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +3 -3
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +1 -1
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +3 -3
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +3 -3
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +1 -1
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +1 -1
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +3 -3
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +1 -1
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +3 -3
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +1 -1
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +3 -3
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +1 -1
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +3 -3
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +1 -1
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +3 -3
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +1 -1
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +3 -3
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +1 -1
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +1 -1
- package/esm2022/lib/components/kv-report/kv-report.component.mjs +3 -3
- package/esm2022/lib/components/kv-report/kv-report.module.mjs +1 -1
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +3 -3
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +1 -1
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +3 -3
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +1 -1
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +3 -3
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +1 -1
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +3 -3
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +1 -1
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +5 -5
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +1 -1
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +1 -1
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +3 -3
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +1 -1
- package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +3 -3
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +3 -3
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +3 -3
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/keevo-components.mjs +323 -149
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/api/components/tree-table/tree-table.config.d.ts +1 -1
- package/lib/components/kv-avatar/kv-avatar.component.d.ts +35 -10
- package/package.json +1 -1
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
66
66
|
providedIn: 'root',
|
|
67
67
|
}]
|
|
68
68
|
}], ctorParameters: () => [{ type: i1.ConfirmationService }, { type: i1.MessageService }] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUF1QnpELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDbUIsbUJBQXdDLEVBQ3hDLGNBQThCO1FBRDlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQzdDLENBQUM7SUFFTCxRQUFRLENBQUMsTUFBc0I7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztZQUMvQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYTtZQUMzRCxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFO1lBQ3hGLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLHNCQUFzQixFQUFFLHdDQUF3QztZQUNoRSxXQUFXLEVBQUUsS0FBSztZQUNsQixzQkFBc0IsRUFBRSx5Q0FBeUM7WUFDakUsR0FBRyxNQUFNO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxVQUFrQixDQUFDO1FBRXZCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLEtBQUssT0FBTztnQkFDVixZQUFZLEdBQUcsU0FBUyxDQUFDO2dCQUN6QixVQUFVLEdBQUcsNEJBQTRCLENBQUM7Z0JBQzFDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFDNUIsVUFBVSxHQUFHLG1CQUFtQixDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLFlBQVksR0FBRyxNQUFNLENBQUM7Z0JBQ3RCLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztnQkFDbEMsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLHNCQUFzQixFQUFFLHdDQUF3QztZQUNoRSxhQUFhLEVBQUUsS0FBSztZQUNwQixhQUFhLEVBQUUsS0FBSztZQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtTQUMvQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsRUFBRSxPQUFlLElBQUk7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWUsRUFBRSxPQUFlLElBQUk7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWUsRUFBRSxPQUFlLElBQUk7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWUsRUFBRSxPQUFlLElBQUk7UUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDOzhHQS9EVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29uZmlybWF0aW9uU2VydmljZSxcclxuICBNZXNzYWdlU2VydmljZVxyXG59IGZyb20gXCJwcmltZW5nL2FwaVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbkNvbmZpZyB7XHJcbiAgdHlwZT86ICdxdWVzdGlvbicgfCAnYWxlcnQnO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBhY2NlcHQ/OiBGdW5jdGlvbjtcclxuICByZWplY3Q/OiBGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dDb25maWcge1xyXG4gIHR5cGU6ICdpbmZvJyB8ICdhbGVydCcgfCAnZXJyb3InO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBhY2NlcHQ/OiBGdW5jdGlvbjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgcXVlc3Rpb24oY29uZmlnOiBRdWVzdGlvbkNvbmZpZykge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICBoZWFkZXI6IGNvbmZpZy50eXBlID09PSAnYWxlcnQnID8gJ0F0ZW7Dp8OjbycgOiAnQ29uZmlybWHDp8OjbycsXHJcbiAgICAgIGljb246IGBwaSAke2NvbmZpZy50eXBlID09PSAnYWxlcnQnID8gJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJyA6ICdwaS1xdWVzdGlvbi1jaXJjbGUnfWAsXHJcbiAgICAgIGFjY2VwdExhYmVsOiAnU2ltJyxcclxuICAgICAgYWNjZXB0QnV0dG9uU3R5bGVDbGFzczogJyBrdi1idXR0b24ga3YtcHJpbWFyeSBrdi1odWcga3Ytbm9ybWFsJyxcclxuICAgICAgcmVqZWN0TGFiZWw6ICdOw6NvJyxcclxuICAgICAgcmVqZWN0QnV0dG9uU3R5bGVDbGFzczogJyBrdi1idXR0b24ga3YtdGVydGlhcnkga3YtaHVnIGt2LW5vcm1hbCcsXHJcbiAgICAgIC4uLmNvbmZpZyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9nKGNvbmZpZzogRGlhbG9nQ29uZmlnKSB7XHJcbiAgICBsZXQgZGlhbG9nSGVhZGVyOiBzdHJpbmc7XHJcbiAgICBsZXQgZGlhbG9nSWNvbjogc3RyaW5nO1xyXG5cclxuICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcclxuICAgICAgY2FzZSAnYWxlcnQnOlxyXG4gICAgICAgIGRpYWxvZ0hlYWRlciA9ICdBdGVuw6fDo28nO1xyXG4gICAgICAgIGRpYWxvZ0ljb24gPSAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdpbmZvJzpcclxuICAgICAgICBkaWFsb2dIZWFkZXIgPSAnSW5mb3JtYcOnw6NvJztcclxuICAgICAgICBkaWFsb2dJY29uID0gJ3BpIHBpLWluZm8tY2lyY2xlJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgIGRpYWxvZ0hlYWRlciA9ICdFcnJvJztcclxuICAgICAgICBkaWFsb2dJY29uID0gJ3BpIHBpLXRpbWVzLWNpcmNsZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICBoZWFkZXI6IGRpYWxvZ0hlYWRlcixcclxuICAgICAgaWNvbjogZGlhbG9nSWNvbixcclxuICAgICAgYWNjZXB0TGFiZWw6ICdPaycsXHJcbiAgICAgIGFjY2VwdEJ1dHRvblN0eWxlQ2xhc3M6ICcga3YtYnV0dG9uIGt2LXByaW1hcnkga3YtaHVnIGt2LW5vcm1hbCcsXHJcbiAgICAgIHJlamVjdFZpc2libGU6IGZhbHNlLFxyXG4gICAgICBjbG9zZU9uRXNjYXBlOiBmYWxzZSxcclxuICAgICAgbWVzc2FnZTogY29uZmlnLm1lc3NhZ2UsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4gY29uZmlnLmFjY2VwdCAmJiBjb25maWcuYWNjZXB0KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9hc3RTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgdGltZTogbnVtYmVyID0gNDAwMCkge1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjZXNzbycsIGRldGFpbDogbWVzc2FnZSwgbGlmZTogdGltZSB9KTtcclxuICB9XHJcblxyXG4gIHRvYXN0SW5mbyhtZXNzYWdlOiBzdHJpbmcsIHRpbWU6IG51bWJlciA9IDQwMDApIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0luZm8nLCBkZXRhaWw6IG1lc3NhZ2UsIGxpZmU6IHRpbWUgfSk7XHJcbiAgfVxyXG5cclxuICB0b2FzdFdhcm4obWVzc2FnZTogc3RyaW5nLCB0aW1lOiBudW1iZXIgPSA0MDAwKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdBdmlzbycsIGRldGFpbDogbWVzc2FnZSwgbGlmZTogdGltZSB9KTtcclxuICB9XHJcblxyXG4gIHRvYXN0RXJyb3IobWVzc2FnZTogc3RyaW5nLCB0aW1lOiBudW1iZXIgPSA0MDAwKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJybycsIGRldGFpbDogbWVzc2FnZSwgbGlmZTogdGltZSB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
36
36
|
providedIn: 'root'
|
|
37
37
|
}]
|
|
38
38
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL3NlcnZpY2VzL29iamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBVSxFQUFFLFlBQW9CLEVBQUUsS0FBVTtRQUM5RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVLEVBQUUsWUFBb0IsRUFBRSxLQUFVO1FBQzVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsV0FBVyxDQUFJLEdBQU0sRUFBRSxZQUFvQjtRQUNoRCxPQUFPLEdBQUcsQ0FBRSxZQUFpQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBUyxFQUFFLElBQVM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFDLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELEtBQUssSUFBSSxDQUFDLElBQUksU0FBUyxFQUFDLENBQUM7WUFDckIsSUFBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7Z0JBQ3BCLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQTFCVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdFNlcnZpY2Uge1xyXG4gIHN0YXRpYyBmaWx0ZXJPYmplY3QoYXJyYXk6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBhcnJheS5maWx0ZXIoKGU6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gZVtwcm9wZXJ0eU5hbWVdID09PSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdGF0aWMgZmluZE9iamVjdChhcnJheTogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIGFycmF5LmZpbmQoKGU6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gZVtwcm9wZXJ0eU5hbWVdID09PSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0UHJvcGVydHk8VD4ob2JqOiBULCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG9ialsocHJvcGVydHlOYW1lIGFzIGtleW9mIHR5cGVvZiBvYmopXTtcclxuICB9XHJcbiAgc3RhdGljIG9iakNvbXBhcmUob2JqMTogYW55LCBvYmoyOiBhbnkpe1xyXG4gICAgY29uc3QgT2JqMV9rZXlzID0gT2JqZWN0LmtleXMob2JqMSk7XHJcbiAgICBjb25zdCBPYmoyX2tleXMgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuICAgIGlmIChPYmoxX2tleXMubGVuZ3RoICE9PSBPYmoyX2tleXMubGVuZ3RoKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBrIG9mIE9iajFfa2V5cyl7XHJcbiAgICAgICAgaWYob2JqMVtrXSAhPT0gb2JqMltrXSl7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9hcGkvdHlwZXMvYnJlYWRjcnVtYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCcmVhZENydW1iT3B0aW9uIHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHJvdXRlckxpbms6IHN0cmluZztcclxuICBzaG93TWVudTogYm9vbGVhbjtcclxufSJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V2ZXJpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL3R5cGVzL3NldmVyaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFNldmVyaXR5ID0gXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiIHwgXCJzdWNjZXNzXCIgfCBcImluZm9cIiB8IFwid2FybmluZ1wiIHwgXCJoZWxwXCIgfCBcImRhbmdlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2V2ZXJpdHk7XHJcbiJdfQ==
|
|
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
190
190
|
],
|
|
191
191
|
}]
|
|
192
192
|
}] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Vldm8tY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rZWV2by1jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFB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UCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjtxQkFDdkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS3ZBdmF0YXJNb2R1bGUgfSBmcm9tICcuL2t2LWF2YXRhci9rdi1hdmF0YXIubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZCdXR0b25zTW9kdWxlIH0gZnJvbSAnLi9rdi1idXR0b25zL2t2LWJ1dHRvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkNhcm91c2VsTW9kdWxlIH0gZnJvbSAnLi9rdi1jYXJvdXNlbC9rdi1jYXJvdXNlbC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkNoYXJ0TW9kdWxlIH0gZnJvbSAnLi9rdi1jaGFydC9rdi1jaGFydC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdklucHV0c01vZHVsZSB9IGZyb20gJy4va3YtaW5wdXRzL2t2LWlucHV0cy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkxvYWRlck1vZHVsZSB9IGZyb20gJy4va3YtbG9hZGVyL2t2LWxvYWRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkxvZ2luTW9kdWxlIH0gZnJvbSAnLi9rdi1sb2dpbi9rdi1sb2dpbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkxheW91dE1vZHVsZSB9IGZyb20gJy4va3YtbGF5b3V0L2t2LWxheW91dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdk1vZGFsTW9kdWxlIH0gZnJvbSAnLi9rdi1tb2RhbC9rdi1tb2RhbC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdk9yZ2NoYXJ0TW9kdWxlIH0gZnJvbSAnLi9rdi1vcmdjaGFydC9rdi1vcmdjaGFydC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdlBhZ2VGb3JtTW9kdWxlIH0gZnJvbSAnLi9rdi1wYWdlLWZvcm0va3YtcGFnZS1mb3JtLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2UGlja0xpc3RNb2R1bGUgfSBmcm9tICcuL2t2LXBpY2stbGlzdC9rdi1waWNrLWxpc3QubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJy4va3YtcHJvZ3Jlc3MtYmFyL2t2LXByb2dyZXNzLWJhci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdlRhYmxlRWRpdE1vZHVsZSB9IGZyb20gJy4va3YtdGFibGUtZWRpdC9rdi10YWJsZS1lZGl0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2VGFibGVNb2R1bGUgfSBmcm9tICcuL2t2LXRhYmxlL2t2LXRhYmxlLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2VHJlZXRhYmxlTW9kdWxlIH0gZnJvbSAnLi9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUubW9kdWxlJztcclxuaW1wb3J0IHsgS3Z0cmVlVmlld01vZHVsZSB9IGZyb20gJy4va3YtdHJlZS12aWV3L2t2LXRyZWUtdmlldy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdldvcmtzcGFjZU1vZHVsZSB9IGZyb20gJy4va3Ytd29ya3NwYWNlL2t2LXdvcmtzcGFjZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdlN0ZXBwZXJNb2R1bGUgfSBmcm9tICcuL2t2LXN0ZXBwZXIva3Ytc3RlcHBlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkltYWdlVXBsb2FkTW9kdWxlIH0gZnJvbSAnLi9rdi1pbWFnZS11cGxvYWQva3YtaW1hZ2UtdXBsb2FkLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2VGFibGVFeHBhbmRhYmxlTW9kdWxlIH0gZnJvbSAnLi9rdi10YWJsZS1leHBhbmRhYmxlL2t2LXRhYmxlLWV4cGFuZGFibGUubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZGaWx0ZXJDYXJkTW9kdWxlIH0gZnJvbSAnLi9rdi1maWx0ZXItY2FyZC9rdi1maWx0ZXItY2FyZC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkdJY29uTW9kdWxlIH0gZnJvbSAnLi9rdi1nLWljb24va3YtZy1pY29uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2RmlsZVZpZXdlck1vZHVsZSB9IGZyb20gJy4va3YtZmlsZS12aWV3ZXIva3YtZmlsZS12aWV3ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZCdXR0b25Nb2R1bGUgfSBmcm9tICcuL2t2LWJ1dHRvbi9rdi1idXR0b24ubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZGaWx0ZXJGaWVsZHNldE1vZHVsZSB9IGZyb20gJy4va3YtZmlsdGVyLWZpZWxkc2V0L2t2LWZpbHRlci1maWVsZHNldC5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEt2QXZhdGFyTW9kdWxlLFxyXG4gICAgS3ZCdXR0b25zTW9kdWxlLFxyXG4gICAgS3ZCdXR0b25Nb2R1bGUsXHJcbiAgICBLdkNhcm91c2VsTW9kdWxlLFxyXG4gICAgS3ZDaGFydE1vZHVsZSxcclxuICAgIEt2SW5wdXRzTW9kdWxlLFxyXG4gICAgS3ZMb2FkZXJNb2R1bGUsXHJcbiAgICBLdkxvZ2luTW9kdWxlLFxyXG4gICAgS3ZMYXlvdXRNb2R1bGUsXHJcbiAgICBLdk1vZGFsTW9kdWxlLFxyXG4gICAgS3ZPcmdjaGFydE1vZHVsZSxcclxuICAgIEt2UGFnZUZvcm1Nb2R1bGUsXHJcbiAgICBLdlBpY2tMaXN0TW9kdWxlLFxyXG4gICAgS3ZQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIEt2VGFibGVNb2R1bGUsXHJcbiAgICBLdlRyZWV0YWJsZU1vZHVsZSxcclxuICAgIEt2dHJlZVZpZXdNb2R1bGUsXHJcbiAgICBLdldvcmtzcGFjZU1vZHVsZSxcclxuICAgIEt2U3RlcHBlck1vZHVsZSxcclxuICAgIEt2SW1hZ2VVcGxvYWRNb2R1bGUsXHJcbiAgICBLdlRhYmxlRXhwYW5kYWJsZU1vZHVsZSxcclxuICAgIEt2R0ljb25Nb2R1bGUsXHJcbiAgICBLdkZpbHRlckNhcmRNb2R1bGUsXHJcbiAgICBLdkZpbGVWaWV3ZXJNb2R1bGUsXHJcbiAgICBLdkZpbHRlckZpZWxkc2V0TW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgS3ZBdmF0YXJNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbnNNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbk1vZHVsZSxcclxuICAgIEt2Q2Fyb3VzZWxNb2R1bGUsXHJcbiAgICBLdkNoYXJ0TW9kdWxlLFxyXG4gICAgS3ZJbnB1dHNNb2R1bGUsXHJcbiAgICBLdkxvYWRlck1vZHVsZSxcclxuICAgIEt2TG9naW5Nb2R1bGUsXHJcbiAgICBLdkxheW91dE1vZHVsZSxcclxuICAgIEt2TW9kYWxNb2R1bGUsXHJcbiAgICBLdk9yZ2NoYXJ0TW9kdWxlLFxyXG4gICAgS3ZQYWdlRm9ybU1vZHVsZSxcclxuICAgIEt2UGlja0xpc3RNb2R1bGUsXHJcbiAgICBLdlByb2dyZXNzQmFyTW9kdWxlLFxyXG4gICAgS3ZUYWJsZUVkaXRNb2R1bGUsXHJcbiAgICBLdlRhYmxlTW9kdWxlLFxyXG4gICAgS3ZUcmVldGFibGVNb2R1bGUsXHJcbiAgICBLdnRyZWVWaWV3TW9kdWxlLFxyXG4gICAgS3ZXb3Jrc3BhY2VNb2R1bGUsXHJcbiAgICBLdlN0ZXBwZXJNb2R1bGUsXHJcbiAgICBLdkltYWdlVXBsb2FkTW9kdWxlLFxyXG4gICAgS3ZUYWJsZUV4cGFuZGFibGVNb2R1bGUsXHJcbiAgICBLdkdJY29uTW9kdWxlLFxyXG4gICAgS3ZGaWx0ZXJDYXJkTW9kdWxlLFxyXG4gICAgS3ZGaWxlVmlld2VyTW9kdWxlLFxyXG4gICAgS3ZGaWx0ZXJGaWVsZHNldE1vZHVsZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS2Vldm9Db21wb25lbnRzTW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -1,41 +1,59 @@
|
|
|
1
|
-
import { Component, EventEmitter, input, Input, Output, signal, ViewChild, } from '@angular/core';
|
|
2
|
-
import { BaseComponentCrud } from '../../api/base-components/base-component-crud';
|
|
1
|
+
import { Component, EventEmitter, HostListener, input, Input, Output, signal, ViewChild, } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
import * as i1 from "../../api/services/imagens.service";
|
|
5
4
|
import * as i2 from "../../api/services/notification.service";
|
|
6
|
-
import * as i3 from "
|
|
7
|
-
import * as i4 from "
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "primeng/slider";
|
|
7
|
+
import * as i5 from "@angular/forms";
|
|
8
|
+
import * as i6 from "../kv-button/kv-button.component";
|
|
9
|
+
import * as i7 from "../kv-label/kv-label.component";
|
|
10
|
+
export class KvAvatarComponent {
|
|
11
|
+
constructor(imageService, notificationService) {
|
|
12
12
|
this.imageService = imageService;
|
|
13
13
|
this.notificationService = notificationService;
|
|
14
|
-
this.dialogService = dialogService;
|
|
15
14
|
this.borderColor = '#002542';
|
|
16
15
|
this.btnsColor = '#002542';
|
|
17
16
|
this.width = 135;
|
|
18
17
|
this.height = 135;
|
|
19
18
|
this.imageUrlChange = new EventEmitter();
|
|
20
|
-
this.removerFotoEvent = new EventEmitter();
|
|
21
19
|
this.onModalOpen = new EventEmitter();
|
|
20
|
+
this.removerFotoEvent = new EventEmitter();
|
|
22
21
|
this.btnAlterarFoto = false;
|
|
23
22
|
this.existeLogo = false;
|
|
24
23
|
this.selectedImage = '';
|
|
24
|
+
this.showCropModal = false;
|
|
25
|
+
this.imageLoaded = false;
|
|
26
|
+
this.imageX = 0;
|
|
27
|
+
this.imageY = 0;
|
|
28
|
+
this.startX = 0;
|
|
29
|
+
this.startY = 0;
|
|
30
|
+
this.valueZoom = 20;
|
|
31
|
+
this.scaleFactor = 2;
|
|
32
|
+
this.canvasWidth = signal(null);
|
|
33
|
+
this.canvasHeight = signal(null);
|
|
25
34
|
this.imageUrl = input(this.imageService.userDefaultImage());
|
|
26
35
|
this.imageSource = signal(this.imageService.userDefaultImage());
|
|
36
|
+
this.imgCanva = signal(null);
|
|
37
|
+
this.widthTela = window.innerWidth;
|
|
27
38
|
}
|
|
28
39
|
ngOnInit() {
|
|
29
40
|
this.imageSource.set(this.imageUrl());
|
|
30
41
|
this.getImageSrc();
|
|
31
42
|
}
|
|
43
|
+
onWindowResize() {
|
|
44
|
+
this.widthTela = window.innerWidth;
|
|
45
|
+
this.heigthTela = window.innerHeight;
|
|
46
|
+
this.updateCanvasSize();
|
|
47
|
+
this.updateCropBorderSize();
|
|
48
|
+
}
|
|
32
49
|
getImageSrc() {
|
|
33
|
-
|
|
50
|
+
const imageUrl = this.imageUrl();
|
|
51
|
+
if (imageUrl && (imageUrl.startsWith('data:image') || imageUrl.startsWith('http') || imageUrl.startsWith('https'))) {
|
|
34
52
|
this.existeLogo = true;
|
|
35
53
|
}
|
|
36
|
-
else if (
|
|
54
|
+
else if (imageUrl && imageUrl.length > 0) {
|
|
37
55
|
this.existeLogo = true;
|
|
38
|
-
this.imageSource.set('data:image/jpg;base64,' +
|
|
56
|
+
this.imageSource.set('data:image/jpg;base64,' + imageUrl);
|
|
39
57
|
}
|
|
40
58
|
else {
|
|
41
59
|
this.existeLogo = false;
|
|
@@ -55,7 +73,8 @@ export class KvAvatarComponent extends BaseComponentCrud {
|
|
|
55
73
|
reader.readAsDataURL(file);
|
|
56
74
|
reader.onload = () => {
|
|
57
75
|
this.selectedImage = reader.result;
|
|
58
|
-
|
|
76
|
+
this.onModalOpen.emit(null);
|
|
77
|
+
this.openCropModal();
|
|
59
78
|
this.existeLogo = false;
|
|
60
79
|
};
|
|
61
80
|
}
|
|
@@ -82,40 +101,187 @@ export class KvAvatarComponent extends BaseComponentCrud {
|
|
|
82
101
|
handleImageError(event) {
|
|
83
102
|
event.target.src = this.imageService.userDefaultImage();
|
|
84
103
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
104
|
+
//------- Recorte de imagem -------
|
|
105
|
+
openCropModal() {
|
|
106
|
+
this.showCropModal = true;
|
|
107
|
+
setTimeout(() => {
|
|
108
|
+
const canvas = this.cropCanvas.nativeElement;
|
|
109
|
+
const ctx = canvas.getContext('2d');
|
|
110
|
+
const img = new Image();
|
|
111
|
+
img.src = this.selectedImage;
|
|
112
|
+
img.onload = () => {
|
|
113
|
+
this.imageLoaded = true;
|
|
114
|
+
canvas.height = 400;
|
|
115
|
+
canvas.width = this.retornaTamanhoCanvas();
|
|
116
|
+
this.scaleFactor = canvas.height / img.height;
|
|
117
|
+
this.imageX = (canvas.width - img.width * this.scaleFactor) / 2;
|
|
118
|
+
this.imageY = 0;
|
|
119
|
+
this.canvasWidth.set(canvas.width);
|
|
120
|
+
this.canvasHeight.set(canvas.height);
|
|
121
|
+
this.redrawCanvas(ctx, img);
|
|
122
|
+
this.initializeImageMove(canvas, ctx, img);
|
|
123
|
+
this.initializeMouseWheel(canvas, ctx, img);
|
|
124
|
+
this.valueZoom = this.scaleFactor * 20;
|
|
125
|
+
};
|
|
126
|
+
}, 0);
|
|
127
|
+
}
|
|
128
|
+
cropImage() {
|
|
129
|
+
const canvas = this.cropCanvas.nativeElement;
|
|
130
|
+
const ctx = canvas.getContext('2d');
|
|
131
|
+
if (ctx) {
|
|
132
|
+
const cropRadius = this.getCropRadius();
|
|
133
|
+
const centerX = canvas.width / 2;
|
|
134
|
+
const centerY = canvas.height / 2;
|
|
135
|
+
const imageData = ctx.getImageData(centerX - cropRadius, centerY - cropRadius, cropRadius * 2, cropRadius * 2);
|
|
136
|
+
const newCanvas = document.createElement('canvas');
|
|
137
|
+
const newCtx = newCanvas.getContext('2d');
|
|
138
|
+
newCanvas.width = cropRadius * 2;
|
|
139
|
+
newCanvas.height = cropRadius * 2;
|
|
140
|
+
if (newCtx) {
|
|
141
|
+
newCtx.putImageData(imageData, 0, 0);
|
|
142
|
+
this.imageSource.set(newCanvas.toDataURL());
|
|
143
|
+
this.imageUrlChange.emit(this.imageSource());
|
|
144
|
+
this.existeLogo = true;
|
|
145
|
+
this.closeCropModal();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
onZoomChange(event) {
|
|
150
|
+
const canvas = this.cropCanvas.nativeElement;
|
|
151
|
+
const ctx = canvas.getContext('2d');
|
|
152
|
+
const img = new Image();
|
|
153
|
+
img.src = this.selectedImage;
|
|
154
|
+
img.onload = () => {
|
|
155
|
+
const zoomValue = event.value / 20;
|
|
156
|
+
this.scaleFactor = Math.max(zoomValue, 0.1); // Garantir que o fator de escala não seja menor que 0.1
|
|
157
|
+
this.redrawCanvas(ctx, img);
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
retornaTamanhoCanvas() {
|
|
161
|
+
return this.widthTela < 700 ? this.widthTela * 0.7 : this.widthTela * 0.4;
|
|
162
|
+
}
|
|
163
|
+
closeCropModal() {
|
|
164
|
+
this.showCropModal = false;
|
|
165
|
+
this.valueZoom = 20;
|
|
166
|
+
this.imageLoaded = false;
|
|
167
|
+
this.imageX = this.imgCanva()?.width / 2;
|
|
168
|
+
this.imageY = this.imgCanva()?.height / 2;
|
|
169
|
+
this.startX = 0;
|
|
170
|
+
this.startY = 0;
|
|
171
|
+
}
|
|
172
|
+
redrawCanvas(ctx, img) {
|
|
173
|
+
this.updateCropBorderSize();
|
|
174
|
+
if (!ctx)
|
|
175
|
+
return;
|
|
176
|
+
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
|
177
|
+
ctx.filter = 'blur(5px) opacity(0.9)';
|
|
178
|
+
ctx.drawImage(img, this.imageX, this.imageY, img.width * this.scaleFactor, img.height * this.scaleFactor);
|
|
179
|
+
ctx.filter = 'none';
|
|
180
|
+
this.drawImageInCropArea(ctx, img);
|
|
181
|
+
this.drawCropArea(ctx);
|
|
182
|
+
}
|
|
183
|
+
initializeImageMove(canvas, ctx, img) {
|
|
184
|
+
let isDragging = false;
|
|
185
|
+
canvas.style.cursor = 'grab';
|
|
186
|
+
canvas.onmousedown = (e) => {
|
|
187
|
+
isDragging = true;
|
|
188
|
+
canvas.style.cursor = 'grabbing';
|
|
189
|
+
this.startX = e.offsetX - this.imageX;
|
|
190
|
+
this.startY = e.offsetY - this.imageY;
|
|
191
|
+
};
|
|
192
|
+
canvas.onmousemove = (e) => {
|
|
193
|
+
if (isDragging) {
|
|
194
|
+
this.imageX = e.offsetX - this.startX;
|
|
195
|
+
this.imageY = e.offsetY - this.startY;
|
|
196
|
+
this.redrawCanvas(ctx, img);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
canvas.onmouseup = () => {
|
|
200
|
+
isDragging = false;
|
|
201
|
+
canvas.style.cursor = 'grab';
|
|
202
|
+
};
|
|
203
|
+
canvas.onmouseout = () => {
|
|
204
|
+
isDragging = false;
|
|
205
|
+
canvas.style.cursor = 'grab';
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
initializeMouseWheel(canvas, ctx, img) {
|
|
209
|
+
canvas.onwheel = (e) => {
|
|
210
|
+
e.preventDefault();
|
|
211
|
+
const delta = e.deltaY > 0 ? -0.1 : 0.1;
|
|
212
|
+
this.scaleFactor = Math.min(Math.max(this.scaleFactor + delta, 0.1), 5); // limita o fator de escala entre 0.1 e 5
|
|
213
|
+
this.redrawCanvas(ctx, img);
|
|
214
|
+
this.valueZoom = this.scaleFactor * 20;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
drawImageInCropArea(ctx, img) {
|
|
218
|
+
if (!ctx)
|
|
219
|
+
return;
|
|
220
|
+
const cropRadius = this.getCropRadius();
|
|
221
|
+
const cropX = (ctx.canvas.width - cropRadius * 2) / 2;
|
|
222
|
+
const cropY = (ctx.canvas.height - cropRadius * 2) / 2;
|
|
223
|
+
ctx.save();
|
|
224
|
+
ctx.beginPath();
|
|
225
|
+
ctx.arc(cropX + cropRadius, cropY + cropRadius, cropRadius, 0, Math.PI * 2, true);
|
|
226
|
+
ctx.clip();
|
|
227
|
+
ctx.drawImage(img, this.imageX, this.imageY, img.width * this.scaleFactor, img.height * this.scaleFactor);
|
|
228
|
+
ctx.restore();
|
|
229
|
+
}
|
|
230
|
+
drawCropArea(ctx) {
|
|
231
|
+
if (!ctx)
|
|
232
|
+
return;
|
|
233
|
+
const cropRadius = this.getCropRadius();
|
|
234
|
+
const cropX = (ctx.canvas.width - cropRadius * 2) / 2;
|
|
235
|
+
const cropY = (ctx.canvas.height - cropRadius * 2) / 2;
|
|
236
|
+
ctx.beginPath();
|
|
237
|
+
ctx.arc(cropX + cropRadius, cropY + cropRadius, cropRadius, 0, Math.PI * 2, true);
|
|
238
|
+
ctx.strokeStyle = 'transparent';
|
|
239
|
+
ctx.lineWidth = 2;
|
|
240
|
+
ctx.stroke();
|
|
241
|
+
}
|
|
242
|
+
getCropRadius() {
|
|
243
|
+
const baseRadius = 200; // Raio base para uma tela de referência
|
|
244
|
+
const referenceWidth = (this.widthTela + 100); // Largura da tela de referência
|
|
245
|
+
const scaleFactor = window.innerWidth / referenceWidth; // Fator de escala com base na largura da tela atual
|
|
246
|
+
const diagonal = Math.sqrt(Math.pow(this.canvasHeight(), 2) + Math.pow(this.canvasWidth(), 2));
|
|
247
|
+
const calculatedRadius = (diagonal / 4);
|
|
248
|
+
const maxRadius = baseRadius * scaleFactor; // Ajusta o raio com base no fator de escala
|
|
249
|
+
return Math.min(calculatedRadius, maxRadius);
|
|
250
|
+
}
|
|
251
|
+
updateCropBorderSize() {
|
|
252
|
+
if (this.cropBorder && this.cropBorder.nativeElement) {
|
|
253
|
+
const radius = this.getCropRadius();
|
|
254
|
+
const cropBorderElement = this.cropBorder.nativeElement;
|
|
255
|
+
cropBorderElement.style.width = `${radius * 2}px`;
|
|
256
|
+
cropBorderElement.style.height = `${radius * 2}px`;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
updateCanvasSize() {
|
|
260
|
+
if (this.cropCanvas && this.cropCanvas.nativeElement) {
|
|
261
|
+
const canvas = this.cropCanvas.nativeElement;
|
|
262
|
+
const ctx = canvas.getContext('2d');
|
|
263
|
+
const img = new Image();
|
|
264
|
+
img.src = this.selectedImage;
|
|
265
|
+
this.imgCanva.set(img);
|
|
266
|
+
img.onload = () => {
|
|
267
|
+
this.imageLoaded = true;
|
|
268
|
+
canvas.width = this.retornaTamanhoCanvas();
|
|
269
|
+
canvas.height = 400;
|
|
270
|
+
this.imageX = (canvas.width - img.width * this.scaleFactor) / 2;
|
|
271
|
+
this.imageY = 0; // A imagem começa no topo do canvas
|
|
272
|
+
this.canvasWidth.set(canvas.width);
|
|
273
|
+
this.canvasHeight.set(canvas.height);
|
|
274
|
+
this.redrawCanvas(ctx, img);
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvAvatarComponent, deps: [{ token: i1.ImagensService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: KvAvatarComponent, selector: "kv-avatar", inputs: { borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: false, isRequired: false, transformFunction: null }, btnsColor: { classPropertyName: "btnsColor", publicName: "btnsColor", isSignal: false, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: false, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: false, isRequired: false, transformFunction: null }, btnAlterarFoto: { classPropertyName: "btnAlterarFoto", publicName: "btnAlterarFoto", isSignal: false, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { imageUrlChange: "imageUrlChange", onModalOpen: "onModalOpen", removerFotoEvent: "removerFotoEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "cropCanvas", first: true, predicate: ["cropCanvas"], descendants: true }, { propertyName: "cropBorder", first: true, predicate: ["cropBorder"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"image-container\">\r\n <img [src]=\"imageSource()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\">\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" [style.background-color]=\"btnsColor\" (click)=\"openFile()\">\r\n <i class=\"material-symbols-outlined\">photo_camera</i>\r\n </button>\r\n \r\n <button *ngIf=\"btnAlterarFoto && existeLogo\" [style.background-color]=\"btnsColor\"\r\n class=\"botao-excluir-foto border-circle\r\n hover:shadow-3\r\n active:shadow-5\"\r\n (click)=\"questionRemoverFoto()\">\r\n <i class=\"material-symbols-outlined\">delete</i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"showCropModal\" class=\"modal\">\r\n <div class=\"modal-content\">\r\n <div class=\"crop-container\">\r\n <canvas #cropCanvas class=\"crop-canvas\"></canvas>\r\n <div #cropBorder class=\"crop-border\"></div>\r\n </div>\r\n\r\n <div class=\"w-full mt-2\">\r\n <kv-label label=\"Zoom\" style=\"text-align: left;\"/>\r\n <p-slider [(ngModel)]=\"valueZoom\" (onChange)=\"onZoomChange($event)\"></p-slider>\r\n </div>\r\n \r\n <div class=\"button-container\"> \r\n <kv-button label=\"Cancelar\" severity=\"tertiary\" icon=\"close\" (click)=\"closeCropModal()\"></kv-button>\r\n <kv-button label=\"Recortar\" severity=\"primary\" icon=\"crop\" (click)=\"cropImage()\" class=\"ml-2\"></kv-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:35px}:root{--kv-primary-color: #29b92d, --kv-secondary-color: #002542, --kv-terciary-color: #f2f3f5, --kv-primary-hover-color: #249a29, --kv-secondary-hover-color: #002038, --kv-terciary-hover-color: #d9dadb, --kv-primary-active-color: #1c801f, --kv-secondary-active-color: #001729, --kv-terciary-active-color: #c0c1c2, --kv-primary-disable-color: #1c801f, --kv-secondary-disable-color: #001729, --kv-terciary-disable-color: #c0c1c2, }::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}img{border-style:solid;border-width:2px;border-radius:50%;object-fit:cover}i{font-size:22px}.botao-alterar-foto{border-style:none;width:max-content;background-color:#002542;color:#000;font-weight:700;cursor:pointer;padding:7px 9px}.botao-alterar-foto i{color:#fff}.botao-excluir-foto{border-style:none;width:max-content;background-color:#002542;color:#000;font-weight:700;cursor:pointer;padding:7px 9px}.botao-excluir-foto i{color:#fff}.btn{position:absolute;top:87%;left:87%;transform:translate(-50%,-50%)}.image-container{display:inline-block;position:relative}.modal{display:block;position:absolute;z-index:9999;left:0;top:0;width:100vw;height:100vh;overflow:auto;background-color:#0006}.modal-content{background-color:#fefefe;margin:1% auto;padding:20px;border:1px solid #888;width:80%;max-width:fit-content;text-align:center;border-radius:12px}.crop-container{display:flex;justify-content:center;align-items:center}.crop-canvas{border:1px solid black;border-radius:12px;width:100%;height:auto}.crop-border{position:absolute;border:2px solid black;border-radius:50%;pointer-events:none}.zoom-container{padding-top:20px;padding-bottom:20px}.button-container{display:flex;align-items:center;justify-content:flex-end;flex-direction:row;margin-top:24px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Slider, selector: "p-slider", inputs: ["animate", "disabled", "min", "max", "orientation", "step", "range", "style", "styleClass", "ariaLabel", "ariaLabelledBy", "tabindex", "autofocus"], outputs: ["onChange", "onSlideEnd"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.KvButtonComponent, selector: "kv-button", inputs: ["label", "icon", "loading", "disabled", "severity", "size", "fullWidth"], outputs: ["onClick"] }, { kind: "component", type: i7.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }] }); }
|
|
114
280
|
}
|
|
115
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvAvatarComponent, decorators: [{
|
|
116
282
|
type: Component,
|
|
117
|
-
args: [{ selector: 'kv-avatar', template: "<div class=\"image-container\">\
|
|
118
|
-
}], ctorParameters: () => [{ type: i1.ImagensService }, { type: i2.NotificationService }
|
|
283
|
+
args: [{ selector: 'kv-avatar', template: "<div class=\"image-container\">\r\n <img [src]=\"imageSource()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\">\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" [style.background-color]=\"btnsColor\" (click)=\"openFile()\">\r\n <i class=\"material-symbols-outlined\">photo_camera</i>\r\n </button>\r\n \r\n <button *ngIf=\"btnAlterarFoto && existeLogo\" [style.background-color]=\"btnsColor\"\r\n class=\"botao-excluir-foto border-circle\r\n hover:shadow-3\r\n active:shadow-5\"\r\n (click)=\"questionRemoverFoto()\">\r\n <i class=\"material-symbols-outlined\">delete</i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"showCropModal\" class=\"modal\">\r\n <div class=\"modal-content\">\r\n <div class=\"crop-container\">\r\n <canvas #cropCanvas class=\"crop-canvas\"></canvas>\r\n <div #cropBorder class=\"crop-border\"></div>\r\n </div>\r\n\r\n <div class=\"w-full mt-2\">\r\n <kv-label label=\"Zoom\" style=\"text-align: left;\"/>\r\n <p-slider [(ngModel)]=\"valueZoom\" (onChange)=\"onZoomChange($event)\"></p-slider>\r\n </div>\r\n \r\n <div class=\"button-container\"> \r\n <kv-button label=\"Cancelar\" severity=\"tertiary\" icon=\"close\" (click)=\"closeCropModal()\"></kv-button>\r\n <kv-button label=\"Recortar\" severity=\"primary\" icon=\"crop\" (click)=\"cropImage()\" class=\"ml-2\"></kv-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:35px}:root{--kv-primary-color: #29b92d, --kv-secondary-color: #002542, --kv-terciary-color: #f2f3f5, --kv-primary-hover-color: #249a29, --kv-secondary-hover-color: #002038, --kv-terciary-hover-color: #d9dadb, --kv-primary-active-color: #1c801f, --kv-secondary-active-color: #001729, --kv-terciary-active-color: #c0c1c2, --kv-primary-disable-color: #1c801f, --kv-secondary-disable-color: #001729, --kv-terciary-disable-color: #c0c1c2, }::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}img{border-style:solid;border-width:2px;border-radius:50%;object-fit:cover}i{font-size:22px}.botao-alterar-foto{border-style:none;width:max-content;background-color:#002542;color:#000;font-weight:700;cursor:pointer;padding:7px 9px}.botao-alterar-foto i{color:#fff}.botao-excluir-foto{border-style:none;width:max-content;background-color:#002542;color:#000;font-weight:700;cursor:pointer;padding:7px 9px}.botao-excluir-foto i{color:#fff}.btn{position:absolute;top:87%;left:87%;transform:translate(-50%,-50%)}.image-container{display:inline-block;position:relative}.modal{display:block;position:absolute;z-index:9999;left:0;top:0;width:100vw;height:100vh;overflow:auto;background-color:#0006}.modal-content{background-color:#fefefe;margin:1% auto;padding:20px;border:1px solid #888;width:80%;max-width:fit-content;text-align:center;border-radius:12px}.crop-container{display:flex;justify-content:center;align-items:center}.crop-canvas{border:1px solid black;border-radius:12px;width:100%;height:auto}.crop-border{position:absolute;border:2px solid black;border-radius:50%;pointer-events:none}.zoom-container{padding-top:20px;padding-bottom:20px}.button-container{display:flex;align-items:center;justify-content:flex-end;flex-direction:row;margin-top:24px}\n"] }]
|
|
284
|
+
}], ctorParameters: () => [{ type: i1.ImagensService }, { type: i2.NotificationService }], propDecorators: { borderColor: [{
|
|
119
285
|
type: Input
|
|
120
286
|
}], btnsColor: [{
|
|
121
287
|
type: Input
|
|
@@ -125,14 +291,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
125
291
|
type: Input
|
|
126
292
|
}], imageUrlChange: [{
|
|
127
293
|
type: Output
|
|
128
|
-
}], removerFotoEvent: [{
|
|
129
|
-
type: Output
|
|
130
294
|
}], onModalOpen: [{
|
|
131
295
|
type: Output
|
|
296
|
+
}], removerFotoEvent: [{
|
|
297
|
+
type: Output
|
|
132
298
|
}], btnAlterarFoto: [{
|
|
133
299
|
type: Input
|
|
300
|
+
}], cropCanvas: [{
|
|
301
|
+
type: ViewChild,
|
|
302
|
+
args: ['cropCanvas']
|
|
303
|
+
}], cropBorder: [{
|
|
304
|
+
type: ViewChild,
|
|
305
|
+
args: ['cropBorder']
|
|
134
306
|
}], fileInput: [{
|
|
135
307
|
type: ViewChild,
|
|
136
308
|
args: ['fileInput']
|
|
309
|
+
}], onWindowResize: [{
|
|
310
|
+
type: HostListener,
|
|
311
|
+
args: ['window:resize', ['$event']]
|
|
137
312
|
}] } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWF2YXRhci9rdi1hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtYXZhdGFyL2t2LWF2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7QUFDbEYsa0ZBQWtGO0FBUWxGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFldEQsWUFBbUIsWUFBNEIsRUFDMUIsbUJBQXdDLEVBQ3hDLGFBQTRCO1FBQzVDLEtBQUssQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtRQUgzQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDMUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWhCeEMsZ0JBQVcsR0FBVyxTQUFTLENBQUM7UUFDaEMsY0FBUyxHQUFXLFNBQVMsQ0FBQztRQUM5QixVQUFLLEdBQVcsR0FBRyxDQUFDO1FBQ3BCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRXpDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFjMUIsYUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUM5RCxnQkFBVyxHQUFHLE1BQU0sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtJQVJwQixDQUFDO0lBRWhELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUtELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0ksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQTRCLFFBQVEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFxQixDQUFDO1FBQzNHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVTtRQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUU3QyxpQ0FBaUM7Z0JBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLG9FQUFvRSxDQUFDO1FBRWpGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7WUFDaEMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsT0FBTyxFQUFFLEdBQUc7WUFDWixNQUFNLEVBQUUsQ0FBQyxJQUFRLEVBQUUsRUFBRTtnQkFFbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ3BCLENBQUM7WUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFRLEVBQUUsRUFBRTtZQUVyQixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixxQkFBcUI7SUFDckIsNEJBQTRCO0lBQzVCLGNBQWM7SUFDZCw2Q0FBNkM7SUFDN0MsNERBQTREO0lBQzVELHNEQUFzRDtJQUN0RCxnQ0FBZ0M7SUFDaEMsU0FBUztJQUNULFFBQVE7SUFDUiw0QkFBNEI7SUFDNUIscUJBQXFCO0lBQ3JCLHNCQUFzQjtJQUN0Qiw0QkFBNEI7SUFDNUIsc0VBQXNFO0lBQ3RFLFFBQVE7SUFFUixNQUFNO0lBQ04sd0ZBQXdGO0lBQ3hGLCtEQUErRDtJQUMvRCx3Q0FBd0M7SUFDeEMsZ0VBQWdFO0lBQ2hFLElBQUk7SUFFSixZQUFZO1FBQ1YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ25GLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQTtJQUM5QyxDQUFDOzhHQXRIVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix1a0NDMUI5QiwydkNBbUJBOzsyRkRPYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsV0FBVztpSkFNWixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS2tCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEltYWdlbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL2ltYWdlbnMuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudENydWQgfSBmcm9tICcuLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWNydWQnO1xuLy8gaW1wb3J0IHsgS3ZDcm9wSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2t2LWNyb3AtaW1hZ2Uva3YtY3JvcC1pbWFnZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrdi1hdmF0YXInLFxuICB0ZW1wbGF0ZVVybDogJy4va3YtYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va3YtYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgS3ZBdmF0YXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50Q3J1ZCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJvcmRlckNvbG9yOiBzdHJpbmcgPSAnIzAwMjU0Mic7XG4gIEBJbnB1dCgpIGJ0bnNDb2xvcjogc3RyaW5nID0gJyMwMDI1NDInO1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyID0gMTM1O1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlciA9IDEzNTtcbiAgQE91dHB1dCgpIGltYWdlVXJsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVyRm90b0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25Nb2RhbE9wZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIGJ0bkFsdGVyYXJGb3RvOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBleGlzdGVMb2dvID0gZmFsc2U7XG4gIHNlbGVjdGVkSW1hZ2U6IHN0cmluZyA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGltYWdlU2VydmljZTogSW1hZ2Vuc1NlcnZpY2UsIFxuICAgICAgICAgICAgICBvdmVycmlkZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLCBcbiAgICAgICAgICAgICAgb3ZlcnJpZGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICkgeyBzdXBlcihkaWFsb2dTZXJ2aWNlLCBub3RpZmljYXRpb25TZXJ2aWNlKSB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZVNvdXJjZS5zZXQodGhpcy5pbWFnZVVybCgpKVxuICAgIHRoaXMuZ2V0SW1hZ2VTcmMoKVxuICB9XG5cbiAgIGltYWdlVXJsID0gaW5wdXQ8c3RyaW5nPih0aGlzLmltYWdlU2VydmljZS51c2VyRGVmYXVsdEltYWdlKCkpXG4gICBpbWFnZVNvdXJjZSA9IHNpZ25hbDxzdHJpbmc+KHRoaXMuaW1hZ2VTZXJ2aWNlLnVzZXJEZWZhdWx0SW1hZ2UoKSlcblxuICBnZXRJbWFnZVNyYygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbWFnZVVybCAmJiAodGhpcy5pbWFnZVVybCgpLnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKSB8fCB0aGlzLmltYWdlVXJsKCkuc3RhcnRzV2l0aCgnaHR0cCcpIHx8IHRoaXMuaW1hZ2VVcmwoKS5zdGFydHNXaXRoKCdodHRwcycpKSkge1xuICAgICAgdGhpcy5leGlzdGVMb2dvID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VVcmwubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5leGlzdGVMb2dvID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW1hZ2VTb3VyY2Uuc2V0KCdkYXRhOmltYWdlL2pwZztiYXNlNjQsJyArIHRoaXMuaW1hZ2VVcmwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhpc3RlTG9nbyA9IGZhbHNlO1xuICAgICAgdGhpcy5pbWFnZVNvdXJjZS5zZXQodGhpcy5pbWFnZVNlcnZpY2UudXNlckRlZmF1bHRJbWFnZSgpKVxuICAgIH0gIFxuICB9XG5cbiAgb3BlbkZpbGUoKSB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3RvRXNjb2xoaWRhJykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoaW5wdXRFbGVtZW50KSB7XG4gICAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RGb3RvU2VsZWNpb25hZGEoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICBcbiAgICAgICAgLy8gdGhpcy5hYnJpck1vZGFsUmVjb3J0YXJGb3RvKCk7XG4gICAgICAgIHRoaXMuZXhpc3RlTG9nbyA9IGZhbHNlO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBxdWVzdGlvblJlbW92ZXJGb3RvKCl7XG4gICAgY29uc3QgbXNnID0gJzxoMz5Wb2PDqiB0ZW0gY2VydGV6YSBxdWUgZGVzZWphIHJldGlyYXIgYSBmb3RvIGRlc3NlIHVzdcOhcmlvPzwvaDM+JztcblxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5xdWVzdGlvbih7XG4gICAgICB0eXBlOiAncXVlc3Rpb24nLFxuICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgYWNjZXB0OiAoZGF0YTphbnkpID0+XG4gICAgICB7XG4gICAgICAgIHRoaXMucmVtb3ZlckZvdG8oKVxuICAgICAgfSxcbiAgICAgIHJlamVjdDogKGRhdGE6YW55KSA9PiB7XG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmVtb3ZlckZvdG8oKSB7XG4gICAgdGhpcy5pbWFnZVNvdXJjZS5zZXQoJycpXG4gICAgdGhpcy5yZW1vdmVyRm90b0V2ZW50LmVtaXQoKTtcbiAgICB0aGlzLmV4aXN0ZUxvZ28gPSBmYWxzZTtcbiAgICB0aGlzLmltYWdlVXJsQ2hhbmdlLmVtaXQodGhpcy5pbWFnZVNvdXJjZSgpKTtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBoYW5kbGVJbWFnZUVycm9yKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5pbWFnZVNlcnZpY2UudXNlckRlZmF1bHRJbWFnZSgpO1xuICB9XG5cbiAgLy8gYWJyaXJNb2RhbFJlY29ydGFyRm90bygpIHtcbiAgLy8gICB0aGlzLm9wZW5EaWFsb2coXG4gIC8vICAgICBLdkNyb3BJbWFnZUNvbXBvbmVudCxcbiAgLy8gICAgICgpID0+IHtcbiAgLy8gICAgICAgdGhpcy5pbWFnZVVybCA9IHRoaXMucmVjZWJlckRhZG9zKCk7XG4gIC8vICAgICAgIHRoaXMuaW1hZ2VTb3VyY2Uuc2V0KHRoaXMucmVjZWJlckRhZG9zKCkgYXMgc3RyaW5nKVxuICAvLyAgICAgICB0aGlzLmltYWdlVXJsQ2hhbmdlLmVtaXQodGhpcy5pbWFnZVNvdXJjZSgpKTtcbiAgLy8gICAgICAgdGhpcy5leGlzdGVMb2dvID0gdHJ1ZTtcbiAgLy8gICAgIH0sXG4gIC8vICAgICB7XG4gIC8vICAgICAgIG1heGltaXphYmxlOiBmYWxzZSxcbiAgLy8gICAgICAgcG9wdXA6IHRydWUsXG4gIC8vICAgICAgIHdpZHRoOiAnNjAlJyxcbiAgLy8gICAgICAgaGVhZGVyOiAnUmVjb3J0YXInLFxuICAvLyAgICAgICBpZDp7aW1hZ2VtU2VsZWNpb25hZGE6IHRoaXMuc2VsZWN0ZWRJbWFnZSwgaW1hZ2VtQ29ydGFkYTogJyd9XG4gIC8vICAgICB9XG4gICAgICBcbiAgLy8gICApXG4gIC8vICAgY29uc3QgW2ZpcnN0S2V5XSA9IHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb21wb25lbnRSZWZNYXAuZW50cmllcygpLm5leHQoKS52YWx1ZTtcbiAgLy8gICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRJbnN0YW5jZShmaXJzdEtleSk7XG4gIC8vICAgaW5zdGFuY2UuY29uZmlnLnNob3dIZWFkZXIgPSBmYWxzZTtcbiAgLy8gICBpbnN0YW5jZS5jb25maWcuY29udGVudFN0eWxlID0geyAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyB9O1xuICAvLyB9XG5cbiAgcmVjZWJlckRhZG9zKCl7XG4gICAgY29uc3QgW2ZpcnN0S2V5XSA9IHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb21wb25lbnRSZWZNYXAuZW50cmllcygpLm5leHQoKS52YWx1ZTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRJbnN0YW5jZShmaXJzdEtleSk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2UuY29uZmlnLmRhdGEuaWQuaW1hZ2VtQ29ydGFkYVxuICB9ICBcbn1cbiIsIjxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIj5cbiAgPCEtLSA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2VTcmMoKSB8fCBpbWFnZVNlcnZpY2UudXNlckRlZmF1bHRJbWFnZSgpXCIgYWx0PVwiRm90b1wiIGNsYXNzPVwiY29udGFpbmVyLWZvdG9cIiBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cImJvcmRlckNvbG9yXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIiAoZXJyb3IpPVwiaGFuZGxlSW1hZ2VFcnJvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9wZW5GaWxlKClcIj4gLS0+XG5cbiAgPGltZyBbc3JjXT1cImltYWdlU291cmNlKClcIiBhbHQ9XCJGb3RvXCIgY2xhc3M9XCJjb250YWluZXItZm90b1wiIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiYm9yZGVyQ29sb3JcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImJ0blwiPlxuICAgIDxpbnB1dCAjZmlsZUlucHV0ICpuZ0lmPVwiYnRuQWx0ZXJhckZvdG9cIiBpZD1cImZvdG9Fc2NvbGhpZGFcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIChjaGFuZ2UpPVwic2VsZWN0Rm90b1NlbGVjaW9uYWRhKCRhbnkoJGV2ZW50KSlcIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiYnRuQWx0ZXJhckZvdG8gJiYgIWV4aXN0ZUxvZ29cIiBjbGFzcz1cImJvdGFvLWFsdGVyYXItZm90byBib3JkZXItY2lyY2xlXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYnRuc0NvbG9yXCIgKGNsaWNrKT1cIm9wZW5GaWxlKClcIj5cbiAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnBob3RvX2NhbWVyYTwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICBcbiAgICA8YnV0dG9uICpuZ0lmPVwiYnRuQWx0ZXJhckZvdG8gJiYgZXhpc3RlTG9nb1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJ0bnNDb2xvclwiXG4gICAgIGNsYXNzPVwiYm90YW8tZXhjbHVpci1mb3RvIGJvcmRlci1jaXJjbGVcbiAgICAgICAgICAgIGhvdmVyOnNoYWRvdy0zXG4gICAgICAgICAgICBhY3RpdmU6c2hhZG93LTVcIlxuICAgICAoY2xpY2spPVwicXVlc3Rpb25SZW1vdmVyRm90bygpXCI+XG4gICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5kZWxldGU8L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWF2YXRhci9rdi1hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtYXZhdGFyL2t2LWF2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBV3ZCLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBbUIsWUFBNEIsRUFDM0IsbUJBQXdDO1FBRHpDLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUMzQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBVW5ELGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBQ2hDLGNBQVMsR0FBVyxTQUFTLENBQUM7UUFDOUIsVUFBSyxHQUFXLEdBQUcsQ0FBQztRQUNwQixXQUFNLEdBQVcsR0FBRyxDQUFDO1FBQ3BCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdkMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM3QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBSzNCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFdBQU0sR0FBVyxDQUFDLENB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U0FBUzt1QkFBQyxXQUFXO2dCQVd0QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIGlucHV0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEltYWdlbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL2ltYWdlbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1hdmF0YXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LWF2YXRhci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEt2QXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGltYWdlU2VydmljZTogSW1hZ2Vuc1NlcnZpY2UsIFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSkgXHJcbiAgeyBcclxuICAgIHRoaXMud2lkdGhUZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2VTb3VyY2Uuc2V0KHRoaXMuaW1hZ2VVcmwoKSk7XHJcbiAgICB0aGlzLmdldEltYWdlU3JjKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBib3JkZXJDb2xvcjogc3RyaW5nID0gJyMwMDI1NDInO1xyXG4gIEBJbnB1dCgpIGJ0bnNDb2xvcjogc3RyaW5nID0gJyMwMDI1NDInO1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgPSAxMzU7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXIgPSAxMzU7XHJcbiAgQE91dHB1dCgpIGltYWdlVXJsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uTW9kYWxPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVyRm90b0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBJbnB1dCgpIGJ0bkFsdGVyYXJGb3RvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgZXhpc3RlTG9nbyA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSW1hZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICB3aWR0aFRlbGEhOiBudW1iZXI7XHJcbiAgaGVpZ3RoVGVsYSE6IG51bWJlcjtcclxuXHJcbiAgc2hvd0Nyb3BNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGltYWdlTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW1hZ2VYOiBudW1iZXIgPSAwO1xyXG4gIGltYWdlWTogbnVtYmVyID0gMDtcclxuICBzdGFydFg6IG51bWJlciA9IDA7XHJcbiAgc3RhcnRZOiBudW1iZXIgPSAwO1xyXG4gIHZhbHVlWm9vbTogbnVtYmVyID0gMjA7XHJcbiAgc2NhbGVGYWN0b3I6IG51bWJlciA9IDI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Nyb3BDYW52YXMnKSBjcm9wQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnY3JvcEJvcmRlcicpIGNyb3BCb3JkZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhbnZhc1dpZHRoID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xyXG4gIGNhbnZhc0hlaWdodCA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuXHJcbiAgaW1hZ2VVcmwgPSBpbnB1dDxzdHJpbmc+KHRoaXMuaW1hZ2VTZXJ2aWNlLnVzZXJEZWZhdWx0SW1hZ2UoKSk7XHJcbiAgaW1hZ2VTb3VyY2UgPSBzaWduYWw8c3RyaW5nPih0aGlzLmltYWdlU2VydmljZS51c2VyRGVmYXVsdEltYWdlKCkpO1xyXG4gIGltZ0NhbnZhID0gc2lnbmFsPEhUTUxJbWFnZUVsZW1lbnR8bnVsbD4obnVsbCk7XHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMud2lkdGhUZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB0aGlzLmhlaWd0aFRlbGEgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB0aGlzLnVwZGF0ZUNhbnZhc1NpemUoKTtcclxuICAgIHRoaXMudXBkYXRlQ3JvcEJvcmRlclNpemUoKTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlU3JjKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLmltYWdlVXJsKCk7XHJcbiAgICBcclxuICAgIGlmIChpbWFnZVVybCAmJiAoaW1hZ2VVcmwuc3RhcnRzV2l0aCgnZGF0YTppbWFnZScpIHx8IGltYWdlVXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSB8fCBpbWFnZVVybC5zdGFydHNXaXRoKCdodHRwcycpKSkge1xyXG4gICAgICAgIHRoaXMuZXhpc3RlTG9nbyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKGltYWdlVXJsICYmIGltYWdlVXJsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmV4aXN0ZUxvZ28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VTb3VyY2Uuc2V0KCdkYXRhOmltYWdlL2pwZztiYXNlNjQsJyArIGltYWdlVXJsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leGlzdGVMb2dvID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbWFnZVNvdXJjZS5zZXQodGhpcy5pbWFnZVNlcnZpY2UudXNlckRlZmF1bHRJbWFnZSgpKTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiAgb3BlbkZpbGUoKSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvdG9Fc2NvbGhpZGEnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKGlucHV0RWxlbWVudCkge1xyXG4gICAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEZvdG9TZWxlY2lvbmFkYShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5vbk1vZGFsT3Blbi5lbWl0KG51bGwpO1xyXG4gICAgICAgIHRoaXMub3BlbkNyb3BNb2RhbCgpO1xyXG4gICAgICAgIHRoaXMuZXhpc3RlTG9nbyA9IGZhbHNlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcXVlc3Rpb25SZW1vdmVyRm90bygpe1xyXG4gICAgY29uc3QgbXNnID0gJzxoMz5Wb2PDqiB0ZW0gY2VydGV6YSBxdWUgZGVzZWphIHJldGlyYXIgYSBmb3RvIGRlc3NlIHVzdcOhcmlvPzwvaDM+JztcclxuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UucXVlc3Rpb24oe1xyXG4gICAgICB0eXBlOiAncXVlc3Rpb24nLFxyXG4gICAgICBtZXNzYWdlOiBtc2csXHJcbiAgICAgIGFjY2VwdDogKGRhdGE6YW55KSA9PlxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVyRm90bygpXHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKGRhdGE6YW55KSA9PiB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlckZvdG8oKSB7XHJcbiAgICB0aGlzLmltYWdlU291cmNlLnNldCgnJylcclxuICAgIHRoaXMucmVtb3ZlckZvdG9FdmVudC5lbWl0KCk7XHJcbiAgICB0aGlzLmV4aXN0ZUxvZ28gPSBmYWxzZTtcclxuICAgIHRoaXMuaW1hZ2VVcmxDaGFuZ2UuZW1pdCh0aGlzLmltYWdlU291cmNlKCkpO1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW1hZ2VFcnJvcihldmVudDogYW55KSB7XHJcbiAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5pbWFnZVNlcnZpY2UudXNlckRlZmF1bHRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8tLS0tLS0tIFJlY29ydGUgZGUgaW1hZ2VtIC0tLS0tLS1cclxuICBcclxuICBvcGVuQ3JvcE1vZGFsKCkge1xyXG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsID0gdHJ1ZTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNyb3BDYW52YXMubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWcuc3JjID0gdGhpcy5zZWxlY3RlZEltYWdlO1xyXG5cclxuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlTG9hZGVkID0gdHJ1ZVxyXG5cclxuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IDQwMDtcclxuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gdGhpcy5yZXRvcm5hVGFtYW5ob0NhbnZhcygpO1xyXG4gICAgICAgICAgICB0aGlzLnNjYWxlRmFjdG9yID0gY2FudmFzLmhlaWdodCAvIGltZy5oZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmltYWdlWCA9IChjYW52YXMud2lkdGggLSBpbWcud2lkdGggKiB0aGlzLnNjYWxlRmFjdG9yKSAvIDI7XHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VZID0gMDsgXHJcblxyXG4gICAgICAgICAgICB0aGlzLmNhbnZhc1dpZHRoLnNldChjYW52YXMud2lkdGgpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbnZhc0hlaWdodC5zZXQoY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlZHJhd0NhbnZhcyhjdHgsIGltZyk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUltYWdlTW92ZShjYW52YXMsIGN0eCwgaW1nKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTW91c2VXaGVlbChjYW52YXMsIGN0eCwgaW1nKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVab29tID0gdGhpcy5zY2FsZUZhY3RvciAqIDIwO1xyXG4gICAgICAgIH07XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGNyb3BJbWFnZSgpIHtcclxuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuY3JvcENhbnZhcy5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBpZiAoY3R4KSB7XHJcbiAgICAgIGNvbnN0IGNyb3BSYWRpdXMgPSB0aGlzLmdldENyb3BSYWRpdXMoKTtcclxuICAgICAgY29uc3QgY2VudGVyWCA9IGNhbnZhcy53aWR0aCAvIDI7XHJcbiAgICAgIGNvbnN0IGNlbnRlclkgPSBjYW52YXMuaGVpZ2h0IC8gMjtcclxuICBcclxuICAgICAgY29uc3QgaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YShjZW50ZXJYIC0gY3JvcFJhZGl1cywgY2VudGVyWSAtIGNyb3BSYWRpdXMsIGNyb3BSYWRpdXMgKiAyLCBjcm9wUmFkaXVzICogMik7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBuZXdDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgY29uc3QgbmV3Q3R4ID0gbmV3Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgIG5ld0NhbnZhcy53aWR0aCA9IGNyb3BSYWRpdXMgKiAyO1xyXG4gICAgICBuZXdDYW52YXMuaGVpZ2h0ID0gY3JvcFJhZGl1cyAqIDI7XHJcbiAgICAgIFxyXG4gICAgICBpZiAobmV3Q3R4KSB7XHJcbiAgICAgICAgbmV3Q3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VTb3VyY2Uuc2V0KG5ld0NhbnZhcy50b0RhdGFVUkwoKSlcclxuICAgICAgICB0aGlzLmltYWdlVXJsQ2hhbmdlLmVtaXQodGhpcy5pbWFnZVNvdXJjZSgpKTtcclxuICAgICAgICB0aGlzLmV4aXN0ZUxvZ28gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2xvc2VDcm9wTW9kYWwoKTtcclxuICAgICAgfSBcclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICBvblpvb21DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5jcm9wQ2FudmFzLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nLnNyYyA9IHRoaXMuc2VsZWN0ZWRJbWFnZTtcclxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgem9vbVZhbHVlID0gZXZlbnQudmFsdWUgLyAyMDtcclxuICAgICAgICB0aGlzLnNjYWxlRmFjdG9yID0gTWF0aC5tYXgoem9vbVZhbHVlLCAwLjEpOyAvLyBHYXJhbnRpciBxdWUgbyBmYXRvciBkZSBlc2NhbGEgbsOjbyBzZWphIG1lbm9yIHF1ZSAwLjFcclxuICAgICAgICB0aGlzLnJlZHJhd0NhbnZhcyhjdHgsIGltZyk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmV0b3JuYVRhbWFuaG9DYW52YXMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLndpZHRoVGVsYSA8IDcwMCA/IHRoaXMud2lkdGhUZWxhICogMC43IDogdGhpcy53aWR0aFRlbGEgKiAwLjRcclxuICB9XHJcblxyXG4gIGNsb3NlQ3JvcE1vZGFsKCkge1xyXG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsID0gZmFsc2U7XHJcbiAgICB0aGlzLnZhbHVlWm9vbSA9IDIwO1xyXG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaW1hZ2VYID0gdGhpcy5pbWdDYW52YSgpPy53aWR0aCEgLyAyO1xyXG4gICAgdGhpcy5pbWFnZVkgPSB0aGlzLmltZ0NhbnZhKCk/LmhlaWdodCEgLyAyO1xyXG4gICAgdGhpcy5zdGFydFggPSAwO1xyXG4gICAgdGhpcy5zdGFydFkgPSAwO1xyXG4gIH1cclxuXHJcbiAgcmVkcmF3Q2FudmFzKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHwgbnVsbCwgaW1nOiBIVE1MSW1hZ2VFbGVtZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNyb3BCb3JkZXJTaXplKClcclxuXHJcbiAgICBpZiAoIWN0eCkgcmV0dXJuO1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgY3R4LmZpbHRlciA9ICdibHVyKDVweCkgb3BhY2l0eSgwLjkpJztcclxuICAgIFxyXG4gICAgY3R4LmRyYXdJbWFnZShpbWcsIHRoaXMuaW1hZ2VYLCB0aGlzLmltYWdlWSwgaW1nLndpZHRoICogdGhpcy5zY2FsZUZhY3RvciwgaW1nLmhlaWdodCAqIHRoaXMuc2NhbGVGYWN0b3IpO1xyXG4gICAgY3R4LmZpbHRlciA9ICdub25lJztcclxuICAgIFxyXG4gICAgdGhpcy5kcmF3SW1hZ2VJbkNyb3BBcmVhKGN0eCwgaW1nKTtcclxuXHJcbiAgICB0aGlzLmRyYXdDcm9wQXJlYShjdHgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZUltYWdlTW92ZShjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwsIGltZzogSFRNTEltYWdlRWxlbWVudCkge1xyXG4gICAgbGV0IGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gJ2dyYWInO1xyXG5cclxuICAgIGNhbnZhcy5vbm1vdXNlZG93biA9IChlKSA9PiB7XHJcbiAgICAgICAgaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgY2FudmFzLnN0eWxlLmN1cnNvciA9ICdncmFiYmluZyc7IFxyXG4gICAgICAgIHRoaXMuc3RhcnRYID0gZS5vZmZzZXRYIC0gdGhpcy5pbWFnZVg7XHJcbiAgICAgICAgdGhpcy5zdGFydFkgPSBlLm9mZnNldFkgLSB0aGlzLmltYWdlWTtcclxuICAgIH07XHJcblxyXG4gICAgY2FudmFzLm9ubW91c2Vtb3ZlID0gKGUpID0+IHtcclxuICAgICAgICBpZiAoaXNEcmFnZ2luZykge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlWCA9IGUub2Zmc2V0WCAtIHRoaXMuc3RhcnRYO1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlWSA9IGUub2Zmc2V0WSAtIHRoaXMuc3RhcnRZO1xyXG4gICAgICAgICAgICB0aGlzLnJlZHJhd0NhbnZhcyhjdHgsIGltZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjYW52YXMub25tb3VzZXVwID0gKCkgPT4ge1xyXG4gICAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gJ2dyYWInO1xyXG4gICAgfTtcclxuXHJcbiAgICBjYW52YXMub25tb3VzZW91dCA9ICgpID0+IHtcclxuICAgICAgICBpc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY2FudmFzLnN0eWxlLmN1cnNvciA9ICdncmFiJztcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplTW91c2VXaGVlbChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwsIGltZzogSFRNTEltYWdlRWxlbWVudCkge1xyXG4gICAgY2FudmFzLm9ud2hlZWwgPSAoZSkgPT4ge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBjb25zdCBkZWx0YSA9IGUuZGVsdGFZID4gMCA/IC0wLjEgOiAwLjE7XHJcbiAgICAgICAgdGhpcy5zY2FsZUZhY3RvciA9IE1hdGgubWluKE1hdGgubWF4KHRoaXMuc2NhbGVGYWN0b3IgKyBkZWx0YSwgMC4xKSwgNSk7IC8vIGxpbWl0YSBvIGZhdG9yIGRlIGVzY2FsYSBlbnRyZSAwLjEgZSA1XHJcbiAgICAgICAgdGhpcy5yZWRyYXdDYW52YXMoY3R4LCBpbWcpO1xyXG4gICAgICAgIHRoaXMudmFsdWVab29tID0gdGhpcy5zY2FsZUZhY3RvciAqIDIwO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBkcmF3SW1hZ2VJbkNyb3BBcmVhKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHwgbnVsbCwgaW1nOiBIVE1MSW1hZ2VFbGVtZW50KSB7XHJcbiAgICBpZiAoIWN0eCkgcmV0dXJuO1xyXG4gIFxyXG4gICAgY29uc3QgY3JvcFJhZGl1cyA9IHRoaXMuZ2V0Q3JvcFJhZGl1cygpO1xyXG4gICAgY29uc3QgY3JvcFggPSAoY3R4LmNhbnZhcy53aWR0aCAtIGNyb3BSYWRpdXMgKiAyKSAvIDI7XHJcbiAgICBjb25zdCBjcm9wWSA9IChjdHguY2FudmFzLmhlaWdodCAtIGNyb3BSYWRpdXMgKiAyKSAvIDI7XHJcbiAgXHJcbiAgICBjdHguc2F2ZSgpO1xyXG4gICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgY3R4LmFyYyhjcm9wWCArIGNyb3BSYWRpdXMsIGNyb3BZICsgY3JvcFJhZGl1cywgY3JvcFJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xyXG4gICAgY3R4LmNsaXAoKTtcclxuICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCB0aGlzLmltYWdlWCwgdGhpcy5pbWFnZVksIGltZy53aWR0aCAqIHRoaXMuc2NhbGVGYWN0b3IsIGltZy5oZWlnaHQgKiB0aGlzLnNjYWxlRmFjdG9yKTtcclxuICAgIGN0eC5yZXN0b3JlKCk7XHJcbiAgfVxyXG4gIFxyXG4gIGRyYXdDcm9wQXJlYShjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwpIHtcclxuICAgIGlmICghY3R4KSByZXR1cm47XHJcbiAgXHJcbiAgICBjb25zdCBjcm9wUmFkaXVzID0gdGhpcy5nZXRDcm9wUmFkaXVzKCk7XHJcbiAgICBjb25zdCBjcm9wWCA9IChjdHguY2FudmFzLndpZHRoIC0gY3JvcFJhZGl1cyAqIDIpIC8gMjtcclxuICAgIGNvbnN0IGNyb3BZID0gKGN0eC5jYW52YXMuaGVpZ2h0IC0gY3JvcFJhZGl1cyAqIDIpIC8gMjtcclxuICBcclxuICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgIGN0eC5hcmMoY3JvcFggKyBjcm9wUmFkaXVzLCBjcm9wWSArIGNyb3BSYWRpdXMsIGNyb3BSYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcclxuICAgIGN0eC5zdHJva2VTdHlsZSA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICBjdHgubGluZVdpZHRoID0gMjtcclxuICAgIGN0eC5zdHJva2UoKTtcclxuICB9XHJcbiAgXHJcbiAgZ2V0Q3JvcFJhZGl1cygpOiBudW1iZXIge1xyXG4gICAgY29uc3QgYmFzZVJhZGl1cyA9IDIwMDsgLy8gUmFpbyBiYXNlIHBhcmEgdW1hIHRlbGEgZGUgcmVmZXLDqm5jaWFcclxuICAgIGNvbnN0IHJlZmVyZW5jZVdpZHRoID0gKHRoaXMud2lkdGhUZWxhICsgMTAwKSA7IC8vIExhcmd1cmEgZGEgdGVsYSBkZSByZWZlcsOqbmNpYVxyXG4gICAgY29uc3Qgc2NhbGVGYWN0b3IgPSB3aW5kb3cuaW5uZXJXaWR0aCAvIHJlZmVyZW5jZVdpZHRoOyAvLyBGYXRvciBkZSBlc2NhbGEgY29tIGJhc2UgbmEgbGFyZ3VyYSBkYSB0ZWxhIGF0dWFsXHJcbiAgICBjb25zdCBkaWFnb25hbCA9IE1hdGguc3FydChNYXRoLnBvdyh0aGlzLmNhbnZhc0hlaWdodCgpISwgMikgKyBNYXRoLnBvdyh0aGlzLmNhbnZhc1dpZHRoKCkhLCAyKSk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkUmFkaXVzID0gKGRpYWdvbmFsIC8gNCk7XHJcbiAgICBjb25zdCBtYXhSYWRpdXMgPSBiYXNlUmFkaXVzICogc2NhbGVGYWN0b3I7IC8vIEFqdXN0YSBvIHJhaW8gY29tIGJhc2Ugbm8gZmF0b3IgZGUgZXNjYWxhXHJcblxyXG4gICAgcmV0dXJuIE1hdGgubWluKGNhbGN1bGF0ZWRSYWRpdXMsIG1heFJhZGl1cyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDcm9wQm9yZGVyU2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLmNyb3BCb3JkZXIgJiYgdGhpcy5jcm9wQm9yZGVyLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5nZXRDcm9wUmFkaXVzKCk7XHJcbiAgICAgIGNvbnN0IGNyb3BCb3JkZXJFbGVtZW50ID0gdGhpcy5jcm9wQm9yZGVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNyb3BCb3JkZXJFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7cmFkaXVzICogMn1weGA7XHJcbiAgICAgIGNyb3BCb3JkZXJFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3JhZGl1cyAqIDJ9cHhgO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICB1cGRhdGVDYW52YXNTaXplKCkge1xyXG4gICAgaWYgKHRoaXMuY3JvcENhbnZhcyAmJiB0aGlzLmNyb3BDYW52YXMubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNyb3BDYW52YXMubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWcuc3JjID0gdGhpcy5zZWxlY3RlZEltYWdlO1xyXG4gICAgICB0aGlzLmltZ0NhbnZhLnNldChpbWcpXHJcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gdGhpcy5yZXRvcm5hVGFtYW5ob0NhbnZhcygpO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSA0MDA7XHJcblxyXG4gICAgICAgIHRoaXMuaW1hZ2VYID0gKGNhbnZhcy53aWR0aCAtIGltZy53aWR0aCAqIHRoaXMuc2NhbGVGYWN0b3IpIC8gMjtcclxuICAgICAgICB0aGlzLmltYWdlWSA9IDA7IC8vIEEgaW1hZ2VtIGNvbWXDp2Egbm8gdG9wbyBkbyBjYW52YXNcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmNhbnZhc1dpZHRoLnNldChjYW52YXMud2lkdGgpXHJcbiAgICAgICAgdGhpcy5jYW52YXNIZWlnaHQuc2V0KGNhbnZhcy5oZWlnaHQpXHJcbiAgICAgICAgdGhpcy5yZWRyYXdDYW52YXMoY3R4LCBpbWcpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIj5cclxuICA8aW1nIFtzcmNdPVwiaW1hZ2VTb3VyY2UoKVwiIGFsdD1cIkZvdG9cIiBjbGFzcz1cImNvbnRhaW5lci1mb3RvXCIgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJib3JkZXJDb2xvclwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCIgKGVycm9yKT1cImhhbmRsZUltYWdlRXJyb3IoJGV2ZW50KVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJidG5cIj5cclxuICAgIDxpbnB1dCAjZmlsZUlucHV0ICpuZ0lmPVwiYnRuQWx0ZXJhckZvdG9cIiBpZD1cImZvdG9Fc2NvbGhpZGFcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIChjaGFuZ2UpPVwic2VsZWN0Rm90b1NlbGVjaW9uYWRhKCRhbnkoJGV2ZW50KSlcIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJidG5BbHRlcmFyRm90byAmJiAhZXhpc3RlTG9nb1wiIGNsYXNzPVwiYm90YW8tYWx0ZXJhci1mb3RvIGJvcmRlci1jaXJjbGVcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidG5zQ29sb3JcIiAoY2xpY2spPVwib3BlbkZpbGUoKVwiPlxyXG4gICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5waG90b19jYW1lcmE8L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIFxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cImJ0bkFsdGVyYXJGb3RvICYmIGV4aXN0ZUxvZ29cIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJidG5zQ29sb3JcIlxyXG4gICAgIGNsYXNzPVwiYm90YW8tZXhjbHVpci1mb3RvIGJvcmRlci1jaXJjbGVcclxuICAgICAgICAgICAgaG92ZXI6c2hhZG93LTNcclxuICAgICAgICAgICAgYWN0aXZlOnNoYWRvdy01XCJcclxuICAgICAoY2xpY2spPVwicXVlc3Rpb25SZW1vdmVyRm90bygpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmRlbGV0ZTwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJzaG93Q3JvcE1vZGFsXCIgY2xhc3M9XCJtb2RhbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY3JvcC1jb250YWluZXJcIj5cclxuICAgICAgPGNhbnZhcyAjY3JvcENhbnZhcyBjbGFzcz1cImNyb3AtY2FudmFzXCI+PC9jYW52YXM+XHJcbiAgICAgIDxkaXYgI2Nyb3BCb3JkZXIgY2xhc3M9XCJjcm9wLWJvcmRlclwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInctZnVsbCBtdC0yXCI+XHJcbiAgICAgIDxrdi1sYWJlbCBsYWJlbD1cIlpvb21cIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCIvPlxyXG4gICAgICA8cC1zbGlkZXIgWyhuZ01vZGVsKV09XCJ2YWx1ZVpvb21cIiAob25DaGFuZ2UpPVwib25ab29tQ2hhbmdlKCRldmVudClcIj48L3Atc2xpZGVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj4gIFxyXG4gICAgICA8a3YtYnV0dG9uIGxhYmVsPVwiQ2FuY2VsYXJcIiBzZXZlcml0eT1cInRlcnRpYXJ5XCIgaWNvbj1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlQ3JvcE1vZGFsKClcIj48L2t2LWJ1dHRvbj5cclxuICAgICAgPGt2LWJ1dHRvbiBsYWJlbD1cIlJlY29ydGFyXCIgc2V2ZXJpdHk9XCJwcmltYXJ5XCIgaWNvbj1cImNyb3BcIiAoY2xpY2spPVwiY3JvcEltYWdlKClcIiBjbGFzcz1cIm1sLTJcIj48L2t2LWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|