@hmcts/ccd-case-ui-toolkit 6.13.11-activity-tracker → 6.13.11-welsh-release
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 +6411 -5353
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
- package/esm2015/lib/app.config.js +1 -11
- package/esm2015/lib/components/banners/alert/alert.component.js +7 -5
- package/esm2015/lib/components/banners/alert/alert.module.js +12 -4
- package/esm2015/lib/components/banners/index.js +1 -2
- package/esm2015/lib/components/banners/notification-banner/index.js +1 -2
- package/esm2015/lib/components/body/index.js +1 -2
- package/esm2015/lib/components/footer/footer.component.js +55 -30
- package/esm2015/lib/components/footer/footers.module.js +12 -4
- package/esm2015/lib/components/footer/index.js +1 -2
- package/esm2015/lib/components/form/date-input/date-input.component.js +56 -37
- package/esm2015/lib/components/form/form.module.js +8 -4
- package/esm2015/lib/components/form/index.js +1 -2
- package/esm2015/lib/components/header/header-bar/header-bar.component.js +32 -19
- package/esm2015/lib/components/header/headers.module.js +6 -4
- package/esm2015/lib/components/header/navigation/navigation-item.component.js +9 -7
- package/esm2015/lib/components/header/phase/phase.component.js +20 -9
- package/esm2015/lib/components/tabs/tabs.component.js +8 -5
- package/esm2015/lib/components/tabs/tabs.module.js +6 -2
- package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +14 -11
- package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +12 -9
- package/esm2015/lib/shared/components/activity/activity.component.js +155 -0
- package/esm2015/lib/shared/components/activity/activity.module.js +17 -13
- package/esm2015/lib/shared/components/activity/index.js +2 -2
- package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +2 -2
- package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +29 -25
- package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +76 -48
- package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +179 -131
- package/esm2015/lib/shared/components/case-editor/case-editor.module.js +30 -26
- package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +51 -26
- package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +51 -28
- package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +2 -2
- package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +3 -2
- package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +2 -2
- package/esm2015/lib/shared/components/case-history/case-history.component.js +89 -63
- package/esm2015/lib/shared/components/case-history/case-history.module.js +18 -14
- package/esm2015/lib/shared/components/case-list/case-list.component.js +56 -49
- package/esm2015/lib/shared/components/case-list/case-list.module.js +8 -4
- package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +11 -7
- package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +9 -6
- package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +12 -8
- package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +106 -61
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +89 -69
- package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +45 -23
- package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +27 -32
- package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +103 -95
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +32 -20
- package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +107 -79
- package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +79 -49
- package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +1 -1
- package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +38 -30
- package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +36 -22
- package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +63 -40
- package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +6 -2
- package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +28 -14
- package/esm2015/lib/shared/components/dialogs/dialogs.module.js +6 -2
- package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +28 -14
- package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +28 -14
- package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +28 -14
- package/esm2015/lib/shared/components/error/callback-errors.component.js +34 -23
- package/esm2015/lib/shared/components/error/errors.module.js +6 -2
- package/esm2015/lib/shared/components/error-message/error-message.component.js +14 -11
- package/esm2015/lib/shared/components/error-message/error-message.module.js +8 -4
- package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +39 -20
- package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +34 -18
- package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +34 -19
- package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +50 -25
- package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +39 -20
- package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +34 -18
- package/esm2015/lib/shared/components/event-start/event-start.module.js +8 -4
- package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +27 -17
- package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +6 -2
- package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +7 -5
- package/esm2015/lib/shared/components/loading-spinner/loading-spinner.module.js +6 -2
- package/esm2015/lib/shared/components/pagination/pagination.component.js +84 -67
- package/esm2015/lib/shared/components/pagination/pagination.module.js +8 -4
- package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +50 -31
- package/esm2015/lib/shared/components/palette/base-field/field-read-label.component.js +10 -8
- package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +6 -2
- package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +2 -2
- package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +31 -25
- package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +6 -1
- package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +18 -12
- package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +57 -33
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +50 -46
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-raw.component.js +7 -6
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-table.component.js +22 -20
- package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +5 -4
- package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +29 -17
- package/esm2015/lib/shared/components/palette/document/write-document-field.component.js +31 -25
- package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +32 -20
- package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/index.js +3 -0
- package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.js +47 -0
- package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.js +153 -0
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +30 -22
- package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +19 -14
- package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
- package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +20 -15
- package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +87 -65
- package/esm2015/lib/shared/components/palette/history/event-log/event-log-table.component.js +60 -46
- package/esm2015/lib/shared/components/palette/index.js +2 -1
- package/esm2015/lib/shared/components/palette/label/label-field.component.js +24 -5
- package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.js +15 -11
- package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +19 -14
- package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-field.component.js +43 -25
- package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-row.component.js +7 -6
- package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-raw.component.js +41 -29
- package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-table.component.js +48 -35
- package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +88 -50
- package/esm2015/lib/shared/components/palette/palette.module.js +91 -59
- package/esm2015/lib/shared/components/palette/palette.service.js +4 -1
- package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
- package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
- package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +16 -12
- package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +7 -5
- package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +20 -15
- package/esm2015/lib/shared/components/search-filters/search-filters.component.js +60 -35
- package/esm2015/lib/shared/components/search-filters/search-filters.module.js +14 -10
- package/esm2015/lib/shared/components/search-result/search-result.component.js +149 -129
- package/esm2015/lib/shared/components/search-result/search-result.module.js +16 -13
- package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +90 -52
- package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +13 -9
- package/esm2015/lib/shared/domain/activity/activity.model.js +1 -1
- package/esm2015/lib/shared/domain/activity/index.js +1 -4
- package/esm2015/lib/shared/domain/alert/alert-status-params.model.js +2 -0
- package/esm2015/lib/shared/domain/definition/case-field.model.js +6 -3
- package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
- package/esm2015/lib/shared/domain/search/index.js +1 -2
- package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +14 -11
- package/esm2015/lib/shared/services/activity/activity.polling.service.js +10 -25
- package/esm2015/lib/shared/services/activity/activity.service.js +21 -47
- package/esm2015/lib/shared/services/activity/index.js +1 -2
- package/esm2015/lib/shared/services/alert/alert.service.js +28 -8
- package/esm2015/lib/shared/services/form/field-type-sanitiser.js +16 -1
- package/esm2015/lib/shared/services/request/request.options.builder.js +7 -1
- package/esm2015/lib/shared/services/window/window.service.js +1 -1
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +6785 -5741
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
- package/lib/app.config.d.ts +0 -10
- package/lib/app.config.d.ts.map +1 -1
- package/lib/components/banners/alert/alert.module.d.ts +2 -1
- package/lib/components/banners/alert/alert.module.d.ts.map +1 -1
- package/lib/components/banners/index.d.ts +0 -1
- package/lib/components/banners/index.d.ts.map +1 -1
- package/lib/components/banners/notification-banner/index.d.ts +0 -1
- package/lib/components/banners/notification-banner/index.d.ts.map +1 -1
- package/lib/components/body/index.d.ts +0 -1
- package/lib/components/body/index.d.ts.map +1 -1
- package/lib/components/footer/footers.module.d.ts +2 -1
- package/lib/components/footer/footers.module.d.ts.map +1 -1
- package/lib/components/footer/index.d.ts +0 -1
- package/lib/components/footer/index.d.ts.map +1 -1
- package/lib/components/form/form.module.d.ts +2 -1
- package/lib/components/form/form.module.d.ts.map +1 -1
- package/lib/components/form/index.d.ts +0 -1
- package/lib/components/form/index.d.ts.map +1 -1
- package/lib/components/header/headers.module.d.ts +2 -1
- package/lib/components/header/headers.module.d.ts.map +1 -1
- package/lib/components/tabs/tabs.component.d.ts.map +1 -1
- package/lib/components/tabs/tabs.module.d.ts +2 -1
- package/lib/components/tabs/tabs.module.d.ts.map +1 -1
- 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 +5 -4
- package/lib/shared/components/activity/activity.module.d.ts.map +1 -1
- package/lib/shared/components/activity/index.d.ts +1 -1
- package/lib/shared/components/activity/index.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-editor.module.d.ts +3 -2
- package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -1
- package/lib/shared/components/case-history/case-history.module.d.ts +2 -1
- package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
- package/lib/shared/components/case-list/case-list.module.d.ts +2 -1
- package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +2 -1
- package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts +2 -1
- package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +4 -5
- package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +4 -7
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts +6 -4
- package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
- package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +2 -1
- package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -1
- package/lib/shared/components/dialogs/dialogs.module.d.ts +2 -1
- package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -1
- package/lib/shared/components/error/errors.module.d.ts +2 -1
- package/lib/shared/components/error/errors.module.d.ts.map +1 -1
- package/lib/shared/components/error-message/error-message.module.d.ts +2 -1
- package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -1
- package/lib/shared/components/event-start/event-start.module.d.ts +2 -1
- package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -1
- package/lib/shared/components/event-trigger/event-trigger.module.d.ts +2 -1
- package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -1
- package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts +2 -1
- package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts.map +1 -1
- package/lib/shared/components/pagination/pagination.module.d.ts +2 -1
- package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/field-read.component.d.ts +1 -0
- package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +1 -0
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/dynamic-multi-select-list/index.d.ts +3 -0
- package/lib/shared/components/palette/dynamic-multi-select-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.d.ts +9 -0
- package/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.d.ts +17 -0
- package/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts +1 -1
- package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/index.d.ts +1 -0
- package/lib/shared/components/palette/index.d.ts.map +1 -1
- package/lib/shared/components/palette/label/label-field.component.d.ts +2 -1
- package/lib/shared/components/palette/label/label-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts +60 -57
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
- package/lib/shared/components/search-filters/search-filters.module.d.ts +2 -1
- package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.component.d.ts +6 -9
- package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.module.d.ts +3 -2
- package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +2 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
- package/lib/shared/domain/activity/activity.model.d.ts +0 -1
- package/lib/shared/domain/activity/activity.model.d.ts.map +1 -1
- package/lib/shared/domain/activity/index.d.ts +0 -3
- package/lib/shared/domain/activity/index.d.ts.map +1 -1
- package/lib/shared/domain/alert/alert-status-params.model.d.ts +6 -0
- package/lib/shared/domain/alert/alert-status-params.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-field.model.d.ts.map +1 -1
- package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
- package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
- package/lib/shared/domain/search/index.d.ts +0 -1
- package/lib/shared/domain/search/index.d.ts.map +1 -1
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
- package/lib/shared/services/activity/activity.polling.service.d.ts +5 -6
- package/lib/shared/services/activity/activity.polling.service.d.ts.map +1 -1
- package/lib/shared/services/activity/activity.service.d.ts +5 -14
- package/lib/shared/services/activity/activity.service.d.ts.map +1 -1
- package/lib/shared/services/activity/index.d.ts +0 -1
- package/lib/shared/services/activity/index.d.ts.map +1 -1
- package/lib/shared/services/alert/alert.service.d.ts +8 -4
- package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
- package/lib/shared/services/form/field-type-sanitiser.d.ts +2 -0
- package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
- package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
- package/lib/shared/services/window/window.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2015/lib/shared/components/activity/case-activity.component.js +0 -174
- package/esm2015/lib/shared/domain/activity/case-activity-info.model.js +0 -3
- package/esm2015/lib/shared/domain/activity/case-activity.model.js +0 -3
- package/esm2015/lib/shared/domain/activity/user.model.js +0 -3
- package/esm2015/lib/shared/domain/search/sorting/index.js +0 -4
- package/esm2015/lib/shared/domain/user/index.js +0 -3
- package/esm2015/lib/shared/services/activity/activity-socket.service.js +0 -91
- package/esm2015/lib/shared/services/activity/utils/index.js +0 -117
- package/lib/shared/components/activity/case-activity.component.d.ts +0 -32
- package/lib/shared/components/activity/case-activity.component.d.ts.map +0 -1
- package/lib/shared/domain/activity/case-activity-info.model.d.ts +0 -9
- package/lib/shared/domain/activity/case-activity-info.model.d.ts.map +0 -1
- package/lib/shared/domain/activity/case-activity.model.d.ts +0 -5
- package/lib/shared/domain/activity/case-activity.model.d.ts.map +0 -1
- package/lib/shared/domain/activity/user.model.d.ts +0 -6
- package/lib/shared/domain/activity/user.model.d.ts.map +0 -1
- package/lib/shared/domain/search/sorting/index.d.ts +0 -4
- package/lib/shared/domain/search/sorting/index.d.ts.map +0 -1
- package/lib/shared/domain/user/index.d.ts +0 -3
- package/lib/shared/domain/user/index.d.ts.map +0 -1
- package/lib/shared/services/activity/activity-socket.service.d.ts +0 -33
- package/lib/shared/services/activity/activity-socket.service.d.ts.map +0 -1
- package/lib/shared/services/activity/utils/index.d.ts +0 -40
- package/lib/shared/services/activity/utils/index.d.ts.map +0 -1
|
@@ -5,37 +5,41 @@ import { WriteComplexFieldComponent } from '../complex/write-complex-field.compo
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/common";
|
|
7
7
|
import * as i2 from "@angular/forms";
|
|
8
|
-
import * as i3 from "
|
|
9
|
-
import * as i4 from "../utils/
|
|
8
|
+
import * as i3 from "rpx-xui-translation";
|
|
9
|
+
import * as i4 from "../utils/field-label.pipe";
|
|
10
|
+
import * as i5 from "../utils/first-error.pipe";
|
|
10
11
|
const _c0 = ["writeComplexFieldComponent"];
|
|
11
12
|
function WriteCaseLinkFieldComponent_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
12
13
|
i0.ɵɵelementStart(0, "span", 6);
|
|
13
14
|
i0.ɵɵtext(1);
|
|
14
|
-
i0.ɵɵpipe(2, "
|
|
15
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
16
|
+
i0.ɵɵpipe(3, "ccdFieldLabel");
|
|
15
17
|
i0.ɵɵelementEnd();
|
|
16
18
|
} if (rf & 2) {
|
|
17
19
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
18
20
|
i0.ɵɵadvance(1);
|
|
19
|
-
i0.ɵɵ
|
|
21
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind1(3, 3, ctx_r0.caseField)), "}");
|
|
20
22
|
} }
|
|
21
23
|
function WriteCaseLinkFieldComponent_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
22
24
|
i0.ɵɵelementStart(0, "span", 7);
|
|
23
25
|
i0.ɵɵtext(1);
|
|
26
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
24
27
|
i0.ɵɵelementEnd();
|
|
25
28
|
} if (rf & 2) {
|
|
26
29
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
27
30
|
i0.ɵɵadvance(1);
|
|
28
|
-
i0.ɵɵtextInterpolate(ctx_r1.caseField.hint_text);
|
|
31
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r1.caseField.hint_text));
|
|
29
32
|
} }
|
|
30
33
|
function WriteCaseLinkFieldComponent_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
31
34
|
i0.ɵɵelementStart(0, "span", 8);
|
|
32
35
|
i0.ɵɵtext(1);
|
|
33
|
-
i0.ɵɵpipe(2, "
|
|
36
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
37
|
+
i0.ɵɵpipe(3, "ccdFirstError");
|
|
34
38
|
i0.ɵɵelementEnd();
|
|
35
39
|
} if (rf & 2) {
|
|
36
40
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
37
41
|
i0.ɵɵadvance(1);
|
|
38
|
-
i0.ɵɵtextInterpolate(i0.ɵɵ
|
|
42
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r2.caseReferenceControl.errors, ctx_r2.caseField.label)));
|
|
39
43
|
} }
|
|
40
44
|
const _c1 = function (a0) { return { "form-group-error": a0 }; };
|
|
41
45
|
export class WriteCaseLinkFieldComponent extends AbstractFieldWriteComponent {
|
|
@@ -92,10 +96,10 @@ WriteCaseLinkFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCaseLink
|
|
|
92
96
|
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 9, consts: [[1, "form-group", 3, "ngClass"], [3, "for"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], ["type", "text", 1, "form-control", "bottom-30", 3, "id", "formControl"], [1, "form-label"], [1, "form-hint"], [1, "error-message"]], template: function WriteCaseLinkFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
93
97
|
i0.ɵɵelementStart(0, "div", 0);
|
|
94
98
|
i0.ɵɵelementStart(1, "label", 1);
|
|
95
|
-
i0.ɵɵtemplate(2, WriteCaseLinkFieldComponent_span_2_Template,
|
|
99
|
+
i0.ɵɵtemplate(2, WriteCaseLinkFieldComponent_span_2_Template, 4, 5, "span", 2);
|
|
96
100
|
i0.ɵɵelementEnd();
|
|
97
|
-
i0.ɵɵtemplate(3, WriteCaseLinkFieldComponent_span_3_Template,
|
|
98
|
-
i0.ɵɵtemplate(4, WriteCaseLinkFieldComponent_span_4_Template,
|
|
101
|
+
i0.ɵɵtemplate(3, WriteCaseLinkFieldComponent_span_3_Template, 3, 3, "span", 3);
|
|
102
|
+
i0.ɵɵtemplate(4, WriteCaseLinkFieldComponent_span_4_Template, 4, 6, "span", 4);
|
|
99
103
|
i0.ɵɵelement(5, "input", 5);
|
|
100
104
|
i0.ɵɵelementEnd();
|
|
101
105
|
} if (rf & 2) {
|
|
@@ -110,7 +114,7 @@ WriteCaseLinkFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCaseLink
|
|
|
110
114
|
i0.ɵɵproperty("ngIf", ctx.caseReferenceControl.errors && (ctx.caseReferenceControl.dirty || ctx.caseReferenceControl.touched));
|
|
111
115
|
i0.ɵɵadvance(1);
|
|
112
116
|
i0.ɵɵproperty("id", ctx.id())("formControl", ctx.caseReferenceControl);
|
|
113
|
-
} }, directives: [i1.NgClass, i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective], pipes: [i3.
|
|
117
|
+
} }, directives: [i1.NgClass, i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective], pipes: [i3.RpxTranslatePipe, i4.FieldLabelPipe, i5.FirstErrorPipe], encapsulation: 2 });
|
|
114
118
|
const ɵWriteCaseLinkFieldComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInheritedFactory(WriteCaseLinkFieldComponent);
|
|
115
119
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteCaseLinkFieldComponent, [{
|
|
116
120
|
type: Component,
|
|
@@ -122,4 +126,4 @@ const ɵWriteCaseLinkFieldComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInheri
|
|
|
122
126
|
type: ViewChild,
|
|
123
127
|
args: ['writeComplexFieldComponent']
|
|
124
128
|
}] }); })();
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1saW5rLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtbGluay93cml0ZS1jYXNlLWxpbmstZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1saW5rL3dyaXRlLWNhc2UtbGluay1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7O0lDRmxGLCtCQUFpRDtJQUFBLFlBQTZDOzs7SUFBQSxpQkFBTzs7O0lBQXBELGVBQTZDO0lBQTdDLDRGQUE2Qzs7O0lBRWhHLCtCQUFvRDtJQUFBLFlBQXNDOztJQUFBLGlCQUFPOzs7SUFBN0MsZUFBc0M7SUFBdEMsc0VBQXNDOzs7SUFDMUYsK0JBQWdJO0lBQUEsWUFBOEU7OztJQUFBLGlCQUFPOzs7SUFBckYsZUFBOEU7SUFBOUUsNEhBQThFOzs7QURLaE4sTUFBTSxPQUFPLDJCQUE0QixTQUFRLDJCQUEyQjtJQVFuRSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxTQUFTLENBQUM7Z0JBQ3RELGFBQWEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQzthQUN4RixDQUFDLEVBQUUsSUFBSSxDQUFjLENBQUM7U0FDeEI7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztnQkFDdEQsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQzFELENBQUMsRUFBRSxJQUFJLENBQWMsQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFFdkUsZ0hBQWdIO1FBQ2hILHNFQUFzRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUNsRSxLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFO2dCQUN2RSxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO2FBQzNFO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE9BQU8sQ0FBQyxPQUF3QixFQUEwQixFQUFFO1lBQzFELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDakIsSUFBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFHO29CQUM1QyxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFDRCxPQUFPLEVBQUMsS0FBSyxFQUFFLDRDQUE0QyxFQUFDLENBQUM7YUFDOUQ7aUJBQU07Z0JBQ0wsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixPQUFPLEVBQUMsS0FBSyxFQUFFLDRDQUE0QyxFQUFDLENBQUM7aUJBQzlEO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxXQUFtQjtRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFJO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OzBJQW5EVSwyQkFBMkI7Z0VBQTNCLDJCQUEyQjs7Ozs7O1FDVnhDLDhCQUFzSjtRQUNwSixnQ0FBb0I7UUFDbEIsOEVBQXFHO1FBQ3ZHLGlCQUFRO1FBQ1IsOEVBQWlHO1FBQ2pHLDhFQUFxTjtRQUNyTiwyQkFBbUc7UUFDckcsaUJBQU07O1FBUGtCLDZKQUE2SDtRQUM1SSxlQUFZO1FBQVosOEJBQVk7UUFDUyxlQUFxQjtRQUFyQiwwQ0FBcUI7UUFFeEIsZUFBeUI7UUFBekIsOENBQXlCO1FBQ3JCLGVBQWlHO1FBQWpHLDhIQUFpRztRQUN4RixlQUFXO1FBQVgsNkJBQVcseUNBQUE7O3dGREl0QywyQkFBMkI7dUZBQTNCLDJCQUEyQjtjQUp2QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsV0FBVyxFQUFFLDRCQUE0QjthQUMxQztnQkFPUSwwQkFBMEI7a0JBRGhDLFNBQVM7bUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wbGV4L3dyaXRlLWNvbXBsZXgtZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtbGluay1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnd3JpdGUtY2FzZS1saW5rLWZpZWxkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNhc2VSZWZlcmVuY2VDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBjYXNlTGlua0dyb3VwOiBGb3JtR3JvdXA7XG5cbiAgQFZpZXdDaGlsZCgnd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQnKVxuICBwdWJsaWMgd3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQ6IFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQudmFsdWUpIHtcbiAgICAgIHRoaXMuY2FzZUxpbmtHcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBDYXNlUmVmZXJlbmNlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5jYXNlRmllbGQudmFsdWUuQ2FzZVJlZmVyZW5jZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB9KSwgdHJ1ZSkgYXMgRm9ybUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VMaW5rR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgQ2FzZVJlZmVyZW5jZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgfSksIHRydWUpIGFzIEZvcm1Hcm91cDtcbiAgICB9XG4gICAgdGhpcy5jYXNlUmVmZXJlbmNlQ29udHJvbCA9IHRoaXMuY2FzZUxpbmtHcm91cC5jb250cm9sc1snQ2FzZVJlZmVyZW5jZSddO1xuICAgIHRoaXMuY2FzZVJlZmVyZW5jZUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLmNhc2VSZWZlcmVuY2VWYWxpZGF0b3IoKSk7XG5cbiAgICAvLyBFbnN1cmUgdGhhdCBhbGwgc3ViLWZpZWxkcyBpbmhlcml0IHRoZSBzYW1lIHZhbHVlIGZvciByZXRhaW5faGlkZGVuX3ZhbHVlIGFzIHRoaXMgcGFyZW50OyBhbHRob3VnaCBhIENhc2VMaW5rXG4gICAgLy8gZmllbGQgdXNlcyB0aGUgQ29tcGxleCB0eXBlLCBpdCBpcyBtZWFudCB0byBiZSB0cmVhdGVkIGFzIG9uZSBmaWVsZFxuICAgIGlmICh0aGlzLmNhc2VGaWVsZCAmJiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgZm9yIChjb25zdCBjYXNlTGlua1N1YkZpZWxkIG9mIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgY2FzZUxpbmtTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlID0gdGhpcy5jYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhc2VSZWZlcmVuY2VWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgICBpZiAoIHRoaXMudmFsaWRDYXNlUmVmZXJlbmNlKGNvbnRyb2wudmFsdWUpICkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7ZXJyb3I6ICdQbGVhc2UgdXNlIGEgdmFsaWQgMTYgRGlnaXQgQ2FzZSBSZWZlcmVuY2UnfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb250cm9sLnRvdWNoZWQpIHtcbiAgICAgICAgICByZXR1cm4ge2Vycm9yOiAnUGxlYXNlIHVzZSBhIHZhbGlkIDE2IERpZ2l0IENhc2UgUmVmZXJlbmNlJ307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkQ2FzZVJlZmVyZW5jZSh2YWx1ZVN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZVN0cmluZyApICB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVnRXhwKCdeXFxcXGJcXFxcZHs0fVsgLV0/XFxcXGR7NH1bIC1dP1xcXFxkezR9WyAtXT9cXFxcZHs0fVxcXFxiJCcpLnRlc3QodmFsdWVTdHJpbmcudHJpbSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhY2FzZVJlZmVyZW5jZUNvbnRyb2wudmFsaWQgJiYgKGNhc2VSZWZlcmVuY2VDb250cm9sLmRpcnR5IHx8IGNhc2VSZWZlcmVuY2VDb250cm9sLnRvdWNoZWQpfVwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZCgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJjYXNlRmllbGQubGFiZWxcIj57e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwgfCBycHhUcmFuc2xhdGV9fX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCIgKm5nSWY9XCJjYXNlRmllbGQuaGludF90ZXh0XCI+e3tjYXNlRmllbGQuaGludF90ZXh0IHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiY2FzZVJlZmVyZW5jZUNvbnRyb2wuZXJyb3JzICYmIChjYXNlUmVmZXJlbmNlQ29udHJvbC5kaXJ0eSB8fCBjYXNlUmVmZXJlbmNlQ29udHJvbC50b3VjaGVkKVwiPnt7Y2FzZVJlZmVyZW5jZUNvbnRyb2wuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMFwiIFtpZF09XCJpZCgpXCIgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwiY2FzZVJlZmVyZW5jZUNvbnRyb2xcIj5cbjwvZGl2PlxuIl19
|
package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js
CHANGED
|
@@ -16,29 +16,31 @@ import * as i1 from "@angular/material/dialog";
|
|
|
16
16
|
import * as i2 from "@nicky-lenaers/ngx-scroll-to";
|
|
17
17
|
import * as i3 from "../../../services/profile/profile.notifier";
|
|
18
18
|
const _c0 = ["collectionItem"];
|
|
19
|
-
function
|
|
19
|
+
function WriteCollectionFieldComponent_h2_9_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
20
20
|
i0.ɵɵelementStart(0, "span", 9);
|
|
21
21
|
i0.ɵɵtext(1);
|
|
22
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
22
23
|
i0.ɵɵelementEnd();
|
|
23
24
|
} if (rf & 2) {
|
|
24
25
|
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
25
26
|
i0.ɵɵadvance(1);
|
|
26
|
-
i0.ɵɵtextInterpolate(ctx_r3.caseField.hint_text);
|
|
27
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r3.caseField.hint_text));
|
|
27
28
|
} }
|
|
28
|
-
function
|
|
29
|
+
function WriteCollectionFieldComponent_h2_9_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
29
30
|
i0.ɵɵelementStart(0, "span", 10);
|
|
30
31
|
i0.ɵɵtext(1);
|
|
31
|
-
i0.ɵɵpipe(2, "
|
|
32
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
33
|
+
i0.ɵɵpipe(3, "ccdFirstError");
|
|
32
34
|
i0.ɵɵelementEnd();
|
|
33
35
|
} if (rf & 2) {
|
|
34
36
|
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
35
37
|
i0.ɵɵadvance(1);
|
|
36
|
-
i0.ɵɵtextInterpolate(i0.ɵɵ
|
|
38
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, i0.ɵɵpipeBind2(3, 3, ctx_r4.formArray.errors, ctx_r4.caseField.label)));
|
|
37
39
|
} }
|
|
38
|
-
function
|
|
40
|
+
function WriteCollectionFieldComponent_h2_9_Template(rf, ctx) { if (rf & 1) {
|
|
39
41
|
i0.ɵɵelementStart(0, "h2", 2);
|
|
40
|
-
i0.ɵɵtemplate(1,
|
|
41
|
-
i0.ɵɵtemplate(2,
|
|
42
|
+
i0.ɵɵtemplate(1, WriteCollectionFieldComponent_h2_9_span_1_Template, 3, 3, "span", 7);
|
|
43
|
+
i0.ɵɵtemplate(2, WriteCollectionFieldComponent_h2_9_span_2_Template, 4, 6, "span", 8);
|
|
42
44
|
i0.ɵɵelementEnd();
|
|
43
45
|
} if (rf & 2) {
|
|
44
46
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -47,7 +49,7 @@ function WriteCollectionFieldComponent_h2_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
47
49
|
i0.ɵɵadvance(1);
|
|
48
50
|
i0.ɵɵproperty("ngIf", ctx_r0.formArray.errors);
|
|
49
51
|
} }
|
|
50
|
-
function
|
|
52
|
+
function WriteCollectionFieldComponent_div_10_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
51
53
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
52
54
|
i0.ɵɵelementStart(0, "div", 13, 14);
|
|
53
55
|
i0.ɵɵelementStart(2, "div", 15);
|
|
@@ -55,17 +57,19 @@ function WriteCollectionFieldComponent_div_8_div_1_Template(rf, ctx) { if (rf &
|
|
|
55
57
|
i0.ɵɵelementStart(4, "label", 17);
|
|
56
58
|
i0.ɵɵelementStart(5, "h3", 18);
|
|
57
59
|
i0.ɵɵtext(6);
|
|
60
|
+
i0.ɵɵpipe(7, "rpxTranslate");
|
|
58
61
|
i0.ɵɵelementEnd();
|
|
59
62
|
i0.ɵɵelementEnd();
|
|
60
63
|
i0.ɵɵelementEnd();
|
|
61
|
-
i0.ɵɵelementStart(
|
|
62
|
-
i0.ɵɵelementStart(
|
|
63
|
-
i0.ɵɵlistener("click", function
|
|
64
|
-
i0.ɵɵtext(
|
|
64
|
+
i0.ɵɵelementStart(8, "div", 19);
|
|
65
|
+
i0.ɵɵelementStart(9, "button", 20);
|
|
66
|
+
i0.ɵɵlistener("click", function WriteCollectionFieldComponent_div_10_div_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r10); const i_r7 = ctx.index; const ctx_r9 = i0.ɵɵnextContext(2); return ctx_r9.openModal(i_r7); });
|
|
67
|
+
i0.ɵɵtext(10);
|
|
68
|
+
i0.ɵɵpipe(11, "rpxTranslate");
|
|
65
69
|
i0.ɵɵelementEnd();
|
|
66
70
|
i0.ɵɵelementEnd();
|
|
67
71
|
i0.ɵɵelementEnd();
|
|
68
|
-
i0.ɵɵelement(
|
|
72
|
+
i0.ɵɵelement(12, "ccd-field-write", 21);
|
|
69
73
|
i0.ɵɵelementEnd();
|
|
70
74
|
} if (rf & 2) {
|
|
71
75
|
const item_r6 = ctx.$implicit;
|
|
@@ -74,16 +78,18 @@ function WriteCollectionFieldComponent_div_8_div_1_Template(rf, ctx) { if (rf &
|
|
|
74
78
|
i0.ɵɵadvance(4);
|
|
75
79
|
i0.ɵɵproperty("for", item_r6.prefix + i_r7);
|
|
76
80
|
i0.ɵɵadvance(2);
|
|
77
|
-
i0.ɵɵtextInterpolate(ctx_r5.itemLabel(i_r7));
|
|
78
|
-
i0.ɵɵadvance(
|
|
81
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 13, ctx_r5.itemLabel(i_r7)));
|
|
82
|
+
i0.ɵɵadvance(3);
|
|
79
83
|
i0.ɵɵattributeInterpolate1("aria-label", "Remove ", ctx_r5.itemLabel(i_r7), "");
|
|
80
84
|
i0.ɵɵproperty("disabled", ctx_r5.isNotAuthorisedToDelete(i_r7));
|
|
85
|
+
i0.ɵɵadvance(1);
|
|
86
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 15, "Remove"));
|
|
81
87
|
i0.ɵɵadvance(2);
|
|
82
88
|
i0.ɵɵproperty("caseField", item_r6.caseField)("caseFields", ctx_r5.caseFields)("formGroup", ctx_r5.formGroup)("parent", item_r6.container)("idPrefix", item_r6.prefix)("hidden", item_r6.caseField.hidden)("isExpanded", ctx_r5.isExpanded)("isInSearchBlock", ctx_r5.isInSearchBlock);
|
|
83
89
|
} }
|
|
84
|
-
function
|
|
90
|
+
function WriteCollectionFieldComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
85
91
|
i0.ɵɵelementStart(0, "div", 11);
|
|
86
|
-
i0.ɵɵtemplate(1,
|
|
92
|
+
i0.ɵɵtemplate(1, WriteCollectionFieldComponent_div_10_div_1_Template, 13, 17, "div", 12);
|
|
87
93
|
i0.ɵɵelementEnd();
|
|
88
94
|
} if (rf & 2) {
|
|
89
95
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -91,15 +97,18 @@ function WriteCollectionFieldComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
91
97
|
i0.ɵɵadvance(1);
|
|
92
98
|
i0.ɵɵproperty("ngForOf", ctx_r1.collItems);
|
|
93
99
|
} }
|
|
94
|
-
function
|
|
100
|
+
function WriteCollectionFieldComponent_button_11_Template(rf, ctx) { if (rf & 1) {
|
|
95
101
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
96
102
|
i0.ɵɵelementStart(0, "button", 22);
|
|
97
|
-
i0.ɵɵlistener("click", function
|
|
98
|
-
i0.ɵɵtext(1
|
|
103
|
+
i0.ɵɵlistener("click", function WriteCollectionFieldComponent_button_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.addItem(false); });
|
|
104
|
+
i0.ɵɵtext(1);
|
|
105
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
99
106
|
i0.ɵɵelementEnd();
|
|
100
107
|
} if (rf & 2) {
|
|
101
108
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
102
109
|
i0.ɵɵproperty("disabled", ctx_r2.isNotAuthorisedToCreate() || ctx_r2.isSearchFilter());
|
|
110
|
+
i0.ɵɵadvance(1);
|
|
111
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "Add new"));
|
|
103
112
|
} }
|
|
104
113
|
export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
105
114
|
constructor(dialog, scrollToService, profileNotifier) {
|
|
@@ -222,7 +231,12 @@ export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
|
222
231
|
addItem(doScroll) {
|
|
223
232
|
// Manually resetting errors is required to prevent `ExpressionChangedAfterItHasBeenCheckedError`
|
|
224
233
|
this.formArray.setErrors(null);
|
|
225
|
-
|
|
234
|
+
let item = { value: null };
|
|
235
|
+
if (this.isCollectionDynamic()) {
|
|
236
|
+
item = Object.assign({}, this.caseField.value[this.caseField.value.length - 1]);
|
|
237
|
+
const key = Number(item['id'][item['id'].length - 1]) + 1;
|
|
238
|
+
item.id = item['id'].replace(/.$/, key.toString());
|
|
239
|
+
}
|
|
226
240
|
this.caseField.value.push(item);
|
|
227
241
|
const index = this.caseField.value.length - 1;
|
|
228
242
|
const caseField = this.buildCaseField(item, index, true);
|
|
@@ -245,6 +259,12 @@ export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
|
245
259
|
setTimeout(() => this.focusLastItem());
|
|
246
260
|
}
|
|
247
261
|
}
|
|
262
|
+
isCollectionDynamic() {
|
|
263
|
+
if (!this.caseField.field_type || !this.caseField.field_type.collection_field_type) {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
return this.caseField.field_type.collection_field_type.id === 'DynamicRadioList';
|
|
267
|
+
}
|
|
248
268
|
newCaseField(id, item, index, isNew = false) {
|
|
249
269
|
const isNotAuthorisedToUpdate = !isNew && this.isNotAuthorisedToUpdate(index);
|
|
250
270
|
const fieldType = plainToClassFromExist(new FieldType(), this.caseField.field_type.collection_field_type);
|
|
@@ -393,28 +413,32 @@ WriteCollectionFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCollec
|
|
|
393
413
|
} if (rf & 2) {
|
|
394
414
|
let _t;
|
|
395
415
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);
|
|
396
|
-
} }, inputs: { caseFields: "caseFields", formGroup: "formGroup" }, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
416
|
+
} }, inputs: { caseFields: "caseFields", formGroup: "formGroup" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 13, consts: [[1, "form-group", 3, "id"], [1, "panel", "collection-indicator"], [1, "heading-h2", "error-spacing"], ["type", "button", 1, "button", "write-collection-add-item__top", 3, "disabled", "click"], ["class", "heading-h2 error-spacing", 4, "ngIf"], ["class", "form-group", 3, "hidden", 4, "ngIf"], ["class", "button write-collection-add-item__bottom", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "form-hint"], [1, "error-message"], [1, "form-group", 3, "hidden"], ["class", "form-group", 4, "ngFor", "ngForOf"], [1, "form-group"], ["collectionItem", ""], [1, "collection-title"], [1, "float-left"], [3, "for"], [1, "heading-h3"], [1, "float-right"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], [3, "caseField", "caseFields", "formGroup", "parent", "idPrefix", "hidden", "isExpanded", "isInSearchBlock"], ["type", "button", 1, "button", "write-collection-add-item__bottom", 3, "disabled", "click"]], template: function WriteCollectionFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
397
417
|
i0.ɵɵelementStart(0, "div", 0);
|
|
398
418
|
i0.ɵɵelementStart(1, "div", 1);
|
|
399
419
|
i0.ɵɵelementStart(2, "h2", 2);
|
|
400
420
|
i0.ɵɵtext(3);
|
|
401
|
-
i0.ɵɵpipe(4, "
|
|
421
|
+
i0.ɵɵpipe(4, "rpxTranslate");
|
|
422
|
+
i0.ɵɵpipe(5, "ccdFieldLabel");
|
|
402
423
|
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵelementStart(
|
|
404
|
-
i0.ɵɵlistener("click", function
|
|
405
|
-
i0.ɵɵtext(
|
|
424
|
+
i0.ɵɵelementStart(6, "button", 3);
|
|
425
|
+
i0.ɵɵlistener("click", function WriteCollectionFieldComponent_Template_button_click_6_listener() { return ctx.addItem(true); });
|
|
426
|
+
i0.ɵɵtext(7);
|
|
427
|
+
i0.ɵɵpipe(8, "rpxTranslate");
|
|
406
428
|
i0.ɵɵelementEnd();
|
|
407
|
-
i0.ɵɵtemplate(
|
|
408
|
-
i0.ɵɵtemplate(
|
|
409
|
-
i0.ɵɵtemplate(
|
|
429
|
+
i0.ɵɵtemplate(9, WriteCollectionFieldComponent_h2_9_Template, 3, 2, "h2", 4);
|
|
430
|
+
i0.ɵɵtemplate(10, WriteCollectionFieldComponent_div_10_Template, 2, 2, "div", 5);
|
|
431
|
+
i0.ɵɵtemplate(11, WriteCollectionFieldComponent_button_11_Template, 3, 4, "button", 6);
|
|
410
432
|
i0.ɵɵelementEnd();
|
|
411
433
|
i0.ɵɵelementEnd();
|
|
412
434
|
} if (rf & 2) {
|
|
413
435
|
i0.ɵɵproperty("id", ctx.id());
|
|
414
436
|
i0.ɵɵadvance(3);
|
|
415
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4,
|
|
416
|
-
i0.ɵɵadvance(
|
|
437
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, i0.ɵɵpipeBind1(5, 9, ctx.caseField)), " ");
|
|
438
|
+
i0.ɵɵadvance(3);
|
|
417
439
|
i0.ɵɵproperty("disabled", ctx.isNotAuthorisedToCreate() || ctx.isSearchFilter());
|
|
440
|
+
i0.ɵɵadvance(1);
|
|
441
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 11, "Add new"));
|
|
418
442
|
i0.ɵɵadvance(2);
|
|
419
443
|
i0.ɵɵproperty("ngIf", ctx.caseField.hint_text || ctx.formArray.errors);
|
|
420
444
|
i0.ɵɵadvance(1);
|
|
@@ -437,4 +461,4 @@ WriteCollectionFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCollec
|
|
|
437
461
|
type: ViewChildren,
|
|
438
462
|
args: ['collectionItem']
|
|
439
463
|
}] }); })();
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY29sbGVjdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb2xsZWN0aW9uL3dyaXRlLWNvbGxlY3Rpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29sbGVjdGlvbi93cml0ZS1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FB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LFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQ3ZDO3dIQUdRLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxTQUFTO2tCQURmLEtBQUs7WUFTVyxLQUFLO2tCQURyQixZQUFZO21CQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsVG9TZXJ2aWNlIH0gZnJvbSAnQG5pY2t5LWxlbmFlcnMvbmd4LXNjcm9sbC10byc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3NGcm9tRXhpc3QgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vZmllbGQtdHlwZS5tb2RlbCc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgUHJvZmlsZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9wcm9maWxlL3Byb2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWxpZGF0b3JzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZmlsZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJvZmlsZS9wcm9maWxlLm5vdGlmaWVyJztcbmltcG9ydCB7IFJlbW92ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MvcmVtb3ZlLWRpYWxvZy9yZW1vdmUtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5cbnR5cGUgQ29sbGVjdGlvbkl0ZW0gPSB7XG4gIGNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuICBpdGVtOiBhbnk7XG4gIHByZWZpeDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBjb250YWluZXI6IEZvcm1Hcm91cDtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC13cml0ZS1jb2xsZWN0aW9uLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWNvbGxlY3Rpb24tZmllbGQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbGxlY3Rpb24tZmllbGQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ29sbGVjdGlvbkZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGZvcm1BcnJheTogRm9ybUFycmF5O1xuXG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgcHJvZmlsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvbGxlY3Rpb25JdGVtJylcbiAgcHJpdmF0ZSByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBwdWJsaWMgcmVhZG9ubHkgY29sbEl0ZW1zOiBDb2xsZWN0aW9uSXRlbVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvU2VydmljZTogU2Nyb2xsVG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkgeyAvLyBtZWFuaW5nIEkgYW0gbm90IHJlbmRlcmVkIG9uIHRoZSBzZWFyY2gvd29ya2Jhc2tldCBpbnB1dCBmaWx0ZXJcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKF8gPT4gdGhpcy5wcm9maWxlID0gXyk7XG4gICAgfVxuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gdGhpcy5jYXNlRmllbGQudmFsdWUgfHwgW107XG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUFycmF5KFtdKSwgdHJ1ZSkgYXMgRm9ybUFycmF5O1xuICAgIHRoaXMuZm9ybUFycmF5WydjYXNlRmllbGQnXSA9IHRoaXMuY2FzZUZpZWxkO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgcHJlZml4OiBzdHJpbmcgPSB0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpO1xuICAgICAgY29uc3QgY2FzZUZpZWxkID0gdGhpcy5idWlsZENhc2VGaWVsZChpdGVtLCBpbmRleCk7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldENvbnRhaW5lcihpbmRleCk7XG4gICAgICBpZiAodGhpcy5jb2xsSXRlbXMubGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zLmxlbmd0aCA9IGluZGV4ICsgMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29sbEl0ZW1zW2luZGV4XSA9IHsgY2FzZUZpZWxkLCBpdGVtLCBwcmVmaXgsIGluZGV4LCBjb250YWluZXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDYXNlRmllbGQoaXRlbSwgaW5kZXg6IG51bWJlciwgaXNOZXcgPSBmYWxzZSk6IENhc2VGaWVsZCB7XG4gICAgLyoqXG4gICAgICogV2hhdCBmb2xsb3cgaXMgY29kZSB0aGF0IG1ha2VzIG1lIHdhbnQgdG8gZ28ganVtcCBpbiB0aGUgc2hvd2VyIVxuICAgICAqIEJhc2ljYWxseSwgd2UgbGFuZCBpbiBoZXJlIHJlcGVhdGVkbHkgYmVjYXVzZSBvZiB0aGUgYmluZGluZywgYW5kXG4gICAgICogdGhpcyBpcyB3aGF0IGFwcGVhcnMgdG8gYmUgaGFwcGVuaW5nOlxuICAgICAqICAgMS4gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgbm8gY29udHJvbHMgYXQgYWxsLlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbXTtcbiAgICAgKiAgIDIuIHRoaXMuZm9ybUFycmF5IGNvbnRhaW5zIGEgRm9ybUdyb3VwLCB3aGljaCBjb250YWlucyBhIHNpbmdsZVxuICAgICAqICAgICAgRm9ybUNvbnRyb2wgd2l0aCB0aGUgaWQgJ2NvZGUnLlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbeyBjb2RlOiBudWxsIH1dXG4gICAgICogICAzLiB0aGlzLmZvcm1BcnJheSBjb250YWlucyB3aGF0IGlzIGJlaW5nIHNldCB1cCBiZWxvdy5cbiAgICAgKiAgICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlID0gW3sgY29kZTogbnVsbCwgaWQ6IG51bGwsIHZhbHVlOiB7IGNvZGU6IG51bGwgfSB9XVxuICAgICAqICAgNCwgNSwgNiwgZXRjIC0gdGhlIHNhbWUgYXMgMy5cbiAgICAgKi9cbiAgICBsZXQgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgICBpZiAodGhpcy5mb3JtQXJyYXkgJiYgKGluZGV4IDwgdGhpcy5mb3JtQXJyYXkubGVuZ3RoKSkge1xuICAgICAgZ3JvdXAgPSB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAodGhpcy5pc0NvbGxlY3Rpb25PZlNpbXBsZVR5cGUodGhpcy5jYXNlRmllbGQpKSB7XG4gICAgICB2YWx1ZSA9IGdyb3VwLmdldCgndmFsdWUnKSBhcyBGb3JtQ29udHJvbDtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRm9ybUNvbnRyb2woaXRlbS52YWx1ZSk7XG4gICAgICAgIC8vIE5vdyBhZGQgdGhlIHZhbHVlIEZvcm1Db250cm9sIHRvIHRoZSBvdXRlciBncm91cC5cbiAgICAgICAgZ3JvdXAuYWRkQ29udHJvbCgndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZ3JvdXAuZ2V0KCd2YWx1ZScpIGFzIEZvcm1Hcm91cDtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpKSB7XG4gICAgICAgICAgdmFsdWUuYWRkQ29udHJvbChrZXksIGdyb3VwLmdldChrZXkpKTtcbiAgICAgICAgICAvLyBET04nVCByZW1vdmUgdGhlIGNvbnRyb2wgZm9yIHRoaXMga2V5IGZyb20gdGhlIG91dGVyIGdyb3VwIG9yIGl0XG4gICAgICAgICAgLy8gZ29lcyBhd3J5LiBTbyBET04nVCB1bmNvbW1lbnQgdGhlIGJlbG93IGxpbmUhXG4gICAgICAgICAgLy8gZ3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBhZGQgdGhlIHZhbHVlIEZvcm1Hcm91cCB0byB0aGUgb3V0ZXIgZ3JvdXAuXG4gICAgICAgIGdyb3VwLmFkZENvbnRyb2woJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaWQgPSBncm91cC5nZXQoJ2lkJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgLy8gSWYgd2UncmUgbm90IGluIHNjZW5hcmlvIDMsIGFib3ZlLCB3ZSBuZWVkIHRvIGRvIHNvbWUgamlnZ2VyeSBwb2tlcnlcbiAgICAvLyBhbmQgc2V0IHVwIHRoZSBpZCBhbmQgdmFsdWUgY29udHJvbHMuXG4gICAgLy8gQWxzbyBzZXQgdXAgYW4gaWQgY29udHJvbCBpZiBpdCBkb2Vzbid0IHlldCBleGlzdC5cbiAgICBpZiAoIWlkKSB7XG4gICAgICBpZCA9IG5ldyBGb3JtQ29udHJvbChpdGVtLmlkKTtcbiAgICAgIGdyb3VwLmFkZENvbnRyb2woJ2lkJywgaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFnYWluLCB2ZXJ5IHNvcnJ5LiBJJ3ZlIG5vdCBmb3VuZCBhIGJldHRlciB3YXkgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiBvdXRwdXQgbmVlZGVkIGZvciB3aGF0IG5lZWRzIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlciB5ZXQuXG4gICAgICovXG5cbiAgICAvLyBOb3csIGFkZCB0aGUgb3V0ZXIgZ3JvdXAgdG8gdGhlIGFycmF5IChvciByZXBsYWNlIGl0KS5cbiAgICBpZiAoaW5kZXggPCB0aGlzLmZvcm1BcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9ybUFycmF5LnNldENvbnRyb2woaW5kZXgsIGdyb3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChncm91cCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHNldCB1cCB0aGUgQ2FzZUZpZWxkIGFuZCB2YWxpZGF0aW9uLlxuICAgIGxldCBjZmlkOiBzdHJpbmc7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIGNmaWQgPSAndmFsdWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjZmlkID0gaW5kZXgudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLyBpc05ldzpcbiAgICBjb25zdCBjZjogQ2FzZUZpZWxkID0gdGhpcy5uZXdDYXNlRmllbGQoY2ZpZCwgaXRlbSwgaW5kZXgsIGlzTmV3KTtcbiAgICBGb3JtVmFsaWRhdG9yc1NlcnZpY2UuYWRkVmFsaWRhdG9ycyhjZiwgdmFsdWUpO1xuICAgIEZpZWxkc1V0aWxzLmFkZENhc2VGaWVsZEFuZENvbXBvbmVudFJlZmVyZW5jZXModmFsdWUsIGNmLCB0aGlzKTtcbiAgICByZXR1cm4gY2Y7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRJZFByZWZpeChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHt0aGlzLmlkUHJlZml4fSR7dGhpcy5jYXNlRmllbGQuaWR9X2A7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke2luZGV4fV9gO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4O1xuICB9XG5cbiAgcHVibGljIGlzU2VhcmNoRmlsdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5TZWFyY2hCbG9jayAmJiB0aGlzLmNvbGxJdGVtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGFkZEl0ZW0oZG9TY3JvbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBNYW51YWxseSByZXNldHRpbmcgZXJyb3JzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgXG4gICAgdGhpcy5mb3JtQXJyYXkuc2V0RXJyb3JzKG51bGwpO1xuICAgIGNvbnN0IGl0ZW0gPSB7IHZhbHVlOiBudWxsIH07XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUucHVzaChpdGVtKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmJ1aWxkQ2FzZUZpZWxkKGl0ZW0sIGluZGV4LCB0cnVlKTtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKGluZGV4KTtcbiAgICB0aGlzLmNvbGxJdGVtcy5wdXNoKHsgY2FzZUZpZWxkLCBpdGVtLCBpbmRleCwgcHJlZml4LCBjb250YWluZXIgfSk7XG5cbiAgICAvLyBUaW1lb3V0IGlzIHJlcXVpcmVkIGZvciB0aGUgY29sbGVjdGlvbiBpdGVtIHRvIGJlIHJlbmRlcmVkIGJlZm9yZSBpdCBjYW4gYmUgc2Nyb2xsZWQgdG8gb3IgZm9jdXNlZC5cbiAgICBpZiAoZG9TY3JvbGwpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvU2VydmljZS5zY3JvbGxUbyh7XG4gICAgICAgICAgdGFyZ2V0OiBgJHt0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpfSR7aW5kZXh9YCxcbiAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICBvZmZzZXQ6IC0xNTAsXG4gICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5mb2N1c0xhc3RJdGVtKCkpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB9LCBjb25zb2xlLmVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNMYXN0SXRlbSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5ld0Nhc2VGaWVsZChpZDogc3RyaW5nLCBpdGVtLCBpbmRleCwgaXNOZXcgPSBmYWxzZSkge1xuICAgIGNvbnN0IGlzTm90QXV0aG9yaXNlZFRvVXBkYXRlID0gIWlzTmV3ICYmIHRoaXMuaXNOb3RBdXRob3Jpc2VkVG9VcGRhdGUoaW5kZXgpO1xuXG4gICAgY29uc3QgZmllbGRUeXBlID0gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBGaWVsZFR5cGUoKSwgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUpO1xuICAgIGlmIChmaWVsZFR5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgIGZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkc1xuICAgICAgICAuZmlsdGVyKChjZjogQ2FzZUZpZWxkKSA9PiAhIWNmLnNob3dfY29uZGl0aW9uKVxuICAgICAgICAubWFwKChjZjogQ2FzZUZpZWxkKSA9PiBjZi5oaWRkZW4gPSB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgdGhlIGJpdCBzZXR0aW5nIHRoZSBoaWRkZW4gZmxhZyBoZXJlIGFzIGl0J3MgYW4gaXRlbSBpbiB0aGUgYXJyYXkgYW5kXG4gICAgLy8gaXRzIGhpZGRlbiBzdGF0ZSBpc24ndCBpbmRlcGVuZGVudGx5IHJlLWV2YWx1YXRlZCB3aGVuIHRoZSBmb3JtIGlzIGNoYW5nZWQuXG4gICAgcmV0dXJuIHBsYWluVG9DbGFzc0Zyb21FeGlzdChuZXcgQ2FzZUZpZWxkKCksIHtcbiAgICAgIGlkLFxuICAgICAgZmllbGRfdHlwZTogZmllbGRUeXBlLFxuICAgICAgZGlzcGxheV9jb250ZXh0OiBpc05vdEF1dGhvcmlzZWRUb1VwZGF0ZSA/ICdSRUFET05MWScgOiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQsXG4gICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgYWNsczogdGhpcy5jYXNlRmllbGQuYWNsc1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250YWluZXIoaW5kZXg6IG51bWJlcik6IEZvcm1Hcm91cCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkuZ2V0KCd2YWx1ZScpO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzTGFzdEl0ZW0oKSB7XG4gICAgY29uc3QgaXRlbTogYW55ID0gdGhpcy5pdGVtcy5sYXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZvcm0tY29udHJvbCcpO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBpdGVtLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMucmVzZXRJZHMoaW5kZXgpO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldElkcyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpIDwgdGhpcy5jb2xsSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvdW50ZXIgPSBpICsgMTtcbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtc1tpXS5pbmRleCAmJiB0aGlzLmNvbGxJdGVtc1tpXS5pbmRleCA9PT0gY291bnRlcikge1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5pbmRleCA9IGk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtc1tpXS5jYXNlRmllbGQgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkLmlkXG4gICAgICAgICYmIHRoaXMuY29sbEl0ZW1zW2ldLmNhc2VGaWVsZC5pZCA9PT0gY291bnRlci50b1N0cmluZygpKSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLmNhc2VGaWVsZC5pZCA9IGkudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaWRQcmVmaXgxID0gdGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4ID8gdGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4LnJlcGxhY2UoJ18nICsgY291bnRlci50b1N0cmluZygpLCAnXycgKyBpLnRvU3RyaW5nKCkpIDogJyc7XG4gICAgICBjb25zdCBpZFByZWZpeDFDdXJyZW50ID0gaWRQcmVmaXgxLnJlcGxhY2UoJ18nICsgaS50b1N0cmluZygpLCAnXycgKyBjb3VudGVyLnRvU3RyaW5nKCkpO1xuXG4gICAgICBpZiAodGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4ICYmIHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeCA9PT0gaWRQcmVmaXgxQ3VycmVudCkge1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggPSBpZFByZWZpeDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlkUHJlZml4QXZhaWxhYmxlID0gdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyICYmIHRoaXMuY29sbEl0ZW1zW2ldLmNvbnRhaW5lclsnY29tcG9uZW50J11cbiAgICAgICAgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXS5pZFByZWZpeCA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgY29uc3QgaWRQcmVmaXgyID0gaWRQcmVmaXhBdmFpbGFibGUgP1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4LnJlcGxhY2UoJ18nICsgY291bnRlci50b1N0cmluZygpLCAnXycgKyBpLnRvU3RyaW5nKCkpIDogJyc7XG4gICAgICBjb25zdCBpZFByZWZpeDJjdXJyZW50ID0gaWRQcmVmaXgyLnJlcGxhY2UoJ18nICsgaS50b1N0cmluZygpLCAnXycgKyBjb3VudGVyLnRvU3RyaW5nKCkpO1xuXG4gICAgICBpZiAoaWRQcmVmaXhBdmFpbGFibGUgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXS5pZFByZWZpeCA9PT0gaWRQcmVmaXgyY3VycmVudCkge1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4ID0gaWRQcmVmaXgyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpdGVtTGFiZWwoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY2FzZUZpZWxkLmxhYmVsfSAke2luZGV4ICsgMX1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYXNlRmllbGQubGFiZWw7XG4gIH1cblxuICBwdWJsaWMgaXNOb3RBdXRob3Jpc2VkVG9DcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMuZ2V0Q29sbGVjdGlvblBlcm1pc3Npb24odGhpcy5jYXNlRmllbGQsICdhbGxvd0luc2VydCcpO1xuICB9XG5cbiAgcHVibGljIGdldENvbGxlY3Rpb25QZXJtaXNzaW9uKGZpZWxkOiBDYXNlRmllbGQsIHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyICYmXG4gICAgICBmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnNwbGl0KCcjJylcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uc3RhcnRzV2l0aCgnQ09MTEVDVElPTignKSlbMF1cbiAgICAgICAgLmluY2x1ZGVzKHR5cGUpO1xuICB9XG5cbiAgcHVibGljIGlzTm90QXV0aG9yaXNlZFRvVXBkYXRlKGluZGV4KSB7XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBXYXMgcmVhc3Nlc2VkIGFzIHBhcnQgb2YgRVVJLTM1MDUuIFRoZXJlIGlzIHN0aWxsIGEgY2F2ZWF0IGFyb3VuZCBDUkQsIGJ1dCB0aGF0IHdhcyBkZWVtZWQgYW4gdW5saWtlbHkgc2NlbmFyaW9cbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Q29udHJvbElkQXQoaW5kZXgpO1xuICAgIGlmIChpZCkge1xuICAgICAgaWYgKCEhdGhpcy5wcm9maWxlLnVzZXIgJiYgISF0aGlzLnByb2ZpbGUudXNlci5pZGFtKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVJvbGUgPSB0aGlzLnByb2ZpbGUudXNlci5pZGFtLnJvbGVzLmZpbmQocm9sZSA9PiB0aGlzLmhhc1VwZGF0ZUFjY2Vzcyhyb2xlKSk7XG4gICAgICAgIHJldHVybiAhdXBkYXRlUm9sZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGhhc1VwZGF0ZUFjY2Vzcyhyb2xlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNhc2VGaWVsZC5hY2xzLmZpbmQoYWNsID0+IGFjbC5yb2xlID09PSByb2xlICYmIGFjbC51cGRhdGUgPT09IHRydWUpO1xuICB9XG5cbiAgcHVibGljIGlzTm90QXV0aG9yaXNlZFRvRGVsZXRlKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNob3VsZCBiZSBhYmxlIHRvIGRlbGV0ZSBpZiBjcmVhdGluZyBhIGNhc2UgZXZlbiBpZiBcIkRcIiBpcyBhYnNlbnQsIGhlbmNlOlxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRDb250cm9sSWRBdChpbmRleCk7XG4gICAgcmV0dXJuICEhaWQgJiYgIXRoaXMuZ2V0Q29sbGVjdGlvblBlcm1pc3Npb24odGhpcy5jYXNlRmllbGQsICdhbGxvd0RlbGV0ZScpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbChpOiBudW1iZXIpIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmFyaWFMYWJlbCA9ICdMYWJlbCc7XG4gICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9ICcyMjBweCc7XG4gICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzU1MHB4JztcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9ICdkaWFsb2cnO1xuXG4gICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0ge1xuICAgICAgdG9wOiBgJHt3aW5kb3cuaW5uZXJIZWlnaHQgLyAyIC0gMTEwfXB4YCwgbGVmdDogYCR7d2luZG93LmlubmVyV2lkdGggLyAyIC0gMjc1fXB4YFxuICAgIH07XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlbW92ZURpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJ1JlbW92ZScpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZWQgZnVsbCBzb2x1dGlvbiBhcyBwYXJ0IG9mIEVVSS0zNTA1XG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyb2xJZEF0KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgLy8gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgWyBGb3JtR3JvdXAoIGlkOiBGb3JtQ29udHJvbCwgdmFsdWU6IEZvcm1Hcm91cCApLCAuLi4gXS5cbiAgICAvLyBIZXJlLCB3ZSBuZWVkIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhlIGlkIEZvcm1Db250cm9sLlxuICAgIGNvbnN0IGdyb3VwOiBGb3JtR3JvdXAgPSB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1Db250cm9sID0gZ3JvdXAuZ2V0KCdpZCcpIGFzIEZvcm1Db250cm9sO1xuICAgIHJldHVybiBjb250cm9sID8gY29udHJvbC52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDb2xsZWN0aW9uT2ZTaW1wbGVUeXBlKGNhc2VGaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgY29uc3Qgbm90U2ltcGxlID0gWydDb2xsZWN0aW9uJywgJ0NvbXBsZXgnXTtcbiAgICByZXR1cm4gbm90U2ltcGxlLmluZGV4T2YoY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUpIDwgMDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaWRdPVwiaWQoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBjb2xsZWN0aW9uLWluZGljYXRvclwiPlxuXG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zcGFjaW5nXCI+XG4gICAgICB7e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWx9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX190b3BcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0odHJ1ZSlcIiBbZGlzYWJsZWRdPVwiaXNOb3RBdXRob3Jpc2VkVG9DcmVhdGUoKSB8fCBpc1NlYXJjaEZpbHRlcigpXCI+QWRkIG5ldzwvYnV0dG9uPlxuICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3BhY2luZ1wiICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dCB8fCBmb3JtQXJyYXkuZXJyb3JzXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIiBjbGFzcz1cImZvcm0taGludFwiPnt7Y2FzZUZpZWxkLmhpbnRfdGV4dH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJmb3JtQXJyYXkuZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3tmb3JtQXJyYXkuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWx9fTwvc3Bhbj5cbiAgICA8L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaGlkZGVuXT1cImNhc2VGaWVsZC5oaWRkZW5cIiAqbmdJZj1cImNhc2VGaWVsZC52YWx1ZSAmJiBjYXNlRmllbGQudmFsdWUubGVuZ3RoXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29sbEl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgI2NvbGxlY3Rpb25JdGVtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGVjdGlvbi10aXRsZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1sZWZ0XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpdGVtLnByZWZpeCArIGlcIj48aDMgY2xhc3M9XCJoZWFkaW5nLWgzXCI+e3tpdGVtTGFiZWwoaSl9fTwvaDM+PC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvYXQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3Blbk1vZGFsKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvRGVsZXRlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiUmVtb3ZlIHt7IGl0ZW1MYWJlbChpKSB9fVwiPlJlbW92ZTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cIml0ZW0uY2FzZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudF09XCJpdGVtLmNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cIml0ZW0ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uY2FzZUZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5TZWFyY2hCbG9ja109XCJpc0luU2VhcmNoQmxvY2tcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX19ib3R0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvQ3JlYXRlKCkgfHwgaXNTZWFyY2hGaWx0ZXIoKVwiICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGhcIj5BZGQgbmV3PC9idXR0b24+XG5cbiAgPC9kaXY+XG5cbjwvZGl2PiJdfQ==
|
|
464
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY29sbGVjdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb2xsZWN0aW9uL3dyaXRlLWNvbGxlY3Rpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29sbGVjdGlvbi93cml0ZS1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLFFBQVEsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FB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QUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsU0FBb0I7UUFDbkQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7OzBHQXRWVSw2QkFBNkI7a0VBQTdCLDZCQUE2Qjs7Ozs7O1FDOUIxQyw4QkFBb0M7UUFFbEMsOEJBQXdDO1FBRXRDLDZCQUFxQztRQUNuQyxZQUNGOzs7UUFBQSxpQkFBSztRQUNMLGlDQUF1SjtRQUFuRiwwR0FBUyxZQUFRLElBQUksQ0FBQyxJQUFDO1FBQTRELFlBQTRCOztRQUFBLGlCQUFTO1FBQzVMLDRFQUdLO1FBRUwsZ0ZBd0JNO1FBRU4sc0ZBQW1QO1FBRXJQLGlCQUFNO1FBRVIsaUJBQU07O1FBM0NrQiw2QkFBVztRQUs3QixlQUNGO1FBREUsMEZBQ0Y7UUFDNEYsZUFBMEQ7UUFBMUQsZ0ZBQTBEO1FBQUMsZUFBNEI7UUFBNUIsc0RBQTRCO1FBQzdJLGVBQTZDO1FBQTdDLHNFQUE2QztRQUs5QixlQUErQztRQUEvQyx3RUFBK0M7UUEwQndELGVBQStDO1FBQS9DLHdFQUErQzs7dUZEVGxNLDZCQUE2QjtjQUx6QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsV0FBVyxFQUFFLCtCQUErQjtnQkFDNUMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDdkM7d0hBR1EsVUFBVTtrQkFEaEIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQVNXLEtBQUs7a0JBRHJCLFlBQVk7bUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTY3JvbGxUb1NlcnZpY2UgfSBmcm9tICdAbmlja3ktbGVuYWVycy9uZ3gtc2Nyb2xsLXRvJztcbmltcG9ydCB7IHBsYWluVG9DbGFzc0Zyb21FeGlzdCB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9maWVsZC10eXBlLm1vZGVsJztcblxuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3Byb2ZpbGUvcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbGlkYXRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9maWxlTm90aWZpZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcm9maWxlL3Byb2ZpbGUubm90aWZpZXInO1xuaW1wb3J0IHsgUmVtb3ZlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9yZW1vdmUtZGlhbG9nL3JlbW92ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxudHlwZSBDb2xsZWN0aW9uSXRlbSA9IHtcbiAgY2FzZUZpZWxkOiBDYXNlRmllbGQ7XG4gIGl0ZW06IGFueTtcbiAgcHJlZml4OiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIGNvbnRhaW5lcjogRm9ybUdyb3VwO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNvbGxlY3Rpb24tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtY29sbGVjdGlvbi1maWVsZC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbi1maWVsZC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVDb2xsZWN0aW9uRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZm9ybUFycmF5OiBGb3JtQXJyYXk7XG5cbiAgcHVibGljIHByb2ZpbGU6IFByb2ZpbGU7XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZHJlbignY29sbGVjdGlvbkl0ZW0nKVxuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIHB1YmxpYyByZWFkb25seSBjb2xsSXRlbXM6IENvbGxlY3Rpb25JdGVtW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsVG9TZXJ2aWNlOiBTY3JvbGxUb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlTm90aWZpZXI6IFByb2ZpbGVOb3RpZmllclxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0V4cGFuZGVkKSB7IC8vIG1lYW5pbmcgSSBhbSBub3QgcmVuZGVyZWQgb24gdGhlIHNlYXJjaC93b3JrYmFza2V0IGlucHV0IGZpbHRlclxuICAgICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9maWxlTm90aWZpZXIucHJvZmlsZS5zdWJzY3JpYmUoXyA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB9XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUgPSB0aGlzLmNhc2VGaWVsZC52YWx1ZSB8fCBbXTtcbiAgICB0aGlzLmZvcm1BcnJheSA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtQXJyYXkoW10pLCB0cnVlKSBhcyBGb3JtQXJyYXk7XG4gICAgdGhpcy5mb3JtQXJyYXlbJ2Nhc2VGaWVsZCddID0gdGhpcy5jYXNlRmllbGQ7XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBwcmVmaXg6IHN0cmluZyA9IHRoaXMuYnVpbGRJZFByZWZpeChpbmRleCk7XG4gICAgICBjb25zdCBjYXNlRmllbGQgPSB0aGlzLmJ1aWxkQ2FzZUZpZWxkKGl0ZW0sIGluZGV4KTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKGluZGV4KTtcbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtcy5sZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXMubGVuZ3RoID0gaW5kZXggKyAxO1xuICAgICAgfVxuICAgICAgdGhpcy5jb2xsSXRlbXNbaW5kZXhdID0geyBjYXNlRmllbGQsIGl0ZW0sIHByZWZpeCwgaW5kZXgsIGNvbnRhaW5lciB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBidWlsZENhc2VGaWVsZChpdGVtLCBpbmRleDogbnVtYmVyLCBpc05ldyA9IGZhbHNlKTogQ2FzZUZpZWxkIHtcbiAgICAvKipcbiAgICAgKiBXaGF0IGZvbGxvdyBpcyBjb2RlIHRoYXQgbWFrZXMgbWUgd2FudCB0byBnbyBqdW1wIGluIHRoZSBzaG93ZXIhXG4gICAgICogQmFzaWNhbGx5LCB3ZSBsYW5kIGluIGhlcmUgcmVwZWF0ZWRseSBiZWNhdXNlIG9mIHRoZSBiaW5kaW5nLCBhbmRcbiAgICAgKiB0aGlzIGlzIHdoYXQgYXBwZWFycyB0byBiZSBoYXBwZW5pbmc6XG4gICAgICogICAxLiB0aGlzLmZvcm1BcnJheSBjb250YWlucyBubyBjb250cm9scyBhdCBhbGwuXG4gICAgICogICAgICB0aGlzLmZvcm1BcnJheS52YWx1ZSA9IFtdO1xuICAgICAqICAgMi4gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgYSBGb3JtR3JvdXAsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlXG4gICAgICogICAgICBGb3JtQ29udHJvbCB3aXRoIHRoZSBpZCAnY29kZScuXG4gICAgICogICAgICB0aGlzLmZvcm1BcnJheS52YWx1ZSA9IFt7IGNvZGU6IG51bGwgfV1cbiAgICAgKiAgIDMuIHRoaXMuZm9ybUFycmF5IGNvbnRhaW5zIHdoYXQgaXMgYmVpbmcgc2V0IHVwIGJlbG93LlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbeyBjb2RlOiBudWxsLCBpZDogbnVsbCwgdmFsdWU6IHsgY29kZTogbnVsbCB9IH1dXG4gICAgICogICA0LCA1LCA2LCBldGMgLSB0aGUgc2FtZSBhcyAzLlxuICAgICAqL1xuICAgIGxldCBncm91cDogRm9ybUdyb3VwO1xuICAgIGlmICh0aGlzLmZvcm1BcnJheSAmJiAoaW5kZXggPCB0aGlzLmZvcm1BcnJheS5sZW5ndGgpKSB7XG4gICAgICBncm91cCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlO1xuICAgIGlmICh0aGlzLmlzQ29sbGVjdGlvbk9mU2ltcGxlVHlwZSh0aGlzLmNhc2VGaWVsZCkpIHtcbiAgICAgIHZhbHVlID0gZ3JvdXAuZ2V0KCd2YWx1ZScpIGFzIEZvcm1Db250cm9sO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ldyBGb3JtQ29udHJvbChpdGVtLnZhbHVlKTtcbiAgICAgICAgLy8gTm93IGFkZCB0aGUgdmFsdWUgRm9ybUNvbnRyb2wgdG8gdGhlIG91dGVyIGdyb3VwLlxuICAgICAgICBncm91cC5hZGRDb250cm9sKCd2YWx1ZScsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBncm91cC5nZXQoJ3ZhbHVlJykgYXMgRm9ybUdyb3VwO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhncm91cC5jb250cm9scykpIHtcbiAgICAgICAgICB2YWx1ZS5hZGRDb250cm9sKGtleSwgZ3JvdXAuZ2V0KGtleSkpO1xuICAgICAgICAgIC8vIERPTidUIHJlbW92ZSB0aGUgY29udHJvbCBmb3IgdGhpcyBrZXkgZnJvbSB0aGUgb3V0ZXIgZ3JvdXAgb3IgaXRcbiAgICAgICAgICAvLyBnb2VzIGF3cnkuIFNvIERPTidUIHVuY29tbWVudCB0aGUgYmVsb3cgbGluZSFcbiAgICAgICAgICAvLyBncm91cC5yZW1vdmVDb250cm9sKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm93IGFkZCB0aGUgdmFsdWUgRm9ybUdyb3VwIHRvIHRoZSBvdXRlciBncm91cC5cbiAgICAgICAgZ3JvdXAuYWRkQ29udHJvbCgndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpZCA9IGdyb3VwLmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcbiAgICAvLyBJZiB3ZSdyZSBub3QgaW4gc2NlbmFyaW8gMywgYWJvdmUsIHdlIG5lZWQgdG8gZG8gc29tZSBqaWdnZXJ5IHBva2VyeVxuICAgIC8vIGFuZCBzZXQgdXAgdGhlIGlkIGFuZCB2YWx1ZSBjb250cm9scy5cbiAgICAvLyBBbHNvIHNldCB1cCBhbiBpZCBjb250cm9sIGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LlxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQpO1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWdhaW4sIHZlcnkgc29ycnkuIEkndmUgbm90IGZvdW5kIGEgYmV0dGVyIHdheSB0byBwcm9kdWNlIHRoZVxuICAgICAqIG91dHB1dCBuZWVkZWQgZm9yIHdoYXQgbmVlZHMgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyIHlldC5cbiAgICAgKi9cblxuICAgIC8vIE5vdywgYWRkIHRoZSBvdXRlciBncm91cCB0byB0aGUgYXJyYXkgKG9yIHJlcGxhY2UgaXQpLlxuICAgIGlmIChpbmRleCA8IHRoaXMuZm9ybUFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtQXJyYXkuc2V0Q29udHJvbChpbmRleCwgZ3JvdXApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKGdyb3VwKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgc2V0IHVwIHRoZSBDYXNlRmllbGQgYW5kIHZhbGlkYXRpb24uXG4gICAgbGV0IGNmaWQ6IHN0cmluZztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgY2ZpZCA9ICd2YWx1ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmaWQgPSBpbmRleC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8vIGlzTmV3OlxuICAgIGNvbnN0IGNmOiBDYXNlRmllbGQgPSB0aGlzLm5ld0Nhc2VGaWVsZChjZmlkLCBpdGVtLCBpbmRleCwgaXNOZXcpO1xuICAgIEZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRWYWxpZGF0b3JzKGNmLCB2YWx1ZSk7XG4gICAgRmllbGRzVXRpbHMuYWRkQ2FzZUZpZWxkQW5kQ29tcG9uZW50UmVmZXJlbmNlcyh2YWx1ZSwgY2YsIHRoaXMpO1xuICAgIHJldHVybiBjZjtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZElkUHJlZml4KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IGAke3RoaXMuaWRQcmVmaXh9JHt0aGlzLmNhc2VGaWVsZC5pZH1fYDtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7aW5kZXh9X2A7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cblxuICBwdWJsaWMgaXNTZWFyY2hGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJblNlYXJjaEJsb2NrICYmIHRoaXMuY29sbEl0ZW1zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgYWRkSXRlbShkb1Njcm9sbDogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIE1hbnVhbGx5IHJlc2V0dGluZyBlcnJvcnMgaXMgcmVxdWlyZWQgdG8gcHJldmVudCBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmBcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRFcnJvcnMobnVsbCk7XG4gICAgbGV0IGl0ZW0gPSB7IHZhbHVlOiBudWxsIH1cblxuICAgIGlmICggdGhpcy5pc0NvbGxlY3Rpb25EeW5hbWljKCkgKSB7XG4gICAgICBpdGVtICA9IHsuLi50aGlzLmNhc2VGaWVsZC52YWx1ZVt0aGlzLmNhc2VGaWVsZC52YWx1ZS5sZW5ndGggLSAxXX07XG4gICAgICBjb25zdCBrZXk6IG51bWJlciA9IE51bWJlcihpdGVtWydpZCddW2l0ZW1bJ2lkJ10ubGVuZ3RoIC0gMV0pICsgMTtcbiAgICAgIChpdGVtIGFzIGFueSkuaWQgPSBpdGVtWydpZCddLnJlcGxhY2UoLy4kLywga2V5LnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUucHVzaChpdGVtKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmJ1aWxkQ2FzZUZpZWxkKGl0ZW0sIGluZGV4LCB0cnVlKTtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKGluZGV4KTtcbiAgICB0aGlzLmNvbGxJdGVtcy5wdXNoKHsgY2FzZUZpZWxkLCBpdGVtLCBpbmRleCwgcHJlZml4LCBjb250YWluZXIgfSk7XG5cbiAgICAvLyBUaW1lb3V0IGlzIHJlcXVpcmVkIGZvciB0aGUgY29sbGVjdGlvbiBpdGVtIHRvIGJlIHJlbmRlcmVkIGJlZm9yZSBpdCBjYW4gYmUgc2Nyb2xsZWQgdG8gb3IgZm9jdXNlZC5cbiAgICBpZiAoZG9TY3JvbGwpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvU2VydmljZS5zY3JvbGxUbyh7XG4gICAgICAgICAgdGFyZ2V0OiBgJHt0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpfSR7aW5kZXh9YCxcbiAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICBvZmZzZXQ6IC0xNTAsXG4gICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5mb2N1c0xhc3RJdGVtKCkpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB9LCBjb25zb2xlLmVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNMYXN0SXRlbSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQ29sbGVjdGlvbkR5bmFtaWMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlIHx8ICF0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuaWQgPT09ICdEeW5hbWljUmFkaW9MaXN0JztcbiAgfVxuXG4gIHByaXZhdGUgbmV3Q2FzZUZpZWxkKGlkOiBzdHJpbmcsIGl0ZW0sIGluZGV4LCBpc05ldyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaXNOb3RBdXRob3Jpc2VkVG9VcGRhdGUgPSAhaXNOZXcgJiYgdGhpcy5pc05vdEF1dGhvcmlzZWRUb1VwZGF0ZShpbmRleCk7XG5cbiAgICBjb25zdCBmaWVsZFR5cGUgPSBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IEZpZWxkVHlwZSgpLCB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSk7XG4gICAgaWYgKGZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzXG4gICAgICAgIC5maWx0ZXIoKGNmOiBDYXNlRmllbGQpID0+ICEhY2Yuc2hvd19jb25kaXRpb24pXG4gICAgICAgIC5tYXAoKGNmOiBDYXNlRmllbGQpID0+IGNmLmhpZGRlbiA9IHRydWUpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgYml0IHNldHRpbmcgdGhlIGhpZGRlbiBmbGFnIGhlcmUgYXMgaXQncyBhbiBpdGVtIGluIHRoZSBhcnJheSBhbmRcbiAgICAvLyBpdHMgaGlkZGVuIHN0YXRlIGlzbid0IGluZGVwZW5kZW50bHkgcmUtZXZhbHVhdGVkIHdoZW4gdGhlIGZvcm0gaXMgY2hhbmdlZC5cbiAgICByZXR1cm4gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgaWQsXG4gICAgICBmaWVsZF90eXBlOiBmaWVsZFR5cGUsXG4gICAgICBkaXNwbGF5X2NvbnRleHQ6IGlzTm90QXV0aG9yaXNlZFRvVXBkYXRlID8gJ1JFQURPTkxZJyA6IHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCxcbiAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgbGFiZWw6IG51bGwsXG4gICAgICBhY2xzOiB0aGlzLmNhc2VGaWVsZC5hY2xzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lcihpbmRleDogbnVtYmVyKTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KS5nZXQoJ3ZhbHVlJyk7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNMYXN0SXRlbSgpIHtcbiAgICBjb25zdCBpdGVtOiBhbnkgPSB0aGlzLml0ZW1zLmxhc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1jb250cm9sJyk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29sbEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5yZXNldElkcyhpbmRleCk7XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0SWRzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCB0aGlzLmNvbGxJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY291bnRlciA9IGkgKyAxO1xuICAgICAgaWYgKHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ICYmIHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ID09PSBjb3VudGVyKSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ID0gaTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29sbEl0ZW1zW2ldLmNhc2VGaWVsZCAmJiB0aGlzLmNvbGxJdGVtc1tpXS5jYXNlRmllbGQuaWRcbiAgICAgICAgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkLmlkID09PSBjb3VudGVyLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkLmlkID0gaS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpZFByZWZpeDEgPSB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggPyB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXgucmVwbGFjZSgnXycgKyBjb3VudGVyLnRvU3RyaW5nKCksICdfJyArIGkudG9TdHJpbmcoKSkgOiAnJztcbiAgICAgIGNvbnN0IGlkUHJlZml4MUN1cnJlbnQgPSBpZFByZWZpeDEucmVwbGFjZSgnXycgKyBpLnRvU3RyaW5nKCksICdfJyArIGNvdW50ZXIudG9TdHJpbmcoKSk7XG5cbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggJiYgdGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4ID09PSBpZFByZWZpeDFDdXJyZW50KSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeCA9IGlkUHJlZml4MTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaWRQcmVmaXhBdmFpbGFibGUgPSB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXIgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXVxuICAgICAgICAmJiB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4ID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZFByZWZpeDIgPSBpZFByZWZpeEF2YWlsYWJsZSA/XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLmNvbnRhaW5lclsnY29tcG9uZW50J10uaWRQcmVmaXgucmVwbGFjZSgnXycgKyBjb3VudGVyLnRvU3RyaW5nKCksICdfJyArIGkudG9TdHJpbmcoKSkgOiAnJztcbiAgICAgIGNvbnN0IGlkUHJlZml4MmN1cnJlbnQgPSBpZFByZWZpeDIucmVwbGFjZSgnXycgKyBpLnRvU3RyaW5nKCksICdfJyArIGNvdW50ZXIudG9TdHJpbmcoKSk7XG5cbiAgICAgIGlmIChpZFByZWZpeEF2YWlsYWJsZSAmJiB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4ID09PSBpZFByZWZpeDJjdXJyZW50KSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLmNvbnRhaW5lclsnY29tcG9uZW50J10uaWRQcmVmaXggPSBpZFByZWZpeDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGl0ZW1MYWJlbChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jYXNlRmllbGQubGFiZWx9ICR7aW5kZXggKyAxfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZC5sYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBpc05vdEF1dGhvcmlzZWRUb0NyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5nZXRDb2xsZWN0aW9uUGVybWlzc2lvbih0aGlzLmNhc2VGaWVsZCwgJ2FsbG93SW5zZXJ0Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sbGVjdGlvblBlcm1pc3Npb24oZmllbGQ6IENhc2VGaWVsZCwgdHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgJiZcbiAgICAgIGZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIuc3BsaXQoJyMnKVxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zdGFydHNXaXRoKCdDT0xMRUNUSU9OKCcpKVswXVxuICAgICAgICAuaW5jbHVkZXModHlwZSk7XG4gIH1cblxuICBwdWJsaWMgaXNOb3RBdXRob3Jpc2VkVG9VcGRhdGUoaW5kZXgpIHtcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFdhcyByZWFzc2VzZWQgYXMgcGFydCBvZiBFVUktMzUwNS4gVGhlcmUgaXMgc3RpbGwgYSBjYXZlYXQgYXJvdW5kIENSRCwgYnV0IHRoYXQgd2FzIGRlZW1lZCBhbiB1bmxpa2VseSBzY2VuYXJpb1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRDb250cm9sSWRBdChpbmRleCk7XG4gICAgaWYgKGlkKSB7XG4gICAgICBpZiAoISF0aGlzLnByb2ZpbGUudXNlciAmJiAhIXRoaXMucHJvZmlsZS51c2VyLmlkYW0pIHtcbiAgICAgICAgY29uc3QgdXBkYXRlUm9sZSA9IHRoaXMucHJvZmlsZS51c2VyLmlkYW0ucm9sZXMuZmluZChyb2xlID0+IHRoaXMuaGFzVXBkYXRlQWNjZXNzKHJvbGUpKTtcbiAgICAgICAgcmV0dXJuICF1cGRhdGVSb2xlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaGFzVXBkYXRlQWNjZXNzKHJvbGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY2FzZUZpZWxkLmFjbHMuZmluZChhY2wgPT4gYWNsLnJvbGUgPT09IHJvbGUgJiYgYWNsLnVwZGF0ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNOb3RBdXRob3Jpc2VkVG9EZWxldGUoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2hvdWxkIGJlIGFibGUgdG8gZGVsZXRlIGlmIGNyZWF0aW5nIGEgY2FzZSBldmVuIGlmIFwiRFwiIGlzIGFic2VudCwgaGVuY2U6XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldENvbnRyb2xJZEF0KGluZGV4KTtcbiAgICByZXR1cm4gISFpZCAmJiAhdGhpcy5nZXRDb2xsZWN0aW9uUGVybWlzc2lvbih0aGlzLmNhc2VGaWVsZCwgJ2FsbG93RGVsZXRlJyk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk1vZGFsKGk6IG51bWJlcikge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuYXV0b0ZvY3VzID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuYXJpYUxhYmVsID0gJ0xhYmVsJztcbiAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gJzIyMHB4JztcbiAgICBkaWFsb2dDb25maWcud2lkdGggPSAnNTUwcHgnO1xuICAgIGRpYWxvZ0NvbmZpZy5wYW5lbENsYXNzID0gJ2RpYWxvZyc7XG5cbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBkaWFsb2dDb25maWcucG9zaXRpb24gPSB7XG4gICAgICB0b3A6IGAke3dpbmRvdy5pbm5lckhlaWdodCAvIDIgLSAxMTB9cHhgLCBsZWZ0OiBgJHt3aW5kb3cuaW5uZXJXaWR0aCAvIDIgLSAyNzV9cHhgXG4gICAgfTtcblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUmVtb3ZlRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnUmVtb3ZlJykge1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW0oaSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllZCBmdWxsIHNvbHV0aW9uIGFzIHBhcnQgb2YgRVVJLTM1MDVcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udHJvbElkQXQoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG5cbiAgICAvLyB0aGlzLmZvcm1BcnJheSBjb250YWlucyBbIEZvcm1Hcm91cCggaWQ6IEZvcm1Db250cm9sLCB2YWx1ZTogRm9ybUdyb3VwICksIC4uLiBdLlxuICAgIC8vIEhlcmUsIHdlIG5lZWQgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgaWQgRm9ybUNvbnRyb2wuXG4gICAgY29uc3QgZ3JvdXA6IEZvcm1Hcm91cCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgY29uc3QgY29udHJvbDogRm9ybUNvbnRyb2wgPSBncm91cC5nZXQoJ2lkJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgcmV0dXJuIGNvbnRyb2wgPyBjb250cm9sLnZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbGxlY3Rpb25PZlNpbXBsZVR5cGUoY2FzZUZpZWxkOiBDYXNlRmllbGQpIHtcbiAgICBjb25zdCBub3RTaW1wbGUgPSBbJ0NvbGxlY3Rpb24nLCAnQ29tcGxleCddO1xuICAgIHJldHVybiBub3RTaW1wbGUuaW5kZXhPZihjYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSkgPCAwO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtpZF09XCJpZCgpXCI+XG5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIGNvbGxlY3Rpb24taW5kaWNhdG9yXCI+XG5cbiAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXNwYWNpbmdcIj5cbiAgICAgIHt7KGNhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwpIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgPC9oMj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIHdyaXRlLWNvbGxlY3Rpb24tYWRkLWl0ZW1fX3RvcFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkSXRlbSh0cnVlKVwiIFtkaXNhYmxlZF09XCJpc05vdEF1dGhvcmlzZWRUb0NyZWF0ZSgpIHx8IGlzU2VhcmNoRmlsdGVyKClcIj57eydBZGQgbmV3JyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zcGFjaW5nXCIgKm5nSWY9XCJjYXNlRmllbGQuaGludF90ZXh0IHx8IGZvcm1BcnJheS5lcnJvcnNcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dFwiIGNsYXNzPVwiZm9ybS1oaW50XCI+e3tjYXNlRmllbGQuaGludF90ZXh0IHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJmb3JtQXJyYXkuZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3soZm9ybUFycmF5LmVycm9ycyB8IGNjZEZpcnN0RXJyb3I6Y2FzZUZpZWxkLmxhYmVsKSB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDwvaDI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtoaWRkZW5dPVwiY2FzZUZpZWxkLmhpZGRlblwiICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGhcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2xsSXRlbXM7IGxldCBpID0gaW5kZXhcIiAjY29sbGVjdGlvbkl0ZW0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0LWxlZnRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIml0ZW0ucHJlZml4ICsgaVwiPjxoMyBjbGFzcz1cImhlYWRpbmctaDNcIj57e2l0ZW1MYWJlbChpKSB8IHJweFRyYW5zbGF0ZX19PC9oMz48L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1yaWdodFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuTW9kYWwoaSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNOb3RBdXRob3Jpc2VkVG9EZWxldGUoaSlcIlxuICAgICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJSZW1vdmUge3sgaXRlbUxhYmVsKGkpIH19XCI+e3snUmVtb3ZlJyB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cIml0ZW0uY2FzZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudF09XCJpdGVtLmNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cIml0ZW0ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uY2FzZUZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5TZWFyY2hCbG9ja109XCJpc0luU2VhcmNoQmxvY2tcIj5cbiAgICAgICAgPC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX19ib3R0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvQ3JlYXRlKCkgfHwgaXNTZWFyY2hGaWx0ZXIoKVwiICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGhcIj57eydBZGQgbmV3JyB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuXG48L2Rpdj4iXX0=
|