cmat 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/components/custom-formly/public-api.d.ts +1 -0
- package/components/custom-formly/types/button/button.component.d.ts +19 -3
- package/components/custom-formly/types/cascade/cascade.component.d.ts +3 -2
- package/components/custom-formly/types/checklist/checklist.component.d.ts +3 -2
- package/components/custom-formly/types/chips/chips.component.d.ts +3 -2
- package/components/custom-formly/types/date-range/date-range.component.d.ts +3 -2
- package/components/custom-formly/types/datepicker/datepicker.component.d.ts +3 -2
- package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +3 -2
- package/components/custom-formly/types/number/number.component.d.ts +3 -2
- package/components/custom-formly/types/quill/quill.component.d.ts +3 -2
- package/components/custom-formly/types/radio/radio.component.d.ts +3 -2
- package/components/custom-formly/types/rating/rating.component.d.ts +3 -2
- package/components/custom-formly/types/repeat/repeat.component.d.ts +3 -2
- package/components/custom-formly/types/select/select.component.d.ts +3 -2
- package/components/custom-formly/types/select-tree/select-tree.component.d.ts +2 -2
- package/components/custom-formly/types/stepper/stepper.type.d.ts +2 -2
- package/components/custom-formly/types/table/table.component.d.ts +11 -5
- package/components/custom-formly/types/tags/tags.component.d.ts +3 -2
- package/components/custom-formly/types/upload/upload.component.d.ts +3 -2
- package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +25 -0
- package/components/material-datetimepicker/datetimepicker.d.ts +4 -3
- package/components/upload/upload-queue/upload-queue.component.d.ts +3 -2
- package/esm2022/animations/dropdown.mjs +1 -1
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +3 -3
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
- package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +5 -5
- package/esm2022/components/card/card.component.mjs +5 -5
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -5
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +6 -6
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -5
- package/esm2022/components/cascade/options.interface.mjs +1 -1
- package/esm2022/components/chip-input/chip-input.component.mjs +6 -7
- package/esm2022/components/custom-formly/extension/addons.extension.mjs +2 -2
- package/esm2022/components/custom-formly/public-api.mjs +2 -1
- package/esm2022/components/custom-formly/types/button/button.component.mjs +57 -15
- package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +5 -5
- package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/number/number.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/quill/quill.component.mjs +6 -6
- package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/rating/rating.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/select/select.component.mjs +16 -15
- package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +1 -1
- package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/table/table.component.mjs +28 -14
- package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/tags/tags.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
- package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +47 -0
- package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
- package/esm2022/components/date-range/date-range.component.mjs +6 -6
- package/esm2022/components/drawer/drawer.component.mjs +3 -3
- package/esm2022/components/drawer/drawer.service.mjs +3 -3
- package/esm2022/components/fullscreen/fullscreen.component.mjs +3 -3
- package/esm2022/components/highlight/highlight.component.mjs +3 -3
- package/esm2022/components/highlight/highlight.service.mjs +3 -3
- package/esm2022/components/json-editor/json-editor.component.mjs +6 -6
- package/esm2022/components/masonry/masonry.component.mjs +3 -3
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -5
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -5
- package/esm2022/components/material-datetimepicker/calendar.mjs +5 -5
- package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -8
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +14 -11
- package/esm2022/components/material-datetimepicker/month-view.mjs +5 -5
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +3 -3
- package/esm2022/components/material-datetimepicker/time.mjs +8 -8
- package/esm2022/components/material-datetimepicker/year-view.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +5 -5
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +4 -4
- package/esm2022/components/navigation/navigation.service.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/vertical.component.mjs +4 -4
- package/esm2022/components/pagination/pagination.component.mjs +5 -5
- package/esm2022/components/pagination/pagination.directive.mjs +3 -3
- package/esm2022/components/pagination/pagination.pipe.mjs +3 -3
- package/esm2022/components/pagination/pagination.service.mjs +3 -3
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +5 -5
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +3 -3
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +5 -5
- package/esm2022/components/popover/popover-trigger.mjs +3 -3
- package/esm2022/components/popover/popover.component.mjs +3 -3
- package/esm2022/components/popover/popover.target.mjs +3 -3
- package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
- package/esm2022/components/rating/rating.component.mjs +5 -5
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search-clear.directive.mjs +4 -4
- package/esm2022/components/select-search/select-search.component.mjs +6 -6
- package/esm2022/components/select-tree/select-tree.component.mjs +6 -6
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +11 -11
- package/esm2022/components/timeline/timeline.component.mjs +4 -4
- package/esm2022/components/toast/toast-modal.component.mjs +5 -5
- package/esm2022/components/toast/toast.component.mjs +3 -3
- package/esm2022/components/toast/toast.service.mjs +3 -3
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -5
- package/esm2022/components/transfer-picker/search/search.component.mjs +5 -5
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +5 -5
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -5
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +5 -5
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
- package/esm2022/components/upload/files.util.service.mjs +3 -3
- package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +13 -12
- package/esm2022/components/upload/upload.component.mjs +3 -3
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
- package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
- package/esm2022/directives/digit-only/digit-only.directive.mjs +10 -10
- package/esm2022/directives/digit-only/mask.directive.mjs +5 -5
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
- package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
- package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
- package/esm2022/pipes/date-format/date-format.pipe.mjs +7 -5
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
- package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
- package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
- package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
- package/esm2022/services/alert/alert.service.mjs +3 -3
- package/esm2022/services/config/config.service.mjs +3 -3
- package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
- package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +5 -5
- package/esm2022/services/data/data.service.mjs +3 -3
- package/esm2022/services/loading/loading.interceptor.mjs +5 -5
- package/esm2022/services/loading/loading.service.mjs +3 -3
- package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
- package/esm2022/services/media-watcher/media-watcher.service.mjs +3 -3
- package/esm2022/services/platform/platform.service.mjs +3 -3
- package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
- package/esm2022/services/title/title.service.mjs +3 -3
- package/esm2022/services/translation/translation.service.mjs +5 -5
- package/esm2022/services/utils/utils.service.mjs +8 -7
- package/fesm2022/cmat-animations.mjs.map +1 -1
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +4 -4
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +13 -13
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +5 -6
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +235 -142
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +5 -5
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +6 -6
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-json-editor.mjs +5 -5
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +55 -52
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +42 -42
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +13 -13
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +11 -11
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +9 -9
- package/fesm2022/cmat-components-progress-bar.mjs +4 -4
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +4 -4
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +11 -11
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +5 -5
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +13 -13
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +10 -10
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +23 -23
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +18 -17
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-digit-only.mjs +13 -13
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs +6 -4
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-confirmation.mjs +7 -7
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-loading.mjs +7 -7
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs +4 -4
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +7 -6
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/icons/material-icons/material-solid.svg +3585 -3585
- package/package.json +49 -49
- package/pipes/date-format/date-format.pipe.d.ts +1 -1
- package/styles/overrides/angular-material.scss +6 -0
|
@@ -12,14 +12,14 @@ export class CmatConfirmationDialogComponent {
|
|
|
12
12
|
this.data = data;
|
|
13
13
|
this.matDialogRef = matDialogRef;
|
|
14
14
|
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
16
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatConfirmationDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatConfirmationDialogComponent, isStandalone: true, selector: "cmat-confirmation-dialog", ngImport: i0, template: "<div class=\"relative flex flex-col w-full h-full\">\r\n\r\n <!-- Dismiss button -->\r\n @if (data.dismissible) {\r\n <div class=\"absolute top-0 right-0 pt-4 pr-4\">\r\n <button type=\"button\" mat-icon-button [matDialogClose]=\"undefined\">\r\n <mat-icon class=\"text-secondary\" [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Content -->\r\n <div class=\"flex flex-col sm:flex-row items-center sm:items-start p-8 pb-6 sm:pb-8\">\r\n\r\n <!-- Icon -->\r\n @if (data.icon?.show) {\r\n <div class=\"flex flex-0 items-center justify-center w-10 h-10 sm:mr-4 rounded-full\" [ngClass]=\"{'text-primary-600 bg-primary-100 dark:text-primary-50 dark:bg-primary-600': data.icon?.color === 'primary',\r\n 'text-accent-600 bg-accent-100 dark:text-accent-50 dark:bg-accent-600': data.icon?.color === 'accent',\r\n 'text-warn-600 bg-warn-100 dark:text-warn-50 dark:bg-warn-600': data.icon?.color === 'warn',\r\n 'text-slate-600 bg-slate-100 dark:text-slate-50 dark:bg-slate-600': data.icon?.color === 'basic',\r\n 'text-blue-600 bg-blue-100 dark:text-blue-50 dark:bg-blue-600': data.icon?.color === 'info',\r\n 'text-emerald-500 bg-emerald-100 dark:text-emerald-50 dark:bg-emerald-500': data.icon?.color === 'success',\r\n 'text-amber-500 bg-amber-100 dark:text-amber-50 dark:bg-amber-500': data.icon?.color === 'warning',\r\n 'text-red-600 bg-red-100 dark:text-red-50 dark:bg-red-600': data.icon?.color === 'error'\r\n }\">\r\n @if (data.icon?.name) {\r\n <mat-icon class=\"text-current\" [svgIcon]=\"data.icon?.name||''\"></mat-icon>\r\n }\r\n </div>\r\n }\r\n\r\n @if (data.title || data.message) {\r\n <div\r\n class=\"flex flex-col items-center sm:items-start mt-4 sm:mt-0 sm:pr-8 space-y-1 text-center sm:text-left\">\r\n <!-- Title -->\r\n @if (data.title) {\r\n <div class=\"text-xl leading-6 font-medium\" [innerHTML]=\"data.title\"></div>\r\n }\r\n <!-- Message -->\r\n @if (data.message) {\r\n <div class=\"text-secondary\" [innerHTML]=\"data.message\"></div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Actions -->\r\n @if (data.actions?.confirm?.show || data.actions?.cancel?.show) {\r\n <div\r\n class=\"flex items-center justify-center sm:justify-end px-6 py-4 space-x-3 bg-slate-50 dark:bg-black dark:bg-opacity-10\">\r\n <!-- Confirm -->\r\n @if (data.actions?.confirm?.show) {\r\n <button type=\"button\" mat-flat-button [color]=\"data.actions?.confirm?.color\"\r\n [matDialogClose]=\"'confirmed'\">\r\n {{data.actions?.confirm?.label}}\r\n </button>\r\n }\r\n <!-- Cancel -->\r\n @if (data.actions?.cancel?.show) {\r\n <button type=\"button\" mat-stroked-button [matDialogClose]=\"'cancelled'\">\r\n {{data.actions?.cancel?.label}}\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n</div>", styles: [".cmat-confirmation-dialog-panel .mat-mdc-dialog-container{padding:0!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatConfirmationDialogComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
|
-
args: [{ selector: 'cmat-confirmation-dialog', encapsulation: ViewEncapsulation.None, standalone: true, imports: [MatButtonModule, MatDialogModule, MatIconModule, NgClass], template: "<div class=\"relative flex flex-col w-full h-full\">\n\n <!-- Dismiss button -->\n @if (data.dismissible) {\n <div class=\"absolute top-0 right-0 pt-4 pr-4\">\n <button type=\"button\" mat-icon-button [matDialogClose]=\"undefined\">\n <mat-icon class=\"text-secondary\" [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\n </button>\n </div>\n }\n\n <!-- Content -->\n <div class=\"flex flex-col sm:flex-row items-center sm:items-start p-8 pb-6 sm:pb-8\">\n\n <!-- Icon -->\n @if (data.icon?.show) {\n <div class=\"flex flex-0 items-center justify-center w-10 h-10 sm:mr-4 rounded-full\" [ngClass]=\"{'text-primary-600 bg-primary-100 dark:text-primary-50 dark:bg-primary-600': data.icon?.color === 'primary',\n 'text-accent-600 bg-accent-100 dark:text-accent-50 dark:bg-accent-600': data.icon?.color === 'accent',\n 'text-warn-600 bg-warn-100 dark:text-warn-50 dark:bg-warn-600': data.icon?.color === 'warn',\n 'text-slate-600 bg-slate-100 dark:text-slate-50 dark:bg-slate-600': data.icon?.color === 'basic',\n 'text-blue-600 bg-blue-100 dark:text-blue-50 dark:bg-blue-600': data.icon?.color === 'info',\n 'text-emerald-500 bg-emerald-100 dark:text-emerald-50 dark:bg-emerald-500': data.icon?.color === 'success',\n 'text-amber-500 bg-amber-100 dark:text-amber-50 dark:bg-amber-500': data.icon?.color === 'warning',\n 'text-red-600 bg-red-100 dark:text-red-50 dark:bg-red-600': data.icon?.color === 'error'\n }\">\n @if (data.icon?.name) {\n <mat-icon class=\"text-current\" [svgIcon]=\"data.icon?.name||''\"></mat-icon>\n }\n </div>\n }\n\n @if (data.title || data.message) {\n <div\n class=\"flex flex-col items-center sm:items-start mt-4 sm:mt-0 sm:pr-8 space-y-1 text-center sm:text-left\">\n <!-- Title -->\n @if (data.title) {\n <div class=\"text-xl leading-6 font-medium\" [innerHTML]=\"data.title\"></div>\n }\n <!-- Message -->\n @if (data.message) {\n <div class=\"text-secondary\" [innerHTML]=\"data.message\"></div>\n }\n </div>\n }\n\n </div>\n\n <!-- Actions -->\n @if (data.actions?.confirm?.show || data.actions?.cancel?.show) {\n <div\n class=\"flex items-center justify-center sm:justify-end px-6 py-4 space-x-3 bg-slate-50 dark:bg-black dark:bg-opacity-10\">\n <!-- Confirm -->\n @if (data.actions?.confirm?.show) {\n <button type=\"button\" mat-flat-button [color]=\"data.actions?.confirm?.color\"\n [matDialogClose]=\"'confirmed'\">\n {{data.actions?.confirm?.label}}\n </button>\n }\n <!-- Cancel -->\n @if (data.actions?.cancel?.show) {\n <button type=\"button\" mat-stroked-button [matDialogClose]=\"'cancelled'\">\n {{data.actions?.cancel?.label}}\n </button>\n }\n </div>\n }\n\n</div>", styles: [".cmat-confirmation-dialog-panel .mat-mdc-dialog-container{padding:0!important}\n"] }]
|
|
20
|
+
args: [{ selector: 'cmat-confirmation-dialog', encapsulation: ViewEncapsulation.None, standalone: true, imports: [MatButtonModule, MatDialogModule, MatIconModule, NgClass], template: "<div class=\"relative flex flex-col w-full h-full\">\r\n\r\n <!-- Dismiss button -->\r\n @if (data.dismissible) {\r\n <div class=\"absolute top-0 right-0 pt-4 pr-4\">\r\n <button type=\"button\" mat-icon-button [matDialogClose]=\"undefined\">\r\n <mat-icon class=\"text-secondary\" [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Content -->\r\n <div class=\"flex flex-col sm:flex-row items-center sm:items-start p-8 pb-6 sm:pb-8\">\r\n\r\n <!-- Icon -->\r\n @if (data.icon?.show) {\r\n <div class=\"flex flex-0 items-center justify-center w-10 h-10 sm:mr-4 rounded-full\" [ngClass]=\"{'text-primary-600 bg-primary-100 dark:text-primary-50 dark:bg-primary-600': data.icon?.color === 'primary',\r\n 'text-accent-600 bg-accent-100 dark:text-accent-50 dark:bg-accent-600': data.icon?.color === 'accent',\r\n 'text-warn-600 bg-warn-100 dark:text-warn-50 dark:bg-warn-600': data.icon?.color === 'warn',\r\n 'text-slate-600 bg-slate-100 dark:text-slate-50 dark:bg-slate-600': data.icon?.color === 'basic',\r\n 'text-blue-600 bg-blue-100 dark:text-blue-50 dark:bg-blue-600': data.icon?.color === 'info',\r\n 'text-emerald-500 bg-emerald-100 dark:text-emerald-50 dark:bg-emerald-500': data.icon?.color === 'success',\r\n 'text-amber-500 bg-amber-100 dark:text-amber-50 dark:bg-amber-500': data.icon?.color === 'warning',\r\n 'text-red-600 bg-red-100 dark:text-red-50 dark:bg-red-600': data.icon?.color === 'error'\r\n }\">\r\n @if (data.icon?.name) {\r\n <mat-icon class=\"text-current\" [svgIcon]=\"data.icon?.name||''\"></mat-icon>\r\n }\r\n </div>\r\n }\r\n\r\n @if (data.title || data.message) {\r\n <div\r\n class=\"flex flex-col items-center sm:items-start mt-4 sm:mt-0 sm:pr-8 space-y-1 text-center sm:text-left\">\r\n <!-- Title -->\r\n @if (data.title) {\r\n <div class=\"text-xl leading-6 font-medium\" [innerHTML]=\"data.title\"></div>\r\n }\r\n <!-- Message -->\r\n @if (data.message) {\r\n <div class=\"text-secondary\" [innerHTML]=\"data.message\"></div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <!-- Actions -->\r\n @if (data.actions?.confirm?.show || data.actions?.cancel?.show) {\r\n <div\r\n class=\"flex items-center justify-center sm:justify-end px-6 py-4 space-x-3 bg-slate-50 dark:bg-black dark:bg-opacity-10\">\r\n <!-- Confirm -->\r\n @if (data.actions?.confirm?.show) {\r\n <button type=\"button\" mat-flat-button [color]=\"data.actions?.confirm?.color\"\r\n [matDialogClose]=\"'confirmed'\">\r\n {{data.actions?.confirm?.label}}\r\n </button>\r\n }\r\n <!-- Cancel -->\r\n @if (data.actions?.cancel?.show) {\r\n <button type=\"button\" mat-stroked-button [matDialogClose]=\"'cancelled'\">\r\n {{data.actions?.cancel?.label}}\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n</div>", styles: [".cmat-confirmation-dialog-panel .mat-mdc-dialog-container{padding:0!important}\n"] }]
|
|
21
21
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
22
22
|
type: Inject,
|
|
23
23
|
args: [MAT_DIALOG_DATA]
|
|
24
24
|
}] }, { type: i1.MatDialogRef }] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvc2VydmljZXMvY29uZmlybWF0aW9uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9zZXJ2aWNlcy9jb25maXJtYXRpb24vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFvQnZELE1BQU0sT0FBTywrQkFBK0I7SUFFeEMsWUFDb0MsSUFBNEIsRUFDckQsWUFBMkQ7UUFEbEMsU0FBSSxHQUFKLElBQUksQ0FBd0I7UUFDckQsaUJBQVksR0FBWixZQUFZLENBQStDO0lBRXRFLENBQUM7OEdBTlEsK0JBQStCLGtCQUc1QixlQUFlO2tHQUhsQiwrQkFBK0Isb0ZDeEI1Qyx3cEdBbUVNLHlJRDdDUSxlQUFlLHdVQUFFLGVBQWUsb09BQUUsYUFBYSxvTEFBRSxPQUFPOzsyRkFFekQsK0JBQStCO2tCQWpCM0MsU0FBUzsrQkFDSSwwQkFBMEIsaUJBWXJCLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDOzswQkFLOUQsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBDbWF0Q29uZmlybWF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlybWF0aW9uLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWNvbmZpcm1hdGlvbi1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgICAvKiBsYW5ndWFnZT1TQ1NTICovXHJcbiAgICAgICAgYFxyXG4gICAgICAgICAgICAuY21hdC1jb25maXJtYXRpb24tZGlhbG9nLXBhbmVsIHtcclxuICAgICAgICAgICAgICAgIC5tYXQtbWRjLWRpYWxvZy1jb250YWluZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIGBcclxuICAgIF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE1hdERpYWxvZ01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTmdDbGFzc11cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogQ21hdENvbmZpcm1hdGlvbkNvbmZpZyxcclxuICAgICAgICBwdWJsaWMgbWF0RGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q21hdENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudD5cclxuICAgICkge1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtY29sIHctZnVsbCBoLWZ1bGxcIj5cclxuXHJcbiAgPCEtLSBEaXNtaXNzIGJ1dHRvbiAtLT5cclxuICBAaWYgKGRhdGEuZGlzbWlzc2libGUpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIHB0LTQgcHItNFwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdERpYWxvZ0Nsb3NlXT1cInVuZGVmaW5lZFwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOngtbWFyaydcIj48L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSBDb250ZW50IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBzbTppdGVtcy1zdGFydCBwLTggcGItNiBzbTpwYi04XCI+XHJcblxyXG4gICAgPCEtLSBJY29uIC0tPlxyXG4gICAgQGlmIChkYXRhLmljb24/LnNob3cpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LTEwIGgtMTAgc206bXItNCByb3VuZGVkLWZ1bGxcIiBbbmdDbGFzc109XCJ7J3RleHQtcHJpbWFyeS02MDAgYmctcHJpbWFyeS0xMDAgZGFyazp0ZXh0LXByaW1hcnktNTAgZGFyazpiZy1wcmltYXJ5LTYwMCc6IGRhdGEuaWNvbj8uY29sb3IgPT09ICdwcmltYXJ5JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWFjY2VudC02MDAgYmctYWNjZW50LTEwMCBkYXJrOnRleHQtYWNjZW50LTUwIGRhcms6YmctYWNjZW50LTYwMCc6IGRhdGEuaWNvbj8uY29sb3IgPT09ICdhY2NlbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtd2Fybi02MDAgYmctd2Fybi0xMDAgZGFyazp0ZXh0LXdhcm4tNTAgZGFyazpiZy13YXJuLTYwMCc6IGRhdGEuaWNvbj8uY29sb3IgPT09ICd3YXJuJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXNsYXRlLTYwMCBiZy1zbGF0ZS0xMDAgZGFyazp0ZXh0LXNsYXRlLTUwIGRhcms6Ymctc2xhdGUtNjAwJzogZGF0YS5pY29uPy5jb2xvciA9PT0gJ2Jhc2ljJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJsdWUtNjAwIGJnLWJsdWUtMTAwIGRhcms6dGV4dC1ibHVlLTUwIGRhcms6YmctYmx1ZS02MDAnOiBkYXRhLmljb24/LmNvbG9yID09PSAnaW5mbycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1lbWVyYWxkLTUwMCBiZy1lbWVyYWxkLTEwMCBkYXJrOnRleHQtZW1lcmFsZC01MCBkYXJrOmJnLWVtZXJhbGQtNTAwJzogZGF0YS5pY29uPy5jb2xvciA9PT0gJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtYW1iZXItNTAwIGJnLWFtYmVyLTEwMCBkYXJrOnRleHQtYW1iZXItNTAgZGFyazpiZy1hbWJlci01MDAnOiBkYXRhLmljb24/LmNvbG9yID09PSAnd2FybmluZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yZWQtNjAwIGJnLXJlZC0xMDAgZGFyazp0ZXh0LXJlZC01MCBkYXJrOmJnLXJlZC02MDAnOiBkYXRhLmljb24/LmNvbG9yID09PSAnZXJyb3InXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgQGlmIChkYXRhLmljb24/Lm5hbWUpIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtY3VycmVudFwiIFtzdmdJY29uXT1cImRhdGEuaWNvbj8ubmFtZXx8JydcIj48L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChkYXRhLnRpdGxlIHx8IGRhdGEubWVzc2FnZSkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBzbTppdGVtcy1zdGFydCBtdC00IHNtOm10LTAgc206cHItOCBzcGFjZS15LTEgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0XCI+XHJcbiAgICAgICAgPCEtLSBUaXRsZSAtLT5cclxuICAgICAgICBAaWYgKGRhdGEudGl0bGUpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsIGxlYWRpbmctNiBmb250LW1lZGl1bVwiIFtpbm5lckhUTUxdPVwiZGF0YS50aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8IS0tIE1lc3NhZ2UgLS0+XHJcbiAgICAgICAgQGlmIChkYXRhLm1lc3NhZ2UpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiIFtpbm5lckhUTUxdPVwiZGF0YS5tZXNzYWdlXCI+PC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQWN0aW9ucyAtLT5cclxuICBAaWYgKGRhdGEuYWN0aW9ucz8uY29uZmlybT8uc2hvdyB8fCBkYXRhLmFjdGlvbnM/LmNhbmNlbD8uc2hvdykge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNtOmp1c3RpZnktZW5kIHB4LTYgcHktNCBzcGFjZS14LTMgYmctc2xhdGUtNTAgZGFyazpiZy1ibGFjayBkYXJrOmJnLW9wYWNpdHktMTBcIj5cclxuICAgICAgPCEtLSBDb25maXJtIC0tPlxyXG4gICAgICBAaWYgKGRhdGEuYWN0aW9ucz8uY29uZmlybT8uc2hvdykge1xyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiZGF0YS5hY3Rpb25zPy5jb25maXJtPy5jb2xvclwiXHJcbiAgICAgICAgICBbbWF0RGlhbG9nQ2xvc2VdPVwiJ2NvbmZpcm1lZCdcIj5cclxuICAgICAgICAgIHt7ZGF0YS5hY3Rpb25zPy5jb25maXJtPy5sYWJlbH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgPCEtLSBDYW5jZWwgLS0+XHJcbiAgICAgIEBpZiAoZGF0YS5hY3Rpb25zPy5jYW5jZWw/LnNob3cpIHtcclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdERpYWxvZ0Nsb3NlXT1cIidjYW5jZWxsZWQnXCI+XHJcbiAgICAgICAgICB7e2RhdGEuYWN0aW9ucz8uY2FuY2VsPy5sYWJlbH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbjwvZGl2PiJdfQ==
|
|
@@ -157,10 +157,10 @@ export class CmatDataService {
|
|
|
157
157
|
.pipe(tap((res) => res), catchError((err) => CmatUtilsService.handleError(err)));
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
161
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDataService, deps: [{ token: i1.HttpClient }, { token: i2.CmatUrlStateConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDataService, providedIn: 'root' }); }
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDataService, decorators: [{
|
|
164
164
|
type: Injectable,
|
|
165
165
|
args: [{
|
|
166
166
|
providedIn: 'root'
|
|
@@ -11,7 +11,7 @@ export class CmatLoadingInterceptor {
|
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
intercept(req, next) {
|
|
14
|
-
if (!this.handleRequestsAutomatically || req.url.
|
|
14
|
+
if (!this.handleRequestsAutomatically || req.url.includes('file/download/')) {
|
|
15
15
|
return next.handle(req);
|
|
16
16
|
}
|
|
17
17
|
this._cmatLoadingService.setLoadingStatus(true, req.url);
|
|
@@ -20,10 +20,10 @@ export class CmatLoadingInterceptor {
|
|
|
20
20
|
this._cmatLoadingService.setLoadingStatus(false, req.url);
|
|
21
21
|
}));
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
24
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingInterceptor, deps: [{ token: i1.CmatLoadingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingInterceptor }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingInterceptor, decorators: [{
|
|
27
27
|
type: Injectable
|
|
28
28
|
}], ctorParameters: () => [{ type: i1.CmatLoadingService }] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvc2VydmljZXMvbG9hZGluZy9sb2FkaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBSTVDLE1BQU0sT0FBTyxzQkFBc0I7SUFHL0IsWUFDWSxtQkFBdUM7UUFBdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUUvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSzthQUN6QixTQUFTLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDeEIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLDhFQUE4RTtZQUM5RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQzs4R0F4QlEsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENtYXRMb2FkaW5nU2VydmljZSB9IGZyb20gJy4vbG9hZGluZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENtYXRMb2FkaW5nSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gICAgaGFuZGxlUmVxdWVzdHNBdXRvbWF0aWNhbGx5OiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2NtYXRMb2FkaW5nU2VydmljZTogQ21hdExvYWRpbmdTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLl9jbWF0TG9hZGluZ1NlcnZpY2UuYXV0byRcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVxdWVzdHNBdXRvbWF0aWNhbGx5ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5oYW5kbGVSZXF1ZXN0c0F1dG9tYXRpY2FsbHkgfHwgcmVxLnVybC5pbmNsdWRlcygnZmlsZS9kb3dubG9hZC8nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2NtYXRMb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nU3RhdHVzKHRydWUsIHJlcS51cmwpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxyXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHN0YXR1cyB0byBmYWxzZSBpZiB0aGVyZSBhcmUgYW55IGVycm9ycyBvciB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWRcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NtYXRMb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nU3RhdHVzKGZhbHNlLCByZXEudXJsKTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -60,10 +60,10 @@ export class CmatLoadingService {
|
|
|
60
60
|
this._show$.next(false);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
64
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
64
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingService, providedIn: 'root' }); }
|
|
65
65
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLoadingService, decorators: [{
|
|
67
67
|
type: Injectable,
|
|
68
68
|
args: [{
|
|
69
69
|
providedIn: 'root'
|
|
@@ -10,10 +10,10 @@ export class CmatLocalStorageService {
|
|
|
10
10
|
removeItem(key) {
|
|
11
11
|
localStorage.removeItem(key);
|
|
12
12
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
14
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLocalStorageService, providedIn: 'root' }); }
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatLocalStorageService, decorators: [{
|
|
17
17
|
type: Injectable,
|
|
18
18
|
args: [{
|
|
19
19
|
providedIn: 'root'
|
|
@@ -43,10 +43,10 @@ export class CmatMediaWatcherService {
|
|
|
43
43
|
onMediaQueryChange$(query) {
|
|
44
44
|
return this._breakpointObserver.observe(query);
|
|
45
45
|
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMediaWatcherService, deps: [{ token: i1.BreakpointObserver }, { token: i2.CmatConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMediaWatcherService, providedIn: 'root' }); }
|
|
48
48
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatMediaWatcherService, decorators: [{
|
|
50
50
|
type: Injectable,
|
|
51
51
|
args: [{
|
|
52
52
|
providedIn: 'root'
|
|
@@ -34,10 +34,10 @@ export class CmatPlatformService {
|
|
|
34
34
|
this.osName = 'os-android';
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatPlatformService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatPlatformService, providedIn: 'root' }); }
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatPlatformService, decorators: [{
|
|
41
41
|
type: Injectable,
|
|
42
42
|
args: [{
|
|
43
43
|
providedIn: 'root'
|
|
@@ -27,10 +27,10 @@ export class CmatSplashScreenService {
|
|
|
27
27
|
hide() {
|
|
28
28
|
this._document.body.classList.add('cmat-splash-screen-hidden');
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatSplashScreenService, deps: [{ token: DOCUMENT }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatSplashScreenService, providedIn: 'root' }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatSplashScreenService, decorators: [{
|
|
34
34
|
type: Injectable,
|
|
35
35
|
args: [{
|
|
36
36
|
providedIn: 'root'
|
|
@@ -34,10 +34,10 @@ export class CmatTitleService {
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTitleService, deps: [{ token: i1.Title }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTitleService, providedIn: 'root' }); }
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTitleService, decorators: [{
|
|
41
41
|
type: Injectable,
|
|
42
42
|
args: [{
|
|
43
43
|
providedIn: 'root'
|
|
@@ -26,7 +26,7 @@ export class CmatTranslationService {
|
|
|
26
26
|
}
|
|
27
27
|
useBrowserLanguage() {
|
|
28
28
|
const browserLang = this.getBrowserLanguage();
|
|
29
|
-
if (browserLang &&
|
|
29
|
+
if (browserLang && (/en|zh/.exec(browserLang))) {
|
|
30
30
|
this.changeLanguage(browserLang);
|
|
31
31
|
return browserLang;
|
|
32
32
|
}
|
|
@@ -50,13 +50,13 @@ export class CmatTranslationService {
|
|
|
50
50
|
getTranslationAsync(key, interpolateParams) {
|
|
51
51
|
return this._translate.get(key, interpolateParams);
|
|
52
52
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
54
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTranslationService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
54
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTranslationService, providedIn: 'root' }); }
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTranslationService, decorators: [{
|
|
57
57
|
type: Injectable,
|
|
58
58
|
args: [{
|
|
59
59
|
providedIn: 'root'
|
|
60
60
|
}]
|
|
61
61
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBTS9CLFlBQW9CLFVBQTRCO1FBQTVCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBSi9CLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVqQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFjO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUdELGtCQUFrQjtRQUNkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTlDLElBQUksV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqQyxPQUFPLFdBQVcsQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFtQixJQUFJO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxjQUFjLENBQUMsR0FBc0IsRUFBRSxpQkFBMEI7UUFDN0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsR0FBc0IsRUFBRSxpQkFBMEI7UUFDbEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQWhFUSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzsyRkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFRyYW5zbGF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdExhbmd1YWdlID0gJ3poJztcclxuXHJcbiAgICBwcml2YXRlIF9vbkxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRMYW5ndWFnZSh0aGlzLl9kZWZhdWx0TGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYW5ndWFnZUNoYW5nZWQkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uTGFuZ3VhZ2VDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZExhbmd1YWdlcyhsYW5nOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5hZGRMYW5ncyhsYW5nKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZWZhdWx0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHVzZUJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMuZ2V0QnJvd3Nlckxhbmd1YWdlKCk7XHJcblxyXG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiAoL2VufHpoLy5leGVjKGJyb3dzZXJMYW5nKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShicm93c2VyTGFuZyk7XHJcbiAgICAgICAgICAgIHJldHVybiBicm93c2VyTGFuZztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMYW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcgPSAnemgnKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlKSB7XHJcbiAgICAgICAgICAgIGxhbmd1YWdlID0gdGhpcy5fdHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxhbmd1YWdlICE9PSB0aGlzLl90cmFuc2xhdGUuY3VycmVudExhbmcpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uTGFuZ3VhZ2VDaGFuZ2VkLm5leHQobGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZyB8IHN0cmluZ1tdLCBpbnRlcnBvbGF0ZVBhcmFtcz86IG9iamVjdCk6ICBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChrZXksIGludGVycG9sYXRlUGFyYW1zKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0VHJhbnNsYXRpb25Bc3luYyhrZXk6IHN0cmluZyB8IHN0cmluZ1tdLCBpbnRlcnBvbGF0ZVBhcmFtcz86IG9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5nZXQoa2V5LCBpbnRlcnBvbGF0ZVBhcmFtcyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -132,13 +132,13 @@ export class CmatUtilsService {
|
|
|
132
132
|
const httpMessages = this.getHttpResponseMessage(data);
|
|
133
133
|
for (const message of httpMessages) {
|
|
134
134
|
const fullMessage = CmatUtilsService.splitInTwo(message, this.captionAndMessageSeparator);
|
|
135
|
-
if (fullMessage.firstPart
|
|
135
|
+
if (fullMessage.firstPart?.toLowerCase().includes(searchString)) {
|
|
136
136
|
return includeCaptionInResult ? message : fullMessage.secondPart ?? fullMessage.firstPart;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
if (!seachInCaptionOnly) {
|
|
140
140
|
for (const message of httpMessages) {
|
|
141
|
-
if (message.toLowerCase().
|
|
141
|
+
if (message.toLowerCase().includes(searchString)) {
|
|
142
142
|
if (includeCaptionInResult) {
|
|
143
143
|
return message;
|
|
144
144
|
}
|
|
@@ -350,6 +350,7 @@ export class CmatUtilsService {
|
|
|
350
350
|
};
|
|
351
351
|
// Reject the promise on error
|
|
352
352
|
reader.onerror = (e) => {
|
|
353
|
+
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
|
353
354
|
reject(e);
|
|
354
355
|
};
|
|
355
356
|
// Read the file as the
|
|
@@ -358,7 +359,7 @@ export class CmatUtilsService {
|
|
|
358
359
|
}
|
|
359
360
|
static dataURIToBlob(dataURI) {
|
|
360
361
|
const splitDataURI = dataURI.split(',');
|
|
361
|
-
const byteString = splitDataURI[0].
|
|
362
|
+
const byteString = splitDataURI[0].includes('base64') ? atob(splitDataURI[1]) : decodeURI(splitDataURI[1]);
|
|
362
363
|
const mimeString = splitDataURI[0].split(':')[1].split(';')[0];
|
|
363
364
|
const ia = new Uint8Array(byteString.length);
|
|
364
365
|
for (let i = 0; i < byteString.length; i++) {
|
|
@@ -422,13 +423,13 @@ export class CmatUtilsService {
|
|
|
422
423
|
}
|
|
423
424
|
return id;
|
|
424
425
|
}
|
|
425
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
426
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.
|
|
426
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
427
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatUtilsService, providedIn: 'root' }); }
|
|
427
428
|
}
|
|
428
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
429
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatUtilsService, decorators: [{
|
|
429
430
|
type: Injectable,
|
|
430
431
|
args: [{
|
|
431
432
|
providedIn: 'root'
|
|
432
433
|
}]
|
|
433
434
|
}] });
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sR0FBRyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUs1QyxNQUFNLE9BQU8sZ0JBQWdCO2FBQ0YsK0JBQTBCLEdBQUcsR0FBRyxBQUFOLENBQU87YUFDakMsNEJBQXVCLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDaEMsMkJBQXNCLEdBQUcsU0FBUyxBQUFaLENBQWE7YUFDbkMsK0JBQTBCLEdBQUcsT0FBTyxBQUFWLENBQVc7YUFDckMsOEJBQXlCLEdBQUcsRUFBRSxBQUFMLENBQU07YUFDOUIsUUFBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQUFBakQsQ0FBa0QsR0FBQSxLQUFLO2FBQzFELE9BQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEFBQWpD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SSxDQUFDO0lBRUQsUUFBUSxDQUFDLGVBQXVCLEVBQUU7UUFDOUIsTUFBTSxLQUFLLEdBQUcsZ0VBQWdFLENBQUM7UUFDL0UsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRVosS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7OEdBcGZRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7MkZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlLCBIdHRwUmVzcG9uc2VCYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IEFFUyBmcm9tICdjcnlwdG8tanMvYWVzJztcclxuaW1wb3J0IENyeXB0b0pTQ29yZSBmcm9tICdjcnlwdG8tanMvY29yZSc7XHJcbmltcG9ydCBCYXNlNjQgZnJvbSAnY3J5cHRvLWpzL2VuYy1iYXNlNjQnO1xyXG5pbXBvcnQgSGV4IGZyb20gJ2NyeXB0by1qcy9lbmMtaGV4JztcclxuaW1wb3J0IFVURjggZnJvbSAnY3J5cHRvLWpzL2VuYy11dGY4JztcclxuaW1wb3J0IFBrY3M3IGZyb20gJ2NyeXB0by1qcy9wYWQtcGtjczcnO1xyXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IHRocm93RXJyb3IsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ01BVF9WRVJTSU9OIH0gZnJvbSAnY21hdC92ZXJzaW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFV0aWxzU2VydmljZSB7XHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGNhcHRpb25BbmRNZXNzYWdlU2VwYXJhdG9yID0gJzonO1xyXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBub05ldHdvcmtNZXNzYWdlQ2FwdGlvbiA9ICfml6DnvZHnu5wnO1xyXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBub05ldHdvcmtNZXNzYWdlRGV0YWlsID0gJ+aXoOazlei/nuaOpeacjeWKoeWZqCc7XHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGFjY2Vzc0RlbmllZE1lc3NhZ2VDYXB0aW9uID0gJ+aLkue7neiuv+mXriEnO1xyXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBhY2Nlc3NEZW5pZWRNZXNzYWdlRGV0YWlsID0gJyc7XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBrZXkgPSBVVEY4LnBhcnNlKCcxNDc4OTYzMjIzNjk4NzQxMTQ3ODk2MzIyMzY5ODc0MScpOy8vMzLkvY1cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGl2ID0gVVRGOC5wYXJzZSgnMTQ3ODk2MzIyMzY5ODc0MScpOy8vMTbkvY1cclxuXHJcbiAgICBnZXQgZXhhY3RNYXRjaE9wdGlvbnMoKTogSXNBY3RpdmVNYXRjaE9wdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHBhdGhzOiAnZXhhY3QnLFxyXG4gICAgICAgICAgICBmcmFnbWVudDogJ2lnbm9yZWQnLFxyXG4gICAgICAgICAgICBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6ICdleGFjdCdcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdWJzZXRNYXRjaE9wdGlvbnMoKTogSXNBY3RpdmVNYXRjaE9wdGlvbnMge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHBhdGhzOiAnc3Vic2V0JyxcclxuICAgICAgICAgICAgZnJhZ21lbnQ6ICdpZ25vcmVkJyxcclxuICAgICAgICAgICAgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcsXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0J1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXF1ZXN0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdBY2NlcHQnLCBgYXBwbGljYXRpb24vdm5kLmltYW4udiR7Q01BVF9WRVJTSU9OfStqc29uLCBhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLypgKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdBcHAtVmVyc2lvbicsIENNQVRfVkVSU0lPTik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXF1ZXN0QnlwYXNzSGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdieXBhc3MnLCAndHJ1ZScpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2VwdCcsIGBhcHBsaWNhdGlvbi92bmQuaW1hbi52JHtDTUFUX1ZFUlNJT059K2pzb24sIGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKmApXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FwcC1WZXJzaW9uJywgQ01BVF9WRVJTSU9OKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJlcXVlc3RDcnlwdG9IZWFkZXJzKHBhcmFtczogc3RyaW5nKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2VwdCcsIGBhcHBsaWNhdGlvbi92bmQuaW1hbi52JHtDTUFUX1ZFUlNJT059K2pzb24sIGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKmApXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FwcC1WZXJzaW9uJywgdGhpcy5nZXRFbmNyeXB0RGF0YSgncGFydHltYW5hZ2VBcGknICsgcGFyYW1zKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJlcXVlc3RDcnlwdG9CeXBhc3NIZWFkZXJzKHBhcmFtczogc3RyaW5nKTogSHR0cEhlYWRlcnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2VwdCcsIGBhcHBsaWNhdGlvbi92bmQuaW1hbi52JHtDTUFUX1ZFUlNJT059K2pzb24sIGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKmApXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ2J5cGFzcycsICd0cnVlJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQXBwLVZlcnNpb24nLCB0aGlzLmdldEVuY3J5cHREYXRhKCdwYXJ0eW1hbmFnZUFwaScgKyBwYXJhbXMpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RW5jcnlwdERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBzcmMgPSBVVEY4LnBhcnNlKGRhdGEpO1xyXG5cclxuICAgICAgICByZXR1cm4gQUVTLmVuY3J5cHQoc3JjLCB0aGlzLmtleSwge1xyXG4gICAgICAgICAgICBpdjogdGhpcy5pdixcclxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlNDb3JlLm1vZGUuQ0JDLFxyXG4gICAgICAgICAgICBwYWRkaW5nOiBQa2NzN1xyXG4gICAgICAgIH0pLmNpcGhlcnRleHQudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERlY3J5cHREYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkSGV4U3RyID0gSGV4LnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiBBRVMuZGVjcnlwdChCYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZEhleFN0ciksIHRoaXMua2V5LCB7XHJcbiAgICAgICAgICAgIGl2OiB0aGlzLml2LFxyXG4gICAgICAgICAgICBtb2RlOiBDcnlwdG9KU0NvcmUubW9kZS5DQkMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFBrY3M3XHJcbiAgICAgICAgfSkudG9TdHJpbmcoVVRGOCkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICAgICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAgICAgICAvLyBBIGNsaWVudC1zaWRlIG9yIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuIEhhbmRsZSBpdCBhY2NvcmRpbmdseS5cclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2xpZW50IHNpZGUgbmV0d29yayBlcnJvciBvY2N1cnJlZDonLCBlcnJvci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBUaGUgYmFja2VuZCByZXR1cm5lZCBhbiB1bnN1Y2Nlc3NmdWwgcmVzcG9uc2UgY29kZS5cclxuICAgICAgICAgICAgLy8gVGhlIHJlc3BvbnNlIGJvZHkgbWF5IGNvbnRhaW4gY2x1ZXMgYXMgdG8gd2hhdCB3ZW50IHdyb25nLFxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdCYWNrZW5kIC0gJyArXHJcbiAgICAgICAgICAgICAgICBgc3RhdHVzOiAke2Vycm9yLnN0YXR1c30sIGAgK1xyXG4gICAgICAgICAgICAgICAgYHN0YXR1c1RleHQ6ICR7ZXJyb3Iuc3RhdHVzVGV4dH0sIGAgK1xyXG4gICAgICAgICAgICAgICAgYG1lc3NhZ2U6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJldHVybiBhbiBvYnNlcnZhYmxlIHdpdGggYSB1c2VyLWZhY2luZyBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IgfHwgJ3NlcnZlciBlcnJvcicpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SHR0cFJlc3BvbnNlTWVzc2FnZShkYXRhOiBhbnkpOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2VCYXNlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrTm9OZXR3b3JrKGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZXMucHVzaChgJHt0aGlzLm5vTmV0d29ya01lc3NhZ2VDYXB0aW9ufSR7dGhpcy5jYXB0aW9uQW5kTWVzc2FnZVNlcGFyYXRvcn0gJHt0aGlzLm5vTmV0d29ya01lc3NhZ2VEZXRhaWx9YCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZU9iamVjdCA9IHRoaXMuZ2V0UmVzcG9uc2VCb2R5KGRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZU9iamVjdCAmJiAodHlwZW9mIHJlc3BvbnNlT2JqZWN0ID09PSAnb2JqZWN0JyB8fCByZXNwb25zZU9iamVjdCBpbnN0YW5jZW9mIE9iamVjdCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVzcG9uc2VPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXNwb25zZU9iamVjdCwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcy5wdXNoKGAke2tleX0ke3RoaXMuY2FwdGlvbkFuZE1lc3NhZ2VTZXBhcmF0b3J9ICR7cmVzcG9uc2VPYmplY3Rba2V5XX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2VPYmplY3Rba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcy5wdXNoKHJlc3BvbnNlT2JqZWN0W2tleV0udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2VzLmxlbmd0aCAmJiB0aGlzLmdldFJlc3BvbnNlQm9keShkYXRhKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VzLnB1c2goYCR7dGhpcy5nZXRSZXNwb25zZUJvZHkoZGF0YSkudG9TdHJpbmcoKX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlcy5wdXNoKGRhdGEudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jaGVja0FjY2Vzc0RlbmllZChkYXRhKSkge1xyXG4gICAgICAgICAgICByZXNwb25zZXMuc3BsaWNlKDAsIDAsIGAke3RoaXMuYWNjZXNzRGVuaWVkTWVzc2FnZUNhcHRpb259JHt0aGlzLmNhcHRpb25BbmRNZXNzYWdlU2VwYXJhdG9yfSAke3RoaXMuYWNjZXNzRGVuaWVkTWVzc2FnZURldGFpbH1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXNwb25zZXM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZmluZEh0dHBSZXNwb25zZU1lc3NhZ2UobWVzc2FnZVRvRmluZDogc3RyaW5nLCBkYXRhOiBhbnksIHNlYWNoSW5DYXB0aW9uT25seSA9IHRydWUsIGluY2x1ZGVDYXB0aW9uSW5SZXN1bHQgPSBmYWxzZSk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IHNlYXJjaFN0cmluZyA9IG1lc3NhZ2VUb0ZpbmQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBodHRwTWVzc2FnZXMgPSB0aGlzLmdldEh0dHBSZXNwb25zZU1lc3NhZ2UoZGF0YSk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBodHRwTWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBDbWF0VXRpbHNTZXJ2aWNlLnNwbGl0SW5Ud28obWVzc2FnZSwgdGhpcy5jYXB0aW9uQW5kTWVzc2FnZVNlcGFyYXRvcik7XHJcblxyXG4gICAgICAgICAgICBpZiAoZnVsbE1lc3NhZ2UuZmlyc3RQYXJ0ICYmIGZ1bGxNZXNzYWdlLmZpcnN0UGFydC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoU3RyaW5nKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlQ2FwdGlvbkluUmVzdWx0ID8gbWVzc2FnZSA6IGZ1bGxNZXNzYWdlLnNlY29uZFBhcnQgPz8gZnVsbE1lc3NhZ2UuZmlyc3RQYXJ0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXNlYWNoSW5DYXB0aW9uT25seSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgaHR0cE1lc3NhZ2VzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVDYXB0aW9uSW5SZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBDbWF0VXRpbHNTZXJ2aWNlLnNwbGl0SW5Ud28obWVzc2FnZSwgdGhpcy5jYXB0aW9uQW5kTWVzc2FnZVNlcGFyYXRvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxsTWVzc2FnZS5zZWNvbmRQYXJ0ID8/IGZ1bGxNZXNzYWdlLmZpcnN0UGFydDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzcG9uc2VCb2R5KHJlc3BvbnNlOiBIdHRwUmVzcG9uc2VCYXNlKTogYW55IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZXJyb3IgfHwgcmVzcG9uc2UubWVzc2FnZSB8fCByZXNwb25zZS5zdGF0dXNUZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tOb05ldHdvcmsocmVzcG9uc2U6IEh0dHBSZXNwb25zZUJhc2UpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2VCYXNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMgPT09IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja0FjY2Vzc0RlbmllZChyZXNwb25zZTogSHR0cFJlc3BvbnNlQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tOb3RGb3VuZChyZXNwb25zZTogSHR0cFJlc3BvbnNlQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tJc0xvY2FsSG9zdCh1cmw6IHN0cmluZywgYmFzZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBuZXcgVVJMKHVybCwgYmFzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCcgfHwgbG9jYXRpb24uaG9zdG5hbWUgPT09ICcxMjcuMC4wLjEnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UXVlcnlQYXJhbXNGcm9tU3RyaW5nKHBhcmFtU3RyaW5nOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPiB8IG51bGwge1xyXG4gICAgICAgIGlmICghcGFyYW1TdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+ID0ge307XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1TdHJpbmcuc3BsaXQoJyYnKSkge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IENtYXRVdGlsc1NlcnZpY2Uuc3BsaXRJblR3byhwYXJhbSwgJz0nKTtcclxuICAgICAgICAgICAgcGFyYW1zW2tleVZhbHVlLmZpcnN0UGFydF0gPSBrZXlWYWx1ZS5zZWNvbmRQYXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHNwbGl0SW5Ud28odGV4dDogc3RyaW5nLCBzZXBhcmF0b3I/OiBzdHJpbmcpOiB7IGZpcnN0UGFydDogc3RyaW5nOyBzZWNvbmRQYXJ0OiBzdHJpbmcgfCBudWxsIH0ge1xyXG4gICAgICAgIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gc2VwYXJhdG9yID8gdGV4dC5pbmRleE9mKHNlcGFyYXRvcikgOiAtMTtcclxuXHJcbiAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBmaXJzdFBhcnQ6IHRleHQsIHNlY29uZFBhcnQ6IG51bGwgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcnQxID0gdGV4dC5zdWJzdHJpbmcoMCwgc2VwYXJhdG9ySW5kZXgpLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBwYXJ0MiA9IHRleHQuc3Vic3RyaW5nKHNlcGFyYXRvckluZGV4ICsgMSkudHJpbSgpO1xyXG5cclxuICAgICAgICByZXR1cm4geyBmaXJzdFBhcnQ6IHBhcnQxLCBzZWNvbmRQYXJ0OiBwYXJ0MiB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2FmZVN0cmluZ2lmeShvYmplY3Q6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBKU09OLnN0cmluZ2lmeShvYmplY3QpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gY2F0Y2ggeyAvKiBlbXB0eSAqLyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNpbXBsZU9iamVjdDogYW55ID0ge307XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmplY3QpIHtcclxuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAob2JqZWN0W3Byb3BdKSA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiAob2JqZWN0W3Byb3BdKSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzaW1wbGVPYmplY3RbcHJvcF0gPSBvYmplY3RbcHJvcF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXN1bHQgPSAnWyoqKlNhbml0aXplZCBPYmplY3QqKipdOiAnICsgSlNPTi5zdHJpbmdpZnkoc2ltcGxlT2JqZWN0KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGpzb25UcnlQYXJzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0b1RpdGxlQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1xcd1xcUyovZywgc3ViU3RyaW5nID0+IHN1YlN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN1YlN0cmluZy5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0b0xvd2VyQ2FzZShpdGVtczogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCB2b2lkIHtcclxuICAgICAgICBpZiAoaXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBjb25zdCBsb3dlcmVkUm9sZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsb3dlcmVkUm9sZXNbaV0gPSBpdGVtc1tpXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbG93ZXJlZFJvbGVzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW1zID09PSAnc3RyaW5nJyB8fCBpdGVtcyBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbXMudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB1bmlxdWVJZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJhbmRvbU51bWJlcigxMDAwMDAwLCA5MDAwMDAwKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tTnVtYmVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSArIG1pbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBiYXNlVXJsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGJhc2U6IHN0cmluZztcclxuXHJcbiAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcclxuICAgICAgICAgICAgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgKyAod2luZG93LmxvY2F0aW9uLnBvcnQgPyAnOicgKyB3aW5kb3cubG9jYXRpb24ucG9ydCA6ICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBiYXNlLnJlcGxhY2UoL1xcLyQvLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBuZXdHdWlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCByID0gKE1hdGgucmFuZG9tKCkgKiAxNikgfCAwO1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IHYgPSBjID09PSAneCcgPyByIDogKHIgJiAweDMpIHwgMHg4O1xyXG4gICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyB0ZXN0SXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHIgPSBuZXcgUmVnRXhwKCdeKD86W2Etel0rOik/Ly8nLCAnaScpO1xyXG4gICAgICAgIHJldHVybiByLnRlc3QodXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb0Fic29sdXRlVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQ21hdFV0aWxzU2VydmljZS50ZXN0SXNBYnNvbHV0ZVVybCh1cmwpID8gdXJsIDogJy8vJyArIHVybDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHVybEJhc2U2NERlY29kZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG91dHB1dCA9IHN0ci5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xyXG4gICAgICAgIHN3aXRjaCAob3V0cHV0Lmxlbmd0aCAlIDQpIHtcclxuICAgICAgICAgICAgY2FzZSAwOiB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgICAgICAgIG91dHB1dCArPSAnPT0nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAzOiB7XHJcbiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJz0nO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2U2NERlY29kZVVuaWNvZGUob3V0cHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGRlY29kZVRva2VuKHRva2VuOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdG9rZW4uc3BsaXQoJy4nKTtcclxuXHJcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pXVCBtdXN0IGhhdmUgMyBwYXJ0cycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMudXJsQmFzZTY0RGVjb2RlKHBhcnRzWzFdKTtcclxuICAgICAgICBpZiAoIWRlY29kZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVjb2RlIHRoZSB0b2tlbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRUb2tlbkV4cGlyYXRpb25EYXRlKHRva2VuOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuZGVjb2RlVG9rZW4odG9rZW4pO1xyXG5cclxuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkZWNvZGVkLCAnZXhwJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7IC8vIFRoZSAwIGhlcmUgaXMgdGhlIGtleSwgd2hpY2ggc2V0cyB0aGUgZGF0ZSB0byB0aGUgZXBvY2hcclxuICAgICAgICBkYXRlLnNldFVUQ1NlY29uZHMoZGVjb2RlZC5leHApO1xyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzVG9rZW5FeHBpcmVkKHRva2VuOiBzdHJpbmcsIG9mZnNldFNlY29uZHM/OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5nZXRUb2tlbkV4cGlyYXRpb25EYXRlKHRva2VuKTtcclxuICAgICAgICBvZmZzZXRTZWNvbmRzID0gb2Zmc2V0U2Vjb25kcyA/PyAwO1xyXG5cclxuICAgICAgICBpZiAoZGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRva2VuIGV4cGlyZWQ/XHJcbiAgICAgICAgcmV0dXJuICEoZGF0ZS52YWx1ZU9mKCkgPiAobmV3IERhdGUoKS52YWx1ZU9mKCkgKyAob2Zmc2V0U2Vjb25kcyAqIDEwMDApKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWFkQXNEYXRhVVJMKGZpbGU6IEZpbGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIC8vIFJldHVybiBhIG5ldyBwcm9taXNlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyByZWFkZXJcclxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2Ugb24gc3VjY2Vzc1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlamVjdCB0aGUgcHJvbWlzZSBvbiBlcnJvclxyXG4gICAgICAgICAgICByZWFkZXIub25lcnJvciA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAvLyBSZWFkIHRoZSBmaWxlIGFzIHRoZVxyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGRhdGFVUklUb0Jsb2IoZGF0YVVSSTogc3RyaW5nKTogQmxvYiB7XHJcbiAgICAgICAgY29uc3Qgc3BsaXREYXRhVVJJID0gZGF0YVVSSS5zcGxpdCgnLCcpO1xyXG5cclxuICAgICAgICBjb25zdCBieXRlU3RyaW5nID0gc3BsaXREYXRhVVJJWzBdLmluZGV4T2YoJ2Jhc2U2NCcpID49IDAgPyBhdG9iKHNwbGl0RGF0YVVSSVsxXSkgOiBkZWNvZGVVUkkoc3BsaXREYXRhVVJJWzFdKTtcclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nID0gc3BsaXREYXRhVVJJWzBdLnNwbGl0KCc6JylbMV0uc3BsaXQoJzsnKVswXTtcclxuXHJcbiAgICAgICAgY29uc3QgaWEgPSBuZXcgVWludDhBcnJheShieXRlU3RyaW5nLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlhW2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCbG9iKFtpYV0sIHsgdHlwZTogbWltZVN0cmluZyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEZpbGVUeXBlKGFjY2VwdDogc3RyaW5nKTogJ2NzdicgfCAnZ2lmJyB8ICd3b3JkJyB8ICdleGNlbCcgfCAnanBnJyB8ICdvdXRsb29rJyB8ICdwZGYnIHwgJ3BuZycgfCAncHB0JyB8ICdmaWxlJyB8ICd0ZXh0JyB8ICd2aWRlbycgfCAnemlwJyB7XHJcbiAgICAgICAgbGV0IGZpbGVUeXBlID0gJ2ZpbGUnO1xyXG4gICAgICAgIHN3aXRjaCAoYWNjZXB0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxyXG4gICAgICAgICAgICBjYXNlICdpbWFnZS9qcGcnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAnanBnJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdpbWFnZS9wbmcnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAncG5nJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0ZXh0L2Nzdic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdjc3YnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2dpZic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdnaWYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL21zd29yZCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzpcclxuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gJ3dvcmQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JzpcclxuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gJ3dvcmQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3BkZic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdwZGYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nOlxyXG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdwcHQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3RleHQvcGxhaW4nOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAndGV4dCc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAndmlkZW8vbXBlZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZGVvL21wNCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2F1ZGlvL21wNCc6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICd2aWRlbyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnYXBsaWNhdGlvbi96aXAnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAnemlwJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlIGFzICdjc3YnIHwgJ2dpZicgfCAnd29yZCcgfCAnZXhjZWwnIHwgJ2pwZycgfCAnb3V0bG9vaycgfCAncGRmJyB8ICdwbmcnIHwgJ3BwdCcgfCAnZmlsZScgfCAndGV4dCcgfCAndmlkZW8nIHwgJ3ppcCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NERlY29kZVVuaWNvZGUoc3RyOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGF0b2Ioc3RyKSwgKGM6IGFueSkgPT4gJyUnICsgKCcwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpLmpvaW4oJycpKTtcclxuICAgIH1cclxuXHJcbiAgICByYW5kb21JZChzdHJpbmdMZW5ndGg6IG51bWJlciA9IDEwKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgbGV0IGlkID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWQgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl19
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sR0FBRyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUs1QyxNQUFNLE9BQU8sZ0JBQWdCO2FBQ0YsK0JBQTBCLEdBQUcsR0FBRyxBQUFOLENBQU87YUFDakMsNEJBQXVCLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDaEMsMkJBQXNCLEdBQUcsU0FBUyxBQUFaLENBQWE7YUFDbkMsK0JBQTBCLEdBQUcsT0FBTyxBQUFWLENBQVc7YUFDckMsOEJBQXlCLEdBQUcsRUFBRSxBQUFMLENBQU07YUFDOUIsUUFBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQUFBakQsQ0FBa0QsR0FBQSxLQUFLO2FBQzFELE9BQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEFBQWpDLENBQWtDLEdBQUEsS0FBSztJQUVqRSxJQUFJLGlCQUFpQjtRQUNqQixPQUFPO1lBQ0gsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsU0FBUztZQUNuQixZQUFZLEVBQUUsU0FBUztZQUN2QixXQUFXLEVBQUUsT0FBTztTQUN2QixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU87WUFDSCxLQUFLLEVBQUUsUUFBUTtZQUNmLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFdBQVcsRUFBRSxRQUFRO1NBQ3hCLENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQjtRQUMzQixPQUFPLElBQUksV0FBVyxFQUFFO2FBQ25CLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUM7YUFDMUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQzthQUMxQyxNQUFNLENBQUMsUUFBUSxFQUFFLHlCQUF5QixZQUFZLDBDQUEwQyxDQUFDO2FBQ2pHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUI7UUFDakMsT0FBTyxJQUFJLFdBQVcsRUFBRTthQUNuQixNQUFNLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDO2FBQzFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7YUFDMUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7YUFDeEIsTUFBTSxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsWUFBWSwwQ0FBMEMsQ0FBQzthQUNqRyxNQUFNLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsTUFBYztRQUNoRCxPQUFPLElBQUksV0FBVyxFQUFFO2FBQ25CLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUM7YUFDMUMsTUFBTSxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsWUFBWSwwQ0FBMEMsQ0FBQzthQUNqRyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU0sTUFBTSxDQUFDLDZCQUE2QixDQUFDLE1BQWM7UUFDdEQsT0FBTyxJQUFJLFdBQVcsRUFBRTthQUNuQixNQUFNLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDO2FBQzFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUseUJBQXlCLFlBQVksMENBQTBDLENBQUM7YUFDakcsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7YUFDeEIsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQzNCLE9BQU8sRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUNyQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDNUQsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRztZQUMzQixPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVU7UUFDaEMsSUFBSSxLQUFLLENBQUMsS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQ3BDLGtFQUFrRTtZQUNsRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxDQUFDO2FBQU0sQ0FBQztZQUNKLHNEQUFzRDtZQUN0RCw2REFBNkQ7WUFDN0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZO2dCQUN0QixXQUFXLEtBQUssQ0FBQyxNQUFNLElBQUk7Z0JBQzNCLGVBQWUsS0FBSyxDQUFDLFVBQVUsSUFBSTtnQkFDbkMsWUFBWSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsd0RBQXdEO1FBQ3hELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLElBQVM7UUFFMUMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO1FBRS9CLElBQUksSUFBSSxZQUFZLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7WUFDdkgsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWxELElBQUksY0FBYyxJQUFJLENBQUMsT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLGNBQWMsWUFBWSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUU3RixLQUFLLE1BQU0sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUMvQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDNUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQ0FDTixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQywwQkFBMEIsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN0RixDQUFDO2lDQUFNLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0NBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ25ELENBQUM7d0JBQ0wsQ0FBQztvQkFDTCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JJLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBR00sTUFBTSxDQUFDLHVCQUF1QixDQUFDLGFBQXFCLEVBQUUsSUFBUyxFQUFFLGtCQUFrQixHQUFHLElBQUksRUFBRSxzQkFBc0IsR0FBRyxLQUFLO1FBQzdILE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsS0FBSyxNQUFNLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBRTFGLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDOUYsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN0QixLQUFLLE1BQU0sT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUVqQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO3dCQUN6QixPQUFPLE9BQU8sQ0FBQztvQkFDbkIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7d0JBQzFGLE9BQU8sV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDO29CQUMzRCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQTBCO1FBQ3BELElBQUksUUFBUSxZQUFZLFlBQVksRUFBRSxDQUFDO1lBQ25DLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxRQUFRLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUN4QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBR00sTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUEwQjtRQUNuRCxJQUFJLFFBQVEsWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBMEI7UUFDdEQsSUFBSSxRQUFRLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ25DLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUEwQjtRQUNsRCxJQUFJLFFBQVEsWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLElBQWE7UUFDckQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDO1FBQ2xGLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLFdBQW1CO1FBQ3RELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBa0MsRUFBRSxDQUFDO1FBRWpELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZLEVBQUUsU0FBa0I7UUFDckQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoRSxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQVc7UUFDbkMsSUFBSSxNQUFjLENBQUM7UUFFbkIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztRQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELFNBQVM7WUFDYixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLFNBQVM7WUFDYixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLFNBQVM7WUFDYixDQUFDO1lBQ0QsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsTUFBTSxHQUFHLDRCQUE0QixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckUsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNMLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQVk7UUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFHTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVU7UUFDaEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxZQUFZLEdBQWEsRUFBRSxDQUFDO1lBRWxDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0MsQ0FBQztZQUVELE9BQU8sWUFBWSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDOUQsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDL0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPO1FBQ2pCLElBQUksSUFBWSxDQUFDO1FBRWpCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakksQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPO1FBQ2pCLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBRWpFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVuQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUMxQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVc7UUFDdkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBVztRQUMxQyxPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDdEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBVztRQUNyQyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELFFBQVEsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsTUFBTTtZQUNWLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsTUFBTSxJQUFJLElBQUksQ0FBQztnQkFDZixNQUFNO1lBQ1YsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDTCxNQUFNLElBQUksR0FBRyxDQUFDO2dCQUNkLE1BQU07WUFDVixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBYTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMERBQTBEO1FBQ3BGLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWEsRUFBRSxhQUFzQjtRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsYUFBYSxHQUFHLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsaUJBQWlCO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVU7UUFDbEMsdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFFbkMsc0JBQXNCO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFaEMsaUNBQWlDO1lBQ2pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBUyxFQUFFO2dCQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQztZQUVGLDhCQUE4QjtZQUM5QixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFRLEVBQUU7Z0JBQ3pCLDJFQUEyRTtnQkFDM0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxDQUFDO1lBRUYsdUJBQXVCO1lBQ3ZCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQWM7UUFDcEMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDYixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFdBQVc7Z0JBQ1osUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDakIsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixNQUFNO1lBQ1YsS0FBSyxVQUFVO2dCQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLE1BQU07WUFDVixLQUFLLFdBQVc7Z0JBQ1osUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDakIsTUFBTTtZQUNWLEtBQUssb0JBQW9CLENBQUM7WUFDMUIsS0FBSyx5RUFBeUU7Z0JBQzFFLFFBQVEsR0FBRyxNQUFNLENBQUM7Z0JBQ2xCLE1BQU07WUFDVixLQUFLLDBCQUEwQixDQUFDO1lBQ2hDLEtBQUssbUVBQW1FO2dCQUNwRSxRQUFRLEdBQUcsTUFBTSxDQUFDO2dCQUNsQixNQUFNO1lBQ1YsS0FBSyxpQkFBaUI7Z0JBQ2xCLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLE1BQU07WUFDVixLQUFLLDJFQUEyRSxDQUFDO1lBQ2pGLEtBQUssK0JBQStCO2dCQUNoQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixNQUFNO1lBQ1YsS0FBSyxZQUFZO2dCQUNiLFFBQVEsR0FBRyxNQUFNLENBQUM7Z0JBQ2xCLE1BQU07WUFDVixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFdBQVc7Z0JBQ1osUUFBUSxHQUFHLE9BQU8sQ0FBQztnQkFDbkIsTUFBTTtZQUNWLEtBQUssZ0JBQWdCO2dCQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixNQUFNO1FBQ2QsQ0FBQztRQUVELE9BQU8sUUFBNEgsQ0FBQztJQUN4SSxDQUFDO0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQVE7UUFDeEMsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9JLENBQUM7SUFFRCxRQUFRLENBQUMsZUFBdUIsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBRyxnRUFBZ0UsQ0FBQztRQUMvRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzs4R0FyZlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UsIEh0dHBSZXNwb25zZUJhc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSXNBY3RpdmVNYXRjaE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgQUVTIGZyb20gJ2NyeXB0by1qcy9hZXMnO1xyXG5pbXBvcnQgQ3J5cHRvSlNDb3JlIGZyb20gJ2NyeXB0by1qcy9jb3JlJztcclxuaW1wb3J0IEJhc2U2NCBmcm9tICdjcnlwdG8tanMvZW5jLWJhc2U2NCc7XHJcbmltcG9ydCBIZXggZnJvbSAnY3J5cHRvLWpzL2VuYy1oZXgnO1xyXG5pbXBvcnQgVVRGOCBmcm9tICdjcnlwdG8tanMvZW5jLXV0ZjgnO1xyXG5pbXBvcnQgUGtjczcgZnJvbSAnY3J5cHRvLWpzL3BhZC1wa2NzNyc7XHJcbmltcG9ydCB7IGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDTUFUX1ZFUlNJT04gfSBmcm9tICdjbWF0L3ZlcnNpb24nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VXRpbHNTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgY2FwdGlvbkFuZE1lc3NhZ2VTZXBhcmF0b3IgPSAnOic7XHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IG5vTmV0d29ya01lc3NhZ2VDYXB0aW9uID0gJ+aXoOe9kee7nCc7XHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IG5vTmV0d29ya01lc3NhZ2VEZXRhaWwgPSAn5peg5rOV6L+e5o6l5pyN5Yqh5ZmoJztcclxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgYWNjZXNzRGVuaWVkTWVzc2FnZUNhcHRpb24gPSAn5ouS57ud6K6/6ZeuISc7XHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGFjY2Vzc0RlbmllZE1lc3NhZ2VEZXRhaWwgPSAnJztcclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGtleSA9IFVURjgucGFyc2UoJzE0Nzg5NjMyMjM2OTg3NDExNDc4OTYzMjIzNjk4NzQxJyk7Ly8zMuS9jVxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgaXYgPSBVVEY4LnBhcnNlKCcxNDc4OTYzMjIzNjk4NzQxJyk7Ly8xNuS9jVxyXG5cclxuICAgIGdldCBleGFjdE1hdGNoT3B0aW9ucygpOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcGF0aHM6ICdleGFjdCcsXHJcbiAgICAgICAgICAgIGZyYWdtZW50OiAnaWdub3JlZCcsXHJcbiAgICAgICAgICAgIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogJ2V4YWN0J1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN1YnNldE1hdGNoT3B0aW9ucygpOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcGF0aHM6ICdzdWJzZXQnLFxyXG4gICAgICAgICAgICBmcmFnbWVudDogJ2lnbm9yZWQnLFxyXG4gICAgICAgICAgICBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJlcXVlc3RIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgLmFwcGVuZCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2VwdCcsIGBhcHBsaWNhdGlvbi92bmQuaW1hbi52JHtDTUFUX1ZFUlNJT059K2pzb24sIGFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKmApXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FwcC1WZXJzaW9uJywgQ01BVF9WRVJTSU9OKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJlcXVlc3RCeXBhc3NIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgLmFwcGVuZCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ2J5cGFzcycsICd0cnVlJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQWNjZXB0JywgYGFwcGxpY2F0aW9uL3ZuZC5pbWFuLnYke0NNQVRfVkVSU0lPTn0ranNvbiwgYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qYClcclxuICAgICAgICAgICAgLmFwcGVuZCgnQXBwLVZlcnNpb24nLCBDTUFUX1ZFUlNJT04pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVxdWVzdENyeXB0b0hlYWRlcnMocGFyYW1zOiBzdHJpbmcpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQWNjZXB0JywgYGFwcGxpY2F0aW9uL3ZuZC5pbWFuLnYke0NNQVRfVkVSU0lPTn0ranNvbiwgYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qYClcclxuICAgICAgICAgICAgLmFwcGVuZCgnQXBwLVZlcnNpb24nLCB0aGlzLmdldEVuY3J5cHREYXRhKCdwYXJ0eW1hbmFnZUFwaScgKyBwYXJhbXMpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVxdWVzdENyeXB0b0J5cGFzc0hlYWRlcnMocGFyYW1zOiBzdHJpbmcpOiBIdHRwSGVhZGVycyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgIC5hcHBlbmQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcclxuICAgICAgICAgICAgLmFwcGVuZCgnQWNjZXB0JywgYGFwcGxpY2F0aW9uL3ZuZC5pbWFuLnYke0NNQVRfVkVSU0lPTn0ranNvbiwgYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qYClcclxuICAgICAgICAgICAgLmFwcGVuZCgnYnlwYXNzJywgJ3RydWUnKVxyXG4gICAgICAgICAgICAuYXBwZW5kKCdBcHAtVmVyc2lvbicsIHRoaXMuZ2V0RW5jcnlwdERhdGEoJ3BhcnR5bWFuYWdlQXBpJyArIHBhcmFtcykudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRFbmNyeXB0RGF0YShkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHNyYyA9IFVURjgucGFyc2UoZGF0YSk7XHJcblxyXG4gICAgICAgIHJldHVybiBBRVMuZW5jcnlwdChzcmMsIHRoaXMua2V5LCB7XHJcbiAgICAgICAgICAgIGl2OiB0aGlzLml2LFxyXG4gICAgICAgICAgICBtb2RlOiBDcnlwdG9KU0NvcmUubW9kZS5DQkMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IFBrY3M3XHJcbiAgICAgICAgfSkuY2lwaGVydGV4dC50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVjcnlwdERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBlbmNyeXB0ZWRIZXhTdHIgPSBIZXgucGFyc2UoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIEFFUy5kZWNyeXB0KEJhc2U2NC5zdHJpbmdpZnkoZW5jcnlwdGVkSGV4U3RyKSwgdGhpcy5rZXksIHtcclxuICAgICAgICAgICAgaXY6IHRoaXMuaXYsXHJcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTQ29yZS5tb2RlLkNCQyxcclxuICAgICAgICAgICAgcGFkZGluZzogUGtjczdcclxuICAgICAgICB9KS50b1N0cmluZyhVVEY4KS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8bmV2ZXI+IHtcclxuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIEEgY2xpZW50LXNpZGUgb3IgbmV0d29yayBlcnJvciBvY2N1cnJlZC4gSGFuZGxlIGl0IGFjY29yZGluZ2x5LlxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDbGllbnQgc2lkZSBuZXR3b3JrIGVycm9yIG9jY3VycmVkOicsIGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFRoZSBiYWNrZW5kIHJldHVybmVkIGFuIHVuc3VjY2Vzc2Z1bCByZXNwb25zZSBjb2RlLlxyXG4gICAgICAgICAgICAvLyBUaGUgcmVzcG9uc2UgYm9keSBtYXkgY29udGFpbiBjbHVlcyBhcyB0byB3aGF0IHdlbnQgd3JvbmcsXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0JhY2tlbmQgLSAnICtcclxuICAgICAgICAgICAgICAgIGBzdGF0dXM6ICR7ZXJyb3Iuc3RhdHVzfSwgYCArXHJcbiAgICAgICAgICAgICAgICBgc3RhdHVzVGV4dDogJHtlcnJvci5zdGF0dXNUZXh0fSwgYCArXHJcbiAgICAgICAgICAgICAgICBgbWVzc2FnZTogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIGFuIG9ic2VydmFibGUgd2l0aCBhIHVzZXItZmFjaW5nIGVycm9yIG1lc3NhZ2VcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvciB8fCAnc2VydmVyIGVycm9yJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRIdHRwUmVzcG9uc2VNZXNzYWdlKGRhdGE6IGFueSk6IHN0cmluZ1tdIHtcclxuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tOb05ldHdvcmsoZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlcy5wdXNoKGAke3RoaXMubm9OZXR3b3JrTWVzc2FnZUNhcHRpb259JHt0aGlzLmNhcHRpb25BbmRNZXNzYWdlU2VwYXJhdG9yfSAke3RoaXMubm9OZXR3b3JrTWVzc2FnZURldGFpbH1gKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gdGhpcy5nZXRSZXNwb25zZUJvZHkoZGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlT2JqZWN0ICYmICh0eXBlb2YgcmVzcG9uc2VPYmplY3QgPT09ICdvYmplY3QnIHx8IHJlc3BvbnNlT2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0KSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwb25zZU9iamVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3BvbnNlT2JqZWN0LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzLnB1c2goYCR7a2V5fSR7dGhpcy5jYXB0aW9uQW5kTWVzc2FnZVNlcGFyYXRvcn0gJHtyZXNwb25zZU9iamVjdFtrZXldfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZU9iamVjdFtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzLnB1c2gocmVzcG9uc2VPYmplY3Rba2V5XS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZXMubGVuZ3RoICYmIHRoaXMuZ2V0UmVzcG9uc2VCb2R5KGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZXMucHVzaChgJHt0aGlzLmdldFJlc3BvbnNlQm9keShkYXRhKS50b1N0cmluZygpfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXJlc3BvbnNlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmVzcG9uc2VzLnB1c2goZGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrQWNjZXNzRGVuaWVkKGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlcy5zcGxpY2UoMCwgMCwgYCR7dGhpcy5hY2Nlc3NEZW5pZWRNZXNzYWdlQ2FwdGlvbn0ke3RoaXMuY2FwdGlvbkFuZE1lc3NhZ2VTZXBhcmF0b3J9ICR7dGhpcy5hY2Nlc3NEZW5pZWRNZXNzYWdlRGV0YWlsfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlcztcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBmaW5kSHR0cFJlc3BvbnNlTWVzc2FnZShtZXNzYWdlVG9GaW5kOiBzdHJpbmcsIGRhdGE6IGFueSwgc2VhY2hJbkNhcHRpb25Pbmx5ID0gdHJ1ZSwgaW5jbHVkZUNhcHRpb25JblJlc3VsdCA9IGZhbHNlKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoU3RyaW5nID0gbWVzc2FnZVRvRmluZC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGh0dHBNZXNzYWdlcyA9IHRoaXMuZ2V0SHR0cFJlc3BvbnNlTWVzc2FnZShkYXRhKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGh0dHBNZXNzYWdlcykge1xyXG4gICAgICAgICAgICBjb25zdCBmdWxsTWVzc2FnZSA9IENtYXRVdGlsc1NlcnZpY2Uuc3BsaXRJblR3byhtZXNzYWdlLCB0aGlzLmNhcHRpb25BbmRNZXNzYWdlU2VwYXJhdG9yKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmdWxsTWVzc2FnZS5maXJzdFBhcnQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoU3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVDYXB0aW9uSW5SZXN1bHQgPyBtZXNzYWdlIDogZnVsbE1lc3NhZ2Uuc2Vjb25kUGFydCA/PyBmdWxsTWVzc2FnZS5maXJzdFBhcnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghc2VhY2hJbkNhcHRpb25Pbmx5KSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBodHRwTWVzc2FnZXMpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZUNhcHRpb25JblJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdWxsTWVzc2FnZSA9IENtYXRVdGlsc1NlcnZpY2Uuc3BsaXRJblR3byhtZXNzYWdlLCB0aGlzLmNhcHRpb25BbmRNZXNzYWdlU2VwYXJhdG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bGxNZXNzYWdlLnNlY29uZFBhcnQgPz8gZnVsbE1lc3NhZ2UuZmlyc3RQYXJ0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXNwb25zZUJvZHkocmVzcG9uc2U6IEh0dHBSZXNwb25zZUJhc2UpOiBhbnkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYm9keTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5lcnJvciB8fCByZXNwb25zZS5tZXNzYWdlIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja05vTmV0d29yayhyZXNwb25zZTogSHR0cFJlc3BvbnNlQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZUJhc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrQWNjZXNzRGVuaWVkKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2VCYXNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlQmFzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MDM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja05vdEZvdW5kKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2VCYXNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlQmFzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MDQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja0lzTG9jYWxIb3N0KHVybDogc3RyaW5nLCBiYXNlPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IG5ldyBVUkwodXJsLCBiYXNlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lID09PSAnbG9jYWxob3N0JyB8fCBsb2NhdGlvbi5ob3N0bmFtZSA9PT0gJzEyNy4wLjAuMSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRRdWVyeVBhcmFtc0Zyb21TdHJpbmcocGFyYW1TdHJpbmc6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+IHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCFwYXJhbVN0cmluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbD4gPSB7fTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbVN0cmluZy5zcGxpdCgnJicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleVZhbHVlID0gQ21hdFV0aWxzU2VydmljZS5zcGxpdEluVHdvKHBhcmFtLCAnPScpO1xyXG4gICAgICAgICAgICBwYXJhbXNba2V5VmFsdWUuZmlyc3RQYXJ0XSA9IGtleVZhbHVlLnNlY29uZFBhcnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc3BsaXRJblR3byh0ZXh0OiBzdHJpbmcsIHNlcGFyYXRvcj86IHN0cmluZyk6IHsgZmlyc3RQYXJ0OiBzdHJpbmc7IHNlY29uZFBhcnQ6IHN0cmluZyB8IG51bGwgfSB7XHJcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSBzZXBhcmF0b3IgPyB0ZXh0LmluZGV4T2Yoc2VwYXJhdG9yKSA6IC0xO1xyXG5cclxuICAgICAgICBpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGZpcnN0UGFydDogdGV4dCwgc2Vjb25kUGFydDogbnVsbCB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFydDEgPSB0ZXh0LnN1YnN0cmluZygwLCBzZXBhcmF0b3JJbmRleCkudHJpbSgpO1xyXG4gICAgICAgIGNvbnN0IHBhcnQyID0gdGV4dC5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKS50cmltKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGZpcnN0UGFydDogcGFydDEsIHNlY29uZFBhcnQ6IHBhcnQyIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzYWZlU3RyaW5naWZ5KG9iamVjdDogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KG9iamVjdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBjYXRjaCB7IC8qIGVtcHR5ICovIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc2ltcGxlT2JqZWN0OiBhbnkgPSB7fTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIG9iamVjdCkge1xyXG4gICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3ApKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIChvYmplY3RbcHJvcF0pID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIChvYmplY3RbcHJvcF0pID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNpbXBsZU9iamVjdFtwcm9wXSA9IG9iamVjdFtwcm9wXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlc3VsdCA9ICdbKioqU2FuaXRpemVkIE9iamVjdCoqKl06ICcgKyBKU09OLnN0cmluZ2lmeShzaW1wbGVPYmplY3QpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMganNvblRyeVBhcnNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHRvVGl0bGVDYXNlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgvXFx3XFxTKi9nLCBzdWJTdHJpbmcgPT4gc3ViU3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3ViU3RyaW5nLnN1YnN0cmluZygxKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHRvTG93ZXJDYXNlKGl0ZW1zOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHZvaWQge1xyXG4gICAgICAgIGlmIChpdGVtcyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvd2VyZWRSb2xlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxvd2VyZWRSb2xlc1tpXSA9IGl0ZW1zW2ldLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBsb3dlcmVkUm9sZXM7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbXMgPT09ICdzdHJpbmcnIHx8IGl0ZW1zIGluc3RhbmNlb2YgU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHVuaXF1ZUlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tTnVtYmVyKDEwMDAwMDAsIDkwMDAwMDApLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByYW5kb21OdW1iZXIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpICsgbWluKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGJhc2VVcmwoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgYmFzZTogc3RyaW5nO1xyXG5cclxuICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xyXG4gICAgICAgICAgICBiYXNlID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBiYXNlID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICh3aW5kb3cubG9jYXRpb24ucG9ydCA/ICc6JyArIHdpbmRvdy5sb2NhdGlvbi5wb3J0IDogJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGJhc2UucmVwbGFjZSgvXFwvJC8sICcnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG5ld0d1aWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCAoYykgPT4ge1xyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSAoTWF0aC5yYW5kb20oKSAqIDE2KSB8IDA7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgdiA9IGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDg7XHJcbiAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHRlc3RJc0Fic29sdXRlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgciA9IG5ldyBSZWdFeHAoJ14oPzpbYS16XSs6KT8vLycsICdpJyk7XHJcbiAgICAgICAgcmV0dXJuIHIudGVzdCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY29udmVydFRvQWJzb2x1dGVVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBDbWF0VXRpbHNTZXJ2aWNlLnRlc3RJc0Fic29sdXRlVXJsKHVybCkgPyB1cmwgOiAnLy8nICsgdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgdXJsQmFzZTY0RGVjb2RlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgb3V0cHV0ID0gc3RyLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XHJcbiAgICAgICAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xyXG4gICAgICAgICAgICBjYXNlIDA6IHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgMjoge1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0ICs9ICc9PSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDM6IHtcclxuICAgICAgICAgICAgICAgIG91dHB1dCArPSAnPSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fYmFzZTY0RGVjb2RlVW5pY29kZShvdXRwdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZGVjb2RlVG9rZW4odG9rZW46IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpO1xyXG5cclxuICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSldUIG11c3QgaGF2ZSAzIHBhcnRzJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy51cmxCYXNlNjREZWNvZGUocGFydHNbMV0pO1xyXG4gICAgICAgIGlmICghZGVjb2RlZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWNvZGUgdGhlIHRva2VuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFRva2VuRXhwaXJhdGlvbkRhdGUodG9rZW46IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5kZWNvZGVUb2tlbih0b2tlbik7XHJcblxyXG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlY29kZWQsICdleHAnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTsgLy8gVGhlIDAgaGVyZSBpcyB0aGUga2V5LCB3aGljaCBzZXRzIHRoZSBkYXRlIHRvIHRoZSBlcG9jaFxyXG4gICAgICAgIGRhdGUuc2V0VVRDU2Vjb25kcyhkZWNvZGVkLmV4cCk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNUb2tlbkV4cGlyZWQodG9rZW46IHN0cmluZywgb2Zmc2V0U2Vjb25kcz86IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmdldFRva2VuRXhwaXJhdGlvbkRhdGUodG9rZW4pO1xyXG4gICAgICAgIG9mZnNldFNlY29uZHMgPSBvZmZzZXRTZWNvbmRzID8/IDA7XHJcblxyXG4gICAgICAgIGlmIChkYXRlID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVG9rZW4gZXhwaXJlZD9cclxuICAgICAgICByZXR1cm4gIShkYXRlLnZhbHVlT2YoKSA+IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSArIChvZmZzZXRTZWNvbmRzICogMTAwMCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRBc0RhdGFVUkwoZmlsZTogRmlsZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGEgbmV3IHByb21pc2VcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHJlYWRlclxyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcHJvbWlzZSBvbiBzdWNjZXNzXHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlIG9uIGVycm9yXHJcbiAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gUmVhZCB0aGUgZmlsZSBhcyB0aGVcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkYXRhVVJJVG9CbG9iKGRhdGFVUkk6IHN0cmluZyk6IEJsb2Ige1xyXG4gICAgICAgIGNvbnN0IHNwbGl0RGF0YVVSSSA9IGRhdGFVUkkuc3BsaXQoJywnKTtcclxuXHJcbiAgICAgICAgY29uc3QgYnl0ZVN0cmluZyA9IHNwbGl0RGF0YVVSSVswXS5pbmNsdWRlcygnYmFzZTY0JykgPyBhdG9iKHNwbGl0RGF0YVVSSVsxXSkgOiBkZWNvZGVVUkkoc3BsaXREYXRhVVJJWzFdKTtcclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nID0gc3BsaXREYXRhVVJJWzBdLnNwbGl0KCc6JylbMV0uc3BsaXQoJzsnKVswXTtcclxuXHJcbiAgICAgICAgY29uc3QgaWEgPSBuZXcgVWludDhBcnJheShieXRlU3RyaW5nLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlhW2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCbG9iKFtpYV0sIHsgdHlwZTogbWltZVN0cmluZyB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEZpbGVUeXBlKGFjY2VwdDogc3RyaW5nKTogJ2NzdicgfCAnZ2lmJyB8ICd3b3JkJyB8ICdleGNlbCcgfCAnanBnJyB8ICdvdXRsb29rJyB8ICdwZGYnIHwgJ3BuZycgfCAncHB0JyB8ICdmaWxlJyB8ICd0ZXh0JyB8ICd2aWRlbycgfCAnemlwJyB7XHJcbiAgICAgICAgbGV0IGZpbGVUeXBlID0gJ2ZpbGUnO1xyXG4gICAgICAgIHN3aXRjaCAoYWNjZXB0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxyXG4gICAgICAgICAgICBjYXNlICdpbWFnZS9qcGcnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAnanBnJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdpbWFnZS9wbmcnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAncG5nJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0ZXh0L2Nzdic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdjc3YnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlL2dpZic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdnaWYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL21zd29yZCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzpcclxuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gJ3dvcmQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JzpcclxuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gJ3dvcmQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3BkZic6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdwZGYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nOlxyXG4gICAgICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdwcHQnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3RleHQvcGxhaW4nOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAndGV4dCc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAndmlkZW8vbXBlZyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZGVvL21wNCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2F1ZGlvL21wNCc6XHJcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICd2aWRlbyc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnYXBsaWNhdGlvbi96aXAnOlxyXG4gICAgICAgICAgICAgICAgZmlsZVR5cGUgPSAnemlwJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbGVUeXBlIGFzICdjc3YnIHwgJ2dpZicgfCAnd29yZCcgfCAnZXhjZWwnIHwgJ2pwZycgfCAnb3V0bG9vaycgfCAncGRmJyB8ICdwbmcnIHwgJ3BwdCcgfCAnZmlsZScgfCAndGV4dCcgfCAndmlkZW8nIHwgJ3ppcCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NERlY29kZVVuaWNvZGUoc3RyOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGF0b2Ioc3RyKSwgKGM6IGFueSkgPT4gJyUnICsgKCcwMCcgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikpLmpvaW4oJycpKTtcclxuICAgIH1cclxuXHJcbiAgICByYW5kb21JZChzdHJpbmdMZW5ndGg6IG51bWJlciA9IDEwKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgbGV0IGlkID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nTGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWQgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlkO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl19
|