keevo-components 2.0.295 → 2.0.297
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/esm2022/lib/api/base-components/base-component-button.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-chart.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-crud-form.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-crud-list.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-crud.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-dropdown.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-input.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-multi-select.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component-table.mjs +4 -4
- package/esm2022/lib/api/base-components/base-component.mjs +4 -4
- package/esm2022/lib/api/directives/directives.module.mjs +5 -5
- package/esm2022/lib/api/directives/drag/drag.directive.mjs +4 -4
- package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +4 -4
- package/esm2022/lib/api/directives/template/template.directive.mjs +4 -4
- package/esm2022/lib/api/modules/primeng.module.mjs +5 -5
- package/esm2022/lib/api/pipes/capitalize.pipe.mjs +4 -4
- package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +4 -4
- package/esm2022/lib/api/pipes/mask.pipe.mjs +4 -4
- package/esm2022/lib/api/pipes/pipes.module.mjs +5 -5
- package/esm2022/lib/api/pipes/telefone.pipe.mjs +4 -4
- package/esm2022/lib/api/services/base.api.service.mjs +4 -4
- package/esm2022/lib/api/services/breadcrumbs.service.mjs +4 -4
- package/esm2022/lib/api/services/chat.service.mjs +4 -4
- package/esm2022/lib/api/services/component.service.mjs +4 -4
- package/esm2022/lib/api/services/docs.service.mjs +4 -4
- package/esm2022/lib/api/services/form.service.mjs +4 -4
- package/esm2022/lib/api/services/image.cutter.service.mjs +7 -7
- package/esm2022/lib/api/services/imagens.service.mjs +4 -4
- package/esm2022/lib/api/services/notification.service.mjs +4 -4
- package/esm2022/lib/api/services/object.service.mjs +4 -4
- package/esm2022/lib/api/services/orgchart.service.mjs +4 -4
- package/esm2022/lib/api/services/pdf.service.mjs +4 -4
- package/esm2022/lib/components/keevo-components.module.mjs +5 -5
- package/esm2022/lib/components/kv-accordion/kv-accordion.component.mjs +4 -4
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +5 -5
- package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +5 -5
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +5 -5
- package/esm2022/lib/components/kv-button/kv-button.module.mjs +5 -5
- package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +4 -4
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +5 -5
- package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +4 -4
- package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +4 -4
- package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +5 -5
- package/esm2022/lib/components/kv-card-color/kv-card-color.component.mjs +4 -4
- package/esm2022/lib/components/kv-card-message/kv-card-message.component.mjs +4 -4
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +4 -4
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +5 -5
- package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +4 -4
- package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +5 -5
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +5 -5
- package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +5 -5
- package/esm2022/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.mjs +4 -4
- package/esm2022/lib/components/kv-confirmation-modal/kv-confirmation-modal.module.mjs +5 -5
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +4 -4
- package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +5 -5
- package/esm2022/lib/components/kv-detailed-list/kv-detailed-list.component.mjs +4 -4
- package/esm2022/lib/components/kv-error/kv-error.component.mjs +4 -4
- package/esm2022/lib/components/kv-error/kv-error.module.mjs +5 -5
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +4 -4
- package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +5 -5
- package/esm2022/lib/components/kv-file-upload-new/kv-file-upload-new.component.mjs +4 -4
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +4 -4
- package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +5 -5
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +4 -4
- package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +5 -5
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +4 -4
- package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +5 -5
- package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.component.mjs +4 -4
- package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.module.mjs +5 -5
- package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.pipe.mjs +4 -4
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +4 -4
- package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +5 -5
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +4 -4
- package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +5 -5
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +4 -4
- package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +5 -5
- package/esm2022/lib/components/kv-icon/kv-icon.component.mjs +5 -5
- package/esm2022/lib/components/kv-icon/kv-icon.module.mjs +5 -5
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +4 -4
- package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +5 -5
- package/esm2022/lib/components/kv-image-upload-new/kv-image-upload-new.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-chips/kv-chips.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +33 -9
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.mjs +31 -5
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.mjs +22 -7
- package/esm2022/lib/components/kv-inputs/kv-editor/types/kv-editor.types.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +4 -4
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +5 -5
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +5 -5
- package/esm2022/lib/components/kv-instruction-page/components/cards-instruction/kv-cards-instruction.component.mjs +4 -4
- package/esm2022/lib/components/kv-instruction-page/kv-instruction-page.component.mjs +4 -4
- package/esm2022/lib/components/kv-kanban/kv-kanban.component.mjs +4 -4
- package/esm2022/lib/components/kv-label/kv-label.component.mjs +4 -4
- package/esm2022/lib/components/kv-label/kv-label.module.mjs +5 -5
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +4 -4
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +5 -5
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +5 -5
- package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +4 -4
- package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +4 -4
- package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +5 -5
- package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +4 -4
- package/esm2022/lib/components/kv-login/kv-login.component.mjs +4 -4
- package/esm2022/lib/components/kv-login/kv-login.module.mjs +5 -5
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +4 -4
- package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +5 -5
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +4 -4
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +5 -5
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +4 -4
- package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +5 -5
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +5 -5
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +5 -5
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +5 -5
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +5 -5
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +4 -4
- package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +5 -5
- package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.mjs +4 -4
- package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.module.mjs +5 -5
- package/esm2022/lib/components/kv-progress-bar-new/kv-progress-bar-new.component.mjs +4 -4
- package/esm2022/lib/components/kv-report/kv-report.component.mjs +4 -4
- package/esm2022/lib/components/kv-report/kv-report.module.mjs +5 -5
- package/esm2022/lib/components/kv-select-cards/kv-select-cards.component.mjs +4 -4
- package/esm2022/lib/components/kv-stacked-bar-chart/kv-stacked-bar-chart.component.mjs +7 -6
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +5 -5
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +5 -5
- package/esm2022/lib/components/kv-steps/kv-steps.component.mjs +4 -4
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +5 -5
- package/esm2022/lib/components/kv-table/kv-table.module.mjs +5 -5
- package/esm2022/lib/components/kv-table-draggable/kv-table-draggable.component.mjs +4 -4
- package/esm2022/lib/components/kv-table-draggable/kv-table-draggable.module.mjs +5 -5
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +4 -4
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +5 -5
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +4 -4
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +5 -5
- package/esm2022/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.mjs +4 -4
- package/esm2022/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.mjs +4 -4
- package/esm2022/lib/components/kv-table-viewer/kv-table-viewer.component.mjs +4 -4
- package/esm2022/lib/components/kv-tag/kv-tag.component.mjs +4 -4
- package/esm2022/lib/components/kv-tag/kv-tag.module.mjs +5 -5
- package/esm2022/lib/components/kv-tags/kv-tags.component.mjs +4 -4
- package/esm2022/lib/components/kv-tags/kv-tags.module.mjs +5 -5
- package/esm2022/lib/components/kv-timeline/kv-timeline.component.mjs +4 -4
- package/esm2022/lib/components/kv-tree-environment/components/kv-tree-environment/kv-tree-environment.component.mjs +4 -4
- package/esm2022/lib/components/kv-tree-environment/components/no-arvore/no-arvore.component.mjs +4 -4
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +4 -4
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +5 -5
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +4 -4
- package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +5 -5
- package/esm2022/lib/components/kv-widget-card/kv-widget-card.component.mjs +5 -5
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +4 -4
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +5 -5
- package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +4 -4
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +4 -4
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +4 -4
- package/fesm2022/keevo-components.mjs +673 -607
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +1 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.d.ts +4 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.d.ts +4 -0
- package/lib/components/kv-inputs/kv-editor/types/kv-editor.types.d.ts +4 -2
- package/lib/components/kv-stacked-bar-chart/kv-stacked-bar-chart.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -8,21 +8,21 @@ import { PrimeNgModule } from '../../api/modules/primeng.module';
|
|
|
8
8
|
import { KvButtonModule } from '../kv-button/kv-button.module';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class KvTableExpandableModule {
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTableExpandableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: KvTableExpandableModule, declarations: [KvTableExpandableComponent], imports: [CommonModule,
|
|
13
13
|
PrimeNgModule,
|
|
14
14
|
FormsModule,
|
|
15
15
|
KvInputsModule,
|
|
16
16
|
KvButtonsModule,
|
|
17
17
|
KvButtonModule], exports: [KvTableExpandableComponent] }); }
|
|
18
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.
|
|
18
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTableExpandableModule, imports: [CommonModule,
|
|
19
19
|
PrimeNgModule,
|
|
20
20
|
FormsModule,
|
|
21
21
|
KvInputsModule,
|
|
22
22
|
KvButtonsModule,
|
|
23
23
|
KvButtonModule] }); }
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTableExpandableModule, decorators: [{
|
|
26
26
|
type: NgModule,
|
|
27
27
|
args: [{
|
|
28
28
|
declarations: [KvTableExpandableComponent],
|
|
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
37
37
|
exports: [KvTableExpandableComponent]
|
|
38
38
|
}]
|
|
39
39
|
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtZXhwYW5kYWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10YWJsZS1leHBhbmRhYmxlL2t2LXRhYmxlLWV4cGFuZGFibGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBYy9ELE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGlCQVhuQiwwQkFBMEIsYUFFdkMsWUFBWTtZQUNaLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztZQUNkLGVBQWU7WUFDZixjQUFjLGFBRU4sMEJBQTBCO2dIQUV6Qix1QkFBdUIsWUFUaEMsWUFBWTtZQUNaLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztZQUNkLGVBQWU7WUFDZixjQUFjOzs0RkFJTCx1QkFBdUI7a0JBWm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBLdlRhYmxlRXhwYW5kYWJsZUNvbXBvbmVudCB9IGZyb20gJy4va3YtdGFibGUtZXhwYW5kYWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgS3ZCdXR0b25zTW9kdWxlIH0gZnJvbSAnLi4va3YtYnV0dG9ucy9rdi1idXR0b24ubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi9rdi1pbnB1dHMva3YtaW5wdXRzLm1vZHVsZSc7XHJcbmltcG9ydCB7IFByaW1lTmdNb2R1bGUgfSBmcm9tICcuLi8uLi9hcGkvbW9kdWxlcy9wcmltZW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IEt2QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4va3YtYnV0dG9uL2t2LWJ1dHRvbi5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtLdlRhYmxlRXhwYW5kYWJsZUNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUHJpbWVOZ01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgS3ZJbnB1dHNNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbnNNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW0t2VGFibGVFeHBhbmRhYmxlQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUYWJsZUV4cGFuZGFibGVNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -7,11 +7,11 @@ export class ActionsLoteFieldComponent {
|
|
|
7
7
|
this.selectedItems = input([]);
|
|
8
8
|
this.actionsLote = input(undefined);
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsLoteFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ActionsLoteFieldComponent, isStandalone: true, selector: "actions-lote-field", inputs: { selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null }, actionsLote: { classPropertyName: "actionsLote", publicName: "actionsLote", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\r\n class=\"h-full flex flex-column gap-8 align-items-center justify-content-center\"\r\n>\r\n <div class=\"flex flex-column gap-3 align-items-center justify-content-center\">\r\n <img\r\n src=\"https://work-assets.keevo.com.br/img/Sem_Dados.png\"\r\n class=\"h-5rem w-auto\"\r\n />\r\n <span class=\"text-gray-600 text-sm font-medium\"\r\n >{{ this.selectedItems()?.length }} itens selecionados</span\r\n >\r\n </div>\r\n\r\n <div class=\"flex flex-column gap-2\">\r\n @if(actionsLote()) { @for(action of actionsLote(); track $index) {\r\n <kv-button\r\n [icon]=\"action?.icon || ''\"\r\n [label]=\"action?.label || ''\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n (onClick)=\"action?.command($event)\"\r\n />\r\n } }\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: KvButtonModule }, { kind: "component", type: i1.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup", "popupIcon"], outputs: ["iconChange", "onClick"] }] }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsLoteFieldComponent, decorators: [{
|
|
14
14
|
type: Component,
|
|
15
15
|
args: [{ selector: 'actions-lote-field', standalone: true, imports: [KvButtonModule], template: "<div\r\n class=\"h-full flex flex-column gap-8 align-items-center justify-content-center\"\r\n>\r\n <div class=\"flex flex-column gap-3 align-items-center justify-content-center\">\r\n <img\r\n src=\"https://work-assets.keevo.com.br/img/Sem_Dados.png\"\r\n class=\"h-5rem w-auto\"\r\n />\r\n <span class=\"text-gray-600 text-sm font-medium\"\r\n >{{ this.selectedItems()?.length }} itens selecionados</span\r\n >\r\n </div>\r\n\r\n <div class=\"flex flex-column gap-2\">\r\n @if(actionsLote()) { @for(action of actionsLote(); track $index) {\r\n <kv-button\r\n [icon]=\"action?.icon || ''\"\r\n [label]=\"action?.label || ''\"\r\n severity=\"secondary\"\r\n type=\"text\"\r\n (onClick)=\"action?.command($event)\"\r\n />\r\n } }\r\n </div>\r\n</div>\r\n" }]
|
|
16
16
|
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1sb3RlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhYmxlLXZpZXdlci9jb21wb25lbnRzL2FjdGlvbnMtbG90ZS1maWVsZC9hY3Rpb25zLWxvdGUtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2NvbXBvbmVudHMvYWN0aW9ucy1sb3RlLWZpZWxkL2FjdGlvbnMtbG90ZS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUE7OztBQVNwRSxNQUFNLE9BQU8seUJBQXlCO0lBUHRDO1FBU0Usa0JBQWEsR0FBRyxLQUFLLENBQVEsRUFBRSxDQUFDLENBQUM7UUFFakMsZ0JBQVcsR0FBRyxLQUFLLENBQXlCLFNBQVMsQ0FBQyxDQUFDO0tBQ3hEOytHQUxZLHlCQUF5QjttR0FBekIseUJBQXlCLG9YQ1h0Qyx3ekJBeUJBLHlERGxCWSxjQUFjOzs0RkFJYix5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEt2QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4va3YtYnV0dG9uL2t2LWJ1dHRvbi5tb2R1bGUnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FjdGlvbnMtbG90ZS1maWVsZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbS3ZCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zLWxvdGUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hY3Rpb25zLWxvdGUtZmllbGQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25zTG90ZUZpZWxkQ29tcG9uZW50IHtcclxuXHJcbiAgc2VsZWN0ZWRJdGVtcyA9IGlucHV0PGFueVtdPihbXSk7XHJcblxyXG4gIGFjdGlvbnNMb3RlID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbHVtbiBnYXAtOCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgPGltZ1xyXG4gICAgICBzcmM9XCJodHRwczovL3dvcmstYXNzZXRzLmtlZXZvLmNvbS5ici9pbWcvU2VtX0RhZG9zLnBuZ1wiXHJcbiAgICAgIGNsYXNzPVwiaC01cmVtIHctYXV0b1wiXHJcbiAgICAvPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc20gZm9udC1tZWRpdW1cIlxyXG4gICAgICA+e3sgdGhpcy5zZWxlY3RlZEl0ZW1zKCk/Lmxlbmd0aCB9fSBpdGVucyBzZWxlY2lvbmFkb3M8L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIj5cclxuICAgIEBpZihhY3Rpb25zTG90ZSgpKSB7IEBmb3IoYWN0aW9uIG9mIGFjdGlvbnNMb3RlKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgPGt2LWJ1dHRvblxyXG4gICAgICBbaWNvbl09XCJhY3Rpb24/Lmljb24gfHwgJydcIlxyXG4gICAgICBbbGFiZWxdPVwiYWN0aW9uPy5sYWJlbCB8fCAnJ1wiXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAob25DbGljayk9XCJhY3Rpb24/LmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gICAgfSB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -8,11 +8,11 @@ export class ActionsRowMenuComponent {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.actionsRow = input(undefined);
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsRowMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ActionsRowMenuComponent, isStandalone: true, selector: "actions-row-menu", inputs: { actionsRow: { classPropertyName: "actionsRow", publicName: "actionsRow", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span\r\n class=\"text-lg right-0 pr-2 material-symbols-outlined cursor-pointer text-gray-800 hover:text-gray-600 transition-all transition-duration-300 absolute\"\r\n (click)=\"menu.toggle($event)\"\r\n>\r\n more_vert\r\n</span>\r\n\r\n<p-tieredMenu #menu [popup]=\"true\" [model]=\"actionsRow()\" appendTo=\"body\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div\r\n [pTooltip]=\"item.tooltip\"\r\n tooltipPosition=\"left\"\r\n class=\"cursor-pointer h-2rem flex align-items-center\"\r\n >\r\n <span class=\"text-sm pl-2\">\r\n {{ item.label }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n</p-tieredMenu>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TieredMenuModule }, { kind: "component", type: i1.TieredMenu, selector: "p-tieredMenu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
|
|
13
13
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsRowMenuComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{ selector: 'actions-row-menu', standalone: true, imports: [TieredMenuModule], template: "<span\r\n class=\"text-lg right-0 pr-2 material-symbols-outlined cursor-pointer text-gray-800 hover:text-gray-600 transition-all transition-duration-300 absolute\"\r\n (click)=\"menu.toggle($event)\"\r\n>\r\n more_vert\r\n</span>\r\n\r\n<p-tieredMenu #menu [popup]=\"true\" [model]=\"actionsRow()\" appendTo=\"body\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div\r\n [pTooltip]=\"item.tooltip\"\r\n tooltipPosition=\"left\"\r\n class=\"cursor-pointer h-2rem flex align-items-center\"\r\n >\r\n <span class=\"text-sm pl-2\">\r\n {{ item.label }}\r\n </span>\r\n </div>\r\n </ng-template>\r\n</p-tieredMenu>\r\n" }]
|
|
17
17
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1yb3ctbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10YWJsZS12aWV3ZXIvY29tcG9uZW50cy9hY3Rpb25zLXJvdy1tZW51L2FjdGlvbnMtcm93LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2NvbXBvbmVudHMvYWN0aW9ucy1yb3ctbWVudS9hY3Rpb25zLXJvdy1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVN0RCxNQUFNLE9BQU8sdUJBQXVCO0lBUHBDO1FBUUUsZUFBVSxHQUFHLEtBQUssQ0FBeUIsU0FBUyxDQUFDLENBQUM7S0FDdkQ7K0dBRlksdUJBQXVCO21HQUF2Qix1QkFBdUIsK05DWHBDLDJwQkFvQkEseUREYlksZ0JBQWdCOzs0RkFJZix1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVGllcmVkTWVudU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGllcmVkbWVudSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FjdGlvbnMtcm93LW1lbnUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1RpZXJlZE1lbnVNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zLXJvdy1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWN0aW9ucy1yb3ctbWVudS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGlvbnNSb3dNZW51Q29tcG9uZW50IHtcclxuICBhY3Rpb25zUm93ID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxufVxyXG4iLCI8c3BhblxyXG4gIGNsYXNzPVwidGV4dC1sZyByaWdodC0wIHByLTIgbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjdXJzb3ItcG9pbnRlciB0ZXh0LWdyYXktODAwIGhvdmVyOnRleHQtZ3JheS02MDAgdHJhbnNpdGlvbi1hbGwgdHJhbnNpdGlvbi1kdXJhdGlvbi0zMDAgYWJzb2x1dGVcIlxyXG4gIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpXCJcclxuPlxyXG4gIG1vcmVfdmVydFxyXG48L3NwYW4+XHJcblxyXG48cC10aWVyZWRNZW51ICNtZW51IFtwb3B1cF09XCJ0cnVlXCIgW21vZGVsXT1cImFjdGlvbnNSb3coKVwiIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtwVG9vbHRpcF09XCJpdGVtLnRvb2x0aXBcIlxyXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBoLTJyZW0gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gcGwtMlwiPlxyXG4gICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRpZXJlZE1lbnU+XHJcbiJdfQ==
|
|
@@ -243,8 +243,8 @@ export class KvTableViewerComponent {
|
|
|
243
243
|
ngOnDestroy() {
|
|
244
244
|
this.removeOverlay();
|
|
245
245
|
}
|
|
246
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
247
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvTableViewerComponent, isStandalone: true, selector: "kv-table-viewer", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, actionsRow: { classPropertyName: "actionsRow", publicName: "actionsRow", isSignal: true, isRequired: false, transformFunction: null }, actionsHeader: { classPropertyName: "actionsHeader", publicName: "actionsHeader", isSignal: true, isRequired: false, transformFunction: null }, actionsLote: { classPropertyName: "actionsLote", publicName: "actionsLote", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, pageLinks: { classPropertyName: "pageLinks", publicName: "pageLinks", isSignal: true, isRequired: false, transformFunction: null }, currentPageReportTemplate: { classPropertyName: "currentPageReportTemplate", publicName: "currentPageReportTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectionPageOnly: { classPropertyName: "selectionPageOnly", publicName: "selectionPageOnly", isSignal: true, isRequired: false, transformFunction: null }, selectableTable: { classPropertyName: "selectableTable", publicName: "selectableTable", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, showHeaderTemplate: { classPropertyName: "showHeaderTemplate", publicName: "showHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, showHeaderBetweenTemplate: { classPropertyName: "showHeaderBetweenTemplate", publicName: "showHeaderBetweenTemplate", isSignal: true, isRequired: false, transformFunction: null }, tableViewerSize: { classPropertyName: "tableViewerSize", publicName: "tableViewerSize", isSignal: true, isRequired: false, transformFunction: null }, searchInput: { classPropertyName: "searchInput", publicName: "searchInput", isSignal: true, isRequired: false, transformFunction: null }, filterButton: { classPropertyName: "filterButton", publicName: "filterButton", isSignal: true, isRequired: false, transformFunction: null }, idName: { classPropertyName: "idName", publicName: "idName", isSignal: true, isRequired: false, transformFunction: null }, emptyTableImg: { classPropertyName: "emptyTableImg", publicName: "emptyTableImg", isSignal: true, isRequired: false, transformFunction: null }, isSelectedPrimaryItem: { classPropertyName: "isSelectedPrimaryItem", publicName: "isSelectedPrimaryItem", isSignal: true, isRequired: false, transformFunction: null }, _templates: { classPropertyName: "_templates", publicName: "templates", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageChange: "onPageChange", onClickRowItem: "onClickRowItem", onSelectItems: "onSelectItems", onSearch: "onSearch", onSort: "onSort", onCheckboxSelectable: "onCheckboxSelectable", onCheckboxUnselectable: "onCheckboxUnselectable" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "op", first: true, predicate: ["op"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"h-full flex flex-row p-2 kv-table-viewer overflow-hidden {{\r\n isEmptyTable() ? 'empty-table' : ''\r\n }}\"\r\n>\r\n @if (!isMobile() || selectedItem()) {\r\n <div\r\n class=\"h-full {{ handleTableSize() }} m-0 p-0 flex flex-column gap-2\"\r\n [style.transition]=\"'all 0.3s ease-in-out'\"\r\n >\r\n @if (showHeaderTemplate()) {\r\n <div>\r\n <ng-content select=\"[tableHeaderTemplate]\"> </ng-content>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center justify-content-between flex-initial\"\r\n >\r\n <div class=\"flex flex-row align-items-center gap-2\">\r\n @if (searchInput()) {\r\n <input\r\n style=\"height: 1.875rem\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n pInputText\r\n [(ngModel)]=\"searchValue\"\r\n class=\"text-xs\"\r\n />\r\n }\r\n @if (filterButton()) {\r\n <kv-button\r\n label=\"Filtrar\"\r\n icon=\"filter_alt\"\r\n severity=\"tertiary\"\r\n (onClick)=\"toggleOverlayPanel($event)\"\r\n ></kv-button>\r\n }\r\n\r\n @if (showHeaderBetweenTemplate()) {\r\n <div>\r\n <ng-content select=\"[tableHeaderBetweenTemplate]\"> </ng-content>\r\n </div>\r\n }\r\n\r\n <p-overlayPanel #op [dismissable]=\"false\">\r\n <ng-content select=\"[filtro]\"> </ng-content>\r\n </p-overlayPanel>\r\n </div>\r\n <div class=\"flex flex-row gap-2\">\r\n @if (actionsHeader()) {\r\n @for (action of actionsHeader(); track $index) {\r\n <kv-button\r\n [icon]=\"action?.icon || ''\"\r\n [label]=\"action?.label || ''\"\r\n [severity]=\"action['severity'] || 'tertiary'\"\r\n (onClick)=\"action?.command($event)\"\r\n [popupIcon]=\"false\"\r\n [items]=\"action.items || []\"\r\n [popup]=\"isPopupButton()(action)\"\r\n [pTooltip]=\"action?.tooltip\"\r\n ></kv-button>\r\n }\r\n }\r\n @if (selectedItem()) {\r\n <kv-button\r\n [pTooltip]=\"'Recolher'\"\r\n icon=\"reorder\"\r\n severity=\"tertiary\"\r\n (onClick)=\"selectedItem.set(null)\"\r\n ></kv-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-1 h-full overflow-hidden\">\r\n <p-table\r\n [value]=\"data()\"\r\n [lazy]=\"lazy()\"\r\n [selectionPageOnly]=\"selectionPageOnly()\"\r\n [columns]=\"columns()\"\r\n [paginator]=\"paginator()\"\r\n [rows]=\"rows()\"\r\n [totalRecords]=\"totalRecords()\"\r\n [loading]=\"loading()\"\r\n [pageLinks]=\"pageLinks()\"\r\n [first]=\"first()\"\r\n [scrollable]=\"scrollable()\"\r\n scrollHeight=\"flex\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\r\n (onPage)=\"handlePageChange($event)\"\r\n (onSort)=\"handleSort($event)\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\r\n (onRowSelect)=\"onCheckboxSelect($event)\"\r\n (onRowUnselect)=\"onCheckboxUnselect($event)\"\r\n [(selection)]=\"selectedItems\"\r\n styleClass=\"p-datatable-sm text-xs overflow-y-auto h-full flex flex-column h-full\"\r\n >\r\n @if (showHeader()) {\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @if (selectableTable()) {\r\n <th style=\"width: 4rem\"><p-tableHeaderCheckbox /></th>\r\n }\r\n @for (col of columns; track col.field) {\r\n <th\r\n [pSortableColumn]=\"col.field\"\r\n [pSortableColumnDisabled]=\"!col?.sortable\"\r\n [style]=\"{ width: col.width || 'auto' }\"\r\n >\r\n <div class=\"flex flex-row align-items-center gap-1\">\r\n <span>{{ col.header }}</span>\r\n @if (col.sortable) {\r\n <p-sortIcon\r\n [field]=\"col.field\"\r\n class=\"pb-1\"\r\n ></p-sortIcon>\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\r\n <tr\r\n class=\"cursor-pointer hover:bg-bluegray-100\"\r\n [ngClass]=\"{\r\n 'bg-bluegray-50 selected-row':\r\n rowData == selectedItem(),\r\n }\"\r\n >\r\n @if (selectableTable()) {\r\n <td>\r\n <p-tableCheckbox [value]=\"rowData\" />\r\n </td>\r\n }\r\n @for (col of columns; track col.field) {\r\n <td (click)=\"rowSelect(rowData)\" style=\"word-break: break-all\">\r\n @if (col?.template) {\r\n <div class=\"flex flex-row gap-2 align-items-center\">\r\n @if (getCustomTemplate()(col.template.name)) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n getCustomTemplate()(col.template.name)\r\n \"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n />\r\n }\r\n </div>\r\n } @else if (col?.icon) {\r\n <span class=\"material-symbols-outlined text-lg\">\r\n {{ col.icon(rowData) }}\r\n </span>\r\n } @else if (col?.tag) {\r\n <kv-tags [tags]=\"[col.tag(rowData)]\" />\r\n } @else {\r\n <span\r\n [ngClass]=\"{\r\n 'font-semibold': rowData == selectedItem(),\r\n }\"\r\n >\r\n {{ transformData()(col.pipe, rowData[col.field]) }}\r\n </span>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"returnColspan()\">\r\n <div\r\n class=\"w-full h-full flex align-items-center justify-content-center\"\r\n >\r\n <img [src]=\"emptyTableImg()\" class=\"h-10rem w-auto\" />\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"shadow-2 p-0 m-0 col selected-item-field ml-2 flex flex-column\"\r\n [@slideInOut]=\"isRowSelected() ? 'i.n' : 'out'\"\r\n [style.overflow]=\"'hidden'\"\r\n >\r\n <!-- @if(hasSelectedItems()) {\r\n <actions-lote-field\r\n class=\"h-full\"\r\n [selectedItems]=\"selectedItems()\"\r\n [actionsLote]=\"actionsLote()\"\r\n />\r\n } @else -->\r\n @if (showSelectedItem()) {\r\n <div class=\"bg-bluegray-50 w-full h-auto p-2 relative\">\r\n @if (hasActionsRow()) {\r\n <actions-row-menu [actionsRow]=\"actionsRow()\" />\r\n }\r\n\r\n @if (isMobile()) {\r\n <div class=\"h-2rem w-2rem\">\r\n <kv-button\r\n icon=\"arrow_back\"\r\n severity=\"tertiary\"\r\n [pTooltip]=\"'Voltar'\"\r\n (onClick)=\"selectedItem.set(null)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[selectedItemHeader]\"></ng-content>\r\n </div>\r\n <div class=\"p-2 overflow-y-auto h-full\">\r\n <ng-content select=\"[selectedItem]\"></ng-content>\r\n </div>\r\n }\r\n\r\n <!-- @else { Nenhum item selecionado } -->\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep .filter-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:transparent;z-index:1299}::ng-deep .p-overlaypanel{z-index:1400!important}::ng-deep .kv-table-viewer .p-datatable-wrapper{overflow-x:hidden}::ng-deep .kv-table-viewer .p-paginator .p-paginator-pages .p-paginator-page{font-size:.75rem;min-width:2rem;height:2rem}::ng-deep .kv-table-viewer .p-paginator .p-paginator-current{font-size:.75rem}::ng-deep .kv-table-viewer .p-inputwrapper .p-dropdown{margin:0;height:auto}::ng-deep .p-paginator-rpp-options .p-dropdown-panel .p-dropdown-items{padding:.25rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item{border-radius:.25rem;height:1.5rem;display:flex;align-items:center;justify-content:center}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-label{padding:.5rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-trigger{width:1.5rem}::ng-deep .p-paginator-bottom .p-link{min-width:2rem;height:2rem}::ng-deep .p-paginator{padding:0rem}::ng-deep .p-dropdown-label{font-size:.75rem}::ng-deep .empty-table .p-datatable-table{height:100%}::ng-deep .p-menu{padding:.25rem}::ng-deep .p-menu-list .p-menuitem .p-menuitem-content .p-menuitem-link{font-size:.75rem;padding:.5rem}::ng-deep .selected-row{box-shadow:inset 2px 0 #0a3a78}\n"], dependencies: [{ kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i4.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i4.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: KvInputsModule }, { kind: "ngmodule", type: KvButtonModule }, { kind: "component", type: i6.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup", "popupIcon"], outputs: ["iconChange", "onClick"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: KvTagsModule }, { kind: "component", type: i8.KvTagsComponent, selector: "kv-tags", inputs: ["tags", "hover", "clickable"], outputs: ["onClickTag"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "component", type: ActionsRowMenuComponent, selector: "actions-row-menu", inputs: ["actionsRow"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
|
|
246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTableViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: KvTableViewerComponent, isStandalone: true, selector: "kv-table-viewer", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, actionsRow: { classPropertyName: "actionsRow", publicName: "actionsRow", isSignal: true, isRequired: false, transformFunction: null }, actionsHeader: { classPropertyName: "actionsHeader", publicName: "actionsHeader", isSignal: true, isRequired: false, transformFunction: null }, actionsLote: { classPropertyName: "actionsLote", publicName: "actionsLote", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, pageLinks: { classPropertyName: "pageLinks", publicName: "pageLinks", isSignal: true, isRequired: false, transformFunction: null }, currentPageReportTemplate: { classPropertyName: "currentPageReportTemplate", publicName: "currentPageReportTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectionPageOnly: { classPropertyName: "selectionPageOnly", publicName: "selectionPageOnly", isSignal: true, isRequired: false, transformFunction: null }, selectableTable: { classPropertyName: "selectableTable", publicName: "selectableTable", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, showHeaderTemplate: { classPropertyName: "showHeaderTemplate", publicName: "showHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, showHeaderBetweenTemplate: { classPropertyName: "showHeaderBetweenTemplate", publicName: "showHeaderBetweenTemplate", isSignal: true, isRequired: false, transformFunction: null }, tableViewerSize: { classPropertyName: "tableViewerSize", publicName: "tableViewerSize", isSignal: true, isRequired: false, transformFunction: null }, searchInput: { classPropertyName: "searchInput", publicName: "searchInput", isSignal: true, isRequired: false, transformFunction: null }, filterButton: { classPropertyName: "filterButton", publicName: "filterButton", isSignal: true, isRequired: false, transformFunction: null }, idName: { classPropertyName: "idName", publicName: "idName", isSignal: true, isRequired: false, transformFunction: null }, emptyTableImg: { classPropertyName: "emptyTableImg", publicName: "emptyTableImg", isSignal: true, isRequired: false, transformFunction: null }, isSelectedPrimaryItem: { classPropertyName: "isSelectedPrimaryItem", publicName: "isSelectedPrimaryItem", isSignal: true, isRequired: false, transformFunction: null }, _templates: { classPropertyName: "_templates", publicName: "templates", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageChange: "onPageChange", onClickRowItem: "onClickRowItem", onSelectItems: "onSelectItems", onSearch: "onSearch", onSort: "onSort", onCheckboxSelectable: "onCheckboxSelectable", onCheckboxUnselectable: "onCheckboxUnselectable" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "op", first: true, predicate: ["op"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"h-full flex flex-row p-2 kv-table-viewer overflow-hidden {{\r\n isEmptyTable() ? 'empty-table' : ''\r\n }}\"\r\n>\r\n @if (!isMobile() || selectedItem()) {\r\n <div\r\n class=\"h-full {{ handleTableSize() }} m-0 p-0 flex flex-column gap-2\"\r\n [style.transition]=\"'all 0.3s ease-in-out'\"\r\n >\r\n @if (showHeaderTemplate()) {\r\n <div>\r\n <ng-content select=\"[tableHeaderTemplate]\"> </ng-content>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center justify-content-between flex-initial\"\r\n >\r\n <div class=\"flex flex-row align-items-center gap-2\">\r\n @if (searchInput()) {\r\n <input\r\n style=\"height: 1.875rem\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n pInputText\r\n [(ngModel)]=\"searchValue\"\r\n class=\"text-xs\"\r\n />\r\n }\r\n @if (filterButton()) {\r\n <kv-button\r\n label=\"Filtrar\"\r\n icon=\"filter_alt\"\r\n severity=\"tertiary\"\r\n (onClick)=\"toggleOverlayPanel($event)\"\r\n ></kv-button>\r\n }\r\n\r\n @if (showHeaderBetweenTemplate()) {\r\n <div>\r\n <ng-content select=\"[tableHeaderBetweenTemplate]\"> </ng-content>\r\n </div>\r\n }\r\n\r\n <p-overlayPanel #op [dismissable]=\"false\">\r\n <ng-content select=\"[filtro]\"> </ng-content>\r\n </p-overlayPanel>\r\n </div>\r\n <div class=\"flex flex-row gap-2\">\r\n @if (actionsHeader()) {\r\n @for (action of actionsHeader(); track $index) {\r\n <kv-button\r\n [icon]=\"action?.icon || ''\"\r\n [label]=\"action?.label || ''\"\r\n [severity]=\"action['severity'] || 'tertiary'\"\r\n (onClick)=\"action?.command($event)\"\r\n [popupIcon]=\"false\"\r\n [items]=\"action.items || []\"\r\n [popup]=\"isPopupButton()(action)\"\r\n [pTooltip]=\"action?.tooltip\"\r\n ></kv-button>\r\n }\r\n }\r\n @if (selectedItem()) {\r\n <kv-button\r\n [pTooltip]=\"'Recolher'\"\r\n icon=\"reorder\"\r\n severity=\"tertiary\"\r\n (onClick)=\"selectedItem.set(null)\"\r\n ></kv-button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-1 h-full overflow-hidden\">\r\n <p-table\r\n [value]=\"data()\"\r\n [lazy]=\"lazy()\"\r\n [selectionPageOnly]=\"selectionPageOnly()\"\r\n [columns]=\"columns()\"\r\n [paginator]=\"paginator()\"\r\n [rows]=\"rows()\"\r\n [totalRecords]=\"totalRecords()\"\r\n [loading]=\"loading()\"\r\n [pageLinks]=\"pageLinks()\"\r\n [first]=\"first()\"\r\n [scrollable]=\"scrollable()\"\r\n scrollHeight=\"flex\"\r\n [showCurrentPageReport]=\"true\"\r\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\r\n (onPage)=\"handlePageChange($event)\"\r\n (onSort)=\"handleSort($event)\"\r\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\r\n (onRowSelect)=\"onCheckboxSelect($event)\"\r\n (onRowUnselect)=\"onCheckboxUnselect($event)\"\r\n [(selection)]=\"selectedItems\"\r\n styleClass=\"p-datatable-sm text-xs overflow-y-auto h-full flex flex-column h-full\"\r\n >\r\n @if (showHeader()) {\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @if (selectableTable()) {\r\n <th style=\"width: 4rem\"><p-tableHeaderCheckbox /></th>\r\n }\r\n @for (col of columns; track col.field) {\r\n <th\r\n [pSortableColumn]=\"col.field\"\r\n [pSortableColumnDisabled]=\"!col?.sortable\"\r\n [style]=\"{ width: col.width || 'auto' }\"\r\n >\r\n <div class=\"flex flex-row align-items-center gap-1\">\r\n <span>{{ col.header }}</span>\r\n @if (col.sortable) {\r\n <p-sortIcon\r\n [field]=\"col.field\"\r\n class=\"pb-1\"\r\n ></p-sortIcon>\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n }\r\n\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\r\n <tr\r\n class=\"cursor-pointer hover:bg-bluegray-100\"\r\n [ngClass]=\"{\r\n 'bg-bluegray-50 selected-row':\r\n rowData == selectedItem(),\r\n }\"\r\n >\r\n @if (selectableTable()) {\r\n <td>\r\n <p-tableCheckbox [value]=\"rowData\" />\r\n </td>\r\n }\r\n @for (col of columns; track col.field) {\r\n <td (click)=\"rowSelect(rowData)\" style=\"word-break: break-all\">\r\n @if (col?.template) {\r\n <div class=\"flex flex-row gap-2 align-items-center\">\r\n @if (getCustomTemplate()(col.template.name)) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n getCustomTemplate()(col.template.name)\r\n \"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n />\r\n }\r\n </div>\r\n } @else if (col?.icon) {\r\n <span class=\"material-symbols-outlined text-lg\">\r\n {{ col.icon(rowData) }}\r\n </span>\r\n } @else if (col?.tag) {\r\n <kv-tags [tags]=\"[col.tag(rowData)]\" />\r\n } @else {\r\n <span\r\n [ngClass]=\"{\r\n 'font-semibold': rowData == selectedItem(),\r\n }\"\r\n >\r\n {{ transformData()(col.pipe, rowData[col.field]) }}\r\n </span>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"returnColspan()\">\r\n <div\r\n class=\"w-full h-full flex align-items-center justify-content-center\"\r\n >\r\n <img [src]=\"emptyTableImg()\" class=\"h-10rem w-auto\" />\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"shadow-2 p-0 m-0 col selected-item-field ml-2 flex flex-column\"\r\n [@slideInOut]=\"isRowSelected() ? 'i.n' : 'out'\"\r\n [style.overflow]=\"'hidden'\"\r\n >\r\n <!-- @if(hasSelectedItems()) {\r\n <actions-lote-field\r\n class=\"h-full\"\r\n [selectedItems]=\"selectedItems()\"\r\n [actionsLote]=\"actionsLote()\"\r\n />\r\n } @else -->\r\n @if (showSelectedItem()) {\r\n <div class=\"bg-bluegray-50 w-full h-auto p-2 relative\">\r\n @if (hasActionsRow()) {\r\n <actions-row-menu [actionsRow]=\"actionsRow()\" />\r\n }\r\n\r\n @if (isMobile()) {\r\n <div class=\"h-2rem w-2rem\">\r\n <kv-button\r\n icon=\"arrow_back\"\r\n severity=\"tertiary\"\r\n [pTooltip]=\"'Voltar'\"\r\n (onClick)=\"selectedItem.set(null)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[selectedItemHeader]\"></ng-content>\r\n </div>\r\n <div class=\"p-2 overflow-y-auto h-full\">\r\n <ng-content select=\"[selectedItem]\"></ng-content>\r\n </div>\r\n }\r\n\r\n <!-- @else { Nenhum item selecionado } -->\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep .filter-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:transparent;z-index:1299}::ng-deep .p-overlaypanel{z-index:1400!important}::ng-deep .kv-table-viewer .p-datatable-wrapper{overflow-x:hidden}::ng-deep .kv-table-viewer .p-paginator .p-paginator-pages .p-paginator-page{font-size:.75rem;min-width:2rem;height:2rem}::ng-deep .kv-table-viewer .p-paginator .p-paginator-current{font-size:.75rem}::ng-deep .kv-table-viewer .p-inputwrapper .p-dropdown{margin:0;height:auto}::ng-deep .p-paginator-rpp-options .p-dropdown-panel .p-dropdown-items{padding:.25rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item{border-radius:.25rem;height:1.5rem;display:flex;align-items:center;justify-content:center}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-label{padding:.5rem}::ng-deep .p-paginator-rpp-options .p-dropdown-item .p-dropdown-trigger{width:1.5rem}::ng-deep .p-paginator-bottom .p-link{min-width:2rem;height:2rem}::ng-deep .p-paginator{padding:0rem}::ng-deep .p-dropdown-label{font-size:.75rem}::ng-deep .empty-table .p-datatable-table{height:100%}::ng-deep .p-menu{padding:.25rem}::ng-deep .p-menu-list .p-menuitem .p-menuitem-content .p-menuitem-link{font-size:.75rem;padding:.5rem}::ng-deep .selected-row{box-shadow:inset 2px 0 #0a3a78}\n"], dependencies: [{ kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i4.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i4.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i4.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: KvInputsModule }, { kind: "ngmodule", type: KvButtonModule }, { kind: "component", type: i6.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup", "popupIcon"], outputs: ["iconChange", "onClick"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: KvTagsModule }, { kind: "component", type: i8.KvTagsComponent, selector: "kv-tags", inputs: ["tags", "hover", "clickable"], outputs: ["onClickTag"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "component", type: ActionsRowMenuComponent, selector: "actions-row-menu", inputs: ["actionsRow"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
|
|
248
248
|
trigger('slideInOut', [
|
|
249
249
|
state('in', style({
|
|
250
250
|
width: '*',
|
|
@@ -261,7 +261,7 @@ export class KvTableViewerComponent {
|
|
|
261
261
|
]),
|
|
262
262
|
] }); }
|
|
263
263
|
}
|
|
264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTableViewerComponent, decorators: [{
|
|
265
265
|
type: Component,
|
|
266
266
|
args: [{ selector: 'kv-table-viewer', standalone: true, imports: [
|
|
267
267
|
InputTextModule,
|
|
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
301
301
|
type: HostListener,
|
|
302
302
|
args: ['document:click', ['$event']]
|
|
303
303
|
}] } });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhYmxlLXZpZXdlci9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNM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RSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixXQUFXO3FCQUVaLGNBR1c7d0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTs0QkFDcEIsS0FBSyxDQUNILElBQUksRUFDSixLQUFLLENBQUM7Z0NBQ0osS0FBSyxFQUFFLEdBQUc7Z0NBQ1YsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLGVBQWU7NkJBQzNCLENBQUMsQ0FDSDs0QkFDRCxLQUFLLENBQ0gsS0FBSyxFQUNMLEtBQUssQ0FBQztnQ0FDSixLQUFLLEVBQUUsS0FBSztnQ0FDWixPQUFPLEVBQUUsQ0FBQztnQ0FDVixTQUFTLEVBQUUsa0JBQWtCOzZCQUM5QixDQUFDLENBQ0g7NEJBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZELFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO3lCQUN4RCxDQUFDO3FCQUNIO3dEQUdnQixFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBdUtmLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZHJlbixcclxuICBlZmZlY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBvdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIHNpZ25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICB1bnRyYWNrZWQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFNrZWxldG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9za2VsZXRvbic7XHJcbmltcG9ydCB7IFRhYmxlTW9kdWxlLCBUYWJsZVBhZ2VFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBLdklucHV0c01vZHVsZSB9IGZyb20gJy4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9rdi1idXR0b24va3YtYnV0dG9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCwgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xyXG5pbXBvcnQgeyBBY3Rpb25zTG90ZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FjdGlvbnMtbG90ZS1maWVsZC9hY3Rpb25zLWxvdGUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgS3ZUYWdzTW9kdWxlIH0gZnJvbSAnLi4va3YtdGFncy9rdi10YWdzLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIGFuaW1hdGUsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRpZXJlZE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RpZXJlZG1lbnUnO1xyXG5pbXBvcnQgeyBBY3Rpb25zUm93TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb25zLXJvdy1tZW51L2FjdGlvbnMtcm93LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3BmQ25walBpcGUgfSBmcm9tICcuLi8uLi9hcGkvcGlwZXMvY3BmY25wai5waXBlJztcclxuaW1wb3J0IHsgVGVsZWZvbmVQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL3RlbGVmb25lLnBpcGUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2FwaS9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuXHJcbmludGVyZmFjZSBDb2x1bW5UYWJsZVZpZXdlciB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxuICB3aWR0aD86IHN0cmluZztcclxuICBpY29uPzogKHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nO1xyXG4gIHRhZz86IChyb3dEYXRhOiBhbnkpID0+IHsgbGFiZWw6IHN0cmluZzsgc2V2ZXJpdHk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH07XHJcbiAgcGlwZT86XHJcbiAgICB8ICdjcGZjbnBqJ1xyXG4gICAgfCAndGVsZWZvbmUnXHJcbiAgICB8ICdtb25leSdcclxuICAgIHwgJ2RhdGUnXHJcbiAgICB8ICdkYXRldGltZSdcclxuICAgIHwgJ2RhdGVNb250aFllYXInXHJcbiAgICB8IHVuZGVmaW5lZDtcclxuICB0ZW1wbGF0ZT86IHsgbmFtZTogc3RyaW5nIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFibGUtdmlld2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIFNrZWxldG9uTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgS3ZJbnB1dHNNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbk1vZHVsZSxcclxuICAgIE92ZXJsYXlQYW5lbE1vZHVsZSxcclxuICAgIEFjdGlvbnNMb3RlRmllbGRDb21wb25lbnQsXHJcbiAgICBLdlRhZ3NNb2R1bGUsXHJcbiAgICBUaWVyZWRNZW51TW9kdWxlLFxyXG4gICAgQWN0aW9uc1Jvd01lbnVDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuc2NzcycsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2luJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICB3aWR0aDogJyonLFxyXG4gICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnb3V0JyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICB3aWR0aDogJzBweCcsXHJcbiAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICAgIHRyYW5zaXRpb24oJ291dCA9PiBpbicsIFthbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFthbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUYWJsZVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnb3AnKSBvcCE6IE92ZXJsYXlQYW5lbDtcclxuXHJcbiAgY3BmQ25walBpcGUgPSBpbmplY3QoQ3BmQ25walBpcGUpO1xyXG4gIHRlbGVmb25lUGlwZSA9IGluamVjdChUZWxlZm9uZVBpcGUpO1xyXG4gIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcblxyXG4gIGNvbHVtbnMgPSBpbnB1dDxDb2x1bW5UYWJsZVZpZXdlcltdPihbXSk7XHJcblxyXG4gIGFjdGlvbnNSb3cgPSBpbnB1dDxNZW51SXRlbVtdIHwgW10+KFtdKTtcclxuICBhY3Rpb25zSGVhZGVyID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBhY3Rpb25zTG90ZSA9IGlucHV0PE1lbnVJdGVtW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGRhdGEgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIHRvdGFsUmVjb3JkcyA9IGlucHV0PG51bWJlcj4oMCk7XHJcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByb3dzID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcbiAgcm93c1BlclBhZ2VPcHRpb25zID0gaW5wdXQ8bnVtYmVyW10+KFsxMCwgMjUsIDUwXSk7XHJcbiAgcGFnaW5hdG9yID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgbGF6eSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNjcm9sbGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBwYWdlTGlua3MgPSBpbnB1dDxudW1iZXI+KDIpO1xyXG4gIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPSBpbnB1dDxzdHJpbmc+KFxyXG4gICAgJ3tmaXJzdH0gLSB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30nLFxyXG4gICk7XHJcbiAgc2VsZWN0aW9uUGFnZU9ubHkgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgc2VsZWN0YWJsZVRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgc2hvd0hlYWRlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzaG93SGVhZGVyQmV0d2VlblRlbXBsYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRhYmxlVmlld2VyU2l6ZSA9IGlucHV0PHN0cmluZz4oJ2NvbC04Jyk7XHJcbiAgc2VhcmNoSW5wdXQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBmaWx0ZXJCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBpZE5hbWUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgZW1wdHlUYWJsZUltZyA9IGlucHV0PHN0cmluZz4oXHJcbiAgICAnaHR0cHM6Ly93b3JrLWFzc2V0cy5rZWV2by5jb20uYnIvaW1nL05lbmh1bV9yZWdpc3Ryb19sb2NhbGl6YWRvLnBuZycsXHJcbiAgKTtcclxuICBpc1NlbGVjdGVkUHJpbWFyeUl0ZW0gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkSXRlbXMgPSBzaWduYWw8YW55W10+KFtdKTtcclxuICBzZWxlY3RlZEl0ZW0gPSBzaWduYWw8YW55PihudWxsKTtcclxuICBmaXJzdCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHNlYXJjaFZhbHVlID0gc2lnbmFsKCcnKTtcclxuICBsYXN0RW1pdHRlZFNvcnQgPSBzaWduYWw8eyBmaWVsZDogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcclxuICBpc01vYmlsZSA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIG9uUGFnZUNoYW5nZSA9IG91dHB1dDxUYWJsZVBhZ2VFdmVudD4oKTtcclxuICBvbkNsaWNrUm93SXRlbSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgb25TZWxlY3RJdGVtcyA9IG91dHB1dDxhbnlbXT4oKTtcclxuICBvblNlYXJjaCA9IG91dHB1dDxzdHJpbmc+KCk7XHJcbiAgb25Tb3J0ID0gb3V0cHV0PGFueT4oKTtcclxuICBvbkNoZWNrYm94U2VsZWN0YWJsZSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgb25DaGVja2JveFVuc2VsZWN0YWJsZSA9IG91dHB1dDxhbnk+KCk7XHJcblxyXG4gIHRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgX3RlbXBsYXRlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+PihcclxuICAgIHt9LFxyXG4gICAgeyBhbGlhczogJ3RlbXBsYXRlcycgfSxcclxuICApO1xyXG4gIGdldEN1c3RvbVRlbXBsYXRlID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICAodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5fdGVtcGxhdGVzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlc1t0ZW1wbGF0ZW5hbWVdO1xyXG4gICAgICB9LFxyXG4gICk7XHJcblxyXG4gIGlzUm93U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW0oKTtcclxuICB9KTtcclxuXHJcbiAgdmVyaWZ5SXRlbVNlbGVjaW9uYWRvID0gY29tcHV0ZWQoKCkgPT4gKHJvd0RhdGE6IGFueSkgPT4ge1xyXG4gICAgbGV0IGlzU2VsZWN0ZWQ7XHJcblxyXG4gICAgbGV0IGlkTmFtZSA9IHRoaXMuaWROYW1lKCkgfHwgJ2lkJztcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlVGFibGUoKSlcclxuICAgICAgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmZpbmQoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbVtpZE5hbWVdID09IHJvd0RhdGFbaWROYW1lXSxcclxuICAgICAgKTtcclxuICAgIGVsc2UgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtKCk/LltpZE5hbWVdID09IHJvd0RhdGFbaWROYW1lXTtcclxuXHJcbiAgICByZXR1cm4gaXNTZWxlY3RlZDtcclxuICB9KTtcclxuXHJcbiAgdHJhbnNmb3JtRGF0YSA9IGNvbXB1dGVkKCgpID0+ICh0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGlmICh0eXBlID09PSAnY3BmY25waicpIHJldHVybiB0aGlzLmNwZkNucGpQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3RlbGVmb25lJykgcmV0dXJuIHRoaXMudGVsZWZvbmVQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ21vbmV5JykgcmV0dXJuIHRoaXMudHJhbnNmb3JtTW9uZXkodmFsdWUpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdkYXRlJylcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eScsICdVVEMnKTtcclxuICAgIGlmICh0eXBlID09PSAnZGF0ZXRpbWUnKVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2RhdGVNb250aFllYXInKVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdNTS95eXl5Jyk7XHJcbiAgICBlbHNlIHJldHVybiB2YWx1ZTtcclxuICB9KTtcclxuXHJcbiAgaGFuZGxlVGFibGVTaXplID0gY29tcHV0ZWQoKCkgPT4geyAgIFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW0oKTtcclxuICAgIGlmICghc2VsZWN0ZWRJdGVtKSByZXR1cm4gJ2NvbC0xMic7XHJcbiAgICBlbHNlIHJldHVybiB0aGlzLnRhYmxlVmlld2VyU2l6ZSgpO1xyXG4gIH0pO1xyXG5cclxuICBpc1BvcHVwQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gKGFjdGlvbjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gKGFjdGlvbi5pdGVtcyAmJiBhY3Rpb24uaXRlbXM/Lmxlbmd0aCA+IDApIHx8IGZhbHNlO1xyXG4gIH0pO1xyXG5cclxuICBoYXNBY3Rpb25zUm93ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uc1JvdygpPy5sZW5ndGggPiAwO1xyXG4gIH0pO1xyXG5cclxuICBzaG93U2VsZWN0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtKCk7XHJcbiAgfSk7XHJcblxyXG4gIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zKCk/Lmxlbmd0aCA+IDE7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybkNvbHNwYW4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubGVuZ3RoICsgMTtcclxuICB9KTtcclxuXHJcbiAgaXNFbXB0eVRhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSgpPy5sZW5ndGggPT0gMDtcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0LCAnKG1heC13aWR0aDogNzY4cHgpJ10pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB0aGlzLmlzTW9iaWxlLnNldChzdGF0ZS5tYXRjaGVzKSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5vblNlbGVjdEl0ZW1zLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKCkpO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhZG9zID0gdGhpcy5kYXRhKCk7ICAgICBcclxuICAgICAgY29uc3QgaXNTZWxlY3RlZFByaW1hcnlJdGVtID0gdGhpcy5pc1NlbGVjdGVkUHJpbWFyeUl0ZW0oKTtcclxuXHJcbiAgICAgIGlmIChkYWRvcyAmJiBkYWRvcy5sZW5ndGggPiAwICYmIGlzU2VsZWN0ZWRQcmltYXJ5SXRlbSkge1xyXG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnJvd1NlbGVjdChkYWRvc1swXSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU92ZXJsYXlQYW5lbChldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vcC50b2dnbGUoZXZlbnQpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vcC5vdmVybGF5VmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLm9wIHx8ICF0aGlzLm9wLm92ZXJsYXlWaXNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckJ1dHRvbiA9XHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tsYWJlbD1cIkZpbHRyYXJcIl0nKTtcclxuICAgIGlmIChmaWx0ZXJCdXR0b24gJiYgZmlsdGVyQnV0dG9uLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFyZ2V0RWxlbWVudC5jbG9zZXN0KCcucC1vdmVybGF5cGFuZWwnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLm9wPy5oaWRlKCk7XHJcbiAgICB0aGlzLnJlbW92ZU92ZXJsYXkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVGaWx0ZXIoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wPy50b2dnbGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheUVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm92ZXJsYXlFbGVtZW50LCAnZmlsdGVyLW92ZXJsYXknKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm92ZXJsYXlFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xvc2VGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5vdmVybGF5RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlQ2hhbmdlKGV2ZW50OiBUYWJsZVBhZ2VFdmVudCkge1xyXG4gICAgdGhpcy5maXJzdC5zZXQoZXZlbnQuZmlyc3QpO1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTb3J0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTb3J0U3RhdGUgPSB0aGlzLmxhc3RFbWl0dGVkU29ydCgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgY3VycmVudFNvcnRTdGF0ZSAmJlxyXG4gICAgICBjdXJyZW50U29ydFN0YXRlLmZpZWxkID09PSBldmVudC5maWVsZCAmJlxyXG4gICAgICBjdXJyZW50U29ydFN0YXRlLm9yZGVyID09PSBldmVudC5vcmRlclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhc3RFbWl0dGVkU29ydC5zZXQoeyBmaWVsZDogZXZlbnQuZmllbGQsIG9yZGVyOiBldmVudC5vcmRlciB9KTtcclxuXHJcbiAgICBsZXQgb3JkZW5hY2FvID0gYCR7ZXZlbnQuZmllbGR9ICR7ZXZlbnQub3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ30gYDtcclxuICAgIGxldCBvcmRlcm5hY2FvR3JvdXAgPSB7XHJcbiAgICAgIGNvbHVtbjogZXZlbnQuZmllbGQsXHJcbiAgICAgIGRpcmVjdGlvbjogZXZlbnQub3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJyxcclxuICAgIH07XHJcbiAgICB0aGlzLm9uU29ydC5lbWl0KHtcclxuICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIG9yZGVybmFjYW9Hcm91cDogb3JkZXJuYWNhb0dyb3VwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByb3dTZWxlY3Qocm93RGF0YTogYW55KSB7ICAgIFxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQocm93RGF0YSk7XHJcbiAgICAgIHRoaXMub25DbGlja1Jvd0l0ZW0uZW1pdChyb3dEYXRhKTtcclxuICBcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hTZWxlY3QoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMub25DaGVja2JveFNlbGVjdGFibGUuZW1pdChldmVudD8uZGF0YSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hVbnNlbGVjdChldmVudDphbnkpe1xyXG4gICAgdGhpcy5vbkNoZWNrYm94VW5zZWxlY3RhYmxlLmVtaXQoZXZlbnQ/LmRhdGEpXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRyYW5zZm9ybU1vbmV5KHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU92ZXJsYXkoKSB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5RWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMub3ZlcmxheUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtcm93IHAtMiBrdi10YWJsZS12aWV3ZXIgb3ZlcmZsb3ctaGlkZGVuIHt7XHJcbiAgICBpc0VtcHR5VGFibGUoKSA/ICdlbXB0eS10YWJsZScgOiAnJ1xyXG4gIH19XCJcclxuPlxyXG4gIEBpZiAoIWlzTW9iaWxlKCkgfHwgc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJoLWZ1bGwge3sgaGFuZGxlVGFibGVTaXplKCkgfX0gbS0wIHAtMCBmbGV4IGZsZXgtY29sdW1uIGdhcC0yXCJcclxuICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiJ2FsbCAwLjNzIGVhc2UtaW4tb3V0J1wiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAoc2hvd0hlYWRlclRlbXBsYXRlKCkpIHtcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlSGVhZGVyVGVtcGxhdGVdXCI+IDwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1pbml0aWFsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hJbnB1dCgpKSB7XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxLjg3NXJlbVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmlsdGVyQnV0dG9uKCkpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiRmlsdHJhclwiXHJcbiAgICAgICAgICAgICAgaWNvbj1cImZpbHRlcl9hbHRcIlxyXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInRvZ2dsZU92ZXJsYXlQYW5lbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwva3YtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoc2hvd0hlYWRlckJldHdlZW5UZW1wbGF0ZSgpKSB7XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlSGVhZGVyQmV0d2VlblRlbXBsYXRlXVwiPiA8L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDxwLW92ZXJsYXlQYW5lbCAjb3AgW2Rpc21pc3NhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmaWx0cm9dXCI+IDwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvcC1vdmVybGF5UGFuZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cclxuICAgICAgICAgIEBpZiAoYWN0aW9uc0hlYWRlcigpKSB7XHJcbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zSGVhZGVyKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImFjdGlvbj8uaWNvbiB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uPy5sYWJlbCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uWydzZXZlcml0eSddIHx8ICd0ZXJ0aWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uPy5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3BvcHVwSWNvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWN0aW9uLml0ZW1zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgIFtwb3B1cF09XCJpc1BvcHVwQnV0dG9uKCkoYWN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiYWN0aW9uPy50b29sdGlwXCJcclxuICAgICAgICAgICAgICA+PC9rdi1idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInUmVjb2xoZXInXCJcclxuICAgICAgICAgICAgICBpY29uPVwicmVvcmRlclwiXHJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2VsZWN0ZWRJdGVtLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgID48L2t2LWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIGgtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8cC10YWJsZVxyXG4gICAgICAgICAgW3ZhbHVlXT1cImRhdGEoKVwiXHJcbiAgICAgICAgICBbbGF6eV09XCJsYXp5KClcIlxyXG4gICAgICAgICAgW3NlbGVjdGlvblBhZ2VPbmx5XT1cInNlbGVjdGlvblBhZ2VPbmx5KClcIlxyXG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucygpXCJcclxuICAgICAgICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yKClcIlxyXG4gICAgICAgICAgW3Jvd3NdPVwicm93cygpXCJcclxuICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzKClcIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcclxuICAgICAgICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzKClcIlxyXG4gICAgICAgICAgW2ZpcnN0XT1cImZpcnN0KClcIlxyXG4gICAgICAgICAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZSgpXCJcclxuICAgICAgICAgIHNjcm9sbEhlaWdodD1cImZsZXhcIlxyXG4gICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUoKVwiXHJcbiAgICAgICAgICAob25QYWdlKT1cImhhbmRsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25Tb3J0KT1cImhhbmRsZVNvcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9ucygpXCJcclxuICAgICAgICAgIChvblJvd1NlbGVjdCk9XCJvbkNoZWNrYm94U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgKG9uUm93VW5zZWxlY3QpPVwib25DaGVja2JveFVuc2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXNtIHRleHQteHMgb3ZlcmZsb3cteS1hdXRvIGgtZnVsbCBmbGV4IGZsZXgtY29sdW1uIGgtZnVsbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQGlmIChzaG93SGVhZGVyKCkpIHtcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0YWJsZVRhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW1cIj48cC10YWJsZUhlYWRlckNoZWNrYm94IC8+PC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCIhY29sPy5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6IGNvbC53aWR0aCB8fCAnYXV0bycgfVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zb3J0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGhvdmVyOmJnLWJsdWVncmF5LTEwMFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2JnLWJsdWVncmF5LTUwIHNlbGVjdGVkLXJvdyc6XHJcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGEgPT0gc2VsZWN0ZWRJdGVtKCksXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBAaWYgKHNlbGVjdGFibGVUYWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cInJvd0RhdGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbC5maWVsZCkge1xyXG4gICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJyb3dTZWxlY3Qocm93RGF0YSlcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbD8udGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93RGF0YSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoY29sPy5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5pY29uKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjb2w/LnRhZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxrdi10YWdzIFt0YWdzXT1cIltjb2wudGFnKHJvd0RhdGEpXVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXNlbWlib2xkJzogcm93RGF0YSA9PSBzZWxlY3RlZEl0ZW0oKSxcclxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybURhdGEoKShjb2wucGlwZSwgcm93RGF0YVtjb2wuZmllbGRdKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInJldHVybkNvbHNwYW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbXB0eVRhYmxlSW1nKClcIiBjbGFzcz1cImgtMTByZW0gdy1hdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2hhZG93LTIgcC0wIG0tMCBjb2wgc2VsZWN0ZWQtaXRlbS1maWVsZCBtbC0yIGZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgW0BzbGlkZUluT3V0XT1cImlzUm93U2VsZWN0ZWQoKSA/ICdpLm4nIDogJ291dCdcIlxyXG4gICAgW3N0eWxlLm92ZXJmbG93XT1cIidoaWRkZW4nXCJcclxuICA+XHJcbiAgICA8IS0tIEBpZihoYXNTZWxlY3RlZEl0ZW1zKCkpIHtcclxuICAgIDxhY3Rpb25zLWxvdGUtZmllbGRcclxuICAgICAgY2xhc3M9XCJoLWZ1bGxcIlxyXG4gICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zKClcIlxyXG4gICAgICBbYWN0aW9uc0xvdGVdPVwiYWN0aW9uc0xvdGUoKVwiXHJcbiAgICAvPlxyXG4gICAgfSBAZWxzZSAtLT5cclxuICAgIEBpZiAoc2hvd1NlbGVjdGVkSXRlbSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1ibHVlZ3JheS01MCB3LWZ1bGwgaC1hdXRvIHAtMiByZWxhdGl2ZVwiPlxyXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uc1JvdygpKSB7XHJcbiAgICAgICAgICA8YWN0aW9ucy1yb3ctbWVudSBbYWN0aW9uc1Jvd109XCJhY3Rpb25zUm93KClcIiAvPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChpc01vYmlsZSgpKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0ycmVtIHctMnJlbVwiPlxyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X2JhY2tcIlxyXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInVm9sdGFyJ1wiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2VsZWN0ZWRJdGVtLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzZWxlY3RlZEl0ZW1IZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtMiBvdmVyZmxvdy15LWF1dG8gaC1mdWxsXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlbGVjdGVkSXRlbV1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gQGVsc2UgeyBOZW5odW0gaXRlbSBzZWxlY2lvbmFkbyB9IC0tPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhYmxlLXZpZXdlci9rdi10YWJsZS12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUtdmlld2VyL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNM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RSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixXQUFXO3FCQUVaLGNBR1c7d0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTs0QkFDcEIsS0FBSyxDQUNILElBQUksRUFDSixLQUFLLENBQUM7Z0NBQ0osS0FBSyxFQUFFLEdBQUc7Z0NBQ1YsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLGVBQWU7NkJBQzNCLENBQUMsQ0FDSDs0QkFDRCxLQUFLLENBQ0gsS0FBSyxFQUNMLEtBQUssQ0FBQztnQ0FDSixLQUFLLEVBQUUsS0FBSztnQ0FDWixPQUFPLEVBQUUsQ0FBQztnQ0FDVixTQUFTLEVBQUUsa0JBQWtCOzZCQUM5QixDQUFDLENBQ0g7NEJBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZELFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO3lCQUN4RCxDQUFDO3FCQUNIO3dEQUdnQixFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBdUtmLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZHJlbixcclxuICBlZmZlY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBvdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIHNpZ25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICB1bnRyYWNrZWQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFNrZWxldG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9za2VsZXRvbic7XHJcbmltcG9ydCB7IFRhYmxlTW9kdWxlLCBUYWJsZVBhZ2VFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBLdklucHV0c01vZHVsZSB9IGZyb20gJy4uL2t2LWlucHV0cy9rdi1pbnB1dHMubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9rdi1idXR0b24va3YtYnV0dG9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCwgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xyXG5pbXBvcnQgeyBBY3Rpb25zTG90ZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FjdGlvbnMtbG90ZS1maWVsZC9hY3Rpb25zLWxvdGUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgS3ZUYWdzTW9kdWxlIH0gZnJvbSAnLi4va3YtdGFncy9rdi10YWdzLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIGFuaW1hdGUsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRpZXJlZE1lbnVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RpZXJlZG1lbnUnO1xyXG5pbXBvcnQgeyBBY3Rpb25zUm93TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hY3Rpb25zLXJvdy1tZW51L2FjdGlvbnMtcm93LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3BmQ25walBpcGUgfSBmcm9tICcuLi8uLi9hcGkvcGlwZXMvY3BmY25wai5waXBlJztcclxuaW1wb3J0IHsgVGVsZWZvbmVQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL3RlbGVmb25lLnBpcGUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2FwaS9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuXHJcbmludGVyZmFjZSBDb2x1bW5UYWJsZVZpZXdlciB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBoZWFkZXI6IHN0cmluZztcclxuICB3aWR0aD86IHN0cmluZztcclxuICBpY29uPzogKHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nO1xyXG4gIHRhZz86IChyb3dEYXRhOiBhbnkpID0+IHsgbGFiZWw6IHN0cmluZzsgc2V2ZXJpdHk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH07XHJcbiAgcGlwZT86XHJcbiAgICB8ICdjcGZjbnBqJ1xyXG4gICAgfCAndGVsZWZvbmUnXHJcbiAgICB8ICdtb25leSdcclxuICAgIHwgJ2RhdGUnXHJcbiAgICB8ICdkYXRldGltZSdcclxuICAgIHwgJ2RhdGVNb250aFllYXInXHJcbiAgICB8IHVuZGVmaW5lZDtcclxuICB0ZW1wbGF0ZT86IHsgbmFtZTogc3RyaW5nIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFibGUtdmlld2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIFNrZWxldG9uTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgS3ZJbnB1dHNNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbk1vZHVsZSxcclxuICAgIE92ZXJsYXlQYW5lbE1vZHVsZSxcclxuICAgIEFjdGlvbnNMb3RlRmllbGRDb21wb25lbnQsXHJcbiAgICBLdlRhZ3NNb2R1bGUsXHJcbiAgICBUaWVyZWRNZW51TW9kdWxlLFxyXG4gICAgQWN0aW9uc1Jvd01lbnVDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2t2LXRhYmxlLXZpZXdlci5jb21wb25lbnQuc2NzcycsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ2luJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICB3aWR0aDogJyonLFxyXG4gICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnb3V0JyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICB3aWR0aDogJzBweCcsXHJcbiAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDAlKScsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICAgIHRyYW5zaXRpb24oJ291dCA9PiBpbicsIFthbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFthbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpXSksXHJcbiAgICBdKSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUYWJsZVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnb3AnKSBvcCE6IE92ZXJsYXlQYW5lbDtcclxuXHJcbiAgY3BmQ25walBpcGUgPSBpbmplY3QoQ3BmQ25walBpcGUpO1xyXG4gIHRlbGVmb25lUGlwZSA9IGluamVjdChUZWxlZm9uZVBpcGUpO1xyXG4gIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcblxyXG4gIGNvbHVtbnMgPSBpbnB1dDxDb2x1bW5UYWJsZVZpZXdlcltdPihbXSk7XHJcblxyXG4gIGFjdGlvbnNSb3cgPSBpbnB1dDxNZW51SXRlbVtdIHwgW10+KFtdKTtcclxuICBhY3Rpb25zSGVhZGVyID0gaW5wdXQ8TWVudUl0ZW1bXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBhY3Rpb25zTG90ZSA9IGlucHV0PE1lbnVJdGVtW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGRhdGEgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIHRvdGFsUmVjb3JkcyA9IGlucHV0PG51bWJlcj4oMCk7XHJcbiAgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByb3dzID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcbiAgcm93c1BlclBhZ2VPcHRpb25zID0gaW5wdXQ8bnVtYmVyW10+KFsxMCwgMjUsIDUwXSk7XHJcbiAgcGFnaW5hdG9yID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgbGF6eSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNjcm9sbGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBwYWdlTGlua3MgPSBpbnB1dDxudW1iZXI+KDIpO1xyXG4gIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUgPSBpbnB1dDxzdHJpbmc+KFxyXG4gICAgJ3tmaXJzdH0gLSB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30nLFxyXG4gICk7XHJcbiAgc2VsZWN0aW9uUGFnZU9ubHkgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgc2VsZWN0YWJsZVRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgc2hvd0hlYWRlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzaG93SGVhZGVyQmV0d2VlblRlbXBsYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRhYmxlVmlld2VyU2l6ZSA9IGlucHV0PHN0cmluZz4oJ2NvbC04Jyk7XHJcbiAgc2VhcmNoSW5wdXQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBmaWx0ZXJCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBpZE5hbWUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgZW1wdHlUYWJsZUltZyA9IGlucHV0PHN0cmluZz4oXHJcbiAgICAnaHR0cHM6Ly93b3JrLWFzc2V0cy5rZWV2by5jb20uYnIvaW1nL05lbmh1bV9yZWdpc3Ryb19sb2NhbGl6YWRvLnBuZycsXHJcbiAgKTtcclxuICBpc1NlbGVjdGVkUHJpbWFyeUl0ZW0gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkSXRlbXMgPSBzaWduYWw8YW55W10+KFtdKTtcclxuICBzZWxlY3RlZEl0ZW0gPSBzaWduYWw8YW55PihudWxsKTtcclxuICBmaXJzdCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG4gIHNlYXJjaFZhbHVlID0gc2lnbmFsKCcnKTtcclxuICBsYXN0RW1pdHRlZFNvcnQgPSBzaWduYWw8eyBmaWVsZDogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcclxuICBpc01vYmlsZSA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIG9uUGFnZUNoYW5nZSA9IG91dHB1dDxUYWJsZVBhZ2VFdmVudD4oKTtcclxuICBvbkNsaWNrUm93SXRlbSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgb25TZWxlY3RJdGVtcyA9IG91dHB1dDxhbnlbXT4oKTtcclxuICBvblNlYXJjaCA9IG91dHB1dDxzdHJpbmc+KCk7XHJcbiAgb25Tb3J0ID0gb3V0cHV0PGFueT4oKTtcclxuICBvbkNoZWNrYm94U2VsZWN0YWJsZSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgb25DaGVja2JveFVuc2VsZWN0YWJsZSA9IG91dHB1dDxhbnk+KCk7XHJcblxyXG4gIHRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgX3RlbXBsYXRlcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+PihcclxuICAgIHt9LFxyXG4gICAgeyBhbGlhczogJ3RlbXBsYXRlcycgfSxcclxuICApO1xyXG4gIGdldEN1c3RvbVRlbXBsYXRlID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICAodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGVzID0gdGhpcy5fdGVtcGxhdGVzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlc1t0ZW1wbGF0ZW5hbWVdO1xyXG4gICAgICB9LFxyXG4gICk7XHJcblxyXG4gIGlzUm93U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW0oKTtcclxuICB9KTtcclxuXHJcbiAgdmVyaWZ5SXRlbVNlbGVjaW9uYWRvID0gY29tcHV0ZWQoKCkgPT4gKHJvd0RhdGE6IGFueSkgPT4ge1xyXG4gICAgbGV0IGlzU2VsZWN0ZWQ7XHJcblxyXG4gICAgbGV0IGlkTmFtZSA9IHRoaXMuaWROYW1lKCkgfHwgJ2lkJztcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlVGFibGUoKSlcclxuICAgICAgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmZpbmQoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbVtpZE5hbWVdID09IHJvd0RhdGFbaWROYW1lXSxcclxuICAgICAgKTtcclxuICAgIGVsc2UgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtKCk/LltpZE5hbWVdID09IHJvd0RhdGFbaWROYW1lXTtcclxuXHJcbiAgICByZXR1cm4gaXNTZWxlY3RlZDtcclxuICB9KTtcclxuXHJcbiAgdHJhbnNmb3JtRGF0YSA9IGNvbXB1dGVkKCgpID0+ICh0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGlmICh0eXBlID09PSAnY3BmY25waicpIHJldHVybiB0aGlzLmNwZkNucGpQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3RlbGVmb25lJykgcmV0dXJuIHRoaXMudGVsZWZvbmVQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ21vbmV5JykgcmV0dXJuIHRoaXMudHJhbnNmb3JtTW9uZXkodmFsdWUpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdkYXRlJylcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eScsICdVVEMnKTtcclxuICAgIGlmICh0eXBlID09PSAnZGF0ZXRpbWUnKVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2RhdGVNb250aFllYXInKVxyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdNTS95eXl5Jyk7XHJcbiAgICBlbHNlIHJldHVybiB2YWx1ZTtcclxuICB9KTtcclxuXHJcbiAgaGFuZGxlVGFibGVTaXplID0gY29tcHV0ZWQoKCkgPT4geyAgIFxyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW0oKTtcclxuICAgIGlmICghc2VsZWN0ZWRJdGVtKSByZXR1cm4gJ2NvbC0xMic7XHJcbiAgICBlbHNlIHJldHVybiB0aGlzLnRhYmxlVmlld2VyU2l6ZSgpO1xyXG4gIH0pO1xyXG5cclxuICBpc1BvcHVwQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gKGFjdGlvbjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gKGFjdGlvbi5pdGVtcyAmJiBhY3Rpb24uaXRlbXM/Lmxlbmd0aCA+IDApIHx8IGZhbHNlO1xyXG4gIH0pO1xyXG5cclxuICBoYXNBY3Rpb25zUm93ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uc1JvdygpPy5sZW5ndGggPiAwO1xyXG4gIH0pO1xyXG5cclxuICBzaG93U2VsZWN0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtKCk7XHJcbiAgfSk7XHJcblxyXG4gIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zKCk/Lmxlbmd0aCA+IDE7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybkNvbHNwYW4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubGVuZ3RoICsgMTtcclxuICB9KTtcclxuXHJcbiAgaXNFbXB0eVRhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSgpPy5sZW5ndGggPT0gMDtcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0LCAnKG1heC13aWR0aDogNzY4cHgpJ10pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB0aGlzLmlzTW9iaWxlLnNldChzdGF0ZS5tYXRjaGVzKSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgdGhpcy5vblNlbGVjdEl0ZW1zLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKCkpO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhZG9zID0gdGhpcy5kYXRhKCk7ICAgICBcclxuICAgICAgY29uc3QgaXNTZWxlY3RlZFByaW1hcnlJdGVtID0gdGhpcy5pc1NlbGVjdGVkUHJpbWFyeUl0ZW0oKTtcclxuXHJcbiAgICAgIGlmIChkYWRvcyAmJiBkYWRvcy5sZW5ndGggPiAwICYmIGlzU2VsZWN0ZWRQcmltYXJ5SXRlbSkge1xyXG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnJvd1NlbGVjdChkYWRvc1swXSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU92ZXJsYXlQYW5lbChldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5vcC50b2dnbGUoZXZlbnQpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vcC5vdmVybGF5VmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLm9wIHx8ICF0aGlzLm9wLm92ZXJsYXlWaXNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckJ1dHRvbiA9XHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tsYWJlbD1cIkZpbHRyYXJcIl0nKTtcclxuICAgIGlmIChmaWx0ZXJCdXR0b24gJiYgZmlsdGVyQnV0dG9uLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFyZ2V0RWxlbWVudC5jbG9zZXN0KCcucC1vdmVybGF5cGFuZWwnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLm9wPy5oaWRlKCk7XHJcbiAgICB0aGlzLnJlbW92ZU92ZXJsYXkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVGaWx0ZXIoZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wPy50b2dnbGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheUVsZW1lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm92ZXJsYXlFbGVtZW50LCAnZmlsdGVyLW92ZXJsYXknKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm92ZXJsYXlFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY2xvc2VGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5vdmVybGF5RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlQ2hhbmdlKGV2ZW50OiBUYWJsZVBhZ2VFdmVudCkge1xyXG4gICAgdGhpcy5maXJzdC5zZXQoZXZlbnQuZmlyc3QpO1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTb3J0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTb3J0U3RhdGUgPSB0aGlzLmxhc3RFbWl0dGVkU29ydCgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgY3VycmVudFNvcnRTdGF0ZSAmJlxyXG4gICAgICBjdXJyZW50U29ydFN0YXRlLmZpZWxkID09PSBldmVudC5maWVsZCAmJlxyXG4gICAgICBjdXJyZW50U29ydFN0YXRlLm9yZGVyID09PSBldmVudC5vcmRlclxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhc3RFbWl0dGVkU29ydC5zZXQoeyBmaWVsZDogZXZlbnQuZmllbGQsIG9yZGVyOiBldmVudC5vcmRlciB9KTtcclxuXHJcbiAgICBsZXQgb3JkZW5hY2FvID0gYCR7ZXZlbnQuZmllbGR9ICR7ZXZlbnQub3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ30gYDtcclxuICAgIGxldCBvcmRlcm5hY2FvR3JvdXAgPSB7XHJcbiAgICAgIGNvbHVtbjogZXZlbnQuZmllbGQsXHJcbiAgICAgIGRpcmVjdGlvbjogZXZlbnQub3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJyxcclxuICAgIH07XHJcbiAgICB0aGlzLm9uU29ydC5lbWl0KHtcclxuICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIG9yZGVybmFjYW9Hcm91cDogb3JkZXJuYWNhb0dyb3VwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByb3dTZWxlY3Qocm93RGF0YTogYW55KSB7ICAgIFxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQocm93RGF0YSk7XHJcbiAgICAgIHRoaXMub25DbGlja1Jvd0l0ZW0uZW1pdChyb3dEYXRhKTtcclxuICBcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hTZWxlY3QoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMub25DaGVja2JveFNlbGVjdGFibGUuZW1pdChldmVudD8uZGF0YSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hVbnNlbGVjdChldmVudDphbnkpe1xyXG4gICAgdGhpcy5vbkNoZWNrYm94VW5zZWxlY3RhYmxlLmVtaXQoZXZlbnQ/LmRhdGEpXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRyYW5zZm9ybU1vbmV5KHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU92ZXJsYXkoKSB7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5RWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMub3ZlcmxheUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtcm93IHAtMiBrdi10YWJsZS12aWV3ZXIgb3ZlcmZsb3ctaGlkZGVuIHt7XHJcbiAgICBpc0VtcHR5VGFibGUoKSA/ICdlbXB0eS10YWJsZScgOiAnJ1xyXG4gIH19XCJcclxuPlxyXG4gIEBpZiAoIWlzTW9iaWxlKCkgfHwgc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJoLWZ1bGwge3sgaGFuZGxlVGFibGVTaXplKCkgfX0gbS0wIHAtMCBmbGV4IGZsZXgtY29sdW1uIGdhcC0yXCJcclxuICAgICAgW3N0eWxlLnRyYW5zaXRpb25dPVwiJ2FsbCAwLjNzIGVhc2UtaW4tb3V0J1wiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAoc2hvd0hlYWRlclRlbXBsYXRlKCkpIHtcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlSGVhZGVyVGVtcGxhdGVdXCI+IDwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1pbml0aWFsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hJbnB1dCgpKSB7XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxLjg3NXJlbVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmlsdGVyQnV0dG9uKCkpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiRmlsdHJhclwiXHJcbiAgICAgICAgICAgICAgaWNvbj1cImZpbHRlcl9hbHRcIlxyXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInRvZ2dsZU92ZXJsYXlQYW5lbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwva3YtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoc2hvd0hlYWRlckJldHdlZW5UZW1wbGF0ZSgpKSB7XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlSGVhZGVyQmV0d2VlblRlbXBsYXRlXVwiPiA8L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDxwLW92ZXJsYXlQYW5lbCAjb3AgW2Rpc21pc3NhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmaWx0cm9dXCI+IDwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvcC1vdmVybGF5UGFuZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cclxuICAgICAgICAgIEBpZiAoYWN0aW9uc0hlYWRlcigpKSB7XHJcbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zSGVhZGVyKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImFjdGlvbj8uaWNvbiB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uPy5sYWJlbCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uWydzZXZlcml0eSddIHx8ICd0ZXJ0aWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uPy5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3BvcHVwSWNvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYWN0aW9uLml0ZW1zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgIFtwb3B1cF09XCJpc1BvcHVwQnV0dG9uKCkoYWN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiYWN0aW9uPy50b29sdGlwXCJcclxuICAgICAgICAgICAgICA+PC9rdi1idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtKCkpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInUmVjb2xoZXInXCJcclxuICAgICAgICAgICAgICBpY29uPVwicmVvcmRlclwiXHJcbiAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJ0ZXJ0aWFyeVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2VsZWN0ZWRJdGVtLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgID48L2t2LWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIGgtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8cC10YWJsZVxyXG4gICAgICAgICAgW3ZhbHVlXT1cImRhdGEoKVwiXHJcbiAgICAgICAgICBbbGF6eV09XCJsYXp5KClcIlxyXG4gICAgICAgICAgW3NlbGVjdGlvblBhZ2VPbmx5XT1cInNlbGVjdGlvblBhZ2VPbmx5KClcIlxyXG4gICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucygpXCJcclxuICAgICAgICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yKClcIlxyXG4gICAgICAgICAgW3Jvd3NdPVwicm93cygpXCJcclxuICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzKClcIlxyXG4gICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcclxuICAgICAgICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzKClcIlxyXG4gICAgICAgICAgW2ZpcnN0XT1cImZpcnN0KClcIlxyXG4gICAgICAgICAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZSgpXCJcclxuICAgICAgICAgIHNjcm9sbEhlaWdodD1cImZsZXhcIlxyXG4gICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGUoKVwiXHJcbiAgICAgICAgICAob25QYWdlKT1cImhhbmRsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25Tb3J0KT1cImhhbmRsZVNvcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9ucygpXCJcclxuICAgICAgICAgIChvblJvd1NlbGVjdCk9XCJvbkNoZWNrYm94U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgKG9uUm93VW5zZWxlY3QpPVwib25DaGVja2JveFVuc2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXNtIHRleHQteHMgb3ZlcmZsb3cteS1hdXRvIGgtZnVsbCBmbGV4IGZsZXgtY29sdW1uIGgtZnVsbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQGlmIChzaG93SGVhZGVyKCkpIHtcclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0YWJsZVRhYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW1cIj48cC10YWJsZUhlYWRlckNoZWNrYm94IC8+PC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wuZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCIhY29sPy5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6IGNvbC53aWR0aCB8fCAnYXV0bycgfVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5zb3J0YWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb3dEYXRhIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiPlxyXG4gICAgICAgICAgICA8dHJcclxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGhvdmVyOmJnLWJsdWVncmF5LTEwMFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2JnLWJsdWVncmF5LTUwIHNlbGVjdGVkLXJvdyc6XHJcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGEgPT0gc2VsZWN0ZWRJdGVtKCksXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBAaWYgKHNlbGVjdGFibGVUYWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cInJvd0RhdGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbC5maWVsZCkge1xyXG4gICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJyb3dTZWxlY3Qocm93RGF0YSlcIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLWFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbD8udGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q3VzdG9tVGVtcGxhdGUoKShjb2wudGVtcGxhdGUubmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93RGF0YSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoY29sPy5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC5pY29uKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjb2w/LnRhZykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxrdi10YWdzIFt0YWdzXT1cIltjb2wudGFnKHJvd0RhdGEpXVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXNlbWlib2xkJzogcm93RGF0YSA9PSBzZWxlY3RlZEl0ZW0oKSxcclxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybURhdGEoKShjb2wucGlwZSwgcm93RGF0YVtjb2wuZmllbGRdKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInJldHVybkNvbHNwYW4oKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJlbXB0eVRhYmxlSW1nKClcIiBjbGFzcz1cImgtMTByZW0gdy1hdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2hhZG93LTIgcC0wIG0tMCBjb2wgc2VsZWN0ZWQtaXRlbS1maWVsZCBtbC0yIGZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgW0BzbGlkZUluT3V0XT1cImlzUm93U2VsZWN0ZWQoKSA/ICdpLm4nIDogJ291dCdcIlxyXG4gICAgW3N0eWxlLm92ZXJmbG93XT1cIidoaWRkZW4nXCJcclxuICA+XHJcbiAgICA8IS0tIEBpZihoYXNTZWxlY3RlZEl0ZW1zKCkpIHtcclxuICAgIDxhY3Rpb25zLWxvdGUtZmllbGRcclxuICAgICAgY2xhc3M9XCJoLWZ1bGxcIlxyXG4gICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zKClcIlxyXG4gICAgICBbYWN0aW9uc0xvdGVdPVwiYWN0aW9uc0xvdGUoKVwiXHJcbiAgICAvPlxyXG4gICAgfSBAZWxzZSAtLT5cclxuICAgIEBpZiAoc2hvd1NlbGVjdGVkSXRlbSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1ibHVlZ3JheS01MCB3LWZ1bGwgaC1hdXRvIHAtMiByZWxhdGl2ZVwiPlxyXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uc1JvdygpKSB7XHJcbiAgICAgICAgICA8YWN0aW9ucy1yb3ctbWVudSBbYWN0aW9uc1Jvd109XCJhY3Rpb25zUm93KClcIiAvPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChpc01vYmlsZSgpKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0ycmVtIHctMnJlbVwiPlxyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X2JhY2tcIlxyXG4gICAgICAgICAgICAgIHNldmVyaXR5PVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInVm9sdGFyJ1wiXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2VsZWN0ZWRJdGVtLnNldChudWxsKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzZWxlY3RlZEl0ZW1IZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInAtMiBvdmVyZmxvdy15LWF1dG8gaC1mdWxsXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NlbGVjdGVkSXRlbV1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gQGVsc2UgeyBOZW5odW0gaXRlbSBzZWxlY2lvbmFkbyB9IC0tPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -9,11 +9,11 @@ export class KvTagComponent {
|
|
|
9
9
|
this.border = input(false);
|
|
10
10
|
this.color = input(null);
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: KvTagComponent, selector: "kv-tag", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\r\n class=\"kv-tag {{severity()}} {{!border() && 'no-border'}}\"\r\n [style.backgroundColor]=\"color() ? color() + '0D' : ''\"\r\n [style.color]=\"color()\"\r\n>\r\n <ng-content></ng-content>\r\n</div> \r\n", styles: [".kv-tag{--kv-text-success: 75, 181, 67;--kv-text-info: 0, 123, 255;--kv-text-warn: 194, 91, 12;--kv-text-danger: 220, 53, 69;--kv-text-contrast: 33, 37, 41;--kv-bg-success: 75, 181, 67;--kv-bg-info: 0, 123, 255;--kv-bg-warn: 255, 235, 209;--kv-bg-danger: 220, 53, 69;--kv-bg-contrast: 33, 37, 41;padding:.2rem .5rem;border-radius:.5rem;font-size:.8rem;font-weight:600}.kv-tag.system{background-color:rgba(var(--kv-color-system),.05);border:1px solid rgba(var(--kv-color-system),.1);color:rgba(var(--kv-color-system),1)}.kv-tag.success{background-color:rgba(var(--kv-bg-success),.05);border:1px solid rgba(var(--kv-bg-success),.1);color:rgba(var(--kv-text-success),1)}.kv-tag.info{background-color:rgba(var(--kv-bg-info),.05);border:1px solid rgba(var(--kv-bg-info),.1);color:rgba(var(--kv-text-info),1)}.kv-tag.warn{background-color:rgba(var(--kv-bg-warn),1);border:1px solid rgba(var(--kv-bg-warn),.1);color:rgba(var(--kv-text-warn),1)}.kv-tag.danger{background-color:rgba(var(--kv-bg-danger),.05);border:1px solid rgba(var(--kv-bg-danger),.1);color:rgba(var(--kv-text-danger),1)}.kv-tag.contrast{background-color:rgba(var(--kv-bg-contrast),1);border:1px solid rgba(var(--kv-bg-contrast),.1);color:rgba(var(--kv-background-card),1)}.kv-tag.no-border{border:none}\n"] }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
17
|
args: [{ selector: 'kv-tag', template: "<div\r\n class=\"kv-tag {{severity()}} {{!border() && 'no-border'}}\"\r\n [style.backgroundColor]=\"color() ? color() + '0D' : ''\"\r\n [style.color]=\"color()\"\r\n>\r\n <ng-content></ng-content>\r\n</div> \r\n", styles: [".kv-tag{--kv-text-success: 75, 181, 67;--kv-text-info: 0, 123, 255;--kv-text-warn: 194, 91, 12;--kv-text-danger: 220, 53, 69;--kv-text-contrast: 33, 37, 41;--kv-bg-success: 75, 181, 67;--kv-bg-info: 0, 123, 255;--kv-bg-warn: 255, 235, 209;--kv-bg-danger: 220, 53, 69;--kv-bg-contrast: 33, 37, 41;padding:.2rem .5rem;border-radius:.5rem;font-size:.8rem;font-weight:600}.kv-tag.system{background-color:rgba(var(--kv-color-system),.05);border:1px solid rgba(var(--kv-color-system),.1);color:rgba(var(--kv-color-system),1)}.kv-tag.success{background-color:rgba(var(--kv-bg-success),.05);border:1px solid rgba(var(--kv-bg-success),.1);color:rgba(var(--kv-text-success),1)}.kv-tag.info{background-color:rgba(var(--kv-bg-info),.05);border:1px solid rgba(var(--kv-bg-info),.1);color:rgba(var(--kv-text-info),1)}.kv-tag.warn{background-color:rgba(var(--kv-bg-warn),1);border:1px solid rgba(var(--kv-bg-warn),.1);color:rgba(var(--kv-text-warn),1)}.kv-tag.danger{background-color:rgba(var(--kv-bg-danger),.05);border:1px solid rgba(var(--kv-bg-danger),.1);color:rgba(var(--kv-text-danger),1)}.kv-tag.contrast{background-color:rgba(var(--kv-bg-contrast),1);border:1px solid rgba(var(--kv-bg-contrast),.1);color:rgba(var(--kv-background-card),1)}.kv-tag.no-border{border:none}\n"] }]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhZy9rdi10YWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFnL2t2LXRhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT25FOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFVRSxhQUFRLEdBQUcsS0FBSyxDQUFnRSxRQUFRLENBQUMsQ0FBQztRQUMxRixXQUFNLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9CLFVBQUssR0FBRyxLQUFLLENBQWdCLElBQUksQ0FBQyxDQUFDO0tBRXBDOytHQU5ZLGNBQWM7bUdBQWQsY0FBYyw4YUNWM0IsNE5BT0E7OzRGREdhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFnJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtdGFnLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4va3YtdGFnLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG4vKipcclxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGEgdGFnLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEt2VGFnQ29tcG9uZW50IHtcclxuXHJcbiAgc2V2ZXJpdHkgPSBpbnB1dDwnc3lzdGVtJ3wgJ3N1Y2Nlc3MnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2RhbmdlcicgfCAnY29udHJhc3QnPignc3lzdGVtJyk7XHJcbiAgYm9yZGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNvbG9yID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XHJcblxyXG59IiwiPGRpdlxyXG4gIGNsYXNzPVwia3YtdGFnIHt7c2V2ZXJpdHkoKX19IHt7IWJvcmRlcigpICYmICduby1ib3JkZXInfX1cIlxyXG4gIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3IoKSA/IGNvbG9yKCkgKyAnMEQnIDogJydcIlxyXG4gIFtzdHlsZS5jb2xvcl09XCJjb2xvcigpXCJcclxuPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj4gIFxyXG4iXX0=
|
|
@@ -3,11 +3,11 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { KvTagComponent } from './kv-tag.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class KvTagModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: KvTagModule, declarations: [KvTagComponent], imports: [CommonModule], exports: [KvTagComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagModule, imports: [CommonModule] }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
declarations: [
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
21
21
|
]
|
|
22
22
|
}]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXRhZy9rdi10YWcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFlcEQsTUFBTSxPQUFPLFdBQVc7K0dBQVgsV0FBVztnSEFBWCxXQUFXLGlCQVRwQixjQUFjLGFBR2QsWUFBWSxhQUdaLGNBQWM7Z0hBR0wsV0FBVyxZQU5wQixZQUFZOzs0RkFNSCxXQUFXO2tCQVh2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgS3ZUYWdDb21wb25lbnQgfSBmcm9tICcuL2t2LXRhZy5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgS3ZUYWdDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgS3ZUYWdDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdlRhZ01vZHVsZSB7IH1cclxuIl19
|
|
@@ -26,11 +26,11 @@ export class KvTagsComponent {
|
|
|
26
26
|
const b = parseInt(baseHex.slice(5, 7), 16);
|
|
27
27
|
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
28
28
|
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: KvTagsComponent, selector: "kv-tags", inputs: { tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null }, hover: { classPropertyName: "hover", publicName: "hover", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClickTag: "onClickTag" }, ngImport: i0, template: "@for (tag of tags(); track $index) {\r\n<div\r\n [class.hover-tag]=\"hover()\"\r\n class=\"kv-tag {{clickable() && 'kv-tag-clickable'}}\"\r\n [style.color]=\"color()(tag)\"\r\n (click)=\"clickTag(tag)\"\r\n [style.background]=\"background()(tag)\"\r\n style=\"user-select: none\"\r\n>\r\n @if(tag.icon) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 0.75rem\">\r\n {{ tag.icon }}\r\n </span>\r\n }\r\n <span>\r\n {{ tag.label }}\r\n </span>\r\n\r\n @if(tag.value) {\r\n <span\r\n class=\"bg-white border-circle h-1rem w-1rem flex align-items-center justify-content-center\"\r\n >{{ tag.value }}</span\r\n >\r\n }\r\n</div>\r\n}\r\n", styles: [":host{display:block;display:flex;flex-direction:row;gap:10px}.kv-tag{padding:.2rem .5rem;border-radius:2rem;font-size:.7rem;font-weight:400;width:max-content;flex-wrap:nowrap;display:flex;flex-direction:row;align-items:center;gap:.25rem}.kv-tag-clickable:hover{cursor:pointer;transition:all ease-in-out .2s;opacity:.9}.hover-tag{cursor:pointer;transition:all ease-in-out .2s}.hover-tag:hover{font-size:.75rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KvTagsComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
34
|
args: [{ selector: 'kv-tags', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (tag of tags(); track $index) {\r\n<div\r\n [class.hover-tag]=\"hover()\"\r\n class=\"kv-tag {{clickable() && 'kv-tag-clickable'}}\"\r\n [style.color]=\"color()(tag)\"\r\n (click)=\"clickTag(tag)\"\r\n [style.background]=\"background()(tag)\"\r\n style=\"user-select: none\"\r\n>\r\n @if(tag.icon) {\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 0.75rem\">\r\n {{ tag.icon }}\r\n </span>\r\n }\r\n <span>\r\n {{ tag.label }}\r\n </span>\r\n\r\n @if(tag.value) {\r\n <span\r\n class=\"bg-white border-circle h-1rem w-1rem flex align-items-center justify-content-center\"\r\n >{{ tag.value }}</span\r\n >\r\n }\r\n</div>\r\n}\r\n", styles: [":host{display:block;display:flex;flex-direction:row;gap:10px}.kv-tag{padding:.2rem .5rem;border-radius:2rem;font-size:.7rem;font-weight:400;width:max-content;flex-wrap:nowrap;display:flex;flex-direction:row;align-items:center;gap:.25rem}.kv-tag-clickable:hover{cursor:pointer;transition:all ease-in-out .2s;opacity:.9}.hover-tag{cursor:pointer;transition:all ease-in-out .2s}.hover-tag:hover{font-size:.75rem}\n"] }]
|
|
35
35
|
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10YWdzL2t2LXRhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFncy9rdi10YWdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFjLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBUzVFLE1BQU0sT0FBTyxlQUFlO0lBUDVCO1FBU0UsU0FBSSxHQUFHLEtBQUssRUFBaUIsQ0FBQTtRQUU3QixVQUFLLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBRzdCLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUl2QixFQUFFLEVBQUU7WUFDSCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUE7UUFFRixjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWxDLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUk1QixFQUFFLEVBQUU7WUFDSCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBSTdCLEVBQUUsRUFBRTtZQUNILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUlILGVBQVUsR0FBRyxNQUFNLEVBQWUsQ0FBQztLQWFwQztJQVhDLFFBQVEsQ0FBQyxLQUFrQjtRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBZSxFQUFFLFVBQWtCLEdBQUc7UUFDOUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDO0lBQzlDLENBQUM7K0dBOUNVLGVBQWU7bUdBQWYsZUFBZSxtZENWNUIseXFCQTBCQTs7NEZEaEJhLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLEtBQUssbUJBR0EsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEt2U2V2ZXJpdHksIG1hcGFTZXZlcml0eUNvbG9ycyB9IGZyb20gJy4uLy4uL2FwaS90eXBlcy9rdi1zdmVyaXR5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFncycsXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRhZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi10YWdzLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VGFnc0NvbXBvbmVudCB7XHJcblxyXG4gIHRhZ3MgPSBpbnB1dDxLdlRhZ0NvbmZpZ1tdPigpXHJcblxyXG4gIGhvdmVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpXHJcblxyXG5cclxuICBjb2xvciA9IGNvbXB1dGVkKCgpID0+ICh0YWc6e1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHNldmVyaXR5PzogS3ZTZXZlcml0eTtcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgfSkgPT4ge1xyXG4gICAgcmV0dXJuIG1hcGFTZXZlcml0eUNvbG9yc1t0YWcuc2V2ZXJpdHkgfHwgJ2luZm8nXVxyXG4gIH0pXHJcblxyXG4gIGNsaWNrYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgYmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+ICh0YWc6IHtcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBzZXZlcml0eT86IEt2U2V2ZXJpdHk7XHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zcGFyZW50TWl4KHRoaXMuY29sb3IoKSh0YWcpLCAwLjE1KTtcclxuICB9KTtcclxuXHJcbiAgYm9yZGVyQ29sb3IgPSBjb21wdXRlZCgoKSA9PiAodGFnOiB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgc2V2ZXJpdHk/OiBLdlNldmVyaXR5O1xyXG4gICAgaWNvbj86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc3BhcmVudE1peCh0aGlzLmNvbG9yKCkodGFnKSwgMC4yKTtcclxuICB9KTtcclxuXHJcblxyXG5cclxuICBvbkNsaWNrVGFnID0gb3V0cHV0PEt2VGFnQ29uZmlnPigpO1xyXG5cclxuICBjbGlja1RhZyhldmVudDogS3ZUYWdDb25maWcgKXtcclxuICAgIHRoaXMub25DbGlja1RhZy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHJhbnNwYXJlbnRNaXgoYmFzZUhleDogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIgPSAwLjMpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgciA9IHBhcnNlSW50KGJhc2VIZXguc2xpY2UoMSwgMyksIDE2KTtcclxuICAgIGNvbnN0IGcgPSBwYXJzZUludChiYXNlSGV4LnNsaWNlKDMsIDUpLCAxNik7XHJcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoYmFzZUhleC5zbGljZSg1LCA3KSwgMTYpO1xyXG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eX0pYDtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgS3ZUYWdDb25maWcgPSB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgc2V2ZXJpdHk/OiBLdlNldmVyaXR5O1xyXG4gICAgaWNvbj86IHN0cmluZztcclxuICAgIHZhbHVlPzpudW1iZXI7XHJcbn0iLCJAZm9yICh0YWcgb2YgdGFncygpOyB0cmFjayAkaW5kZXgpIHtcclxuPGRpdlxyXG4gIFtjbGFzcy5ob3Zlci10YWddPVwiaG92ZXIoKVwiXHJcbiAgY2xhc3M9XCJrdi10YWcge3tjbGlja2FibGUoKSAmJiAna3YtdGFnLWNsaWNrYWJsZSd9fVwiXHJcbiAgW3N0eWxlLmNvbG9yXT1cImNvbG9yKCkodGFnKVwiXHJcbiAgKGNsaWNrKT1cImNsaWNrVGFnKHRhZylcIlxyXG4gIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImJhY2tncm91bmQoKSh0YWcpXCJcclxuICBzdHlsZT1cInVzZXItc2VsZWN0OiBub25lXCJcclxuPlxyXG4gIEBpZih0YWcuaWNvbikge1xyXG4gIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiZm9udC1zaXplOiAwLjc1cmVtXCI+XHJcbiAgICB7eyB0YWcuaWNvbiB9fVxyXG4gIDwvc3Bhbj5cclxuICB9XHJcbiAgPHNwYW4+XHJcbiAgICB7eyB0YWcubGFiZWwgfX1cclxuICA8L3NwYW4+XHJcblxyXG4gIEBpZih0YWcudmFsdWUpIHtcclxuICA8c3BhblxyXG4gICAgY2xhc3M9XCJiZy13aGl0ZSBib3JkZXItY2lyY2xlIGgtMXJlbSB3LTFyZW0gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICA+e3sgdGFnLnZhbHVlIH19PC9zcGFuXHJcbiAgPlxyXG4gIH1cclxuPC9kaXY+XHJcbn1cclxuIl19
|