@hmcts/ccd-case-ui-toolkit 5.0.6-angular11-upgrade → 5.0.9-angular11-upgrade
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/bundles/hmcts-ccd-case-ui-toolkit.umd.js +25692 -5025
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -16
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
- package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +42 -0
- package/esm2015/lib/shared/components/activity/activity-banner/index.js +2 -0
- package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +35 -0
- package/esm2015/lib/shared/components/activity/activity-icon/index.js +2 -0
- package/esm2015/lib/shared/components/activity/activity.component.js +150 -0
- package/esm2015/lib/shared/components/activity/activity.module.js +53 -0
- package/esm2015/lib/shared/components/activity/index.js +5 -0
- package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +94 -0
- package/esm2015/lib/shared/components/case-editor/case-create/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +113 -0
- package/esm2015/lib/shared/components/case-editor/case-edit/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +131 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-confirm/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.js +146 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-form/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.js +11 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +654 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-page/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +759 -0
- package/esm2015/lib/shared/components/case-editor/case-edit-submit/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/case-editor.module.js +185 -0
- package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +89 -0
- package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +72 -0
- package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +157 -0
- package/esm2015/lib/shared/components/case-editor/case-event-completion/index.js +4 -0
- package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +85 -0
- package/esm2015/lib/shared/components/case-editor/case-progress/index.js +2 -0
- package/esm2015/lib/shared/components/case-editor/domain/event-completion-params.model.js +2 -0
- package/esm2015/lib/shared/components/case-editor/domain/event-completion-portal-types.model.js +6 -0
- package/esm2015/lib/shared/components/case-editor/editor.routing.js +31 -0
- package/esm2015/lib/shared/components/case-editor/index.js +13 -0
- package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +92 -0
- package/esm2015/lib/shared/components/case-editor/services/case-worker.service.js +32 -0
- package/esm2015/lib/shared/components/case-editor/services/convert-href-to-router.service.js +41 -0
- package/esm2015/lib/shared/components/case-editor/services/event-completion-state-machine.service.js +162 -0
- package/esm2015/lib/shared/components/case-editor/services/event-trigger.service.js +20 -0
- package/esm2015/lib/shared/components/case-editor/services/index.js +12 -0
- package/esm2015/lib/shared/components/case-editor/services/judicial-worker.service.js +32 -0
- package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +50 -0
- package/esm2015/lib/shared/components/case-editor/services/wizard-factory.service.js +7 -0
- package/esm2015/lib/shared/components/case-header/case-header.component.js +65 -0
- package/esm2015/lib/shared/components/case-header/case-header.module.js +35 -0
- package/esm2015/lib/shared/components/case-header/index.js +3 -0
- package/esm2015/lib/shared/components/case-history/case-history.component.js +264 -0
- package/esm2015/lib/shared/components/case-history/case-history.module.js +52 -0
- package/esm2015/lib/shared/components/case-history/domain/case-history.model.js +28 -0
- package/esm2015/lib/shared/components/case-history/index.js +3 -0
- package/esm2015/lib/shared/components/case-history/services/case-history.service.js +40 -0
- package/esm2015/lib/shared/components/case-list/case-list.component.js +370 -0
- package/esm2015/lib/shared/components/case-list/case-list.module.js +45 -0
- package/esm2015/lib/shared/components/case-list/index.js +3 -0
- package/esm2015/lib/shared/components/case-list-filters/case-list-filters.component.js +57 -0
- package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +59 -0
- package/esm2015/lib/shared/components/case-list-filters/index.js +3 -0
- package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +118 -0
- package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +46 -0
- package/esm2015/lib/shared/components/case-timeline/index.js +3 -0
- package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +195 -0
- package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +307 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.js +20 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +64 -0
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +120 -0
- package/esm2015/lib/shared/components/case-viewer/case-event-trigger/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +545 -0
- package/esm2015/lib/shared/components/case-viewer/case-full-access-view/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +63 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +258 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.js +18 -0
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +195 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js +11 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.js +60 -0
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +100 -0
- package/esm2015/lib/shared/components/case-viewer/case-view/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +129 -0
- package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +155 -0
- package/esm2015/lib/shared/components/case-viewer/index.js +14 -0
- package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +111 -0
- package/esm2015/lib/shared/components/case-viewer/printer/index.js +4 -0
- package/esm2015/lib/shared/components/case-viewer/printer/pipes/index.js +2 -0
- package/esm2015/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.js +60 -0
- package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +110 -0
- package/esm2015/lib/shared/components/case-viewer/services/event-trigger.resolver.js +64 -0
- package/esm2015/lib/shared/components/case-viewer/services/index.js +3 -0
- package/esm2015/lib/shared/components/case-viewer/viewer.routing.js +127 -0
- package/esm2015/lib/shared/components/create-case-filters/create-case-filters-selection.model.js +8 -0
- package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +257 -0
- package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +42 -0
- package/esm2015/lib/shared/components/create-case-filters/index.js +4 -0
- package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +57 -0
- package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/index.js +2 -0
- package/esm2015/lib/shared/components/dialogs/dialogs.module.js +49 -0
- package/esm2015/lib/shared/components/dialogs/document-dialog/index.js +2 -0
- package/esm2015/lib/shared/components/dialogs/index.js +6 -0
- package/esm2015/lib/shared/components/dialogs/remove-dialog/index.js +2 -0
- package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/index.js +2 -0
- package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +61 -0
- package/esm2015/lib/shared/components/error/callback-errors.component.js +145 -0
- package/esm2015/lib/shared/components/error/domain/error-context.js +3 -0
- package/esm2015/lib/shared/components/error/domain/index.js +2 -0
- package/esm2015/lib/shared/components/error/errors.module.js +31 -0
- package/esm2015/lib/shared/components/error/index.js +4 -0
- package/esm2015/lib/shared/components/error-message/error-message.component.js +51 -0
- package/esm2015/lib/shared/components/error-message/error-message.module.js +39 -0
- package/esm2015/lib/shared/components/error-message/index.js +3 -0
- package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +55 -0
- package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +52 -0
- package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +104 -0
- package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +60 -0
- package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +54 -0
- package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +52 -0
- package/esm2015/lib/shared/components/event-start/event-guard/event-start.guard.js +103 -0
- package/esm2015/lib/shared/components/event-start/event-start.component.js +52 -0
- package/esm2015/lib/shared/components/event-start/event-start.module.js +69 -0
- package/esm2015/lib/shared/components/event-start/index.js +10 -0
- package/esm2015/lib/shared/components/event-start/models/event-start-state-machine-context.model.js +2 -0
- package/esm2015/lib/shared/components/event-start/models/event-start-states-enum.model.js +16 -0
- package/esm2015/lib/shared/components/event-start/models/index.js +3 -0
- package/esm2015/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.js +29 -0
- package/esm2015/lib/shared/components/event-start/services/event-start-state-machine.service.js +168 -0
- package/esm2015/lib/shared/components/event-start/services/index.js +2 -0
- package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +108 -0
- package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +35 -0
- package/esm2015/lib/shared/components/event-trigger/index.js +3 -0
- package/esm2015/lib/shared/components/index.js +20 -0
- package/esm2015/lib/shared/components/loading-spinner/index.js +2 -0
- package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +33 -0
- package/esm2015/lib/shared/components/pagination/index.js +3 -0
- package/esm2015/lib/shared/components/pagination/pagination.component.js +255 -0
- package/esm2015/lib/shared/components/pagination/pagination.module.js +33 -0
- package/esm2015/lib/shared/components/palette/address/index.js +3 -0
- package/esm2015/lib/shared/components/palette/case-link/index.js +3 -0
- package/esm2015/lib/shared/components/palette/complex/index.js +1 -7
- package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +2 -2
- package/esm2015/lib/shared/components/palette/index.js +32 -0
- package/esm2015/lib/shared/components/palette/palette.module.js +16 -27
- package/esm2015/lib/shared/components/search-result/index.js +3 -0
- package/esm2015/lib/shared/components/search-result/search-result.component.js +845 -0
- package/esm2015/lib/shared/components/search-result/search-result.module.js +67 -0
- package/esm2015/lib/shared/components/workbasket-filters/index.js +3 -0
- package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +448 -0
- package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +60 -0
- package/esm2015/lib/shared/domain/case-view/role-request.model.js +1 -1
- package/esm2015/lib/shared/domain/work-allocation/case-worker.model.js +2 -0
- package/esm2015/lib/shared/domain/work-allocation/judicial-worker.model.js +2 -0
- package/esm2015/lib/shared/index.js +2 -1
- package/esm2015/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.js +29 -0
- package/esm2015/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.js +29 -0
- package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +154 -0
- package/esm2015/lib/shared/pipes/complex/ccd-tab-fields.pipe.js +31 -0
- package/esm2015/lib/shared/pipes/complex/cdd-page-fields.pipe.js +39 -0
- package/esm2015/lib/shared/pipes/complex/fields-filter.pipe.js +103 -0
- package/esm2015/lib/shared/pipes/complex/index.js +7 -0
- package/esm2015/lib/shared/pipes/index.js +3 -2
- package/esm2015/lib/shared/pipes/pipes.module.js +26 -9
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +22295 -4295
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
- package/lib/shared/components/activity/activity-banner/activity-banner.component.d.ts +12 -0
- package/lib/shared/components/activity/activity-banner/activity-banner.component.d.ts.map +1 -0
- package/lib/shared/components/activity/activity-banner/index.d.ts +2 -0
- package/lib/shared/components/activity/activity-banner/index.d.ts.map +1 -0
- package/lib/shared/components/activity/activity-icon/activity-icon.component.d.ts +11 -0
- package/lib/shared/components/activity/activity-icon/activity-icon.component.d.ts.map +1 -0
- package/lib/shared/components/activity/activity-icon/index.d.ts +2 -0
- package/lib/shared/components/activity/activity-icon/index.d.ts.map +1 -0
- package/lib/shared/components/activity/activity.component.d.ts +32 -0
- package/lib/shared/components/activity/activity.component.d.ts.map +1 -0
- package/lib/shared/components/activity/activity.module.d.ts +12 -0
- package/lib/shared/components/activity/activity.module.d.ts.map +1 -0
- package/lib/shared/components/activity/index.d.ts +5 -0
- package/lib/shared/components/activity/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-create/case-create.component.d.ts +33 -0
- package/lib/shared/components/case-editor/case-create/case-create.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-create/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-create/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +50 -0
- package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-edit/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts +26 -0
- package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +26 -0
- package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-form/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-edit-form/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts +10 -0
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +100 -0
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-page/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-edit-page/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +123 -0
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-edit-submit/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-edit-submit/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-editor.module.d.ts +27 -0
- package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +31 -0
- package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +11 -0
- package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +32 -0
- package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-event-completion/index.d.ts +4 -0
- package/lib/shared/components/case-editor/case-event-completion/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts +30 -0
- package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-progress/index.d.ts +2 -0
- package/lib/shared/components/case-editor/case-progress/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts +7 -0
- package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +5 -0
- package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/editor.routing.d.ts +3 -0
- package/lib/shared/components/case-editor/editor.routing.d.ts.map +1 -0
- package/lib/shared/components/case-editor/index.d.ts +13 -0
- package/lib/shared/components/case-editor/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts +23 -0
- package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/case-worker.service.d.ts +16 -0
- package/lib/shared/components/case-editor/services/case-worker.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts +14 -0
- package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts +33 -0
- package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/event-trigger.service.d.ts +10 -0
- package/lib/shared/components/case-editor/services/event-trigger.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/index.d.ts +12 -0
- package/lib/shared/components/case-editor/services/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/judicial-worker.service.d.ts +16 -0
- package/lib/shared/components/case-editor/services/judicial-worker.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts +17 -0
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts +6 -0
- package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts.map +1 -0
- package/lib/shared/components/case-header/case-header.component.d.ts +15 -0
- package/lib/shared/components/case-header/case-header.component.d.ts.map +1 -0
- package/lib/shared/components/case-header/case-header.module.d.ts +11 -0
- package/lib/shared/components/case-header/case-header.module.d.ts.map +1 -0
- package/lib/shared/components/case-header/index.d.ts +3 -0
- package/lib/shared/components/case-header/index.d.ts.map +1 -0
- package/lib/shared/components/case-history/case-history.component.d.ts +33 -0
- package/lib/shared/components/case-history/case-history.component.d.ts.map +1 -0
- package/lib/shared/components/case-history/case-history.module.d.ts +14 -0
- package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -0
- package/lib/shared/components/case-history/domain/case-history.model.d.ts +16 -0
- package/lib/shared/components/case-history/domain/case-history.model.d.ts.map +1 -0
- package/lib/shared/components/case-history/index.d.ts +3 -0
- package/lib/shared/components/case-history/index.d.ts.map +1 -0
- package/lib/shared/components/case-history/services/case-history.service.d.ts +17 -0
- package/lib/shared/components/case-history/services/case-history.service.d.ts.map +1 -0
- package/lib/shared/components/case-list/case-list.component.d.ts +47 -0
- package/lib/shared/components/case-list/case-list.component.d.ts.map +1 -0
- package/lib/shared/components/case-list/case-list.module.d.ts +13 -0
- package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -0
- package/lib/shared/components/case-list/index.d.ts +3 -0
- package/lib/shared/components/case-list/index.d.ts.map +1 -0
- package/lib/shared/components/case-list-filters/case-list-filters.component.d.ts +19 -0
- package/lib/shared/components/case-list-filters/case-list-filters.component.d.ts.map +1 -0
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +13 -0
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -0
- package/lib/shared/components/case-list-filters/index.d.ts +3 -0
- package/lib/shared/components/case-list-filters/index.d.ts.map +1 -0
- package/lib/shared/components/case-timeline/case-timeline.component.d.ts +27 -0
- package/lib/shared/components/case-timeline/case-timeline.component.d.ts.map +1 -0
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts +13 -0
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -0
- package/lib/shared/components/case-timeline/index.d.ts +3 -0
- package/lib/shared/components/case-timeline/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts +19 -0
- package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts +40 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts +17 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +12 -0
- package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +41 -0
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +90 -0
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +14 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +49 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts +15 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +33 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts +9 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts +12 -0
- package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +32 -0
- package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-view/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/case-view/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-viewer.component.d.ts +32 -0
- package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts +36 -0
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/index.d.ts +14 -0
- package/lib/shared/components/case-viewer/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts +24 -0
- package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/printer/index.d.ts +4 -0
- package/lib/shared/components/case-viewer/printer/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/printer/pipes/index.d.ts +2 -0
- package/lib/shared/components/case-viewer/printer/pipes/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts +24 -0
- package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/services/case.resolver.d.ts +29 -0
- package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts +26 -0
- package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/services/index.d.ts +3 -0
- package/lib/shared/components/case-viewer/services/index.d.ts.map +1 -0
- package/lib/shared/components/case-viewer/viewer.routing.d.ts +3 -0
- package/lib/shared/components/case-viewer/viewer.routing.d.ts.map +1 -0
- package/lib/shared/components/create-case-filters/create-case-filters-selection.model.d.ts +7 -0
- package/lib/shared/components/create-case-filters/create-case-filters-selection.model.d.ts.map +1 -0
- package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts +57 -0
- package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts.map +1 -0
- package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +12 -0
- package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -0
- package/lib/shared/components/create-case-filters/index.d.ts +4 -0
- package/lib/shared/components/create-case-filters/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.d.ts +12 -0
- package/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/dialogs/delete-or-cancel-dialog/index.d.ts +2 -0
- package/lib/shared/components/dialogs/delete-or-cancel-dialog/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/dialogs.module.d.ts +13 -0
- package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -0
- package/lib/shared/components/dialogs/document-dialog/index.d.ts +2 -0
- package/lib/shared/components/dialogs/document-dialog/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/index.d.ts +6 -0
- package/lib/shared/components/dialogs/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/remove-dialog/index.d.ts +2 -0
- package/lib/shared/components/dialogs/remove-dialog/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/save-or-discard-dialog/index.d.ts +2 -0
- package/lib/shared/components/dialogs/save-or-discard-dialog/index.d.ts.map +1 -0
- package/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.d.ts +13 -0
- package/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/error/callback-errors.component.d.ts +25 -0
- package/lib/shared/components/error/callback-errors.component.d.ts.map +1 -0
- package/lib/shared/components/error/domain/error-context.d.ts +5 -0
- package/lib/shared/components/error/domain/error-context.d.ts.map +1 -0
- package/lib/shared/components/error/domain/index.d.ts +2 -0
- package/lib/shared/components/error/domain/index.d.ts.map +1 -0
- package/lib/shared/components/error/errors.module.d.ts +10 -0
- package/lib/shared/components/error/errors.module.d.ts.map +1 -0
- package/lib/shared/components/error/index.d.ts +4 -0
- package/lib/shared/components/error/index.d.ts.map +1 -0
- package/lib/shared/components/error-message/error-message.component.d.ts +8 -0
- package/lib/shared/components/error-message/error-message.component.d.ts.map +1 -0
- package/lib/shared/components/error-message/error-message.module.d.ts +12 -0
- package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -0
- package/lib/shared/components/error-message/index.d.ts +3 -0
- package/lib/shared/components/error-message/index.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +10 -0
- package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +10 -0
- package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +23 -0
- package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.d.ts +7 -0
- package/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/task-conflict/task-conflict.component.d.ts +9 -0
- package/lib/shared/components/event-start/components/task-conflict/task-conflict.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +10 -0
- package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +20 -0
- package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -0
- package/lib/shared/components/event-start/event-start.component.d.ts +20 -0
- package/lib/shared/components/event-start/event-start.component.d.ts.map +1 -0
- package/lib/shared/components/event-start/event-start.module.d.ts +17 -0
- package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -0
- package/lib/shared/components/event-start/index.d.ts +10 -0
- package/lib/shared/components/event-start/index.d.ts.map +1 -0
- package/lib/shared/components/event-start/models/event-start-state-machine-context.model.d.ts +13 -0
- package/lib/shared/components/event-start/models/event-start-state-machine-context.model.d.ts.map +1 -0
- package/lib/shared/components/event-start/models/event-start-states-enum.model.d.ts +15 -0
- package/lib/shared/components/event-start/models/event-start-states-enum.model.d.ts.map +1 -0
- package/lib/shared/components/event-start/models/index.d.ts +3 -0
- package/lib/shared/components/event-start/models/index.d.ts.map +1 -0
- package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts +15 -0
- package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts.map +1 -0
- package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts +40 -0
- package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -0
- package/lib/shared/components/event-start/services/index.d.ts +2 -0
- package/lib/shared/components/event-start/services/index.d.ts.map +1 -0
- package/lib/shared/components/event-trigger/event-trigger.component.d.ts +24 -0
- package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -0
- package/lib/shared/components/event-trigger/event-trigger.module.d.ts +11 -0
- package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -0
- package/lib/shared/components/event-trigger/index.d.ts +3 -0
- package/lib/shared/components/event-trigger/index.d.ts.map +1 -0
- package/lib/shared/components/index.d.ts +20 -0
- package/lib/shared/components/index.d.ts.map +1 -0
- package/lib/shared/components/loading-spinner/index.d.ts +2 -0
- package/lib/shared/components/loading-spinner/index.d.ts.map +1 -0
- package/lib/shared/components/loading-spinner/loading-spinner.component.d.ts +7 -0
- package/lib/shared/components/loading-spinner/loading-spinner.component.d.ts.map +1 -0
- package/lib/shared/components/pagination/index.d.ts +3 -0
- package/lib/shared/components/pagination/index.d.ts.map +1 -0
- package/lib/shared/components/pagination/pagination.component.d.ts +26 -0
- package/lib/shared/components/pagination/pagination.component.d.ts.map +1 -0
- package/lib/shared/components/pagination/pagination.module.d.ts +10 -0
- package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -0
- package/lib/shared/components/palette/address/index.d.ts +3 -0
- package/lib/shared/components/palette/address/index.d.ts.map +1 -0
- package/lib/shared/components/palette/case-link/index.d.ts +3 -0
- package/lib/shared/components/palette/case-link/index.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/index.d.ts +0 -6
- package/lib/shared/components/palette/complex/index.d.ts.map +1 -1
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/index.d.ts +32 -0
- package/lib/shared/components/palette/index.d.ts.map +1 -0
- package/lib/shared/components/palette/palette.module.d.ts +87 -93
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/search-result/index.d.ts +3 -0
- package/lib/shared/components/search-result/index.d.ts.map +1 -0
- package/lib/shared/components/search-result/search-result.component.d.ts +111 -0
- package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -0
- package/lib/shared/components/search-result/search-result.module.d.ts +16 -0
- package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -0
- package/lib/shared/components/workbasket-filters/index.d.ts +3 -0
- package/lib/shared/components/workbasket-filters/index.d.ts.map +1 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +85 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +12 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -0
- package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
- package/lib/shared/domain/work-allocation/case-worker.model.d.ts +14 -0
- package/lib/shared/domain/work-allocation/case-worker.model.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/judicial-worker.model.d.ts +8 -0
- package/lib/shared/domain/work-allocation/judicial-worker.model.d.ts.map +1 -0
- package/lib/shared/index.d.ts +1 -0
- package/lib/shared/index.d.ts.map +1 -1
- package/lib/shared/{components/palette → pipes}/complex/ccd-collection-table-value-case-fields.pipe.d.ts +1 -1
- package/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +1 -0
- package/lib/shared/{components/palette → pipes}/complex/ccd-cyapage-label-filter.pipe.d.ts +1 -1
- package/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.d.ts.map +1 -0
- package/lib/shared/{components/palette → pipes}/complex/ccd-read-fields-filter.pipe.d.ts +1 -1
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -0
- package/lib/shared/{components/palette → pipes}/complex/ccd-tab-fields.pipe.d.ts +2 -2
- package/lib/shared/pipes/complex/ccd-tab-fields.pipe.d.ts.map +1 -0
- package/lib/shared/{components/palette → pipes}/complex/cdd-page-fields.pipe.d.ts +2 -2
- package/lib/shared/pipes/complex/cdd-page-fields.pipe.d.ts.map +1 -0
- package/lib/shared/{components/palette → pipes}/complex/fields-filter.pipe.d.ts +1 -1
- package/lib/shared/pipes/complex/fields-filter.pipe.d.ts.map +1 -0
- package/lib/shared/pipes/complex/index.d.ts +7 -0
- package/lib/shared/pipes/complex/index.d.ts.map +1 -0
- package/lib/shared/pipes/index.d.ts +2 -1
- package/lib/shared/pipes/index.d.ts.map +1 -1
- package/lib/shared/pipes/pipes.module.d.ts +7 -2
- package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2015/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js +0 -29
- package/esm2015/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.js +0 -29
- package/esm2015/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +0 -154
- package/esm2015/lib/shared/components/palette/complex/ccd-tab-fields.pipe.js +0 -31
- package/esm2015/lib/shared/components/palette/complex/cdd-page-fields.pipe.js +0 -39
- package/esm2015/lib/shared/components/palette/complex/fields-filter.pipe.js +0 -103
- package/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +0 -1
- package/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.d.ts.map +0 -1
- package/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts.map +0 -1
- package/lib/shared/components/palette/complex/ccd-tab-fields.pipe.d.ts.map +0 -1
- package/lib/shared/components/palette/complex/cdd-page-fields.pipe.d.ts.map +0 -1
- package/lib/shared/components/palette/complex/fields-filter.pipe.d.ts.map +0 -1
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { ActivatedRoute } from '@angular/router';
|
|
4
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
|
+
import { DRAFT_PREFIX } from '../../../domain/draft.model';
|
|
6
|
+
import { CaseFieldService } from '../../../services/case-fields/case-field.service';
|
|
7
|
+
import { FieldsUtils } from '../../../services/fields/fields.utils';
|
|
8
|
+
import { FormErrorService } from '../../../services/form/form-error.service';
|
|
9
|
+
import { FormValueService } from '../../../services/form/form-value.service';
|
|
10
|
+
import { SaveOrDiscardDialogComponent } from '../../dialogs/save-or-discard-dialog';
|
|
11
|
+
import { initDialog } from '../../helpers/init-dialog-helper';
|
|
12
|
+
import { CaseEditComponent } from '../case-edit/case-edit.component';
|
|
13
|
+
import { PageValidationService } from '../services/page-validation.service';
|
|
14
|
+
import { CaseEditPageText } from './case-edit-page-text.enum';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "../case-edit/case-edit.component";
|
|
17
|
+
import * as i2 from "@angular/router";
|
|
18
|
+
import * as i3 from "../../../services/form/form-value.service";
|
|
19
|
+
import * as i4 from "../../../services/form/form-error.service";
|
|
20
|
+
import * as i5 from "../services/page-validation.service";
|
|
21
|
+
import * as i6 from "@angular/material/dialog";
|
|
22
|
+
import * as i7 from "../../../services/case-fields/case-field.service";
|
|
23
|
+
import * as i8 from "@angular/common";
|
|
24
|
+
import * as i9 from "../../error/callback-errors.component";
|
|
25
|
+
import * as i10 from "../../loading-spinner/loading-spinner.component";
|
|
26
|
+
import * as i11 from "../../palette/markdown/markdown.component";
|
|
27
|
+
import * as i12 from "@angular/forms";
|
|
28
|
+
import * as i13 from "../case-edit-form/case-edit-form.component";
|
|
29
|
+
import * as i14 from "../../../pipes/case-title/ccd-case-title.pipe";
|
|
30
|
+
import * as i15 from "../../../pipes/case-reference/case-reference.pipe";
|
|
31
|
+
function CaseEditPageComponent_ccd_loading_spinner_0_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelement(0, "ccd-loading-spinner");
|
|
33
|
+
} }
|
|
34
|
+
function CaseEditPageComponent_ng_container_1_h1_1_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelementStart(0, "h1", 10);
|
|
36
|
+
i0.ɵɵtext(1);
|
|
37
|
+
i0.ɵɵelementEnd();
|
|
38
|
+
} if (rf & 2) {
|
|
39
|
+
const ctx_r11 = i0.ɵɵnextContext(2);
|
|
40
|
+
i0.ɵɵadvance(1);
|
|
41
|
+
i0.ɵɵtextInterpolate(ctx_r11.eventTrigger.name);
|
|
42
|
+
} }
|
|
43
|
+
function CaseEditPageComponent_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementContainerStart(0);
|
|
45
|
+
i0.ɵɵelementStart(1, "span", 11);
|
|
46
|
+
i0.ɵɵtext(2);
|
|
47
|
+
i0.ɵɵelementEnd();
|
|
48
|
+
i0.ɵɵelementStart(3, "h1", 10);
|
|
49
|
+
i0.ɵɵtext(4);
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
i0.ɵɵelementContainerEnd();
|
|
52
|
+
} if (rf & 2) {
|
|
53
|
+
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
54
|
+
i0.ɵɵadvance(2);
|
|
55
|
+
i0.ɵɵtextInterpolate(ctx_r12.eventTrigger.name);
|
|
56
|
+
i0.ɵɵadvance(2);
|
|
57
|
+
i0.ɵɵtextInterpolate(ctx_r12.currentPage.label);
|
|
58
|
+
} }
|
|
59
|
+
function CaseEditPageComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelementContainerStart(0);
|
|
61
|
+
i0.ɵɵtemplate(1, CaseEditPageComponent_ng_container_1_h1_1_Template, 2, 1, "h1", 9);
|
|
62
|
+
i0.ɵɵtemplate(2, CaseEditPageComponent_ng_container_1_ng_container_2_Template, 5, 2, "ng-container", 0);
|
|
63
|
+
i0.ɵɵelementContainerEnd();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
66
|
+
i0.ɵɵadvance(1);
|
|
67
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.currentPage.label);
|
|
68
|
+
i0.ɵɵadvance(1);
|
|
69
|
+
i0.ɵɵproperty("ngIf", ctx_r1.currentPage.label);
|
|
70
|
+
} }
|
|
71
|
+
function CaseEditPageComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
i0.ɵɵelement(0, "div");
|
|
73
|
+
} }
|
|
74
|
+
function CaseEditPageComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelement(0, "ccd-markdown", 12);
|
|
76
|
+
i0.ɵɵpipe(1, "ccdCaseTitle");
|
|
77
|
+
} if (rf & 2) {
|
|
78
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
79
|
+
i0.ɵɵproperty("content", i0.ɵɵpipeBind3(1, 1, ctx_r4.getCaseTitle(), ctx_r4.caseFields, ctx_r4.editForm.controls["data"]));
|
|
80
|
+
} }
|
|
81
|
+
function CaseEditPageComponent_ng_template_5_h2_0_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵelementStart(0, "h2", 14);
|
|
83
|
+
i0.ɵɵtext(1);
|
|
84
|
+
i0.ɵɵpipe(2, "ccdCaseReference");
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
88
|
+
i0.ɵɵadvance(1);
|
|
89
|
+
i0.ɵɵtextInterpolate1("#", i0.ɵɵpipeBind1(2, 1, ctx_r13.getCaseId()), "");
|
|
90
|
+
} }
|
|
91
|
+
function CaseEditPageComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
+
i0.ɵɵtemplate(0, CaseEditPageComponent_ng_template_5_h2_0_Template, 3, 3, "h2", 13);
|
|
93
|
+
} if (rf & 2) {
|
|
94
|
+
const ctx_r6 = i0.ɵɵnextContext();
|
|
95
|
+
i0.ɵɵproperty("ngIf", ctx_r6.getCaseId());
|
|
96
|
+
} }
|
|
97
|
+
function CaseEditPageComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
99
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
100
|
+
i0.ɵɵelementStart(1, "ul", 19);
|
|
101
|
+
i0.ɵɵelementStart(2, "li");
|
|
102
|
+
i0.ɵɵelementStart(3, "a", 20);
|
|
103
|
+
i0.ɵɵlistener("click", function CaseEditPageComponent_div_7_div_3_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r17); const validationError_r15 = ctx.$implicit; const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.navigateToErrorElement(validationError_r15.id); });
|
|
104
|
+
i0.ɵɵtext(4);
|
|
105
|
+
i0.ɵɵelementEnd();
|
|
106
|
+
i0.ɵɵelementEnd();
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
} if (rf & 2) {
|
|
110
|
+
const validationError_r15 = ctx.$implicit;
|
|
111
|
+
i0.ɵɵadvance(4);
|
|
112
|
+
i0.ɵɵtextInterpolate(validationError_r15.message);
|
|
113
|
+
} }
|
|
114
|
+
function CaseEditPageComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
+
i0.ɵɵelementStart(0, "div", 15);
|
|
116
|
+
i0.ɵɵelementStart(1, "h2", 16);
|
|
117
|
+
i0.ɵɵtext(2, " There is a problem ");
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
i0.ɵɵtemplate(3, CaseEditPageComponent_div_7_div_3_Template, 5, 1, "div", 17);
|
|
120
|
+
i0.ɵɵelementEnd();
|
|
121
|
+
} if (rf & 2) {
|
|
122
|
+
const ctx_r7 = i0.ɵɵnextContext();
|
|
123
|
+
i0.ɵɵadvance(3);
|
|
124
|
+
i0.ɵɵproperty("ngForOf", ctx_r7.validationErrors);
|
|
125
|
+
} }
|
|
126
|
+
function CaseEditPageComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
128
|
+
i0.ɵɵelementStart(1, "h1", 22);
|
|
129
|
+
i0.ɵɵtext(2, " Something went wrong ");
|
|
130
|
+
i0.ɵɵelementEnd();
|
|
131
|
+
i0.ɵɵelementStart(3, "div", 23);
|
|
132
|
+
i0.ɵɵelementStart(4, "p");
|
|
133
|
+
i0.ɵɵtext(5, "We're working to fix the problem. Try again shortly.");
|
|
134
|
+
i0.ɵɵelementEnd();
|
|
135
|
+
i0.ɵɵelementStart(6, "p");
|
|
136
|
+
i0.ɵɵelementStart(7, "a", 24);
|
|
137
|
+
i0.ɵɵtext(8, "Contact us");
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
i0.ɵɵtext(9, " if you're still having problems.");
|
|
140
|
+
i0.ɵɵelementEnd();
|
|
141
|
+
i0.ɵɵelementEnd();
|
|
142
|
+
i0.ɵɵelementEnd();
|
|
143
|
+
} }
|
|
144
|
+
function CaseEditPageComponent_div_9_ul_5_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
+
i0.ɵɵelementStart(0, "li", 29);
|
|
146
|
+
i0.ɵɵtext(1);
|
|
147
|
+
i0.ɵɵelementEnd();
|
|
148
|
+
} if (rf & 2) {
|
|
149
|
+
const fieldError_r20 = ctx.$implicit;
|
|
150
|
+
i0.ɵɵadvance(1);
|
|
151
|
+
i0.ɵɵtextInterpolate(fieldError_r20.message);
|
|
152
|
+
} }
|
|
153
|
+
function CaseEditPageComponent_div_9_ul_5_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementStart(0, "ul", 27);
|
|
155
|
+
i0.ɵɵtemplate(1, CaseEditPageComponent_div_9_ul_5_li_1_Template, 2, 1, "li", 28);
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
} if (rf & 2) {
|
|
158
|
+
const ctx_r18 = i0.ɵɵnextContext(2);
|
|
159
|
+
i0.ɵɵadvance(1);
|
|
160
|
+
i0.ɵɵproperty("ngForOf", ctx_r18.error.details.field_errors);
|
|
161
|
+
} }
|
|
162
|
+
function CaseEditPageComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
163
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
164
|
+
i0.ɵɵelementStart(1, "h3", 25);
|
|
165
|
+
i0.ɵɵtext(2, " The event could not be created ");
|
|
166
|
+
i0.ɵɵelementEnd();
|
|
167
|
+
i0.ɵɵelementStart(3, "p");
|
|
168
|
+
i0.ɵɵtext(4);
|
|
169
|
+
i0.ɵɵelementEnd();
|
|
170
|
+
i0.ɵɵtemplate(5, CaseEditPageComponent_div_9_ul_5_Template, 2, 1, "ul", 26);
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
} if (rf & 2) {
|
|
173
|
+
const ctx_r9 = i0.ɵɵnextContext();
|
|
174
|
+
i0.ɵɵadvance(4);
|
|
175
|
+
i0.ɵɵtextInterpolate(ctx_r9.error.message);
|
|
176
|
+
i0.ɵɵadvance(1);
|
|
177
|
+
i0.ɵɵproperty("ngIf", ctx_r9.error.details == null ? null : ctx_r9.error.details.field_errors);
|
|
178
|
+
} }
|
|
179
|
+
function CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template(rf, ctx) { if (rf & 1) {
|
|
180
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
181
|
+
i0.ɵɵelementStart(0, "ccd-case-edit-form", 40);
|
|
182
|
+
i0.ɵɵlistener("valuesChanged", function CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template_ccd_case_edit_form_valuesChanged_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return ctx_r23.applyValuesChanged($event); });
|
|
183
|
+
i0.ɵɵelementEnd();
|
|
184
|
+
} if (rf & 2) {
|
|
185
|
+
const ctx_r21 = i0.ɵɵnextContext(2);
|
|
186
|
+
i0.ɵɵproperty("fields", ctx_r21.currentPage.getCol1Fields())("formGroup", ctx_r21.editForm.controls["data"])("caseFields", ctx_r21.caseFields)("pageChangeSubject", ctx_r21.pageChangeSubject);
|
|
187
|
+
} }
|
|
188
|
+
function CaseEditPageComponent_form_12_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
190
|
+
i0.ɵɵelementStart(1, "div", 42);
|
|
191
|
+
i0.ɵɵelement(2, "ccd-case-edit-form", 43);
|
|
192
|
+
i0.ɵɵelementEnd();
|
|
193
|
+
i0.ɵɵelementStart(3, "div", 44);
|
|
194
|
+
i0.ɵɵelement(4, "ccd-case-edit-form", 45);
|
|
195
|
+
i0.ɵɵelementEnd();
|
|
196
|
+
i0.ɵɵelementEnd();
|
|
197
|
+
} if (rf & 2) {
|
|
198
|
+
const ctx_r22 = i0.ɵɵnextContext(2);
|
|
199
|
+
i0.ɵɵadvance(2);
|
|
200
|
+
i0.ɵɵproperty("fields", ctx_r22.currentPage.getCol1Fields())("formGroup", ctx_r22.editForm.controls["data"])("caseFields", ctx_r22.caseFields);
|
|
201
|
+
i0.ɵɵadvance(2);
|
|
202
|
+
i0.ɵɵproperty("fields", ctx_r22.currentPage.getCol2Fields())("formGroup", ctx_r22.editForm.controls["data"])("caseFields", ctx_r22.caseFields);
|
|
203
|
+
} }
|
|
204
|
+
function CaseEditPageComponent_form_12_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
206
|
+
i0.ɵɵelementStart(0, "form", 30);
|
|
207
|
+
i0.ɵɵlistener("submit", function CaseEditPageComponent_form_12_Template_form_submit_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.submit(); });
|
|
208
|
+
i0.ɵɵelementStart(1, "fieldset", 31);
|
|
209
|
+
i0.ɵɵelement(2, "legend", 32);
|
|
210
|
+
i0.ɵɵtemplate(3, CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template, 1, 4, "ccd-case-edit-form", 33);
|
|
211
|
+
i0.ɵɵtemplate(4, CaseEditPageComponent_form_12_div_4_Template, 5, 6, "div", 34);
|
|
212
|
+
i0.ɵɵelementEnd();
|
|
213
|
+
i0.ɵɵelementStart(5, "div", 35);
|
|
214
|
+
i0.ɵɵelementStart(6, "button", 36);
|
|
215
|
+
i0.ɵɵlistener("click", function CaseEditPageComponent_form_12_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.toPreviousPage(); });
|
|
216
|
+
i0.ɵɵpipe(7, "async");
|
|
217
|
+
i0.ɵɵtext(8, " Previous ");
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
i0.ɵɵelementStart(9, "button", 37);
|
|
220
|
+
i0.ɵɵtext(10);
|
|
221
|
+
i0.ɵɵelementEnd();
|
|
222
|
+
i0.ɵɵelementEnd();
|
|
223
|
+
i0.ɵɵelementStart(11, "p", 38);
|
|
224
|
+
i0.ɵɵelementStart(12, "a", 39);
|
|
225
|
+
i0.ɵɵlistener("click", function CaseEditPageComponent_form_12_Template_a_click_12_listener() { i0.ɵɵrestoreView(_r26); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.cancel(); });
|
|
226
|
+
i0.ɵɵtext(13);
|
|
227
|
+
i0.ɵɵelementEnd();
|
|
228
|
+
i0.ɵɵelementEnd();
|
|
229
|
+
i0.ɵɵelementEnd();
|
|
230
|
+
} if (rf & 2) {
|
|
231
|
+
const ctx_r10 = i0.ɵɵnextContext();
|
|
232
|
+
i0.ɵɵproperty("formGroup", ctx_r10.editForm);
|
|
233
|
+
i0.ɵɵadvance(3);
|
|
234
|
+
i0.ɵɵproperty("ngIf", !ctx_r10.currentPage.isMultiColumn());
|
|
235
|
+
i0.ɵɵadvance(1);
|
|
236
|
+
i0.ɵɵproperty("ngIf", ctx_r10.currentPage.isMultiColumn());
|
|
237
|
+
i0.ɵɵadvance(2);
|
|
238
|
+
i0.ɵɵproperty("disabled", !i0.ɵɵpipeBind1(7, 7, ctx_r10.hasPreviousPage$));
|
|
239
|
+
i0.ɵɵadvance(3);
|
|
240
|
+
i0.ɵɵproperty("disabled", ctx_r10.submitting());
|
|
241
|
+
i0.ɵɵadvance(1);
|
|
242
|
+
i0.ɵɵtextInterpolate(ctx_r10.triggerText);
|
|
243
|
+
i0.ɵɵadvance(3);
|
|
244
|
+
i0.ɵɵtextInterpolate(ctx_r10.getCancelText());
|
|
245
|
+
} }
|
|
246
|
+
export class CaseEditPageComponent {
|
|
247
|
+
constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService) {
|
|
248
|
+
this.caseEdit = caseEdit;
|
|
249
|
+
this.route = route;
|
|
250
|
+
this.formValueService = formValueService;
|
|
251
|
+
this.formErrorService = formErrorService;
|
|
252
|
+
this.cdRef = cdRef;
|
|
253
|
+
this.pageValidationService = pageValidationService;
|
|
254
|
+
this.dialog = dialog;
|
|
255
|
+
this.caseFieldService = caseFieldService;
|
|
256
|
+
this.callbackErrorsSubject = new Subject();
|
|
257
|
+
this.ignoreWarning = false;
|
|
258
|
+
this.triggerTextStart = CaseEditPageText.TRIGGER_TEXT_START;
|
|
259
|
+
this.triggerTextIgnoreWarnings = CaseEditPageText.TRIGGER_TEXT_CONTINUE;
|
|
260
|
+
this.isSubmitting = false;
|
|
261
|
+
this.formValuesChanged = false;
|
|
262
|
+
this.pageChangeSubject = new Subject();
|
|
263
|
+
this.validationErrors = [];
|
|
264
|
+
this.hasPreviousPage$ = new BehaviorSubject(false);
|
|
265
|
+
}
|
|
266
|
+
static scrollToTop() {
|
|
267
|
+
window.scrollTo(0, 0);
|
|
268
|
+
}
|
|
269
|
+
static setFocusToTop() {
|
|
270
|
+
const topContainer = document.getElementById('top');
|
|
271
|
+
if (topContainer) {
|
|
272
|
+
topContainer.focus();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
ngOnInit() {
|
|
276
|
+
this.dialogConfig = initDialog();
|
|
277
|
+
this.eventTrigger = this.caseEdit.eventTrigger;
|
|
278
|
+
this.editForm = this.caseEdit.form;
|
|
279
|
+
this.wizard = this.caseEdit.wizard;
|
|
280
|
+
this.caseFields = this.getCaseFields();
|
|
281
|
+
this.triggerText = this.getTriggerText();
|
|
282
|
+
this.route.params
|
|
283
|
+
.subscribe(params => {
|
|
284
|
+
const pageId = params['page'];
|
|
285
|
+
if (!this.currentPage || pageId !== this.currentPage.id) {
|
|
286
|
+
const page = this.caseEdit.getPage(pageId);
|
|
287
|
+
if (page) {
|
|
288
|
+
this.currentPage = page;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
if (this.currentPage) {
|
|
292
|
+
return this.next();
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
return this.first();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
this.hasPreviousPage$.next(this.caseEdit.hasPrevious(this.currentPage.id));
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
CaseEditPageComponent.setFocusToTop();
|
|
302
|
+
}
|
|
303
|
+
ngAfterViewChecked() {
|
|
304
|
+
this.cdRef.detectChanges();
|
|
305
|
+
}
|
|
306
|
+
applyValuesChanged(valuesChanged) {
|
|
307
|
+
this.formValuesChanged = valuesChanged;
|
|
308
|
+
}
|
|
309
|
+
first() {
|
|
310
|
+
return this.caseEdit.first();
|
|
311
|
+
}
|
|
312
|
+
currentPageIsNotValid() {
|
|
313
|
+
return !this.pageValidationService.isPageValid(this.currentPage, this.editForm);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* caseEventData.event_data contains all the values from the previous pages so we set caseEventData.data = caseEventData.event_data
|
|
317
|
+
* This builds the form with data from the previous pages
|
|
318
|
+
* EUI-3732 - Breathing space data not persisted on Previous button click with ExpUI Demo
|
|
319
|
+
*/
|
|
320
|
+
toPreviousPage() {
|
|
321
|
+
this.validationErrors = [];
|
|
322
|
+
const caseEventData = this.buildCaseEventData();
|
|
323
|
+
caseEventData.data = caseEventData.event_data;
|
|
324
|
+
this.updateFormData(caseEventData);
|
|
325
|
+
this.previous();
|
|
326
|
+
CaseEditPageComponent.setFocusToTop();
|
|
327
|
+
}
|
|
328
|
+
// Adding validation message to show it as Error Summary
|
|
329
|
+
generateErrorMessage(fields = [], container, path) {
|
|
330
|
+
const group = container || this.editForm.controls['data'];
|
|
331
|
+
fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
|
|
332
|
+
.filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path))
|
|
333
|
+
.forEach(casefield => {
|
|
334
|
+
const fieldElement = group.get(casefield.id);
|
|
335
|
+
if (fieldElement) {
|
|
336
|
+
const label = casefield.label || 'Field';
|
|
337
|
+
let id = casefield.id;
|
|
338
|
+
if (fieldElement['component'] && fieldElement['component'].parent) {
|
|
339
|
+
if (fieldElement['component'].idPrefix.indexOf('_' + id + '_') === -1) {
|
|
340
|
+
id = `${fieldElement['component'].idPrefix}${id}`;
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
id = `${fieldElement['component'].idPrefix}`;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (fieldElement.hasError('required')) {
|
|
347
|
+
this.validationErrors.push({ id, message: `${label} is required` });
|
|
348
|
+
fieldElement.markAsDirty();
|
|
349
|
+
}
|
|
350
|
+
else if (fieldElement.hasError('pattern')) {
|
|
351
|
+
this.validationErrors.push({ id, message: `${label} is not valid` });
|
|
352
|
+
fieldElement.markAsDirty();
|
|
353
|
+
}
|
|
354
|
+
else if (fieldElement.hasError('minlength')) {
|
|
355
|
+
this.validationErrors.push({ id, message: `${label} is below the minimum length` });
|
|
356
|
+
fieldElement.markAsDirty();
|
|
357
|
+
}
|
|
358
|
+
else if (fieldElement.hasError('maxlength')) {
|
|
359
|
+
this.validationErrors.push({ id, message: `${label} exceeds the maximum length` });
|
|
360
|
+
fieldElement.markAsDirty();
|
|
361
|
+
}
|
|
362
|
+
else if (fieldElement.invalid) {
|
|
363
|
+
if (casefield.isComplex()) {
|
|
364
|
+
this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
|
|
365
|
+
}
|
|
366
|
+
else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
|
|
367
|
+
const fieldArray = fieldElement;
|
|
368
|
+
if (fieldArray['component'] && fieldArray['component']['collItems'] && fieldArray['component']['collItems'].length > 0) {
|
|
369
|
+
fieldArray['component']['collItems'].forEach(element => {
|
|
370
|
+
id = `${element.prefix}`;
|
|
371
|
+
fieldArray.controls.forEach((control, index) => {
|
|
372
|
+
if (id.charAt(id.indexOf(index.toString())) === index.toString()) {
|
|
373
|
+
this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, control.get('value'), id);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
this.validationErrors.push({ id, message: `Select or fill the required ${casefield.label} field` });
|
|
381
|
+
fieldElement.markAsDirty();
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
CaseEditPageComponent.scrollToTop();
|
|
387
|
+
}
|
|
388
|
+
navigateToErrorElement(elementId) {
|
|
389
|
+
if (elementId) {
|
|
390
|
+
const htmlElement = document.getElementById(elementId);
|
|
391
|
+
if (htmlElement) {
|
|
392
|
+
htmlElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
393
|
+
htmlElement.focus();
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
submit() {
|
|
398
|
+
this.validationErrors = [];
|
|
399
|
+
if (this.currentPageIsNotValid()) {
|
|
400
|
+
this.generateErrorMessage(this.currentPage.case_fields);
|
|
401
|
+
}
|
|
402
|
+
if (!this.isSubmitting && !this.currentPageIsNotValid()) {
|
|
403
|
+
this.isSubmitting = true;
|
|
404
|
+
this.error = null;
|
|
405
|
+
const caseEventData = this.buildCaseEventData();
|
|
406
|
+
this.showSpinner = true;
|
|
407
|
+
this.caseEdit.validate(caseEventData, this.currentPage.id)
|
|
408
|
+
.subscribe((jsonData) => {
|
|
409
|
+
if (jsonData) {
|
|
410
|
+
this.updateFormData(jsonData);
|
|
411
|
+
}
|
|
412
|
+
this.saveDraft();
|
|
413
|
+
this.showSpinner = false;
|
|
414
|
+
this.next();
|
|
415
|
+
}, error => {
|
|
416
|
+
this.showSpinner = false;
|
|
417
|
+
this.handleError(error);
|
|
418
|
+
});
|
|
419
|
+
CaseEditPageComponent.scrollToTop();
|
|
420
|
+
}
|
|
421
|
+
CaseEditPageComponent.setFocusToTop();
|
|
422
|
+
}
|
|
423
|
+
updateFormData(jsonData) {
|
|
424
|
+
for (const caseFieldId of Object.keys(jsonData.data)) {
|
|
425
|
+
if (this.pageWithFieldExists(caseFieldId)) {
|
|
426
|
+
this.updateEventTriggerCaseFields(caseFieldId, jsonData, this.caseEdit.eventTrigger);
|
|
427
|
+
this.updateFormControlsValue(this.editForm, caseFieldId, jsonData.data[caseFieldId]);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// we do the check, becasue the data comes from the external source
|
|
432
|
+
pageWithFieldExists(caseFieldId) {
|
|
433
|
+
return this.wizard.findWizardPage(caseFieldId);
|
|
434
|
+
}
|
|
435
|
+
updateEventTriggerCaseFields(caseFieldId, jsonData, eventTrigger) {
|
|
436
|
+
var _a;
|
|
437
|
+
if (eventTrigger.case_fields) {
|
|
438
|
+
(_a = eventTrigger.case_fields) === null || _a === void 0 ? void 0 : _a.filter(element => element.id === caseFieldId).forEach(element => element.value = jsonData.data[caseFieldId]);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
updateFormControlsValue(formGroup, caseFieldId, value) {
|
|
442
|
+
const theControl = formGroup.controls['data'].get(caseFieldId);
|
|
443
|
+
if (theControl && theControl['status'] !== 'DISABLED') {
|
|
444
|
+
if (Array.isArray(theControl.value) && Array.isArray(value)
|
|
445
|
+
&& theControl.value.length > value.length && theControl['caseField']
|
|
446
|
+
&& theControl['caseField']['display_context'] && theControl['caseField']['display_context'] === 'OPTIONAL'
|
|
447
|
+
&& theControl['caseField']['field_type'] && theControl['caseField']['field_type']['type'] === 'Collection') {
|
|
448
|
+
// do nothing
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
theControl.patchValue(value);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
callbackErrorsNotify(errorContext) {
|
|
456
|
+
this.ignoreWarning = errorContext.ignore_warning;
|
|
457
|
+
this.triggerText = errorContext.trigger_text;
|
|
458
|
+
}
|
|
459
|
+
next() {
|
|
460
|
+
this.resetErrors();
|
|
461
|
+
this.isSubmitting = false;
|
|
462
|
+
this.formValuesChanged = false;
|
|
463
|
+
this.pageChangeSubject.next(true);
|
|
464
|
+
return this.caseEdit.next(this.currentPage.id);
|
|
465
|
+
}
|
|
466
|
+
previous() {
|
|
467
|
+
this.resetErrors();
|
|
468
|
+
this.saveDraft();
|
|
469
|
+
this.formValuesChanged = false;
|
|
470
|
+
this.pageChangeSubject.next(true);
|
|
471
|
+
return this.caseEdit.previous(this.currentPage.id);
|
|
472
|
+
}
|
|
473
|
+
hasPrevious() {
|
|
474
|
+
return this.caseEdit.hasPrevious(this.currentPage.id);
|
|
475
|
+
}
|
|
476
|
+
cancel() {
|
|
477
|
+
var _a;
|
|
478
|
+
if ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) {
|
|
479
|
+
if (this.formValuesChanged) {
|
|
480
|
+
const dialogRef = this.dialog.open(SaveOrDiscardDialogComponent, this.dialogConfig);
|
|
481
|
+
dialogRef.afterClosed().subscribe(result => {
|
|
482
|
+
if (result === 'Discard') {
|
|
483
|
+
this.discard();
|
|
484
|
+
}
|
|
485
|
+
else if (result === 'Save') {
|
|
486
|
+
const draftCaseEventData = this.formValueService.sanitise(this.editForm.value);
|
|
487
|
+
if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
|
|
488
|
+
this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_SAVE, data: draftCaseEventData });
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_SAVE, data: draftCaseEventData });
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
this.discard();
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
this.caseEdit.cancelled.emit();
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
submitting() {
|
|
505
|
+
return this.isSubmitting;
|
|
506
|
+
}
|
|
507
|
+
getCaseId() {
|
|
508
|
+
return (this.caseEdit.caseDetails ? this.caseEdit.caseDetails.case_id : '');
|
|
509
|
+
}
|
|
510
|
+
getCaseTitle() {
|
|
511
|
+
return (this.caseEdit.caseDetails && this.caseEdit.caseDetails.state &&
|
|
512
|
+
this.caseEdit.caseDetails.state.title_display ? this.caseEdit.caseDetails.state.title_display : '');
|
|
513
|
+
}
|
|
514
|
+
getCancelText() {
|
|
515
|
+
var _a;
|
|
516
|
+
return ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) ? 'Return to case list' : 'Cancel';
|
|
517
|
+
}
|
|
518
|
+
getTriggerText() {
|
|
519
|
+
var _a;
|
|
520
|
+
return ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) ? CaseEditPageText.TRIGGER_TEXT_SAVE
|
|
521
|
+
: CaseEditPageText.TRIGGER_TEXT_START;
|
|
522
|
+
}
|
|
523
|
+
discard() {
|
|
524
|
+
if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
|
|
525
|
+
this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_DISCARD });
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_DISCARD });
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
handleError(error) {
|
|
532
|
+
this.isSubmitting = false;
|
|
533
|
+
this.error = error;
|
|
534
|
+
this.callbackErrorsSubject.next(this.error);
|
|
535
|
+
if (this.error.details) {
|
|
536
|
+
this.formErrorService
|
|
537
|
+
.mapFieldErrors(this.error.details.field_errors, this.editForm.controls['data'], 'validation');
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
resetErrors() {
|
|
541
|
+
this.error = null;
|
|
542
|
+
this.ignoreWarning = false;
|
|
543
|
+
this.triggerText = this.getTriggerText();
|
|
544
|
+
this.callbackErrorsSubject.next(null);
|
|
545
|
+
}
|
|
546
|
+
saveDraft() {
|
|
547
|
+
var _a;
|
|
548
|
+
if ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) {
|
|
549
|
+
const draftCaseEventData = this.formValueService.sanitise(this.editForm.value);
|
|
550
|
+
draftCaseEventData.event_token = this.eventTrigger.event_token;
|
|
551
|
+
draftCaseEventData.ignore_warning = this.ignoreWarning;
|
|
552
|
+
this.caseEdit.saveDraft(draftCaseEventData).subscribe((draft) => this.eventTrigger.case_id = DRAFT_PREFIX + draft.id, error => this.handleError(error));
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
getCaseFields() {
|
|
556
|
+
if (this.caseEdit.caseDetails) {
|
|
557
|
+
return FieldsUtils.getCaseFields(this.caseEdit.caseDetails);
|
|
558
|
+
}
|
|
559
|
+
return this.eventTrigger.case_fields;
|
|
560
|
+
}
|
|
561
|
+
getCaseFieldsFromCurrentAndPreviousPages() {
|
|
562
|
+
const result = [];
|
|
563
|
+
this.wizard.pages.forEach(page => {
|
|
564
|
+
if (page.order <= this.currentPage.order) {
|
|
565
|
+
page.case_fields.forEach(field => result.push(field));
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
return result;
|
|
569
|
+
}
|
|
570
|
+
buildCaseEventData() {
|
|
571
|
+
const formValue = this.editForm.value;
|
|
572
|
+
// Get the CaseEventData for the current page.
|
|
573
|
+
const pageFields = this.currentPage.case_fields;
|
|
574
|
+
const pageEventData = this.getFilteredCaseEventData(pageFields, formValue, true);
|
|
575
|
+
// Get the CaseEventData for the entire form (all pages).
|
|
576
|
+
const allCaseFields = this.getCaseFieldsFromCurrentAndPreviousPages();
|
|
577
|
+
const formEventData = this.getFilteredCaseEventData(allCaseFields, formValue, false, true);
|
|
578
|
+
// Now here's the key thing - the pageEventData has a property called `event_data` and
|
|
579
|
+
// we need THAT to be the value of the entire form: `formEventData.data`.
|
|
580
|
+
pageEventData.event_data = formEventData.data;
|
|
581
|
+
// Finalise the CaseEventData object.
|
|
582
|
+
pageEventData.event_token = this.eventTrigger.event_token;
|
|
583
|
+
pageEventData.ignore_warning = this.ignoreWarning;
|
|
584
|
+
// Finally, try to set up the case_reference.
|
|
585
|
+
if (this.caseEdit.caseDetails) {
|
|
586
|
+
pageEventData.case_reference = this.caseEdit.caseDetails.case_id;
|
|
587
|
+
}
|
|
588
|
+
// Return the now hopefully sane CaseEventData.
|
|
589
|
+
return pageEventData;
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Abstracted this method from buildCaseEventData to remove duplication.
|
|
593
|
+
* @param caseFields The fields to filter the data by.
|
|
594
|
+
* @param formValue The original value of the form.
|
|
595
|
+
* @param clearEmpty Whether or not to clear out empty values.
|
|
596
|
+
* @param clearNonCase Whether or not to clear out fields that are not part of the case.
|
|
597
|
+
* @returns CaseEventData for the specified parameters.
|
|
598
|
+
*/
|
|
599
|
+
getFilteredCaseEventData(caseFields, formValue, clearEmpty = false, clearNonCase = false) {
|
|
600
|
+
// Get the data for the fields specified.
|
|
601
|
+
const formFields = this.formValueService.filterCurrentPageFields(caseFields, formValue);
|
|
602
|
+
// Sort out the dynamic lists.
|
|
603
|
+
this.formValueService.sanitiseDynamicLists(caseFields, formFields);
|
|
604
|
+
// Get hold of the CaseEventData.
|
|
605
|
+
const caseEventData = this.formValueService.sanitise(formFields);
|
|
606
|
+
// Tidy it up before we return it.
|
|
607
|
+
this.formValueService.removeUnnecessaryFields(caseEventData.data, caseFields, clearEmpty, clearNonCase);
|
|
608
|
+
return caseEventData;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
CaseEditPageComponent.ɵfac = function CaseEditPageComponent_Factory(t) { return new (t || CaseEditPageComponent)(i0.ɵɵdirectiveInject(i1.CaseEditComponent), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i3.FormValueService), i0.ɵɵdirectiveInject(i4.FormErrorService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i5.PageValidationService), i0.ɵɵdirectiveInject(i6.MatDialog), i0.ɵɵdirectiveInject(i7.CaseFieldService)); };
|
|
612
|
+
CaseEditPageComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditPageComponent, selectors: [["ccd-case-edit-page"]], decls: 13, vars: 12, consts: [[4, "ngIf"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "error-summary", "role", "status", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "triggerTextContinue", "triggerTextIgnore", "callbackErrorsSubject", "callbackErrorsContext"], [1, "width-50"], ["class", "form", 3, "formGroup", "submit", 4, "ngIf"], ["class", "govuk-heading-l", 4, "ngIf"], [1, "govuk-heading-l"], [1, "govuk-caption-l"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], ["role", "status", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h1", "error-summary-heading"], ["id", "edit-case-event_error-summary-body", 1, "govuk-error-summary__body"], ["href", "get-help", "target", "_blank"], ["id", "edit-case-event_error-summary-heading-3", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], [1, "form", 3, "formGroup", "submit"], ["id", "fieldset-case-data"], [2, "display", "none"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged", 4, "ngIf"], ["class", "grid-row", 4, "ngIf"], [1, "form-group", "form-group-related"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged"], [1, "grid-row"], [1, "column-two-thirds", "rightBorderSeparator"], ["id", "caseEditForm1", 3, "fields", "formGroup", "caseFields"], [1, "column-one-third"], ["id", "caseEditForm2", 3, "fields", "formGroup", "caseFields"]], template: function CaseEditPageComponent_Template(rf, ctx) { if (rf & 1) {
|
|
613
|
+
i0.ɵɵtemplate(0, CaseEditPageComponent_ccd_loading_spinner_0_Template, 1, 0, "ccd-loading-spinner", 0);
|
|
614
|
+
i0.ɵɵtemplate(1, CaseEditPageComponent_ng_container_1_Template, 3, 2, "ng-container", 0);
|
|
615
|
+
i0.ɵɵtemplate(2, CaseEditPageComponent_div_2_Template, 1, 0, "div", 1);
|
|
616
|
+
i0.ɵɵtemplate(3, CaseEditPageComponent_ng_template_3_Template, 2, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
617
|
+
i0.ɵɵtemplate(5, CaseEditPageComponent_ng_template_5_Template, 1, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
618
|
+
i0.ɵɵtemplate(7, CaseEditPageComponent_div_7_Template, 4, 1, "div", 4);
|
|
619
|
+
i0.ɵɵtemplate(8, CaseEditPageComponent_div_8_Template, 10, 0, "div", 5);
|
|
620
|
+
i0.ɵɵtemplate(9, CaseEditPageComponent_div_9_Template, 6, 2, "div", 5);
|
|
621
|
+
i0.ɵɵelementStart(10, "ccd-callback-errors", 6);
|
|
622
|
+
i0.ɵɵlistener("callbackErrorsContext", function CaseEditPageComponent_Template_ccd_callback_errors_callbackErrorsContext_10_listener($event) { return ctx.callbackErrorsNotify($event); });
|
|
623
|
+
i0.ɵɵelementEnd();
|
|
624
|
+
i0.ɵɵelementStart(11, "div", 7);
|
|
625
|
+
i0.ɵɵtemplate(12, CaseEditPageComponent_form_12_Template, 14, 9, "form", 8);
|
|
626
|
+
i0.ɵɵelementEnd();
|
|
627
|
+
} if (rf & 2) {
|
|
628
|
+
const _r3 = i0.ɵɵreference(4);
|
|
629
|
+
const _r5 = i0.ɵɵreference(6);
|
|
630
|
+
i0.ɵɵproperty("ngIf", ctx.showSpinner);
|
|
631
|
+
i0.ɵɵadvance(1);
|
|
632
|
+
i0.ɵɵproperty("ngIf", ctx.currentPage);
|
|
633
|
+
i0.ɵɵadvance(1);
|
|
634
|
+
i0.ɵɵproperty("ngIf", ctx.getCaseTitle())("ngIfThen", _r3)("ngIfElse", _r5);
|
|
635
|
+
i0.ɵɵadvance(5);
|
|
636
|
+
i0.ɵɵproperty("ngIf", ctx.validationErrors.length > 0);
|
|
637
|
+
i0.ɵɵadvance(1);
|
|
638
|
+
i0.ɵɵproperty("ngIf", ctx.error && !(ctx.error.callbackErrors || ctx.error.callbackWarnings || ctx.error.details));
|
|
639
|
+
i0.ɵɵadvance(1);
|
|
640
|
+
i0.ɵɵproperty("ngIf", ctx.error && ctx.error.details);
|
|
641
|
+
i0.ɵɵadvance(1);
|
|
642
|
+
i0.ɵɵproperty("triggerTextContinue", ctx.triggerTextStart)("triggerTextIgnore", ctx.triggerTextIgnoreWarnings)("callbackErrorsSubject", ctx.callbackErrorsSubject);
|
|
643
|
+
i0.ɵɵadvance(2);
|
|
644
|
+
i0.ɵɵproperty("ngIf", ctx.currentPage);
|
|
645
|
+
} }, directives: [i8.NgIf, i9.CallbackErrorsComponent, i10.LoadingSpinnerComponent, i11.MarkdownComponent, i8.NgForOf, i12.ɵangular_packages_forms_forms_ba, i12.NgControlStatusGroup, i12.FormGroupDirective, i13.CaseEditFormComponent], pipes: [i14.CcdCaseTitlePipe, i15.CaseReferencePipe, i8.AsyncPipe], styles: [".rightBorderSeparator[_ngcontent-%COMP%]{border-right:4px solid #ffcc02}.validation-error[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:#d4351c}"] });
|
|
646
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditPageComponent, [{
|
|
647
|
+
type: Component,
|
|
648
|
+
args: [{
|
|
649
|
+
selector: 'ccd-case-edit-page',
|
|
650
|
+
templateUrl: 'case-edit-page.html',
|
|
651
|
+
styleUrls: ['./case-edit-page.scss']
|
|
652
|
+
}]
|
|
653
|
+
}], function () { return [{ type: i1.CaseEditComponent }, { type: i2.ActivatedRoute }, { type: i3.FormValueService }, { type: i4.FormErrorService }, { type: i0.ChangeDetectorRef }, { type: i5.PageValidationService }, { type: i6.MatDialog }, { type: i7.CaseFieldService }]; }, null); })();
|
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtD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LHNDQUFpQjtRQUN6QixlQUFpQjtRQUFqQixzQ0FBaUI7UUFTMUIsZUFBc0I7UUFBdEIseUNBQXNCLGlCQUFBLGlCQUFBO1FBU3RCLGVBQWlDO1FBQWpDLHNEQUFpQztRQWNqQyxlQUFpRjtRQUFqRixrSEFBaUY7UUFZakYsZUFBNEI7UUFBNUIscURBQTRCO1FBV2hDLGVBQXdDO1FBQXhDLDBEQUF3QyxvREFBQSxvREFBQTtRQU1qQyxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRGxDYixxQkFBcUI7Y0FMakMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZXZlbnQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24nO1xuaW1wb3J0IHsgRFJBRlRfUFJFRklYIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RyYWZ0Lm1vZGVsJztcbmltcG9ydCB7IEh0dHBFcnJvciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9odHRwL2h0dHAtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2Nhc2UtZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRm9ybUVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1WYWx1ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlT3JEaXNjYXJkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zYXZlLW9yLWRpc2NhcmQtZGlhbG9nJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yL2RvbWFpbi9lcnJvci1jb250ZXh0JztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luaXQtZGlhbG9nLWhlbHBlcic7XG5pbXBvcnQgeyBDYXNlRWRpdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdC9jYXNlLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLXBhZ2UubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wYWdlLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VUZXh0IH0gZnJvbSAnLi9jYXNlLWVkaXQtcGFnZS10ZXh0LmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWVkaXQtcGFnZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZhbGlkYXRpb25TZXJ2aWNlOiBQYWdlVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgY3VycmVudFBhZ2U6IFdpemFyZFBhZ2U7XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIGVycm9yOiBIdHRwRXJyb3I7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dFN0YXJ0ID0gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIHB1YmxpYyBmb3JtVmFsdWVzQ2hhbmdlZCA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZUNoYW5nZVN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiB7IGlkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9W10gPSBbXTtcbiAgcHVibGljIHNob3dTcGlubmVyOiBib29sZWFuO1xuXG4gIHB1YmxpYyBoYXNQcmV2aW91c1BhZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRGb2N1c1RvVG9wKCkge1xuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICB0b3BDb250YWluZXIuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dDb25maWcgPSBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMud2l6YXJkID0gdGhpcy5jYXNlRWRpdC53aXphcmQ7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IHRoaXMuZ2V0VHJpZ2dlclRleHQoKTtcblxuICAgIHRoaXMucm91dGUucGFyYW1zXG4gICAgICAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHBhcmFtc1sncGFnZSddO1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFBhZ2UgfHwgcGFnZUlkICE9PSB0aGlzLmN1cnJlbnRQYWdlLmlkKSB7XG4gICAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY2FzZUVkaXQuZ2V0UGFnZShwYWdlSWQpO1xuICAgICAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5oYXNQcmV2aW91c1BhZ2UkLm5leHQodGhpcy5jYXNlRWRpdC5oYXNQcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5VmFsdWVzQ2hhbmdlZCh2YWx1ZXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCA9IHZhbHVlc0NoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgZmlyc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuZmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50UGFnZUlzTm90VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBhZ2VWYWxpZGF0aW9uU2VydmljZS5pc1BhZ2VWYWxpZCh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLmVkaXRGb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGEgY29udGFpbnMgYWxsIHRoZSB2YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXMgc28gd2Ugc2V0IGNhc2VFdmVudERhdGEuZGF0YSA9IGNhc2VFdmVudERhdGEuZXZlbnRfZGF0YVxuICAgKiBUaGlzIGJ1aWxkcyB0aGUgZm9ybSB3aXRoIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXNcbiAgICogRVVJLTM3MzIgLSBCcmVhdGhpbmcgc3BhY2UgZGF0YSBub3QgcGVyc2lzdGVkIG9uIFByZXZpb3VzIGJ1dHRvbiBjbGljayB3aXRoIEV4cFVJIERlbW9cbiAgICovXG4gIHB1YmxpYyB0b1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgICBjb25zdCBjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5idWlsZENhc2VFdmVudERhdGEoKTtcbiAgICBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGE7XG4gICAgdGhpcy51cGRhdGVGb3JtRGF0YShjYXNlRXZlbnREYXRhKTtcbiAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIC8vIEFkZGluZyB2YWxpZGF0aW9uIG1lc3NhZ2UgdG8gc2hvdyBpdCBhcyBFcnJvciBTdW1tYXJ5XG4gIHB1YmxpYyBnZW5lcmF0ZUVycm9yTWVzc2FnZShmaWVsZHM6IENhc2VGaWVsZFtdID0gW10sIGNvbnRhaW5lcj86IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwOiBBYnN0cmFjdENvbnRyb2wgPSBjb250YWluZXIgfHwgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddO1xuICAgIGZpZWxkcy5maWx0ZXIoY2FzZWZpZWxkID0+ICF0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNSZWFkT25seShjYXNlZmllbGQpKVxuICAgICAgLmZpbHRlcihjYXNlZmllbGQgPT4gIXRoaXMucGFnZVZhbGlkYXRpb25TZXJ2aWNlLmlzSGlkZGVuKGNhc2VmaWVsZCwgdGhpcy5lZGl0Rm9ybSwgcGF0aCkpXG4gICAgICAuZm9yRWFjaChjYXNlZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEVsZW1lbnQgPSBncm91cC5nZXQoY2FzZWZpZWxkLmlkKTtcbiAgICAgICAgaWYgKGZpZWxkRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gY2FzZWZpZWxkLmxhYmVsIHx8ICdGaWVsZCc7XG4gICAgICAgICAgbGV0IGlkID0gY2FzZWZpZWxkLmlkO1xuICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddICYmIGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10ucGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeC5pbmRleE9mKCdfJyArIGlkICsgJ18nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4fSR7aWR9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gaXMgcmVxdWlyZWRgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBpZCwgbWVzc2FnZTogYCR7bGFiZWx9IGlzIG5vdCB2YWxpZGAgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKHsgaWQsIG1lc3NhZ2U6IGAke2xhYmVsfSBpcyBiZWxvdyB0aGUgbWluaW11bSBsZW5ndGhgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGhgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaW52YWxpZCkge1xuICAgICAgICAgICAgaWYgKGNhc2VmaWVsZC5pc0NvbXBsZXgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBmaWVsZEVsZW1lbnQsIGlkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZWZpZWxkLmlzQ29sbGVjdGlvbigpICYmIGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGRBcnJheSA9IGZpZWxkRWxlbWVudCBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZEFycmF5Wydjb21wb25lbnQnXSAmJiBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10gJiYgZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIGlkID0gYCR7ZWxlbWVudC5wcmVmaXh9YDtcbiAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWQuY2hhckF0KGlkLmluZGV4T2YoaW5kZXgudG9TdHJpbmcoKSkpID09PSBpbmRleC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUVycm9yTWVzc2FnZShjYXNlZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgU2VsZWN0IG9yIGZpbGwgdGhlIHJlcXVpcmVkICR7Y2FzZWZpZWxkLmxhYmVsfSBmaWVsZGAgfSk7XG4gICAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gW107XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1N1Ym1pdHRpbmcgJiYgIXRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuYnVpbGRDYXNlRXZlbnREYXRhKCk7XG4gICAgICB0aGlzLnNob3dTcGlubmVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FzZUVkaXQudmFsaWRhdGUoY2FzZUV2ZW50RGF0YSwgdGhpcy5jdXJyZW50UGFnZS5pZClcbiAgICAgICAgLnN1YnNjcmliZSgoanNvbkRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoanNvbkRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybURhdGEoanNvbkRhdGEgYXMgQ2FzZUV2ZW50RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zY3JvbGxUb1RvcCgpO1xuICAgIH1cbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1EYXRhKGpzb25EYXRhOiBDYXNlRXZlbnREYXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjYXNlRmllbGRJZCBvZiBPYmplY3Qua2V5cyhqc29uRGF0YS5kYXRhKSkge1xuICAgICAgaWYgKHRoaXMucGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkLCBqc29uRGF0YSwgdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKHRoaXMuZWRpdEZvcm0sIGNhc2VGaWVsZElkLCBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgZG8gdGhlIGNoZWNrLCBiZWNhc3VlIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxuICBwdWJsaWMgcGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMud2l6YXJkLmZpbmRXaXphcmRQYWdlKGNhc2VGaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkOiBzdHJpbmcsIGpzb25EYXRhOiBDYXNlRXZlbnREYXRhLCBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSB7XG4gICAgICBldmVudFRyaWdnZXIuY2FzZV9maWVsZHM/LmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGNhc2VGaWVsZElkKVxuICAgICAgICAuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQudmFsdWUgPSBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRJZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGhlQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddLmdldChjYXNlRmllbGRJZCk7XG4gICAgaWYgKHRoZUNvbnRyb2wgJiYgdGhlQ29udHJvbFsnc3RhdHVzJ10gIT09ICdESVNBQkxFRCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoZUNvbnRyb2wudmFsdWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2wudmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydkaXNwbGF5X2NvbnRleHQnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gPT09ICdPUFRJT05BTCdcbiAgICAgICAgICAgICAgJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZmllbGRfdHlwZSddWyd0eXBlJ10gPT09ICdDb2xsZWN0aW9uJykge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGVDb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCkge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gZXJyb3JDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQubmV4dCh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5zYXZlRHJhZnQoKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LnByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lmhhc1ByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXI/LmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0Rpc2NhcmQnKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ1NhdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFmdENhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5lZGl0Rm9ybS52YWx1ZSkgYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuUkVTVU1FRF9GT1JNX1NBVkUsIGRhdGE6IGRyYWZ0Q2FzZUV2ZW50RGF0YSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuTkVXX0ZPUk1fU0FWRSwgZGF0YTogZHJhZnRDYXNlRXZlbnREYXRhIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyPy5jYW5fc2F2ZV9kcmFmdCA/ICdSZXR1cm4gdG8gY2FzZSBsaXN0JyA6ICdDYW5jZWwnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmlnZ2VyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlcj8uY2FuX3NhdmVfZHJhZnRcbiAgICAgID8gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfU0FWRVxuICAgICAgOiBDYXNlRWRpdFBhZ2VUZXh0LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgfVxuXG4gIHByaXZhdGUgZGlzY2FyZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuZXJyb3IpO1xuICAgIGlmICh0aGlzLmVycm9yLmRldGFpbHMpIHtcbiAgICAgIHRoaXMuZm9ybUVycm9yU2VydmljZVxuICAgICAgICAubWFwRmllbGRFcnJvcnModGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycywgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddIGFzIEZvcm1Hcm91cCwgJ3ZhbGlkYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmdldFRyaWdnZXJUZXh0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZURyYWZ0KCkge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlcj8uY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGNvbnN0IGRyYWZ0Q2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmVkaXRGb3JtLnZhbHVlKSBhcyBDYXNlRXZlbnREYXRhO1xuICAgICAgZHJhZnRDYXNlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgICBkcmFmdENhc2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgICB0aGlzLmNhc2VFZGl0LnNhdmVEcmFmdChkcmFmdENhc2VFdmVudERhdGEpLnN1YnNjcmliZShcbiAgICAgICAgKGRyYWZ0KSA9PiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2lkID0gRFJBRlRfUFJFRklYICsgZHJhZnQuaWQsIGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBDYXNlRmllbGRbXSA9IFtdO1xuICAgIHRoaXMud2l6YXJkLnBhZ2VzLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBpZiAocGFnZS5vcmRlciA8PSB0aGlzLmN1cnJlbnRQYWdlLm9yZGVyKSB7XG4gICAgICAgIHBhZ2UuY2FzZV9maWVsZHMuZm9yRWFjaChmaWVsZCA9PiByZXN1bHQucHVzaChmaWVsZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2FzZUV2ZW50RGF0YSgpOiBDYXNlRXZlbnREYXRhIHtcbiAgICBjb25zdCBmb3JtVmFsdWU6IG9iamVjdCA9IHRoaXMuZWRpdEZvcm0udmFsdWU7XG5cbiAgICAvLyBHZXQgdGhlIENhc2VFdmVudERhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgY29uc3QgcGFnZUZpZWxkczogQ2FzZUZpZWxkW10gPSB0aGlzLmN1cnJlbnRQYWdlLmNhc2VfZmllbGRzO1xuICAgIGNvbnN0IHBhZ2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShwYWdlRmllbGRzLCBmb3JtVmFsdWUsIHRydWUpO1xuXG4gICAgLy8gR2V0IHRoZSBDYXNlRXZlbnREYXRhIGZvciB0aGUgZW50aXJlIGZvcm0gKGFsbCBwYWdlcykuXG4gICAgY29uc3QgYWxsQ2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpO1xuICAgIGNvbnN0IGZvcm1FdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShhbGxDYXNlRmllbGRzLCBmb3JtVmFsdWUsIGZhbHNlLCB0cnVlKTtcblxuICAgIC8vIE5vdyBoZXJlJ3MgdGhlIGtleSB0aGluZyAtIHRoZSBwYWdlRXZlbnREYXRhIGhhcyBhIHByb3BlcnR5IGNhbGxlZCBgZXZlbnRfZGF0YWAgYW5kXG4gICAgLy8gd2UgbmVlZCBUSEFUIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50aXJlIGZvcm06IGBmb3JtRXZlbnREYXRhLmRhdGFgLlxuICAgIHBhZ2VFdmVudERhdGEuZXZlbnRfZGF0YSA9IGZvcm1FdmVudERhdGEuZGF0YTtcblxuICAgIC8vIEZpbmFsaXNlIHRoZSBDYXNlRXZlbnREYXRhIG9iamVjdC5cbiAgICBwYWdlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgcGFnZUV2ZW50RGF0YS5pZ25vcmVfd2FybmluZyA9IHRoaXMuaWdub3JlV2FybmluZztcblxuICAgIC8vIEZpbmFsbHksIHRyeSB0byBzZXQgdXAgdGhlIGNhc2VfcmVmZXJlbmNlLlxuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICBwYWdlRXZlbnREYXRhLmNhc2VfcmVmZXJlbmNlID0gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0aGUgbm93IGhvcGVmdWxseSBzYW5lIENhc2VFdmVudERhdGEuXG4gICAgcmV0dXJuIHBhZ2VFdmVudERhdGE7XG4gIH1cblxuICAvKipcbiAgICogQWJzdHJhY3RlZCB0aGlzIG1ldGhvZCBmcm9tIGJ1aWxkQ2FzZUV2ZW50RGF0YSB0byByZW1vdmUgZHVwbGljYXRpb24uXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBmaWVsZHMgdG8gZmlsdGVyIHRoZSBkYXRhIGJ5LlxuICAgKiBAcGFyYW0gZm9ybVZhbHVlIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZm9ybS5cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgV2hldGhlciBvciBub3QgdG8gY2xlYXIgb3V0IGVtcHR5IHZhbHVlcy5cbiAgICogQHBhcmFtIGNsZWFyTm9uQ2FzZSBXaGV0aGVyIG9yIG5vdCB0byBjbGVhciBvdXQgZmllbGRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjYXNlLlxuICAgKiBAcmV0dXJucyBDYXNlRXZlbnREYXRhIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwcml2YXRlIGdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybVZhbHVlOiBvYmplY3QsIGNsZWFyRW1wdHkgPSBmYWxzZSwgY2xlYXJOb25DYXNlID0gZmFsc2UpOiBDYXNlRXZlbnREYXRhIHtcbiAgICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoZSBmaWVsZHMgc3BlY2lmaWVkLlxuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UuZmlsdGVyQ3VycmVudFBhZ2VGaWVsZHMoY2FzZUZpZWxkcywgZm9ybVZhbHVlKTtcblxuICAgIC8vIFNvcnQgb3V0IHRoZSBkeW5hbWljIGxpc3RzLlxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZUR5bmFtaWNMaXN0cyhjYXNlRmllbGRzLCBmb3JtRmllbGRzKTtcblxuICAgIC8vIEdldCBob2xkIG9mIHRoZSBDYXNlRXZlbnREYXRhLlxuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UoZm9ybUZpZWxkcykgYXMgQ2FzZUV2ZW50RGF0YTtcblxuICAgIC8vIFRpZHkgaXQgdXAgYmVmb3JlIHdlIHJldHVybiBpdC5cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCBjYXNlRmllbGRzLCBjbGVhckVtcHR5LCBjbGVhck5vbkNhc2UpO1xuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cbn1cbiIsIjxjY2QtbG9hZGluZy1zcGlubmVyICAqbmdJZj1cInNob3dTcGlubmVyXCI+PC9jY2QtbG9hZGluZy1zcGlubmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlXCI+XG4gIDxoMSAqbmdJZj1cIiFjdXJyZW50UGFnZS5sYWJlbFwiIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZX19PC9oMT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlLmxhYmVsXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyBldmVudFRyaWdnZXIubmFtZX19PC9zcGFuPlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7Y3VycmVudFBhZ2UubGFiZWx9fTwvaDE+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0aXRsZUJsb2NrPlxuICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjYXNlRmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaWRCbG9jaz5cbiAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuPGRpdiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAgVGhlcmUgaXMgYSBwcm9ibGVtXG4gIDwvaDI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHZhbGlkYXRpb25FcnJvciBvZiB2YWxpZGF0aW9uRXJyb3JzXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KHZhbGlkYXRpb25FcnJvci5pZClcIiBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj57e3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICBTb21ldGhpbmcgd2VudCB3cm9uZ1xuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPldlJ3JlIHdvcmtpbmcgdG8gZml4IHRoZSBwcm9ibGVtLiBUcnkgYWdhaW4gc2hvcnRseS48L3A+XG4gICAgPHA+PGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q29udGFjdCB1czwvYT4gaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy48L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIEV2ZW50IGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwic3RhdHVzXCJcbiAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgzIGNsYXNzPVwiaGVhZGluZy1oMyBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmctM1wiPlxuICAgIFRoZSBldmVudCBjb3VsZCBub3QgYmUgY3JlYXRlZFxuICA8L2gzPlxuICA8cD57e2Vycm9yLm1lc3NhZ2V9fTwvcD5cbiAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImNjZC1lcnJvci1zdW1tYXJ5LWxpXCI+e3tmaWVsZEVycm9yLm1lc3NhZ2V9fTwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48ZGl2IGNsYXNzPVwid2lkdGgtNTBcIj5cbiAgPGZvcm0gKm5nSWY9XCJjdXJyZW50UGFnZVwiIGNsYXNzPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPGZpZWxkc2V0IGlkPVwiZmllbGRzZXQtY2FzZS1kYXRhXCI+XG4gICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgIDwhLS0gc2luZ2xlIGNvbHVtbiAtLT5cbiAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybScgKm5nSWY9XCIhY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wxRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VDaGFuZ2VTdWJqZWN0XT1cInBhZ2VDaGFuZ2VTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlc0NoYW5nZWQpPVwiYXBwbHlWYWx1ZXNDaGFuZ2VkKCRldmVudClcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgIDwhLS0gdHdvIGNvbHVtbnMgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgY2xhc3M9XCJncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXR3by10aGlyZHMgcmlnaHRCb3JkZXJTZXBhcmF0b3JcIj5cbiAgICAgICAgICA8Y2NkLWNhc2UtZWRpdC1mb3JtIGlkPSdjYXNlRWRpdEZvcm0xJyBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDFGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCI+PC9jY2QtY2FzZS1lZGl0LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS10aGlyZFwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybTInIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMkZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiEoaGFzUHJldmlvdXNQYWdlJCB8IGFzeW5jKVwiIChjbGljayk9XCJ0b1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgIFByZXZpb3VzXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiPnt7dHJpZ2dlclRleHR9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSAoY2xpY2spPVwiY2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+e3tnZXRDYW5jZWxUZXh0KCl9fTwvYT48L3A+XG5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|