@wavemaker/app-ng-runtime 12.0.0-next.141165 → 12.0.0-next.141174
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.
- app-ng-runtime/build-task/bundles/index.umd.js +46 -38
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +46 -38
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +1 -1
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -3
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +14 -5
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs +14 -5
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +96 -74
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +6 -6
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +97 -75
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +12 -9
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +12 -9
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +187 -100
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +184 -102
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +187 -100
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +12 -10
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +102 -10
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +102 -11
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +102 -10
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +11 -0
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +10 -8
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
- app-ng-runtime/core/esm2022/utils/utils.mjs +3 -3
- app-ng-runtime/core/fesm2022/index.mjs +10 -9
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -0
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
|
@@ -32,7 +32,7 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
32
32
|
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></ul>`;
|
|
33
33
|
break;
|
|
34
34
|
case FormWidgetType.CHIPS:
|
|
35
|
-
tmpl = `<ul wmChips
|
|
35
|
+
tmpl = `<ul wmChips debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></ul>`;
|
|
36
36
|
break;
|
|
37
37
|
case FormWidgetType.COLORPICKER:
|
|
38
38
|
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;
|
|
@@ -47,10 +47,10 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
47
47
|
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
|
48
48
|
break;
|
|
49
49
|
case FormWidgetType.NUMBER:
|
|
50
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number"
|
|
50
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" ${updateOnTmpl} ${showTmpl}></div>`;
|
|
51
51
|
break;
|
|
52
52
|
case FormWidgetType.PASSWORD:
|
|
53
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password"
|
|
53
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
|
54
54
|
break;
|
|
55
55
|
case FormWidgetType.RADIOSET:
|
|
56
56
|
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;
|
|
@@ -65,7 +65,7 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
65
65
|
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;
|
|
66
66
|
break;
|
|
67
67
|
case FormWidgetType.TOGGLE:
|
|
68
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle"
|
|
68
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" ${showTmpl}></div>`;
|
|
69
69
|
break;
|
|
70
70
|
case FormWidgetType.SLIDER:
|
|
71
71
|
tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;
|
|
@@ -78,13 +78,13 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
|
78
78
|
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
|
79
79
|
break;
|
|
80
80
|
case FormWidgetType.TEXTAREA:
|
|
81
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
|
81
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${showTmpl}></wm-textarea>`;
|
|
82
82
|
break;
|
|
83
83
|
case FormWidgetType.TIME:
|
|
84
84
|
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
|
85
85
|
break;
|
|
86
86
|
case FormWidgetType.TIMESTAMP:
|
|
87
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
|
87
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
|
88
88
|
break;
|
|
89
89
|
case FormWidgetType.UPLOAD:
|
|
90
90
|
const counter = options.counter;
|
|
@@ -259,4 +259,4 @@ export const getRowActionAttrs = attrs => {
|
|
|
259
259
|
});
|
|
260
260
|
return tmpl;
|
|
261
261
|
};
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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QGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHsgRm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi9lbnVtcy9lbnVtcyc7XG5pbXBvcnQge2luY2x1ZGVzLCBpc0FycmF5LCBzdGFydHNXaXRofSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbi8vIEZvciBodG1sIHVwbG9hZCB3aWRnZXQsIGFkZCBldmVudHMgb24gaW5wdXQgdGFnXG5jb25zdCBnZXRVcGxvYWRFdmVudFRtcGwgPSAoYXR0cnMsIGNvdW50ZXI/LCBmaWVsZE5hbWU/KSA9PiB7XG4gICAgbGV0IGV2ZW50VG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgaWYgKGtleSAmJiBrZXkuZW5kc1dpdGgoJy5ldmVudCcpKSB7XG4gICAgICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGtleS5zcGxpdCgnLicpWzBdO1xuICAgICAgICAgICBjb25zdCBjb3VudGVyVGwgPSBjb3VudGVyID8gYCR7Y291bnRlcn0uYCA6ICcnO1xuICAgICAgICAgICBldmVudFRtcGwgPSBgICR7ZXZlbnRUbXBsfSAoJHtldmVudE5hbWV9KT1cIiR7Y291bnRlclRsfXRyaWdnZXJVcGxvYWRFdmVudCgkZXZlbnQsICcke2V2ZW50TmFtZX0nLCAnJHtmaWVsZE5hbWV9Jywgcm93KVwiIGA7XG4gICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBldmVudFRtcGw7XG59O1xuXG4vLyBNZXRob2QgdG8gZ2V0IHRoZSBmb3JtIHdpZGdldCB0ZW1wbGF0ZVxuZXhwb3J0IGNvbnN0IGdldEZvcm1XaWRnZXRUZW1wbGF0ZSA9ICh3aWRnZXRUeXBlOiBzdHJpbmcsIGlubmVyVG1wbDogc3RyaW5nLCBhdHRycz86IE1hcDxzdHJpbmcsIHN0cmluZz4sIG9wdGlvbnM6IGFueSA9IHt9KSA9PiB7XG4gICAgbGV0IHRtcGw7XG4gICAgY29uc3QgdXBkYXRlT24gPSBhdHRycy5nZXQoJ3VwZGF0ZW9uJyk7XG4gICAgY29uc3QgdXBkYXRlT25UbXBsID0gdXBkYXRlT24gPyBgdXBkYXRlb249XCIke3VwZGF0ZU9ufVwiYCA6ICcnO1xuICAgIGNvbnN0IHNob3dpbmVkaXRtb2RlID0gYXR0cnMuZ2V0KCdzaG93aW5lZGl0bW9kZScpIHx8IGF0dHJzLmdldCgnc2hvd2luZWRpdG1vZGUuYmluZCcpIHx8IHRydWU7XG4gICAgY29uc3Qgc2hvd1RtcGw6IHN0cmluZyAgPSBzaG93aW5lZGl0bW9kZSA9PSAnZmFsc2UnPyBgc2hvdz1cIiR7c2hvd2luZWRpdG1vZGV9XCJgOiBgc2hvdy5iaW5kPVwiJHtzaG93aW5lZGl0bW9kZX1cImA7XG4gICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRZUEVBSEVBRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVNlYXJjaCB0eXBlPVwiYXV0b2NvbXBsZXRlXCIgZGVib3VuY2V0aW1lPVwiJHthdHRycy5nZXQoJ2RlYm91bmNldGltZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DaGVja2JveCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YU0VUOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgcm9sZT1cImdyb3VwXCIgd21DaGVja2JveHNldCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICB0bXBsID0gYDx1bCB3bUNoaXBzIHJvbGU9XCJpbnB1dFwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ09MT1JQSUNLRVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Db2xvclBpY2tlciAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ3VycmVuY3kgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHt1cGRhdGVPblRtcGx9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtTnVtYmVyICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwibnVtYmVyXCIgYXJpYS1sYWJlbD1cIk9ubHkgbnVtYmVyc1wiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUEFTU1dPUkQ6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInBhc3N3b3JkXCIgYXJpYS1sYWJlbD1cIkVudGVyIHBhc3N3b3JkXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VUOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgcm9sZT1cInJhZGlvZ3JvdXBcIiB3bVJhZGlvc2V0ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkc6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SYXRpbmcgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SSUNIVEVYVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVJpY2hUZXh0RWRpdG9yIHJvbGU9XCJ0ZXh0Ym94XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1zZWxlY3QgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9Pjwvd20tc2VsZWN0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UT0dHTEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DaGVja2JveCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRvZ2dsZVwiIHJvbGU9XCJjaGVja2JveFwiIGFyaWEtbGFiZWw9XCJUb2dnbGUgYnV0dG9uXCIgJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNMSURFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVNsaWRlciAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNXSVRDSDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVN3aXRjaCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRFWFQ6XG4gICAgICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSBvcHRpb25zLmlucHV0VHlwZSB8fCAnaW5wdXR0eXBlJztcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cIiR7YXR0cnMuZ2V0KGlucHV0VHlwZSkgfHwgJ3RleHQnfVwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUQVJFQTpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLXRleHRhcmVhICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSByb2xlPVwidGV4dGJveFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLXRleHRhcmVhPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSByb2xlPVwiaW5wdXRcIiAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVVBMT0FEOlxuICAgICAgICAgICAgY29uc3QgY291bnRlciA9IG9wdGlvbnMuY291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHBDb3VudGVyID0gb3B0aW9ucy5wQ291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFByb3BzID0gb3B0aW9ucy51cGxvYWRQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VG1wbCA9IGdldFVwbG9hZEV2ZW50VG1wbChhdHRycywgY291bnRlciwgdXBsb2FkUHJvcHMgJiYgdXBsb2FkUHJvcHMubmFtZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxmb3JtIG5hbWU9XCIke3VwbG9hZFByb3BzLmZvcm1OYW1lfVwiICR7aW5uZXJUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9jdXMtdGFyZ2V0IGNsYXNzPVwiZmlsZS11cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke3VwbG9hZFByb3BzLm5hbWV9XCIgJHtldmVudFRtcGx9ICR7c2hvd1RtcGx9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlID09PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT1cImhlaWdodDoyZW1cIiBjbGFzcz1cIndpIHdpLWZpbGVcIiBbc3JjXT1cIiR7Y291bnRlcn0uaHJlZlwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSAhPT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwid2kgd2ktZmlsZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgJHtpbm5lclRtcGx9IGNsYXNzPVwiYXBwLWJsb2ItdXBsb2FkXCIgW25nQ2xhc3NdPVwieydmaWxlLXJlYWRvbmx5JzogJHtjb3VudGVyfS5yZWFkb25seX1cIiAke2V2ZW50VG1wbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIke2NvdW50ZXJ9LnJlcXVpcmVkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHthdHRycy5nZXQoJ2tleScpIHx8IGF0dHJzLmdldCgnbmFtZScpfV9mb3JtV2lkZ2V0XCIgW3JlYWRvbmx5XT1cIiR7Y291bnRlcn0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhJHtwQ291bnRlcn0uaXNVcGRhdGVNb2RlXCIgW2FjY2VwdF09XCIke2NvdW50ZXJ9LnBlcm1pdHRlZFwiICR7c2hvd1RtcGx9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidGV4dFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWlyZWRGb3JtV2lkZ2V0ID0gKHdpZGdldFR5cGUpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNlYXJjaCc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNoaXBzJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tY29sb3JwaWNrZXInO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXJyZW5jeSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGV0aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yYXRpbmcnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJJQ0hURVhUOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yaWNodGV4dGVkaXRvcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0xJREVSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1zbGlkZXInO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICd3bS10ZXh0JztcbiAgICB9XG59O1xuXG4vLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIGFkZCBkYXRhc2V0Ym91bmRleHByIGF0dHJpYnV0ZSBmb3Igbm9kZVxuY29uc3QgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZSA9IChjaGlsZE5vZGU6IEVsZW1lbnQsIGF0dHI6IEF0dHJpYnV0ZSwgYXR0clZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyVmFsdWUgPSBhdHRyVmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgY29uc3QgZGF0YXNldEJvdW5kQXR0cmlidXRlID0gY2hpbGROb2RlLmF0dHJzLmZpbmQoIGEgPT4gYS5uYW1lID09PSAnZGF0YXNldGJvdW5kZXhwcicpO1xuICAgIGlmIChhdHRyLm5hbWUgPT09ICdkYXRhc2V0JyAmJiAhZGF0YXNldEJvdW5kQXR0cmlidXRlKSB7XG4gICAgICAgIGNoaWxkTm9kZS5hdHRycy5wdXNoKG5ldyBBdHRyaWJ1dGUoJ2RhdGFzZXRib3VuZGV4cHInLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgYXR0ci5rZXlTcGFuLCBhdHRyLnZhbHVlU3BhbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpKTtcbiAgICB9XG59O1xuXG5cbi8qKlxuICogZXhwOiBVc2VyIGJ1aWx0IGJpbmQgZXhwcmVzc2lvblxuICogIFRvIGNoZWNrIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9ucy5cbiAqICBJZiB1c2VyIHVzZSB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbiBpdCB3aWxsIGNoZWNrIGluIHRoZSBleHAuIHRoYXQgXCJjdXN0b21cIiBzdHJpbmcgZXhpc3Qgb3Igbm90IHdpdGggKDopIHN5bnRheC5cbiAqICBFZzogY3VzdG9tOlxuICogICAgICBjdXN0b20gICAgOlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uID0gZnVuY3Rpb24oZXhwKXtcbiAgICBsZXQgY3VzdG9tUmVnRXggPSAvKGN1c3RvbShcXHMqOikpL2c7XG4gICAgbGV0IG1hdGNoZXMgPSBleHAubWF0Y2goY3VzdG9tUmVnRXgpO1xuICAgIHJldHVybiBtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoO1xufVxuXG5cbi8vIFRoZSBib3VuZCB2YWx1ZSBpcyByZXBsYWNlZCB3aXRoIHt7aXRlbS5maWVsZG5hbWV9fSBoZXJlLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgbGl2ZUxpc3Qgd2hlbiBjb21waWxpbmcgaW5uZXIgZWxlbWVudHNcbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZUF0dHJzID0gKHJvb3ROb2RlOiBFbGVtZW50IHwgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQ6IHN0cmluZywgd2lkZ2V0TmFtZTogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nID0gJycsIHJlZmVyZW5jZU5hbWU6IHN0cmluZyA9ICdpdGVtJykgPT4ge1xuXG4gICAgY29uc3Qgc2FuaXRpemVkUGFyZW50RGF0YXNldCA9IHBhcmVudERhdGFTZXQucmVwbGFjZSgvKFteYS16QS1aMC05Ll0pL2csICdcXFxcJDEnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgc2FuaXRpemVkUGFyZW50RGF0YXNldCArICcpKFxcXFxbMFxcXFxdKT8oLmRhdGFcXFxcW1xcXFwkaVxcXFxdKT8oLmNvbnRlbnRcXFxcW1xcXFwkaVxcXFxdKT8oXFxcXFtcXFxcJGlcXFxcXSk/JywgJ2cnKTtcbiAgICBsZXQgY3VycmVudEl0ZW1SZWdFeDtcbiAgICBsZXQgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXg7XG4gICAgbGV0IGZvcm1XaWRnZXRzUmVnZXg7XG4gICAgbGV0IG5vZGVzOiBBcnJheTxFbGVtZW50PjtcbiAgICBjb25zdCB3aWRnZXRMaXN0ID0ge1xuICAgICAgICAnd20tbGlzdCc6IFsnaXRlbWNsYXNzJywgJ2Rpc2FibGVpdGVtJywgJ2RhdGFzZXQnXVxuICAgIH07XG5cbiAgICBpZiAod2lkZ2V0TmFtZSkge1xuICAgICAgICBjdXJyZW50SXRlbVJlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbSlcXFxcYmAsICdnJyk7XG4gICAgICAgIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbVdpZGdldHMpXFxcXGJgLCAnZycpO1xuICAgICAgICBmb3JtV2lkZ2V0c1JlZ2V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuKC4qKS4oZm9ybVdpZGdldHN8ZmlsdGVyV2lkZ2V0cykpXFxcXGJgLCAnZycpO1xuICAgIH1cblxuICAgIGlmICghaXNBcnJheShyb290Tm9kZSkpIHtcbiAgICAgICAgLy8gW1dNUy0xNjcxMl0sW1dNUy0xNjc2OV0sW1dNUy0xNjgwNV0gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3IgdGhlIHdpZGdldHMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICBub2RlcyA9IHdpZGdldExpc3RbKHJvb3ROb2RlIGFzIGFueSkubmFtZV0gPyBbcm9vdE5vZGUgYXMgRWxlbWVudF0gOiAoKHJvb3ROb2RlIGFzIGFueSkuY2hpbGRyZW4gfHwgW10pIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzID0gcm9vdE5vZGUgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChjaGlsZE5vZGUubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBjaGlsZE5vZGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGFTZXRMZW5ndGhSZWdleCA9ICBuZXcgUmVnRXhwKCdiaW5kOlxcXFxzKlxcXFwoKicgKyBwYXJlbnREYXRhU2V0ICsgJ1xcXFwpKlxcXFwubGVuZ3RoXFxcXCkqJyk7XG4gICAgICAgICAgICBjaGlsZE5vZGUuYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdGhlIGV4dHJhIHNwYWNlcyBpbiBiaW5kaW5nc1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF0dHIudmFsdWUgJiYgYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgYXR0cmlidXRlcyBjb25hdGFpbnMgc2FtZSBkYXRhc2V0IHZhcmlhYmxlIGJpbmRpbmcgdGhlbiB0aG9zZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciBzcGVjaWZpYyBwcm9wZXJ0aWVzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRMaXN0W25vZGVOYW1lXSB8fCAod2lkZ2V0TGlzdFtub2RlTmFtZV0gJiYgd2lkZ2V0TGlzdFtub2RlTmFtZV0uaW5kZXhPZihhdHRyLm5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmluZDp4eHh4eC54eHh4XCIsIGVpdGhlciB0aGUgZGF0YVNldC9zY29wZURhdGFTZXQgaGFzIHRvIGNvbnRhaW4gXCJ4eHh4Lnh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW1dNUy0xNzkwOF06IGlmIGNoaWxkIHdpZGdldCBjb250YWlucyBiaW5kIGV4cHJlc3Npb24gYXMgcGFyZW5kYXRhc2V0Lmxlbmd0aCA+IDAgdGhlbiBkb250IHJlcGxhY2UgaXQgd2l0aCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModmFsdWUsIHBhcmVudERhdGFTZXQpICYmIHZhbHVlICE9PSAnYmluZDonICsgcGFyZW50RGF0YVNldCAmJiAhcGFyZW50RGF0YVNldExlbmd0aFJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZWdleCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnYmluZDonICsgdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaXMgdGhpcyBjdXN0b20gYmluZCBleHByZXNzaW9uIGFuZCBjdXJyZW50V2lkZ2V0SXRlbSByZWdleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbih2YWx1ZSkgJiYgY3VycmVudEl0ZW1SZWdFeCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgY3VycmVudEl0ZW0gYXMgbGFzdCBhcmd1bWVudCBmb3IgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgY3VzdG9tIHBpcGVzKGV4cHJlc2lvbiksIGl0IHdpbGwgc2VuZCB0aGUgY3VycmVudEl0ZW0gYXMgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gICc6JysgY3VycmVudEl0ZW1SZWdFeC5leGVjKGN1cnJlbnRJdGVtUmVnRXguc291cmNlKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBpdGVtIGlmIHdpZGdldCBwcm9wZXJ0eSBpcyBib3VuZCB0byBsaXZlbGlzdCBjdXJyZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1SZWdFeCAmJiBjdXJyZW50SXRlbVJlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgdmFsdWUgZnJvbSAnYmluZDpXaWRnZXRzLmZvcm1OYW1lLmZvcm1XaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJyB0byAnYmluZDpXaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuZm9ybVdpZGdldHMnKSB8fCB2YWx1ZS5pbmNsdWRlcygnLmZpbHRlcldpZGdldHMnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShmb3JtV2lkZ2V0c1JlZ2V4LCAnV2lkZ2V0cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVJlZ0V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggJiYgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVdpZGdldHNSZWdFeCwgYCR7aW5zdGFuY2V9Y3VycmVudEl0ZW1XaWRnZXRzYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVUZW1wbGF0ZUF0dHJzKGNoaWxkTm9kZS5jaGlsZHJlbiBhcyBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldCwgd2lkZ2V0TmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyBJZiBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGRvbnQgYWRkIHRoZSBuZ01vZGVsXG5leHBvcnQgY29uc3QgZ2V0TmdNb2RlbEF0dHIgPSBhdHRycyA9PiB7XG4gICAgaWYgKGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lJykgfHwgYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUuYmluZCcpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuICduZ01vZGVsJztcbn07XG5cbmNvbnN0IHJvd0FjdGlvbkF0dHJzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnZGlzcGxheS1uYW1lJywgJ2NhcHRpb24nXSxcbiAgICAgICAgWydkaXNwbGF5LW5hbWUuYmluZCcsICdjYXB0aW9uLmJpbmQnXSxcbiAgICAgICAgWyd0aXRsZScsICdoaW50J10sXG4gICAgICAgIFsndGl0bGUuYmluZCcsICdoaW50LmJpbmQnXSxcbiAgICAgICAgWydzaG93JywgJ3Nob3cnXSxcbiAgICAgICAgWydzaG93LmJpbmQnLCAnc2hvdy5iaW5kJ10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCAnZGlzYWJsZWQnXSxcbiAgICAgICAgWydkaXNhYmxlZC5iaW5kJywgJ2Rpc2FibGVkLmJpbmQnXSxcbiAgICAgICAgWydoeXBlcmxpbmsnLCAnaHlwZXJsaW5rJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rLmJpbmQnLCAnaHlwZXJsaW5rLmJpbmQnXSxcbiAgICAgICAgWyd0YXJnZXQnLCAndGFyZ2V0J10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxjbGFzcy5iaW5kJywgJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCcsICdjb25kaXRpb25hbHN0eWxlLmJpbmQnXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCBnZXRSb3dBY3Rpb25BdHRycyA9IGF0dHJzID0+IHtcbiAgICBsZXQgdG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHIgPSByb3dBY3Rpb25BdHRycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKG5ld0F0dHIpIHtcbiAgICAgICAgICAgIHRtcGwgKz0gYCR7bmV3QXR0cn09XCIke3ZhbH1cIiBgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuIl19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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YXIvY29tcGlsZXInO1xuaW1wb3J0IHtGb3JtV2lkZ2V0VHlwZX0gZnJvbSAnLi4vZW51bXMvZW51bXMnO1xuaW1wb3J0IHtpbmNsdWRlcywgaXNBcnJheSwgc3RhcnRzV2l0aH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG4vLyBGb3IgaHRtbCB1cGxvYWQgd2lkZ2V0LCBhZGQgZXZlbnRzIG9uIGlucHV0IHRhZ1xuY29uc3QgZ2V0VXBsb2FkRXZlbnRUbXBsID0gKGF0dHJzLCBjb3VudGVyPywgZmllbGROYW1lPykgPT4ge1xuICAgIGxldCBldmVudFRtcGwgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgIGlmIChrZXkgJiYga2V5LmVuZHNXaXRoKCcuZXZlbnQnKSkge1xuICAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBrZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgICAgICAgY29uc3QgY291bnRlclRsID0gY291bnRlciA/IGAke2NvdW50ZXJ9LmAgOiAnJztcbiAgICAgICAgICAgZXZlbnRUbXBsID0gYCAke2V2ZW50VG1wbH0gKCR7ZXZlbnROYW1lfSk9XCIke2NvdW50ZXJUbH10cmlnZ2VyVXBsb2FkRXZlbnQoJGV2ZW50LCAnJHtldmVudE5hbWV9JywgJyR7ZmllbGROYW1lfScsIHJvdylcIiBgO1xuICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXZlbnRUbXBsO1xufTtcblxuLy8gTWV0aG9kIHRvIGdldCB0aGUgZm9ybSB3aWRnZXQgdGVtcGxhdGVcbmV4cG9ydCBjb25zdCBnZXRGb3JtV2lkZ2V0VGVtcGxhdGUgPSAod2lkZ2V0VHlwZTogc3RyaW5nLCBpbm5lclRtcGw6IHN0cmluZywgYXR0cnM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBvcHRpb25zOiBhbnkgPSB7fSkgPT4ge1xuICAgIGxldCB0bXBsO1xuICAgIGNvbnN0IHVwZGF0ZU9uID0gYXR0cnMuZ2V0KCd1cGRhdGVvbicpO1xuICAgIGNvbnN0IHVwZGF0ZU9uVG1wbCA9IHVwZGF0ZU9uID8gYHVwZGF0ZW9uPVwiJHt1cGRhdGVPbn1cImAgOiAnJztcbiAgICBjb25zdCBzaG93aW5lZGl0bW9kZSA9IGF0dHJzLmdldCgnc2hvd2luZWRpdG1vZGUnKSB8fCBhdHRycy5nZXQoJ3Nob3dpbmVkaXRtb2RlLmJpbmQnKSB8fCB0cnVlO1xuICAgIGNvbnN0IHNob3dUbXBsOiBzdHJpbmcgID0gc2hvd2luZWRpdG1vZGUgPT0gJ2ZhbHNlJz8gYHNob3c9XCIke3Nob3dpbmVkaXRtb2RlfVwiYDogYHNob3cuYmluZD1cIiR7c2hvd2luZWRpdG1vZGV9XCJgO1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TZWFyY2ggdHlwZT1cImF1dG9jb21wbGV0ZVwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJncm91cFwiIHdtQ2hlY2tib3hzZXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNISVBTOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgd21DaGlwcyBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ29sb3JQaWNrZXIgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUN1cnJlbmN5ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bU51bWJlciAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwibnVtYmVyXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5QQVNTV09SRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJwYXNzd29yZFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQURJT1NFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJyYWRpb2dyb3VwXCIgd21SYWRpb3NldCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtUmF0aW5nICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SaWNoVGV4dEVkaXRvciByb2xlPVwidGV4dGJveFwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0VMRUNUOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20tc2VsZWN0ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3dtLXNlbGVjdD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVE9HR0xFOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpID09PSAndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRvZ2dsZVwiICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TbGlkZXIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Td2l0Y2ggJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUOlxuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gb3B0aW9ucy5pbnB1dFR5cGUgfHwgJ2lucHV0dHlwZSc7XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCIke2F0dHJzLmdldChpbnB1dFR5cGUpIHx8ICd0ZXh0J31cIiAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVEVYVEFSRUE6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS10ZXh0YXJlYSAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS10ZXh0YXJlYT5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVVBMT0FEOlxuICAgICAgICAgICAgY29uc3QgY291bnRlciA9IG9wdGlvbnMuY291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHBDb3VudGVyID0gb3B0aW9ucy5wQ291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFByb3BzID0gb3B0aW9ucy51cGxvYWRQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VG1wbCA9IGdldFVwbG9hZEV2ZW50VG1wbChhdHRycywgY291bnRlciwgdXBsb2FkUHJvcHMgJiYgdXBsb2FkUHJvcHMubmFtZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxmb3JtIG5hbWU9XCIke3VwbG9hZFByb3BzLmZvcm1OYW1lfVwiICR7aW5uZXJUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9jdXMtdGFyZ2V0IGNsYXNzPVwiZmlsZS11cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke3VwbG9hZFByb3BzLm5hbWV9XCIgJHtldmVudFRtcGx9ICR7c2hvd1RtcGx9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlID09PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT1cImhlaWdodDoyZW1cIiBjbGFzcz1cIndpIHdpLWZpbGVcIiBbc3JjXT1cIiR7Y291bnRlcn0uaHJlZlwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSAhPT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwid2kgd2ktZmlsZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgJHtpbm5lclRtcGx9IGNsYXNzPVwiYXBwLWJsb2ItdXBsb2FkXCIgW25nQ2xhc3NdPVwieydmaWxlLXJlYWRvbmx5JzogJHtjb3VudGVyfS5yZWFkb25seX1cIiAke2V2ZW50VG1wbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIke2NvdW50ZXJ9LnJlcXVpcmVkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHthdHRycy5nZXQoJ2tleScpIHx8IGF0dHJzLmdldCgnbmFtZScpfV9mb3JtV2lkZ2V0XCIgW3JlYWRvbmx5XT1cIiR7Y291bnRlcn0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhJHtwQ291bnRlcn0uaXNVcGRhdGVNb2RlXCIgW2FjY2VwdF09XCIke2NvdW50ZXJ9LnBlcm1pdHRlZFwiICR7c2hvd1RtcGx9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidGV4dFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWlyZWRGb3JtV2lkZ2V0ID0gKHdpZGdldFR5cGUpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNlYXJjaCc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNoaXBzJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tY29sb3JwaWNrZXInO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXJyZW5jeSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGV0aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yYXRpbmcnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJJQ0hURVhUOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yaWNodGV4dGVkaXRvcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0xJREVSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1zbGlkZXInO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICd3bS10ZXh0JztcbiAgICB9XG59O1xuXG4vLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIGFkZCBkYXRhc2V0Ym91bmRleHByIGF0dHJpYnV0ZSBmb3Igbm9kZVxuY29uc3QgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZSA9IChjaGlsZE5vZGU6IEVsZW1lbnQsIGF0dHI6IEF0dHJpYnV0ZSwgYXR0clZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyVmFsdWUgPSBhdHRyVmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgY29uc3QgZGF0YXNldEJvdW5kQXR0cmlidXRlID0gY2hpbGROb2RlLmF0dHJzLmZpbmQoIGEgPT4gYS5uYW1lID09PSAnZGF0YXNldGJvdW5kZXhwcicpO1xuICAgIGlmIChhdHRyLm5hbWUgPT09ICdkYXRhc2V0JyAmJiAhZGF0YXNldEJvdW5kQXR0cmlidXRlKSB7XG4gICAgICAgIGNoaWxkTm9kZS5hdHRycy5wdXNoKG5ldyBBdHRyaWJ1dGUoJ2RhdGFzZXRib3VuZGV4cHInLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgYXR0ci5rZXlTcGFuLCBhdHRyLnZhbHVlU3BhbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpKTtcbiAgICB9XG59O1xuXG5cbi8qKlxuICogZXhwOiBVc2VyIGJ1aWx0IGJpbmQgZXhwcmVzc2lvblxuICogIFRvIGNoZWNrIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9ucy5cbiAqICBJZiB1c2VyIHVzZSB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbiBpdCB3aWxsIGNoZWNrIGluIHRoZSBleHAuIHRoYXQgXCJjdXN0b21cIiBzdHJpbmcgZXhpc3Qgb3Igbm90IHdpdGggKDopIHN5bnRheC5cbiAqICBFZzogY3VzdG9tOlxuICogICAgICBjdXN0b20gICAgOlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uID0gZnVuY3Rpb24oZXhwKXtcbiAgICBsZXQgY3VzdG9tUmVnRXggPSAvKGN1c3RvbShcXHMqOikpL2c7XG4gICAgbGV0IG1hdGNoZXMgPSBleHAubWF0Y2goY3VzdG9tUmVnRXgpO1xuICAgIHJldHVybiBtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoO1xufVxuXG5cbi8vIFRoZSBib3VuZCB2YWx1ZSBpcyByZXBsYWNlZCB3aXRoIHt7aXRlbS5maWVsZG5hbWV9fSBoZXJlLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgbGl2ZUxpc3Qgd2hlbiBjb21waWxpbmcgaW5uZXIgZWxlbWVudHNcbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZUF0dHJzID0gKHJvb3ROb2RlOiBFbGVtZW50IHwgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQ6IHN0cmluZywgd2lkZ2V0TmFtZTogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nID0gJycsIHJlZmVyZW5jZU5hbWU6IHN0cmluZyA9ICdpdGVtJykgPT4ge1xuXG4gICAgY29uc3Qgc2FuaXRpemVkUGFyZW50RGF0YXNldCA9IHBhcmVudERhdGFTZXQucmVwbGFjZSgvKFteYS16QS1aMC05Ll0pL2csICdcXFxcJDEnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgc2FuaXRpemVkUGFyZW50RGF0YXNldCArICcpKFxcXFxbMFxcXFxdKT8oLmRhdGFcXFxcW1xcXFwkaVxcXFxdKT8oLmNvbnRlbnRcXFxcW1xcXFwkaVxcXFxdKT8oXFxcXFtcXFxcJGlcXFxcXSk/JywgJ2cnKTtcbiAgICBsZXQgY3VycmVudEl0ZW1SZWdFeDtcbiAgICBsZXQgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXg7XG4gICAgbGV0IGZvcm1XaWRnZXRzUmVnZXg7XG4gICAgbGV0IG5vZGVzOiBBcnJheTxFbGVtZW50PjtcbiAgICBjb25zdCB3aWRnZXRMaXN0ID0ge1xuICAgICAgICAnd20tbGlzdCc6IFsnaXRlbWNsYXNzJywgJ2Rpc2FibGVpdGVtJywgJ2RhdGFzZXQnXVxuICAgIH07XG5cbiAgICBpZiAod2lkZ2V0TmFtZSkge1xuICAgICAgICBjdXJyZW50SXRlbVJlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbSlcXFxcYmAsICdnJyk7XG4gICAgICAgIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbVdpZGdldHMpXFxcXGJgLCAnZycpO1xuICAgICAgICBmb3JtV2lkZ2V0c1JlZ2V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuKC4qKS4oZm9ybVdpZGdldHN8ZmlsdGVyV2lkZ2V0cykpXFxcXGJgLCAnZycpO1xuICAgIH1cblxuICAgIGlmICghaXNBcnJheShyb290Tm9kZSkpIHtcbiAgICAgICAgLy8gW1dNUy0xNjcxMl0sW1dNUy0xNjc2OV0sW1dNUy0xNjgwNV0gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3IgdGhlIHdpZGdldHMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICBub2RlcyA9IHdpZGdldExpc3RbKHJvb3ROb2RlIGFzIGFueSkubmFtZV0gPyBbcm9vdE5vZGUgYXMgRWxlbWVudF0gOiAoKHJvb3ROb2RlIGFzIGFueSkuY2hpbGRyZW4gfHwgW10pIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzID0gcm9vdE5vZGUgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChjaGlsZE5vZGUubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBjaGlsZE5vZGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGFTZXRMZW5ndGhSZWdleCA9ICBuZXcgUmVnRXhwKCdiaW5kOlxcXFxzKlxcXFwoKicgKyBwYXJlbnREYXRhU2V0ICsgJ1xcXFwpKlxcXFwubGVuZ3RoXFxcXCkqJyk7XG4gICAgICAgICAgICBjaGlsZE5vZGUuYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdGhlIGV4dHJhIHNwYWNlcyBpbiBiaW5kaW5nc1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF0dHIudmFsdWUgJiYgYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgYXR0cmlidXRlcyBjb25hdGFpbnMgc2FtZSBkYXRhc2V0IHZhcmlhYmxlIGJpbmRpbmcgdGhlbiB0aG9zZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciBzcGVjaWZpYyBwcm9wZXJ0aWVzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRMaXN0W25vZGVOYW1lXSB8fCAod2lkZ2V0TGlzdFtub2RlTmFtZV0gJiYgd2lkZ2V0TGlzdFtub2RlTmFtZV0uaW5kZXhPZihhdHRyLm5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmluZDp4eHh4eC54eHh4XCIsIGVpdGhlciB0aGUgZGF0YVNldC9zY29wZURhdGFTZXQgaGFzIHRvIGNvbnRhaW4gXCJ4eHh4Lnh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW1dNUy0xNzkwOF06IGlmIGNoaWxkIHdpZGdldCBjb250YWlucyBiaW5kIGV4cHJlc3Npb24gYXMgcGFyZW5kYXRhc2V0Lmxlbmd0aCA+IDAgdGhlbiBkb250IHJlcGxhY2UgaXQgd2l0aCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModmFsdWUsIHBhcmVudERhdGFTZXQpICYmIHZhbHVlICE9PSAnYmluZDonICsgcGFyZW50RGF0YVNldCAmJiAhcGFyZW50RGF0YVNldExlbmd0aFJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZWdleCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnYmluZDonICsgdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaXMgdGhpcyBjdXN0b20gYmluZCBleHByZXNzaW9uIGFuZCBjdXJyZW50V2lkZ2V0SXRlbSByZWdleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbih2YWx1ZSkgJiYgY3VycmVudEl0ZW1SZWdFeCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgY3VycmVudEl0ZW0gYXMgbGFzdCBhcmd1bWVudCBmb3IgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgY3VzdG9tIHBpcGVzKGV4cHJlc2lvbiksIGl0IHdpbGwgc2VuZCB0aGUgY3VycmVudEl0ZW0gYXMgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gICc6JysgY3VycmVudEl0ZW1SZWdFeC5leGVjKGN1cnJlbnRJdGVtUmVnRXguc291cmNlKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBpdGVtIGlmIHdpZGdldCBwcm9wZXJ0eSBpcyBib3VuZCB0byBsaXZlbGlzdCBjdXJyZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1SZWdFeCAmJiBjdXJyZW50SXRlbVJlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgdmFsdWUgZnJvbSAnYmluZDpXaWRnZXRzLmZvcm1OYW1lLmZvcm1XaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJyB0byAnYmluZDpXaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuZm9ybVdpZGdldHMnKSB8fCB2YWx1ZS5pbmNsdWRlcygnLmZpbHRlcldpZGdldHMnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShmb3JtV2lkZ2V0c1JlZ2V4LCAnV2lkZ2V0cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVJlZ0V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggJiYgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVdpZGdldHNSZWdFeCwgYCR7aW5zdGFuY2V9Y3VycmVudEl0ZW1XaWRnZXRzYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVUZW1wbGF0ZUF0dHJzKGNoaWxkTm9kZS5jaGlsZHJlbiBhcyBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldCwgd2lkZ2V0TmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyBJZiBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGRvbnQgYWRkIHRoZSBuZ01vZGVsXG5leHBvcnQgY29uc3QgZ2V0TmdNb2RlbEF0dHIgPSBhdHRycyA9PiB7XG4gICAgaWYgKGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lJykgfHwgYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUuYmluZCcpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuICduZ01vZGVsJztcbn07XG5cbmNvbnN0IHJvd0FjdGlvbkF0dHJzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnZGlzcGxheS1uYW1lJywgJ2NhcHRpb24nXSxcbiAgICAgICAgWydkaXNwbGF5LW5hbWUuYmluZCcsICdjYXB0aW9uLmJpbmQnXSxcbiAgICAgICAgWyd0aXRsZScsICdoaW50J10sXG4gICAgICAgIFsndGl0bGUuYmluZCcsICdoaW50LmJpbmQnXSxcbiAgICAgICAgWydzaG93JywgJ3Nob3cnXSxcbiAgICAgICAgWydzaG93LmJpbmQnLCAnc2hvdy5iaW5kJ10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCAnZGlzYWJsZWQnXSxcbiAgICAgICAgWydkaXNhYmxlZC5iaW5kJywgJ2Rpc2FibGVkLmJpbmQnXSxcbiAgICAgICAgWydoeXBlcmxpbmsnLCAnaHlwZXJsaW5rJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rLmJpbmQnLCAnaHlwZXJsaW5rLmJpbmQnXSxcbiAgICAgICAgWyd0YXJnZXQnLCAndGFyZ2V0J10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxjbGFzcy5iaW5kJywgJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCcsICdjb25kaXRpb25hbHN0eWxlLmJpbmQnXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCBnZXRSb3dBY3Rpb25BdHRycyA9IGF0dHJzID0+IHtcbiAgICBsZXQgdG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHIgPSByb3dBY3Rpb25BdHRycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKG5ld0F0dHIpIHtcbiAgICAgICAgICAgIHRtcGwgKz0gYCR7bmV3QXR0cn09XCIke3ZhbH1cIiBgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuIl19
|