@wavemaker/app-ng-runtime 11.13.0-rc.6255 → 11.14.0-rc.6276
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/build-task/bundles/index.umd.js +34 -5
- package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
- package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
- package/build-task/esm2022/basic/html/html.build.mjs +15 -0
- package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
- package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
- package/build-task/esm2022/basic/label/label.build.mjs +25 -0
- package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
- package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
- package/build-task/esm2022/basic/video/video.build.mjs +10 -0
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +8 -3
- package/build-task/esm2022/data/form/form.build.mjs +8 -1
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +14 -3
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +2 -2
- package/build-task/esm2022/page/page-content/page-content.build.mjs +8 -2
- package/build-task/esm2022/public_api.mjs +10 -10
- package/build-task/fesm2022/index.mjs +36 -7
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/build-task/package.json +3 -6
- package/build-task/public_api.d.ts +9 -9
- package/components/advanced/carousel/bundles/index.umd.js +33 -38
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +16 -16
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +19 -24
- package/components/advanced/carousel/fesm2022/index.mjs +34 -39
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/package.json +0 -3
- package/components/advanced/custom/bundles/index.umd.js +48 -48
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +31 -31
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +15 -15
- package/components/advanced/custom/fesm2022/index.mjs +45 -45
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- package/components/advanced/custom/package.json +0 -3
- package/components/advanced/login/bundles/index.umd.js +33 -53
- package/components/advanced/login/esm2022/login.component.mjs +26 -47
- package/components/advanced/login/fesm2022/index.mjs +27 -47
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +1 -1
- package/components/advanced/login/package.json +0 -3
- package/components/advanced/marquee/bundles/index.umd.js +19 -19
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +20 -20
- package/components/advanced/marquee/fesm2022/index.mjs +20 -20
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- package/components/advanced/marquee/package.json +0 -3
- package/components/base/bundles/index.umd.js +4272 -4243
- package/components/base/esm2022/pipes/custom-pipes.mjs +14 -12
- package/components/base/esm2022/pipes/wm-pipe.mjs +3 -3
- package/components/base/esm2022/public_api.mjs +1 -2
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +154 -1
- package/components/base/esm2022/widgets/common/container/container.props.mjs +7 -2
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +1 -1
- package/components/base/fesm2022/index.mjs +4280 -4251
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/package.json +2 -2
- package/components/base/pipes/custom-pipes.d.ts +4 -2
- package/components/base/pipes/wm-pipe.d.ts +1 -1
- package/components/base/public_api.d.ts +0 -1
- package/components/base/widgets/common/container/container.directive.d.ts +9 -0
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -2
- package/components/basic/anchor/bundles/index.umd.js +192 -0
- package/components/basic/anchor/esm2022/anchor.component.mjs +143 -0
- package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
- package/components/basic/anchor/esm2022/index.mjs +5 -0
- package/components/basic/anchor/esm2022/public_api.mjs +2 -0
- package/components/basic/anchor/fesm2022/index.mjs +175 -0
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
- package/components/basic/{progress → anchor}/index.d.ts +1 -1
- package/components/basic/{default → anchor}/package.json +1 -4
- package/components/basic/anchor/public_api.d.ts +1 -0
- package/components/basic/audio/bundles/index.umd.js +83 -0
- package/components/basic/audio/esm2022/audio.component.mjs +41 -0
- package/components/basic/audio/esm2022/audio.props.mjs +19 -0
- package/components/{input/epoch → basic/audio}/esm2022/index.mjs +1 -1
- package/components/basic/audio/esm2022/public_api.mjs +2 -0
- package/components/basic/audio/fesm2022/index.mjs +65 -0
- package/components/basic/audio/fesm2022/index.mjs.map +1 -0
- package/components/{input/epoch → basic/audio}/index.d.ts +1 -1
- package/components/{input/default → basic/audio}/package.json +2 -5
- package/components/basic/audio/public_api.d.ts +1 -0
- package/components/basic/html/bundles/index.umd.js +110 -0
- package/components/basic/html/esm2022/html.directive.mjs +76 -0
- package/components/basic/html/esm2022/html.props.mjs +12 -0
- package/components/basic/html/esm2022/index.mjs +5 -0
- package/components/basic/html/esm2022/public_api.mjs +2 -0
- package/components/basic/html/fesm2022/index.mjs +93 -0
- package/components/basic/html/fesm2022/index.mjs.map +1 -0
- package/components/basic/{default → html}/index.d.ts +1 -1
- package/components/{input/epoch → basic/html}/package.json +1 -4
- package/components/basic/html/public_api.d.ts +1 -0
- package/components/basic/icon/bundles/index.umd.js +80 -0
- package/components/basic/icon/esm2022/icon.component.mjs +38 -0
- package/components/basic/icon/esm2022/icon.props.mjs +19 -0
- package/components/basic/icon/esm2022/index.mjs +5 -0
- package/components/basic/icon/esm2022/public_api.mjs +2 -0
- package/components/basic/icon/fesm2022/index.mjs +62 -0
- package/components/basic/icon/fesm2022/index.mjs.map +1 -0
- package/components/{input/default → basic/icon}/index.d.ts +1 -1
- package/components/basic/{progress → icon}/package.json +1 -4
- package/components/basic/icon/public_api.d.ts +1 -0
- package/components/basic/iframe/.npmignore +2 -0
- package/components/basic/iframe/bundles/index.umd.js +101 -0
- package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
- package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
- package/components/basic/iframe/esm2022/index.mjs +5 -0
- package/components/basic/iframe/esm2022/public_api.mjs +2 -0
- package/components/basic/iframe/fesm2022/index.mjs +84 -0
- package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
- package/components/basic/iframe/index.d.ts +5 -0
- package/components/basic/iframe/package.json +20 -0
- package/components/basic/iframe/public_api.d.ts +1 -0
- package/components/basic/label/.npmignore +2 -0
- package/components/basic/label/bundles/index.umd.js +109 -0
- package/components/basic/label/esm2022/index.mjs +5 -0
- package/components/basic/label/esm2022/label.directive.mjs +71 -0
- package/components/basic/label/esm2022/label.props.mjs +17 -0
- package/components/basic/label/esm2022/public_api.mjs +2 -0
- package/components/basic/label/fesm2022/index.mjs +93 -0
- package/components/basic/label/fesm2022/index.mjs.map +1 -0
- package/components/basic/label/index.d.ts +5 -0
- package/components/basic/{default/label → label}/label.directive.d.ts +1 -1
- package/components/basic/label/package.json +20 -0
- package/components/basic/label/public_api.d.ts +1 -0
- package/components/basic/picture/.npmignore +2 -0
- package/components/basic/picture/bundles/index.umd.js +138 -0
- package/components/basic/{default → picture}/esm2022/index.mjs +1 -1
- package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
- package/components/basic/picture/esm2022/picture.props.mjs +23 -0
- package/components/basic/picture/esm2022/public_api.mjs +2 -0
- package/components/basic/picture/fesm2022/index.mjs +121 -0
- package/components/basic/picture/fesm2022/index.mjs.map +1 -0
- package/components/basic/picture/index.d.ts +5 -0
- package/components/basic/picture/package.json +20 -0
- package/components/basic/picture/public_api.d.ts +1 -0
- package/components/basic/progress/progress-bar/.npmignore +2 -0
- package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
- package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
- package/components/basic/progress/{esm2022/progress-bar → progress-bar/esm2022}/progress-bar.props.mjs +1 -1
- package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-bar/index.d.ts +5 -0
- package/components/basic/progress/progress-bar/package.json +20 -0
- package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
- package/components/basic/progress/progress-circle/.npmignore +2 -0
- package/components/basic/progress/progress-circle/bundles/index.umd.js +161 -0
- package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +120 -0
- package/components/basic/progress/{esm2022/progress-circle → progress-circle/esm2022}/progress-circle.props.mjs +1 -1
- package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +145 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-circle/index.d.ts +5 -0
- package/components/basic/progress/progress-circle/package.json +20 -0
- package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
- package/components/basic/progress/progress-utils/.npmignore +2 -0
- package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
- package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
- package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-utils/index.d.ts +5 -0
- package/components/basic/progress/progress-utils/package.json +20 -0
- package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/bundles/index.umd.js +23 -40
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +19 -38
- package/components/basic/rich-text-editor/fesm2022/index.mjs +21 -39
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- package/components/basic/rich-text-editor/package.json +0 -3
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
- package/components/basic/search/bundles/index.umd.js +109 -313
- package/components/basic/search/esm2022/scrollable.directive.mjs +13 -14
- package/components/basic/search/esm2022/search.component.mjs +40 -246
- package/components/basic/search/fesm2022/index.mjs +52 -256
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/package.json +0 -3
- package/components/basic/search/scrollable.directive.d.ts +2 -3
- package/components/basic/search/search.component.d.ts +1 -1
- package/components/basic/spinner/.npmignore +2 -0
- package/components/basic/spinner/bundles/index.umd.js +118 -0
- package/components/{input/default → basic/spinner}/esm2022/index.mjs +1 -1
- package/components/basic/spinner/esm2022/public_api.mjs +2 -0
- package/components/basic/spinner/esm2022/spinner.component.mjs +79 -0
- package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
- package/components/basic/spinner/fesm2022/index.mjs +103 -0
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
- package/components/basic/spinner/index.d.ts +5 -0
- package/components/basic/spinner/package.json +20 -0
- package/components/basic/spinner/public_api.d.ts +1 -0
- package/components/basic/tree/bundles/index.umd.js +34 -38
- package/components/basic/tree/esm2022/tree.component.mjs +31 -36
- package/components/basic/tree/fesm2022/index.mjs +32 -36
- package/components/basic/tree/fesm2022/index.mjs.map +1 -1
- package/components/basic/tree/package.json +0 -3
- package/components/basic/video/.npmignore +2 -0
- package/components/basic/video/bundles/index.umd.js +116 -0
- package/components/basic/video/esm2022/index.mjs +5 -0
- package/components/basic/video/esm2022/public_api.mjs +2 -0
- package/components/basic/video/esm2022/video.component.mjs +70 -0
- package/components/basic/video/esm2022/video.props.mjs +24 -0
- package/components/basic/video/fesm2022/index.mjs +99 -0
- package/components/basic/video/fesm2022/index.mjs.map +1 -0
- package/components/basic/video/index.d.ts +5 -0
- package/components/basic/video/package.json +20 -0
- package/components/basic/video/public_api.d.ts +1 -0
- package/components/chart/bundles/index.umd.js +22 -75
- package/components/chart/esm2022/chart.component.mjs +20 -74
- package/components/chart/fesm2022/index.mjs +21 -74
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/chart/package.json +0 -3
- package/components/containers/accordion/bundles/index.umd.js +45 -100
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +19 -70
- package/components/containers/accordion/esm2022/accordion.directive.mjs +24 -29
- package/components/containers/accordion/fesm2022/index.mjs +43 -98
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/package.json +0 -3
- package/components/containers/layout-grid/bundles/index.umd.js +60 -60
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +23 -23
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +20 -20
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +20 -20
- package/components/containers/layout-grid/fesm2022/index.mjs +61 -61
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- package/components/containers/layout-grid/package.json +0 -3
- package/components/containers/linear-layout/bundles/index.umd.js +38 -38
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +20 -20
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +20 -20
- package/components/containers/linear-layout/fesm2022/index.mjs +39 -39
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- package/components/containers/linear-layout/package.json +0 -3
- package/components/containers/panel/bundles/index.umd.js +62 -223
- package/components/containers/panel/esm2022/panel.component.mjs +29 -190
- package/components/containers/panel/fesm2022/index.mjs +29 -190
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/package.json +0 -3
- package/components/containers/tabs/bundles/index.umd.js +95 -204
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +34 -51
- package/components/containers/tabs/esm2022/tabs.component.mjs +29 -123
- package/components/containers/tabs/fesm2022/index.mjs +61 -170
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/package.json +0 -3
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -4
- package/components/containers/tile/bundles/index.umd.js +19 -19
- package/components/containers/tile/esm2022/tile.directive.mjs +20 -20
- package/components/containers/tile/fesm2022/index.mjs +20 -20
- package/components/containers/tile/fesm2022/index.mjs.map +1 -1
- package/components/containers/tile/package.json +0 -3
- package/components/containers/wizard/bundles/index.umd.js +119 -302
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +21 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +32 -45
- package/components/containers/wizard/esm2022/wizard.component.mjs +30 -201
- package/components/containers/wizard/fesm2022/index.mjs +81 -264
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/package.json +0 -3
- package/components/containers/wizard/wizard.component.d.ts +1 -1
- package/components/data/card/bundles/index.umd.js +108 -208
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +15 -15
- package/components/data/card/esm2022/card-content/card-content.component.mjs +19 -34
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +15 -15
- package/components/data/card/esm2022/card.component.mjs +21 -107
- package/components/data/card/fesm2022/index.mjs +67 -167
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/card/package.json +0 -3
- package/components/data/form/bundles/index.umd.js +287 -467
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +22 -22
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +80 -91
- package/components/data/form/esm2022/form-widget.directive.mjs +31 -31
- package/components/data/form/esm2022/form.component.mjs +88 -251
- package/components/data/form/esm2022/form.props.mjs +1 -1
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +19 -24
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +15 -15
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +15 -15
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +23 -25
- package/components/data/form/fesm2022/index.mjs +288 -468
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/package.json +0 -3
- package/components/data/list/bundles/index.umd.js +80 -360
- package/components/data/list/esm2022/list-item.directive.mjs +27 -34
- package/components/data/list/esm2022/list.animator.mjs +1 -1
- package/components/data/list/esm2022/list.component.mjs +55 -330
- package/components/data/list/esm2022/list.props.mjs +1 -1
- package/components/data/list/fesm2022/index.mjs +79 -358
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +3 -3
- package/components/data/list/list.component.d.ts +2 -4
- package/components/data/list/package.json +0 -3
- package/components/data/live-table/bundles/index.umd.js +28 -39
- package/components/data/live-table/esm2022/live-table.component.mjs +25 -37
- package/components/data/live-table/fesm2022/index.mjs +26 -37
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/package.json +0 -3
- package/components/data/pagination/bundles/index.umd.js +33 -505
- package/components/data/pagination/esm2022/pagination.component.mjs +33 -507
- package/components/data/pagination/esm2022/pagination.props.mjs +1 -1
- package/components/data/pagination/fesm2022/index.mjs +32 -505
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/package.json +0 -3
- package/components/data/pagination/pagination.component.d.ts +1 -1
- package/components/data/table/bundles/index.umd.js +310 -457
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +22 -22
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +50 -71
- package/components/data/table/esm2022/table-column/table-column.props.mjs +1 -1
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +26 -26
- package/components/data/table/esm2022/table-cud.directive.mjs +15 -15
- package/components/data/table/esm2022/table-filter.directive.mjs +16 -16
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +24 -24
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +29 -29
- package/components/data/table/esm2022/table.component.mjs +135 -263
- package/components/data/table/esm2022/table.props.mjs +2 -1
- package/components/data/table/fesm2022/index.mjs +312 -459
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/package.json +0 -3
- package/components/data/table/table-column/table-column.directive.d.ts +1 -1
- package/components/data/table/table.component.d.ts +3 -0
- package/components/dialogs/alert-dialog/bundles/index.umd.js +50 -79
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +32 -62
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +32 -61
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/alert-dialog/package.json +0 -3
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +36 -72
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +34 -71
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +35 -71
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/package.json +0 -3
- package/components/dialogs/default/bundles/index.umd.js +85 -232
- package/components/dialogs/default/esm2022/base-dialog.mjs +14 -14
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -18
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +20 -20
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +34 -179
- package/components/dialogs/default/fesm2022/index.mjs +80 -227
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/package.json +0 -3
- package/components/dialogs/design-dialog/bundles/index.umd.js +52 -108
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +50 -107
- package/components/dialogs/design-dialog/fesm2022/index.mjs +51 -107
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/package.json +0 -3
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +33 -81
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +32 -82
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +33 -82
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/package.json +0 -3
- package/components/dialogs/login-dialog/bundles/index.umd.js +22 -29
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +23 -30
- package/components/dialogs/login-dialog/fesm2022/index.mjs +23 -30
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/login-dialog/package.json +0 -3
- package/components/dialogs/partial-dialog/bundles/index.umd.js +39 -85
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +38 -85
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +39 -85
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/package.json +0 -3
- package/components/input/base-form/.npmignore +2 -0
- package/components/input/base-form/bundles/index.umd.js +133 -0
- package/components/input/base-form/esm2022/base-form.component.mjs +110 -0
- package/components/input/base-form/esm2022/index.mjs +5 -0
- package/components/input/base-form/esm2022/public_api.mjs +2 -0
- package/components/input/base-form/fesm2022/index.mjs +117 -0
- package/components/input/base-form/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form/index.d.ts +5 -0
- package/components/input/base-form/package.json +20 -0
- package/components/input/base-form/public_api.d.ts +1 -0
- package/components/input/base-form-custom/.npmignore +2 -0
- package/components/input/{default → base-form-custom}/base-form-custom.component.d.ts +1 -1
- package/components/input/base-form-custom/bundles/index.umd.js +118 -0
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +94 -0
- package/components/input/base-form-custom/esm2022/index.mjs +5 -0
- package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
- package/components/input/base-form-custom/fesm2022/index.mjs +101 -0
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form-custom/index.d.ts +5 -0
- package/components/input/base-form-custom/package.json +20 -0
- package/components/input/base-form-custom/public_api.d.ts +1 -0
- package/components/input/button/.npmignore +2 -0
- package/components/input/button/bundles/index.umd.js +98 -0
- package/components/input/button/esm2022/button.component.mjs +50 -0
- package/components/input/button/esm2022/button.props.mjs +26 -0
- package/components/input/button/esm2022/index.mjs +5 -0
- package/components/input/button/esm2022/public_api.mjs +2 -0
- package/components/input/button/fesm2022/index.mjs +81 -0
- package/components/input/button/fesm2022/index.mjs.map +1 -0
- package/components/input/button/index.d.ts +5 -0
- package/components/input/button/package.json +20 -0
- package/components/input/button/public_api.d.ts +1 -0
- package/components/input/button-group/.npmignore +2 -0
- package/components/input/button-group/bundles/index.umd.js +80 -0
- package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
- package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
- package/components/input/button-group/esm2022/index.mjs +5 -0
- package/components/input/button-group/esm2022/public_api.mjs +2 -0
- package/components/input/button-group/fesm2022/index.mjs +62 -0
- package/components/input/button-group/fesm2022/index.mjs.map +1 -0
- package/components/input/button-group/index.d.ts +5 -0
- package/components/input/button-group/package.json +20 -0
- package/components/input/button-group/public_api.d.ts +1 -0
- package/components/input/calendar/bundles/index.umd.js +25 -38
- package/components/input/calendar/esm2022/calendar.component.mjs +22 -36
- package/components/input/calendar/fesm2022/index.mjs +23 -36
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/package.json +0 -3
- package/components/input/caption-position/.npmignore +2 -0
- package/components/input/caption-position/bundles/index.umd.js +196 -0
- package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
- package/components/input/caption-position/esm2022/index.mjs +5 -0
- package/components/input/caption-position/esm2022/public_api.mjs +2 -0
- package/components/input/caption-position/fesm2022/index.mjs +178 -0
- package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
- package/components/input/caption-position/index.d.ts +5 -0
- package/components/input/caption-position/package.json +20 -0
- package/components/input/caption-position/public_api.d.ts +1 -0
- package/components/input/checkbox/.npmignore +2 -0
- package/components/input/checkbox/bundles/index.umd.js +190 -0
- package/components/input/{default/checkbox → checkbox}/checkbox.component.d.ts +1 -1
- package/components/input/checkbox/esm2022/checkbox.component.mjs +145 -0
- package/components/input/checkbox/esm2022/checkbox.props.mjs +27 -0
- package/components/{basic/progress → input/checkbox}/esm2022/index.mjs +1 -1
- package/components/input/checkbox/esm2022/public_api.mjs +2 -0
- package/components/input/checkbox/fesm2022/index.mjs +175 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
- package/components/input/checkbox/index.d.ts +5 -0
- package/components/input/checkbox/package.json +20 -0
- package/components/input/checkbox/public_api.d.ts +1 -0
- package/components/input/checkboxset/.npmignore +2 -0
- package/components/input/checkboxset/bundles/index.umd.js +151 -0
- package/components/input/{default/checkboxset → checkboxset}/checkboxset.component.d.ts +1 -1
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +99 -0
- package/components/input/checkboxset/esm2022/checkboxset.props.mjs +35 -0
- package/components/input/checkboxset/esm2022/index.mjs +5 -0
- package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
- package/components/input/checkboxset/fesm2022/index.mjs +138 -0
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
- package/components/input/checkboxset/index.d.ts +5 -0
- package/components/input/checkboxset/package.json +20 -0
- package/components/input/checkboxset/public_api.d.ts +1 -0
- package/components/input/chips/bundles/index.umd.js +94 -153
- package/components/input/chips/chips.component.d.ts +1 -1
- package/components/input/chips/esm2022/chips.component.mjs +41 -101
- package/components/input/chips/fesm2022/index.mjs +42 -101
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/package.json +0 -3
- package/components/input/color-picker/bundles/index.umd.js +35 -74
- package/components/input/color-picker/color-picker.component.d.ts +2 -2
- package/components/input/color-picker/esm2022/color-picker.component.mjs +34 -75
- package/components/input/color-picker/fesm2022/index.mjs +36 -75
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/package.json +0 -3
- package/components/input/composite/.npmignore +2 -0
- package/components/input/composite/bundles/index.umd.js +111 -0
- package/components/input/composite/esm2022/composite.directive.mjs +79 -0
- package/components/input/composite/esm2022/composite.props.mjs +10 -0
- package/components/input/composite/esm2022/index.mjs +5 -0
- package/components/input/composite/esm2022/public_api.mjs +2 -0
- package/components/input/composite/fesm2022/index.mjs +94 -0
- package/components/input/composite/fesm2022/index.mjs.map +1 -0
- package/components/input/composite/index.d.ts +5 -0
- package/components/input/composite/package.json +20 -0
- package/components/input/composite/public_api.d.ts +1 -0
- package/components/input/currency/bundles/index.umd.js +31 -52
- package/components/input/currency/currency.component.d.ts +1 -1
- package/components/input/currency/esm2022/currency.component.mjs +28 -50
- package/components/input/currency/fesm2022/index.mjs +30 -51
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/package.json +0 -3
- package/components/input/dataset-aware-form/.npmignore +2 -0
- package/components/input/dataset-aware-form/bundles/index.umd.js +328 -0
- package/components/input/{default → dataset-aware-form}/dataset-aware-form.component.d.ts +1 -1
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +307 -0
- package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
- package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs +314 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
- package/components/input/dataset-aware-form/index.d.ts +5 -0
- package/components/input/dataset-aware-form/package.json +20 -0
- package/components/input/dataset-aware-form/public_api.d.ts +1 -0
- package/components/input/epoch/base-date-time/.npmignore +2 -0
- package/components/input/epoch/{base-date-time.component.d.ts → base-date-time/base-date-time.component.d.ts} +1 -1
- package/components/input/epoch/base-date-time/bundles/index.umd.js +1086 -0
- package/components/input/epoch/{esm2022 → base-date-time/esm2022}/base-date-time.component.mjs +22 -31
- package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +1077 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/base-date-time/index.d.ts +5 -0
- package/components/input/epoch/base-date-time/package.json +20 -0
- package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date/.npmignore +2 -0
- package/components/input/epoch/date/bundles/index.umd.js +492 -0
- package/components/input/epoch/date/date.component.d.ts +2 -2
- package/components/input/epoch/date/esm2022/date.component.mjs +322 -0
- package/components/input/epoch/{esm2022/date → date/esm2022}/date.props.mjs +1 -1
- package/components/input/epoch/{esm2022/date → date/esm2022}/imaskUtil.mjs +1 -1
- package/components/input/epoch/date/esm2022/index.mjs +5 -0
- package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date/fesm2022/index.mjs +482 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date/index.d.ts +5 -0
- package/components/input/epoch/date/package.json +20 -0
- package/components/input/epoch/date/public_api.d.ts +1 -0
- package/components/input/epoch/date-time/.npmignore +2 -0
- package/components/input/epoch/date-time/bundles/index.umd.js +518 -0
- package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
- package/components/input/epoch/date-time/esm2022/date-time.component.mjs +458 -0
- package/components/input/epoch/{esm2022/date-time → date-time/esm2022}/date-time.props.mjs +1 -1
- package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs +509 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time/index.d.ts +5 -0
- package/components/input/epoch/date-time/package.json +20 -0
- package/components/input/epoch/date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date-time-picker/.npmignore +2 -0
- package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
- package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
- package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time-picker/index.d.ts +5 -0
- package/components/input/epoch/date-time-picker/package.json +20 -0
- package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
- package/components/input/epoch/picker/.npmignore +2 -0
- package/components/input/epoch/picker/bundles/index.umd.js +192 -0
- package/components/input/epoch/picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
- package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
- package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
- package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/picker/index.d.ts +5 -0
- package/components/input/epoch/picker/package.json +20 -0
- package/components/input/epoch/picker/public_api.d.ts +2 -0
- package/components/input/epoch/time/.npmignore +2 -0
- package/components/input/epoch/time/bundles/index.umd.js +397 -0
- package/components/input/epoch/time/esm2022/index.mjs +5 -0
- package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/time/esm2022/time.component.mjs +348 -0
- package/components/input/epoch/{esm2022/time → time/esm2022}/time.props.mjs +1 -1
- package/components/input/epoch/time/fesm2022/index.mjs +387 -0
- package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/time/index.d.ts +5 -0
- package/components/input/epoch/time/package.json +20 -0
- package/components/input/epoch/time/public_api.d.ts +1 -0
- package/components/input/epoch/time/time.component.d.ts +1 -1
- package/components/input/file-upload/bundles/index.umd.js +56 -348
- package/components/input/file-upload/esm2022/file-upload.component.mjs +20 -313
- package/components/input/file-upload/fesm2022/index.mjs +20 -312
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/package.json +0 -3
- package/components/input/number/.npmignore +2 -0
- package/components/input/number/bundles/index.umd.js +101 -0
- package/components/input/number/esm2022/index.mjs +5 -0
- package/components/input/number/esm2022/number.component.mjs +49 -0
- package/components/input/number/esm2022/number.props.mjs +35 -0
- package/components/input/number/esm2022/public_api.mjs +2 -0
- package/components/input/number/fesm2022/index.mjs +87 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -0
- package/components/input/number/index.d.ts +5 -0
- package/components/input/{default/number → number}/number.component.d.ts +1 -1
- package/components/input/number/package.json +20 -0
- package/components/input/number/public_api.d.ts +1 -0
- package/components/input/radioset/.npmignore +2 -0
- package/components/input/radioset/bundles/index.umd.js +136 -0
- package/components/input/radioset/esm2022/index.mjs +5 -0
- package/components/input/radioset/esm2022/public_api.mjs +2 -0
- package/components/input/radioset/esm2022/radioset.component.mjs +84 -0
- package/components/input/radioset/esm2022/radioset.props.mjs +35 -0
- package/components/input/radioset/fesm2022/index.mjs +123 -0
- package/components/input/radioset/fesm2022/index.mjs.map +1 -0
- package/components/input/radioset/index.d.ts +5 -0
- package/components/input/radioset/package.json +20 -0
- package/components/input/radioset/public_api.d.ts +1 -0
- package/components/input/{default/radioset → radioset}/radioset.component.d.ts +1 -1
- package/components/input/rating/bundles/index.umd.js +49 -103
- package/components/input/rating/esm2022/rating.component.mjs +24 -79
- package/components/input/rating/fesm2022/index.mjs +25 -79
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/package.json +0 -3
- package/components/input/rating/rating.component.d.ts +1 -1
- package/components/input/select/.npmignore +2 -0
- package/components/input/select/bundles/index.umd.js +219 -0
- package/components/input/select/esm2022/index.mjs +5 -0
- package/components/input/select/esm2022/public_api.mjs +2 -0
- package/components/input/select/esm2022/select.component.mjs +166 -0
- package/components/input/select/esm2022/select.props.mjs +36 -0
- package/components/input/select/fesm2022/index.mjs +205 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -0
- package/components/input/select/index.d.ts +5 -0
- package/components/input/select/package.json +20 -0
- package/components/input/select/public_api.d.ts +1 -0
- package/components/input/{default/select → select}/select.component.d.ts +1 -1
- package/components/input/slider/bundles/index.umd.js +44 -111
- package/components/input/slider/esm2022/slider.component.mjs +25 -95
- package/components/input/slider/esm2022/slider.props.mjs +1 -1
- package/components/input/slider/fesm2022/index.mjs +25 -93
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/package.json +0 -3
- package/components/input/slider/slider.component.d.ts +2 -2
- package/components/input/switch/.npmignore +2 -0
- package/components/input/switch/bundles/index.umd.js +204 -0
- package/components/input/switch/esm2022/index.mjs +5 -0
- package/components/input/switch/esm2022/public_api.mjs +2 -0
- package/components/input/switch/esm2022/switch.component.mjs +159 -0
- package/components/input/switch/esm2022/switch.props.mjs +28 -0
- package/components/input/switch/fesm2022/index.mjs +191 -0
- package/components/input/switch/fesm2022/index.mjs.map +1 -0
- package/components/input/switch/index.d.ts +5 -0
- package/components/input/switch/package.json +20 -0
- package/components/input/switch/public_api.d.ts +1 -0
- package/components/input/{default/switch → switch}/switch.component.d.ts +1 -1
- package/components/input/text/.npmignore +2 -0
- package/components/input/{default/text/base → text/base-input}/base-input.d.ts +1 -1
- package/components/input/text/bundles/index.umd.js +1070 -0
- package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
- package/components/input/text/esm2022/index.mjs +5 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +46 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
- package/components/input/text/esm2022/input-color/input-color.component.mjs +46 -0
- package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
- package/components/input/text/esm2022/input-email/input-email.component.mjs +46 -0
- package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
- package/components/input/text/esm2022/input-number/input-number.component.mjs +56 -0
- package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
- package/components/input/text/esm2022/input-text/input-text.component.mjs +121 -0
- package/components/input/text/esm2022/input-text/input-text.props.mjs +46 -0
- package/components/input/text/esm2022/number-locale/number-locale.mjs +539 -0
- package/components/input/text/esm2022/public_api.mjs +8 -0
- package/components/input/text/fesm2022/index.mjs +1054 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -0
- package/components/input/text/index.d.ts +5 -0
- package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.component.d.ts +1 -1
- package/components/input/{default/text/color → text/input-color}/input-color.component.d.ts +1 -1
- package/components/input/{default/text/email → text/input-email}/input-email.component.d.ts +1 -1
- package/components/input/{default/text/number → text/input-number}/input-number.component.d.ts +1 -1
- package/components/input/{default/text/text → text/input-text}/input-text.component.d.ts +1 -1
- package/components/input/{default/text/locale → text/number-locale}/number-locale.d.ts +1 -1
- package/components/input/text/package.json +20 -0
- package/components/input/text/public_api.d.ts +7 -0
- package/components/input/textarea/.npmignore +2 -0
- package/components/input/textarea/bundles/index.umd.js +101 -0
- package/components/input/textarea/esm2022/index.mjs +5 -0
- package/components/input/textarea/esm2022/public_api.mjs +2 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +53 -0
- package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
- package/components/input/textarea/fesm2022/index.mjs +87 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -0
- package/components/input/textarea/index.d.ts +5 -0
- package/components/input/textarea/package.json +20 -0
- package/components/input/textarea/public_api.d.ts +1 -0
- package/components/input/{default/textarea → textarea}/textarea.component.d.ts +1 -1
- package/components/navigation/breadcrumb/bundles/index.umd.js +37 -79
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +20 -64
- package/components/navigation/breadcrumb/fesm2022/index.mjs +21 -64
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- package/components/navigation/breadcrumb/package.json +0 -3
- package/components/navigation/menu/bundles/index.umd.js +247 -442
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +14 -19
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +13 -29
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +43 -100
- package/components/navigation/menu/esm2022/menu.component.mjs +53 -104
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +30 -37
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +20 -88
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +14 -14
- package/components/navigation/menu/fesm2022/index.mjs +174 -369
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +2 -3
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +3 -3
- package/components/navigation/menu/package.json +0 -3
- package/components/navigation/navbar/bundles/index.umd.js +32 -83
- package/components/navigation/navbar/esm2022/navbar.component.mjs +20 -72
- package/components/navigation/navbar/fesm2022/index.mjs +20 -71
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/package.json +0 -3
- package/components/navigation/popover/bundles/index.umd.js +31 -59
- package/components/navigation/popover/esm2022/popover.component.mjs +29 -58
- package/components/navigation/popover/fesm2022/index.mjs +31 -59
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/package.json +0 -3
- package/components/page/default/bundles/index.umd.js +109 -123
- package/components/page/default/esm2022/content/content.component.mjs +16 -25
- package/components/page/default/esm2022/layout.directive.mjs +21 -21
- package/components/page/default/esm2022/page-content/page-content.component.mjs +16 -23
- package/components/page/default/esm2022/page.directive.mjs +21 -21
- package/components/page/default/esm2022/router-outlet.directive.mjs +20 -20
- package/components/page/default/esm2022/spa-page.directive.mjs +21 -21
- package/components/page/default/fesm2022/index.mjs +111 -125
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/package.json +0 -3
- package/components/page/footer/bundles/index.umd.js +20 -20
- package/components/page/footer/esm2022/footer.directive.mjs +21 -21
- package/components/page/footer/fesm2022/index.mjs +21 -21
- package/components/page/footer/fesm2022/index.mjs.map +1 -1
- package/components/page/footer/package.json +0 -3
- package/components/page/header/bundles/index.umd.js +19 -26
- package/components/page/header/esm2022/header.component.mjs +16 -24
- package/components/page/header/fesm2022/index.mjs +17 -24
- package/components/page/header/fesm2022/index.mjs.map +1 -1
- package/components/page/header/package.json +0 -3
- package/components/page/left-panel/bundles/index.umd.js +30 -30
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +31 -31
- package/components/page/left-panel/fesm2022/index.mjs +31 -31
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/package.json +0 -3
- package/components/page/right-panel/bundles/index.umd.js +23 -23
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +24 -24
- package/components/page/right-panel/fesm2022/index.mjs +24 -24
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/right-panel/package.json +0 -3
- package/components/page/top-nav/bundles/index.umd.js +20 -20
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +21 -21
- package/components/page/top-nav/fesm2022/index.mjs +21 -21
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/page/top-nav/package.json +0 -3
- package/components/prefab/bundles/index.umd.js +41 -41
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +20 -20
- package/components/prefab/esm2022/prefab.directive.mjs +23 -23
- package/components/prefab/fesm2022/index.mjs +42 -42
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/components/prefab/package.json +0 -3
- package/core/bundles/index.umd.js +80 -61
- package/core/esm2022/services/constant.service.mjs +7 -7
- package/core/esm2022/services/custom-icons-loader.service.mjs +7 -7
- package/core/esm2022/services/field-type.service.mjs +7 -7
- package/core/esm2022/services/field-widget.service.mjs +7 -7
- package/core/esm2022/services/pagination.service.mjs +7 -7
- package/core/esm2022/services/script-loader.service.mjs +7 -7
- package/core/esm2022/services/state-persistence.service.mjs +7 -7
- package/core/esm2022/services/user-custom-pipe-manager.service.mjs +7 -7
- package/core/esm2022/services/utils.service.mjs +7 -7
- package/core/esm2022/services/viewport.service.mjs +7 -7
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/build-utils.mjs +21 -2
- package/core/fesm2022/index.mjs +80 -61
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/package.json +3 -6
- package/core/types/types.d.ts +2 -1
- package/http/bundles/index.umd.js +8 -8
- package/http/esm2022/http.service.mjs +9 -9
- package/http/fesm2022/index.mjs +8 -8
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/package.json +2 -5
- package/locales/moment/ar-dz.js +8 -8
- package/locales/moment/ar-ly.js +8 -8
- package/locales/moment/ar-ps.js +123 -0
- package/locales/moment/ar.js +8 -8
- package/locales/moment/be.js +2 -2
- package/locales/moment/bs.js +14 -4
- package/locales/moment/ca.js +6 -6
- package/locales/moment/cs.js +5 -4
- package/locales/moment/cv.js +2 -2
- package/locales/moment/en-au.js +6 -6
- package/locales/moment/en-ca.js +6 -6
- package/locales/moment/en-gb.js +6 -6
- package/locales/moment/en-ie.js +6 -6
- package/locales/moment/en-il.js +6 -6
- package/locales/moment/en-in.js +6 -6
- package/locales/moment/en-nz.js +6 -6
- package/locales/moment/en-sg.js +6 -6
- package/locales/moment/it.js +4 -4
- package/locales/moment/ku-kmr.js +125 -0
- package/locales/moment/lt.js +2 -2
- package/locales/moment/me.js +2 -2
- package/locales/moment/nb.js +4 -4
- package/locales/moment/nl-be.js +1 -1
- package/locales/moment/nl.js +1 -1
- package/locales/moment/oc-lnc.js +6 -6
- package/locales/moment/ru.js +2 -2
- package/locales/moment/sv.js +6 -6
- package/locales/moment/tet.js +6 -6
- package/locales/moment/tlh.js +8 -8
- package/locales/moment/tzl.js +2 -2
- package/locales/moment/uk.js +4 -4
- package/locales/moment/x-pseudo.js +6 -6
- package/locales/moment-timezone/moment-timezone-with-data.js +2 -2
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +5 -5
- package/oAuth/esm2022/oAuth.service.mjs +6 -6
- package/oAuth/fesm2022/index.mjs +5 -5
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/package.json +2 -5
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +3162 -3100
- package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -0
- package/runtime/base/esm2022/components/app-component/app.component.mjs +14 -95
- package/runtime/base/esm2022/components/app-spinner.component.mjs +34 -45
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +8 -7
- package/runtime/base/esm2022/components/base-layout.component.mjs +14 -21
- package/runtime/base/esm2022/components/base-page.component.mjs +12 -19
- package/runtime/base/esm2022/components/base-partial.component.mjs +9 -14
- package/runtime/base/esm2022/components/base-prefab.component.mjs +9 -14
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +12 -19
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +30 -52
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +33 -15
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +19 -26
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +17 -17
- package/runtime/base/esm2022/directives/prefab.directive.mjs +15 -15
- package/runtime/base/esm2022/guards/auth.guard.mjs +6 -6
- package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +11 -11
- package/runtime/base/esm2022/guards/page-not-found.guard.mjs +6 -6
- package/runtime/base/esm2022/guards/role.guard.mjs +6 -6
- package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +12 -12
- package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +14 -14
- package/runtime/base/esm2022/public_api.mjs +5 -2
- package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/app-js.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +9 -9
- package/runtime/base/esm2022/resolves/i18n.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/metadata.resolve.mjs +9 -9
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +9 -9
- package/runtime/base/esm2022/runtime-base.module.mjs +457 -316
- package/runtime/base/esm2022/services/app-defaults.service.mjs +6 -6
- package/runtime/base/esm2022/services/app.manager.service.mjs +25 -9
- package/runtime/base/esm2022/services/app.service.mjs +39 -18
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +6 -6
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -6
- package/runtime/base/esm2022/services/i18n.service.mjs +37 -34
- package/runtime/base/esm2022/services/navigation.service.mjs +6 -6
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +13 -13
- package/runtime/base/esm2022/services/pipe.service.mjs +10 -8
- package/runtime/base/esm2022/services/prefab-manager.service.mjs +6 -6
- package/runtime/base/esm2022/services/spinner.service.mjs +6 -6
- package/runtime/base/esm2022/services/toaster.service.mjs +6 -6
- package/runtime/base/esm2022/util/fragment-monitor.mjs +6 -6
- package/runtime/base/esm2022/util/utils.mjs +15 -1
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +1 -1
- package/runtime/base/fesm2022/index.mjs +3145 -3071
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/package.json +2 -5
- package/runtime/base/public_api.d.ts +4 -1
- package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
- package/runtime/base/runtime-base.module.d.ts +96 -59
- package/runtime/base/services/app.manager.service.d.ts +2 -1
- package/runtime/base/services/app.service.d.ts +3 -2
- package/runtime/base/services/i18n.service.d.ts +2 -1
- package/runtime/base/util/utils.d.ts +2 -1
- package/runtime/dynamic/app/app.config.d.ts +1 -1
- package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +3 -1
- package/runtime/dynamic/bundles/index.umd.js +145 -114
- package/runtime/dynamic/esm2022/app/app.config.mjs +11 -10
- package/runtime/dynamic/esm2022/app/app.module.mjs +35 -5
- package/runtime/dynamic/esm2022/app/app.routes.mjs +2 -11
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +11 -16
- package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +9 -9
- package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +9 -9
- package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +6 -6
- package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +15 -11
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +57 -8
- package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +6 -6
- package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +6 -6
- package/runtime/dynamic/fesm2022/index.mjs +143 -88
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/package.json +2 -5
- package/scripts/datatable/datatable.js +26 -5
- package/scripts/jquery-ui/ui/widgets/droppable.js +3 -3
- package/scripts/jquery-ui/ui/widgets/resizable.js +72 -19
- package/scripts/jquery-ui/ui/widgets/sortable.js +9 -16
- package/security/bundles/index.umd.js +5 -5
- package/security/esm2022/security.service.mjs +6 -6
- package/security/fesm2022/index.mjs +5 -5
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/package.json +2 -5
- package/swipey/fesm2022/index.mjs.map +1 -1
- package/swipey/package.json +2 -5
- package/transpiler/build.d.ts +1 -1
- package/transpiler/bundles/index.umd.js +94 -56
- package/transpiler/esm2022/build.mjs +5 -2
- package/transpiler/esm2022/imports.mjs +92 -57
- package/transpiler/fesm2022/index.mjs +94 -56
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/transpiler/package.json +3 -6
- package/variables/bundles/index.umd.js +20 -10
- package/variables/constants/variables.constants.d.ts +9 -0
- package/variables/esm2022/constants/variables.constants.mjs +10 -1
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -6
- package/variables/esm2022/service/variables.service.mjs +6 -6
- package/variables/fesm2022/index.mjs +20 -11
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/package.json +2 -5
- package/variables/service/variables.service.d.ts +1 -1
- package/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -15
- package/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -10
- package/build-task/esm2022/basic/default/html/html.build.mjs +0 -15
- package/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -10
- package/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -10
- package/build-task/esm2022/basic/default/label/label.build.mjs +0 -25
- package/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -14
- package/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -15
- package/build-task/esm2022/basic/default/video/video.build.mjs +0 -10
- package/components/base/components.module.d.ts +0 -25
- package/components/base/esm2022/components.module.mjs +0 -152
- package/components/basic/default/bundles/index.umd.js +0 -1036
- package/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -198
- package/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -27
- package/components/basic/default/esm2022/audio/audio.component.mjs +0 -59
- package/components/basic/default/esm2022/audio/audio.props.mjs +0 -19
- package/components/basic/default/esm2022/html/html.directive.mjs +0 -76
- package/components/basic/default/esm2022/html/html.props.mjs +0 -12
- package/components/basic/default/esm2022/icon/icon.component.mjs +0 -70
- package/components/basic/default/esm2022/icon/icon.props.mjs +0 -19
- package/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -85
- package/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -15
- package/components/basic/default/esm2022/label/label.directive.mjs +0 -71
- package/components/basic/default/esm2022/label/label.props.mjs +0 -17
- package/components/basic/default/esm2022/picture/picture.directive.mjs +0 -95
- package/components/basic/default/esm2022/picture/picture.props.mjs +0 -23
- package/components/basic/default/esm2022/public_api.mjs +0 -10
- package/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -130
- package/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -20
- package/components/basic/default/esm2022/video/video.component.mjs +0 -113
- package/components/basic/default/esm2022/video/video.props.mjs +0 -24
- package/components/basic/default/fesm2022/index.mjs +0 -1012
- package/components/basic/default/fesm2022/index.mjs.map +0 -1
- package/components/basic/default/public_api.d.ts +0 -9
- package/components/basic/progress/bundles/index.umd.js +0 -361
- package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -154
- package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -132
- package/components/basic/progress/esm2022/public_api.mjs +0 -3
- package/components/basic/progress/esm2022/utils.mjs +0 -25
- package/components/basic/progress/fesm2022/index.mjs +0 -344
- package/components/basic/progress/fesm2022/index.mjs.map +0 -1
- package/components/basic/progress/public_api.d.ts +0 -2
- package/components/input/default/bundles/index.umd.js +0 -3559
- package/components/input/default/esm2022/base-form-custom.component.mjs +0 -94
- package/components/input/default/esm2022/base-form.component.mjs +0 -110
- package/components/input/default/esm2022/button/button.component.mjs +0 -106
- package/components/input/default/esm2022/button/button.props.mjs +0 -26
- package/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -51
- package/components/input/default/esm2022/button-group/button-group.props.mjs +0 -10
- package/components/input/default/esm2022/caption-position.directive.mjs +0 -172
- package/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -179
- package/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -27
- package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -268
- package/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -35
- package/components/input/default/esm2022/composite/composite.directive.mjs +0 -84
- package/components/input/default/esm2022/composite/composite.props.mjs +0 -10
- package/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -307
- package/components/input/default/esm2022/number/number.component.mjs +0 -68
- package/components/input/default/esm2022/number/number.props.mjs +0 -35
- package/components/input/default/esm2022/public_api.mjs +0 -21
- package/components/input/default/esm2022/radioset/radioset.component.mjs +0 -251
- package/components/input/default/esm2022/radioset/radioset.props.mjs +0 -35
- package/components/input/default/esm2022/select/select.component.mjs +0 -230
- package/components/input/default/esm2022/select/select.props.mjs +0 -36
- package/components/input/default/esm2022/switch/switch.component.mjs +0 -227
- package/components/input/default/esm2022/switch/switch.props.mjs +0 -28
- package/components/input/default/esm2022/text/base/base-input.mjs +0 -93
- package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -69
- package/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -30
- package/components/input/default/esm2022/text/color/input-color.component.mjs +0 -69
- package/components/input/default/esm2022/text/color/input-color.props.mjs +0 -27
- package/components/input/default/esm2022/text/email/input-email.component.mjs +0 -68
- package/components/input/default/esm2022/text/email/input-email.props.mjs +0 -29
- package/components/input/default/esm2022/text/locale/number-locale.mjs +0 -539
- package/components/input/default/esm2022/text/number/input-number.component.mjs +0 -79
- package/components/input/default/esm2022/text/number/input-number.props.mjs +0 -32
- package/components/input/default/esm2022/text/text/input-text.component.mjs +0 -145
- package/components/input/default/esm2022/text/text/input-text.props.mjs +0 -46
- package/components/input/default/esm2022/textarea/textarea.component.mjs +0 -85
- package/components/input/default/esm2022/textarea/textarea.props.mjs +0 -30
- package/components/input/default/fesm2022/index.mjs +0 -3529
- package/components/input/default/fesm2022/index.mjs.map +0 -1
- package/components/input/default/public_api.d.ts +0 -20
- package/components/input/epoch/bundles/index.umd.js +0 -3292
- package/components/input/epoch/esm2022/date/date.component.mjs +0 -376
- package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -473
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -563
- package/components/input/epoch/esm2022/picker/picker.component.mjs +0 -184
- package/components/input/epoch/esm2022/public_api.mjs +0 -6
- package/components/input/epoch/esm2022/time/time.component.mjs +0 -432
- package/components/input/epoch/fesm2022/index.mjs +0 -3280
- package/components/input/epoch/fesm2022/index.mjs.map +0 -1
- package/components/input/epoch/public_api.d.ts +0 -5
- /package/build-task/basic/{default/anchor → anchor}/anchor.build.d.ts +0 -0
- /package/build-task/basic/{default/audio → audio}/audio.build.d.ts +0 -0
- /package/build-task/basic/{default/html → html}/html.build.d.ts +0 -0
- /package/build-task/basic/{default/icon → icon}/icon.build.d.ts +0 -0
- /package/build-task/basic/{default/iframe → iframe}/iframe.build.d.ts +0 -0
- /package/build-task/basic/{default/label → label}/label.build.d.ts +0 -0
- /package/build-task/basic/{default/picture → picture}/picture.build.d.ts +0 -0
- /package/build-task/basic/{default/spinner → spinner}/spinner.build.d.ts +0 -0
- /package/build-task/basic/{default/video → video}/video.build.d.ts +0 -0
- /package/components/basic/{default → anchor}/.npmignore +0 -0
- /package/components/basic/{default/anchor → anchor}/anchor.component.d.ts +0 -0
- /package/components/basic/{default/anchor → anchor}/anchor.props.d.ts +0 -0
- /package/components/basic/{progress → audio}/.npmignore +0 -0
- /package/components/basic/{default/audio → audio}/audio.component.d.ts +0 -0
- /package/components/basic/{default/audio → audio}/audio.props.d.ts +0 -0
- /package/components/{input/default → basic/html}/.npmignore +0 -0
- /package/components/basic/{default/html → html}/html.directive.d.ts +0 -0
- /package/components/basic/{default/html → html}/html.props.d.ts +0 -0
- /package/components/{input/epoch → basic/icon}/.npmignore +0 -0
- /package/components/basic/{default/icon → icon}/icon.component.d.ts +0 -0
- /package/components/basic/{default/icon → icon}/icon.props.d.ts +0 -0
- /package/components/basic/{default/iframe → iframe}/iframe.component.d.ts +0 -0
- /package/components/basic/{default/iframe → iframe}/iframe.props.d.ts +0 -0
- /package/components/basic/{default/label → label}/label.props.d.ts +0 -0
- /package/components/basic/{default/picture → picture}/picture.directive.d.ts +0 -0
- /package/components/basic/{default/picture → picture}/picture.props.d.ts +0 -0
- /package/components/basic/progress/{utils.d.ts → progress-utils/progress-utils.d.ts} +0 -0
- /package/components/basic/{default/spinner → spinner}/spinner.component.d.ts +0 -0
- /package/components/basic/{default/spinner → spinner}/spinner.props.d.ts +0 -0
- /package/components/basic/{default/video → video}/video.component.d.ts +0 -0
- /package/components/basic/{default/video → video}/video.props.d.ts +0 -0
- /package/components/input/{default → base-form}/base-form.component.d.ts +0 -0
- /package/components/input/{default/button → button}/button.component.d.ts +0 -0
- /package/components/input/{default/button → button}/button.props.d.ts +0 -0
- /package/components/input/{default/button-group → button-group}/button-group.directive.d.ts +0 -0
- /package/components/input/{default/button-group → button-group}/button-group.props.d.ts +0 -0
- /package/components/input/{default → caption-position}/caption-position.directive.d.ts +0 -0
- /package/components/input/{default/checkbox → checkbox}/checkbox.props.d.ts +0 -0
- /package/components/input/{default/checkboxset → checkboxset}/checkboxset.props.d.ts +0 -0
- /package/components/input/{default/composite → composite}/composite.directive.d.ts +0 -0
- /package/components/input/{default/composite → composite}/composite.props.d.ts +0 -0
- /package/components/input/epoch/{date-time → date-time-picker}/date-time-picker.component.d.ts +0 -0
- /package/components/input/{default/number → number}/number.props.d.ts +0 -0
- /package/components/input/{default/radioset → radioset}/radioset.props.d.ts +0 -0
- /package/components/input/{default/select → select}/select.props.d.ts +0 -0
- /package/components/input/{default/switch → switch}/switch.props.d.ts +0 -0
- /package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.props.d.ts +0 -0
- /package/components/input/{default/text/color → text/input-color}/input-color.props.d.ts +0 -0
- /package/components/input/{default/text/email → text/input-email}/input-email.props.d.ts +0 -0
- /package/components/input/{default/text/number → text/input-number}/input-number.props.d.ts +0 -0
- /package/components/input/{default/text/text → text/input-text}/input-text.props.d.ts +0 -0
- /package/components/input/{default/textarea → textarea}/textarea.props.d.ts +0 -0
|
@@ -55,26 +55,26 @@ export class FormActionDirective extends BaseComponent {
|
|
|
55
55
|
break;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
static { this.ɵfac =
|
|
59
|
-
static { this.ɵdir =
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormActionDirective, deps: [{ token: i0.Injector }, { token: i1.FormComponent, optional: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
59
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FormActionDirective, isStandalone: true, selector: "[wmFormAction]", providers: [
|
|
60
|
+
provideAsWidgetRef(FormActionDirective)
|
|
61
|
+
], usesInheritance: true, ngImport: i0 }); }
|
|
62
62
|
}
|
|
63
|
-
(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormActionDirective, decorators: [{
|
|
64
|
+
type: Directive,
|
|
65
|
+
args: [{
|
|
66
|
+
standalone: true,
|
|
67
|
+
selector: '[wmFormAction]',
|
|
68
|
+
providers: [
|
|
69
|
+
provideAsWidgetRef(FormActionDirective)
|
|
70
|
+
]
|
|
71
|
+
}]
|
|
72
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FormComponent, decorators: [{
|
|
73
|
+
type: Optional
|
|
74
|
+
}] }, { type: undefined, decorators: [{
|
|
75
|
+
type: Inject,
|
|
76
|
+
args: ['EXPLICIT_CONTEXT']
|
|
77
|
+
}, {
|
|
78
|
+
type: Optional
|
|
79
|
+
}] }] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RhdGEvZm9ybS9zcmMvZm9ybS1hY3Rpb24vZm9ybS1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBRXRDLE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUMsQ0FBQztBQVNwRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTthQUMzQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQXdCekMsWUFBWSxHQUFhLEVBQXFCLElBQW1CLEVBQTBDLGVBQW9CO1FBQzNILEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBREQsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUVqRSxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFO1lBQy9CLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDMUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxQixPQUFPO1FBQ1gsQ0FBQztRQUNELFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDVixLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9DLE1BQU07WUFDVixLQUFLLGNBQWM7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3BDO2dCQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM3QixNQUFNO1FBQ1YsQ0FBQztJQUNMLENBQUM7K0dBekVRLG1CQUFtQix1RkF5QitDLGtCQUFrQjttR0F6QnBGLG1CQUFtQiw2REFKakI7WUFDUCxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQztTQUMxQzs7NEZBRVEsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNkLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRTt3QkFDUCxrQkFBa0IscUJBQXFCO3FCQUMxQztpQkFDSjs7MEJBMEIrQixRQUFROzswQkFBZ0MsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QmFzZUNvbXBvbmVudCwgcHJvdmlkZUFzV2lkZ2V0UmVmfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL2Zvcm0tYWN0aW9uLnByb3BzJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtpc1VuZGVmaW5lZH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0ge3dpZGdldFR5cGU6ICd3bS1mb3JtLWFjdGlvbicsIGhvc3RDbGFzczogJyd9O1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3bUZvcm1BY3Rpb25dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEZvcm1BY3Rpb25EaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQWN0aW9uRGlyZWN0aXZlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIGFjY2Vzc3JvbGVzO1xuICAgIGFjdGlvbjtcbiAgICBiaW5kaW5nO1xuICAgIGNsYXNzO1xuICAgIGRpc2FibGVkO1xuICAgIGRpc3BsYXlOYW1lO1xuICAgIGljb25jbGFzcztcbiAgICBpY29ubmFtZTtcbiAgICBrZXk7XG4gICAgcG9zaXRpb247XG4gICAgc2hvcnRjdXRrZXk7XG4gICAgc2hvdztcbiAgICB0YWJpbmRleDtcbiAgICB0aXRsZTtcbiAgICB0eXBlO1xuICAgIHVwZGF0ZU1vZGU7XG4gICAgYnV0dG9uRGVmO1xuICAgIGh5cGVybGluaztcbiAgICB0YXJnZXQ7XG5cbiAgICBwcml2YXRlIF9wcm9wc0luaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQE9wdGlvbmFsKCkgcHVibGljIGZvcm06IEZvcm1Db21wb25lbnQsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgcG9wdWxhdGVBY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uRGVmID0ge1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSB8fCB0aGlzLmJpbmRpbmcsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpc1snZGlzcGxheS1uYW1lJ10sXG4gICAgICAgICAgICBzaG93OiB0aGlzLnNob3csXG4gICAgICAgICAgICBjbGFzczogdGhpcy5jbGFzcyA/IHRoaXMuY2xhc3MgOiAodGhpc1snd2lkZ2V0LXR5cGUnXSA9PT0gJ2J1dHRvbicgPyAnYnRuLXNlY29uZGFyeScgOiAnJyksXG4gICAgICAgICAgICBpY29uY2xhc3M6IHRoaXMuaWNvbmNsYXNzIHx8ICcnLFxuICAgICAgICAgICAgdGl0bGU6IGlzVW5kZWZpbmVkKHRoaXMudGl0bGUpID8gKHRoaXNbJ2Rpc3BsYXktbmFtZSddIHx8ICcnKSA6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICBhY3Rpb246IHRoaXMuYWN0aW9uLFxuICAgICAgICAgICAgYWNjZXNzcm9sZXM6IHRoaXMuYWNjZXNzcm9sZXMsXG4gICAgICAgICAgICBzaG9ydGN1dGtleTogdGhpcy5zaG9ydGN1dGtleSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkfHx0aGlzLmZvcm0ucmVhZG9ubHksXG4gICAgICAgICAgICB0YWJpbmRleDogdGhpcy50YWJpbmRleCxcbiAgICAgICAgICAgIGljb25uYW1lOiB0aGlzLmljb25uYW1lLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgdXBkYXRlTW9kZTogdGhpc1sndXBkYXRlLW1vZGUnXSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgd2lkZ2V0VHlwZTogdGhpc1snd2lkZ2V0LXR5cGUnXSxcbiAgICAgICAgICAgIGh5cGVybGluazogdGhpcy5oeXBlcmxpbmssXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3Byb3BzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlQWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZm9ybS5yZWdpc3RlckFjdGlvbnModGhpcy5idXR0b25EZWYpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9wc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Rpc2FibGVkJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkRlZltrZXldID0gbnYgfHwgdGhpcy5mb3JtLnJlYWRvbmx5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGlzcGxheS1uYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkRlZi5kaXNwbGF5TmFtZSA9IG52O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbkRlZltrZXldID0gbnY7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -12,8 +12,6 @@ import * as i1 from "../form.component";
|
|
|
12
12
|
import * as i2 from "@angular/forms";
|
|
13
13
|
import * as i3 from "@wm/core";
|
|
14
14
|
import * as i4 from "@wm/components/data/list";
|
|
15
|
-
const _c0 = ["formWidget"];
|
|
16
|
-
const _c1 = ["formWidgetMax"];
|
|
17
15
|
// Custom validator to show validation error, if setValidationMessage method is used
|
|
18
16
|
const customValidatorFn = () => {
|
|
19
17
|
return { custom: true };
|
|
@@ -497,93 +495,84 @@ export class FormFieldDirective extends StylableComponent {
|
|
|
497
495
|
}
|
|
498
496
|
}
|
|
499
497
|
}
|
|
500
|
-
static { this.ɵfac =
|
|
501
|
-
static { this.ɵdir =
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.formWidget = _t.first);
|
|
507
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.formWidgetMax = _t.first);
|
|
508
|
-
} }, hostBindings: function FormFieldDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
509
|
-
i0.ɵɵlistener("keydown", function FormFieldDirective_keydown_HostBindingHandler($event) { return ctx.onKeydownHandler($event); })("click", function FormFieldDirective_click_HostBindingHandler($event) { return ctx.handleClick($event); });
|
|
510
|
-
} }, exportAs: ["wmFormField"], standalone: true, features: [i0.ɵɵProvidersFeature([
|
|
511
|
-
provideAsWidgetRef(FormFieldDirective),
|
|
512
|
-
provideAs(FormFieldDirective, NG_VALUE_ACCESSOR, true),
|
|
513
|
-
{ provide: Context, useFactory: () => { return {}; }, multi: true }
|
|
514
|
-
]), i0.ɵɵInheritDefinitionFeature] }); }
|
|
498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldDirective, deps: [{ token: i0.Injector }, { token: i1.FormComponent }, { token: i2.FormBuilder }, { token: i3.Viewport }, { token: i3.App }, { token: i4.ListComponent, optional: true }, { token: 'chipclass.bind', attribute: true }, { token: 'dataset.bind', attribute: true }, { token: 'displayexpression.bind', attribute: true }, { token: 'displaylabel.bind', attribute: true }, { token: 'widgettype', attribute: true }, { token: 'name', attribute: true }, { token: 'displayimagesrc.bind', attribute: true }, { token: 'key', attribute: true }, { token: 'is-range', attribute: true }, { token: 'pc-display', attribute: true }, { token: 'mobile-display', attribute: true }, { token: 'tablet-display', attribute: true }, { token: Context, self: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldDirective, isStandalone: true, selector: "[wmFormField]", host: { listeners: { "keydown": "onKeydownHandler($event)", "click": "handleClick($event)" } }, providers: [
|
|
500
|
+
provideAsWidgetRef(FormFieldDirective),
|
|
501
|
+
provideAs(FormFieldDirective, NG_VALUE_ACCESSOR, true),
|
|
502
|
+
{ provide: Context, useFactory: () => { return {}; }, multi: true }
|
|
503
|
+
], queries: [{ propertyName: "formWidget", first: true, predicate: ["formWidget"], descendants: true, static: true }, { propertyName: "formWidgetMax", first: true, predicate: ["formWidgetMax"], descendants: true }], exportAs: ["wmFormField"], usesInheritance: true, ngImport: i0 }); }
|
|
515
504
|
}
|
|
516
|
-
(
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9mb3JtL3NyYy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFFUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQWEsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixHQUFHLEVBQ0gsUUFBUSxFQUNSLGNBQWMsRUFDZCxjQUFjLEVBQ2QsU0FBUyxFQUNULFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNYLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFJaEUsb0ZBQW9GO0FBQ3BGLE1BQU0saUJBQWlCLEdBQUcsR0FB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QUFDLG1CQUFtQjs7c0JBQzdCLFNBQVM7dUJBQUMsWUFBWTs7c0JBQ3RCLFNBQVM7dUJBQUMsTUFBTTs7c0JBQ2hCLFNBQVM7dUJBQUMsc0JBQXNCOztzQkFDaEMsU0FBUzt1QkFBQyxLQUFLOztzQkFDZixTQUFTO3VCQUFDLFVBQVU7O3NCQUNwQixTQUFTO3VCQUFDLFlBQVk7O3NCQUN0QixTQUFTO3VCQUFDLGdCQUFnQjs7c0JBQzFCLFNBQVM7dUJBQUMsZ0JBQWdCOztzQkFDMUIsSUFBSTs7c0JBQUksTUFBTTt1QkFBQyxPQUFPOztzQkFDdEIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBOUZHLFVBQVU7a0JBQXJELFlBQVk7bUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztZQUNYLGFBQWE7a0JBQTNDLFlBQVk7bUJBQUMsZUFBZTtZQWdFUSxnQkFBZ0I7a0JBQXBELFlBQVk7bUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBSUEsV0FBVztrQkFBN0MsWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBhZGRGb3JJZEF0dHJpYnV0ZXMsXG4gICAgQXBwLFxuICAgIGRlYm91bmNlLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGlzRGF0ZVRpbWVUeXBlLFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc01vYmlsZSxcbiAgICBub29wLFxuICAgIFZpZXdwb3J0XG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7XG4gICAgQmFzZUZpZWxkVmFsaWRhdGlvbnMsXG4gICAgQ29udGV4dCxcbiAgICBnZXREZWZhdWx0Vmlld01vZGVXaWRnZXQsXG4gICAgZ2V0RXZhbHVhdGVkRGF0YSxcbiAgICBwcm92aWRlQXMsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50XG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtMaXN0Q29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL2xpc3QnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vZm9ybS1maWVsZC5wcm9wcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBpc0FycmF5LCBpc09iamVjdCwgam9pbn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbi8vIEN1c3RvbSB2YWxpZGF0b3IgdG8gc2hvdyB2YWxpZGF0aW9uIGVycm9yLCBpZiBzZXRWYWxpZGF0aW9uTWVzc2FnZSBtZXRob2QgaXMgdXNlZFxuY29uc3QgY3VzdG9tVmFsaWRhdG9yRm4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHsgY3VzdG9tOiB0cnVlIH07XG59O1xuXG5jb25zdCBGSUxFX1RZUEVTID0ge1xuICAgICdpbWFnZScgOiAnaW1hZ2UvKicsXG4gICAgJ3ZpZGVvJyA6ICd2aWRlby8qJyxcbiAgICAnYXVkaW8nIDogJ2F1ZGlvLyonXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t3bUZvcm1GaWVsZF0nLFxuICAgIGV4cG9ydEFzOiAnd21Gb3JtRmllbGQnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoRm9ybUZpZWxkRGlyZWN0aXZlKSxcbiAgICAgICAgcHJvdmlkZUFzKEZvcm1GaWVsZERpcmVjdGl2ZSwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICB7cHJvdmlkZTogQ29udGV4dCwgdXNlRmFjdG9yeTogKCkgPT4geyByZXR1cm4ge30gfSwgbXVsdGk6IHRydWV9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGREaXJlY3RpdmUgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2Zvcm1XaWRnZXQnLCB7c3RhdGljOiB0cnVlfSkgZm9ybVdpZGdldDtcbiAgICBAQ29udGVudENoaWxkKCdmb3JtV2lkZ2V0TWF4JykgZm9ybVdpZGdldE1heDtcblxuICAgIHByaXZhdGUgZmI7XG4gICAgcHJpdmF0ZSB2aWV3cG9ydDtcblxuICAgIC8vIGV4Y2x1ZGVQcm9wcyBpcyB1c2VkIHRvIHN0b3JlIHRoZSBwcm9wcyB0aGF0IHNob3VsZCBub3QgYmUgYXBwbGllZCBvbiBpbm5lciB3aWRnZXRcbiAgICBwcml2YXRlIGV4Y2x1ZGVQcm9wcztcbiAgICBwcml2YXRlIF92YWxpZGF0b3JzO1xuICAgIHByaXZhdGUgX29sZFVwbG9hZFZhbDtcblxuICAgIG5nZm9ybTogRm9ybUdyb3VwO1xuICAgIGRlZmF1bHR2YWx1ZTtcbiAgICBkaXNwbGF5ZXhwcmVzc2lvbjtcbiAgICBkaXNwbGF5ZmllbGQ7XG4gICAgZGlzcGxheWxhYmVsO1xuICAgIGRpc3BsYXluYW1lO1xuICAgIGdlbmVyYXRvcjtcbiAgICBrZXk7XG4gICAgdGFyZ2V0O1xuICAgIGJpbmRpbmc7XG4gICAgd2lkZ2V0dHlwZTtcbiAgICBjbGFzcztcbiAgICByZWFkb25seTtcbiAgICBzaG93O1xuICAgIHR5cGU7XG4gICAgaXNEYXRhU2V0Qm91bmQ7XG4gICAgdmlld21vZGV3aWRnZXQ7XG4gICAgYmluZGRhdGFzZXQ7XG4gICAgYmluZGRpc3BsYXlleHByZXNzaW9uO1xuICAgIGJpbmRDaGlwY2xhc3M7XG4gICAgZGlzcGxheWltYWdlc3JjOiBzdHJpbmc7XG4gICAgYmluZGRpc3BsYXlpbWFnZXNyYztcbiAgICBiaW5kZGlzcGxheWxhYmVsO1xuICAgIGZvcm07XG4gICAgZmlsZXR5cGU7XG4gICAgZXh0ZW5zaW9ucztcbiAgICBwZXJtaXR0ZWQ7XG4gICAgcGVyaW9kO1xuICAgIGlzUmFuZ2U7XG4gICAgbmFtZTtcbiAgICAvLyBWYWxpZGF0aW9uIHByb3BlcnRpZXNcbiAgICByZXF1aXJlZDtcbiAgICBtYXhjaGFycztcbiAgICBtaW52YWx1ZTtcbiAgICBtYXh2YWx1ZTtcbiAgICByZWdleHA7XG4gICAgZmllbGREZWZDb25maWc7XG4gICAgcGxhY2Vob2xkZXI7XG4gICAgaW5wdXR0eXBlO1xuICAgIHZhbGlkYXRpb25tZXNzYWdlO1xuXG4gICAgcHVibGljIF9maWVsZE5hbWU7XG5cbiAgICBwcml2YXRlIF9kZWJvdW5jZVNldFVwVmFsaWRhdG9ycztcbiAgICBwcml2YXRlIF9pbml0UHJvcHNSZXM7XG4gICAgcHJpdmF0ZSBwYXJlbnRMaXN0O1xuICAgIHByaXZhdGUgc2hvd1BlbmRpbmdTcGlubmVyOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2FjdGl2ZUZpZWxkOiBib29sZWFuO1xuICAgIHByaXZhdGUgbm90aWZ5Rm9yRmllbGRzOiBhbnk7XG4gICAgcHJpdmF0ZSBmaWVsZFZhbGlkYXRpb25zO1xuICAgIHByaXZhdGUgX3RyaWdnZXJlZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9jbGlja3RyaWdnZXJlZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFwcDogQXBwO1xuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlcmVkQnlVc2VyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGhhbmRsZUNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuX2NsaWNrdHJpZ2dlcmVkQnlVc2VyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRm9jdXNlZDtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgZm9ybTogRm9ybUNvbXBvbmVudCxcbiAgICAgICAgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICB2aWV3cG9ydDogVmlld3BvcnQsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRMaXN0OiBMaXN0Q29tcG9uZW50LFxuICAgICAgICBAQXR0cmlidXRlKCdjaGlwY2xhc3MuYmluZCcpIGJpbmRDaGlwY2xhc3M6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGF0YXNldC5iaW5kJykgYmluZGRhdGFzZXQsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Rpc3BsYXlleHByZXNzaW9uLmJpbmQnKSBiaW5kZGlzcGxheWV4cHJlc3Npb246IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlzcGxheWxhYmVsLmJpbmQnKSBiaW5kZGlzcGxheWxhYmVsOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3dpZGdldHR5cGUnKSBfd2lkZ2V0VHlwZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbmFtZScpIG5hbWUsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Rpc3BsYXlpbWFnZXNyYy5iaW5kJykgYmluZGRpc3BsYXlpbWFnZXNyYzogU3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdrZXknKSBrZXksXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2lzLXJhbmdlJykgaXNSYW5nZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgncGMtZGlzcGxheScpIHBjRGlzcGxheSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbW9iaWxlLWRpc3BsYXknKSBtb2JpbGVEaXNwbGF5LFxuICAgICAgICBAQXR0cmlidXRlKCd0YWJsZXQtZGlzcGxheScpIHRhYmxldERpc3BsYXksXG4gICAgICAgIEBTZWxmKCkgQEluamVjdChDb250ZXh0KSBjb250ZXh0czogQXJyYXk8YW55PixcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IFdJREdFVF9DT05GSUcgPSB7XG4gICAgICAgICAgICB3aWRnZXRUeXBlOiAnd20tZm9ybS1maWVsZCcsXG4gICAgICAgICAgICBob3N0Q2xhc3M6ICcnLFxuICAgICAgICAgICAgd2lkZ2V0U3ViVHlwZTogJ3dtLWZvcm0tZmllbGQtJyArIChfd2lkZ2V0VHlwZSB8fCBGb3JtV2lkZ2V0VHlwZS5URVhUKS50cmltKClcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuXG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG4gICAgICAgIHRoaXMuX2luaXRQcm9wc1JlcyA9IHJlc29sdmVGbjtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgICAgIHRoaXMuZmllbGREZWZDb25maWcgPSB7fTtcbiAgICAgICAgdGhpcy5jbGFzcyA9ICcnO1xuICAgICAgICB0aGlzLmJpbmRkYXRhc2V0ID0gYmluZGRhdGFzZXQ7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlpbWFnZXNyYyA9IGJpbmRkaXNwbGF5aW1hZ2VzcmM7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlleHByZXNzaW9uID0gYmluZGRpc3BsYXlleHByZXNzaW9uO1xuICAgICAgICB0aGlzLmJpbmRDaGlwY2xhc3MgPSBiaW5kQ2hpcGNsYXNzO1xuICAgICAgICB0aGlzLmJpbmRkaXNwbGF5bGFiZWwgPSBiaW5kZGlzcGxheWxhYmVsO1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgICAgICB0aGlzLmZiID0gZmI7XG4gICAgICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0ga2V5IHx8IG5hbWU7XG4gICAgICAgIHRoaXMuaXNSYW5nZSA9IGlzUmFuZ2U7XG4gICAgICAgIHRoaXMuZXhjbHVkZVByb3BzID0gbmV3IFNldChbJ3R5cGUnLCAnbmFtZSddKTtcbiAgICAgICAgdGhpcy53aWRnZXR0eXBlID0gX3dpZGdldFR5cGU7XG4gICAgICAgIHRoaXMucGFyZW50TGlzdCA9IHBhcmVudExpc3Q7XG4gICAgICAgIHRoaXMubm90aWZ5Rm9yRmllbGRzID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzZXQgfHwgdGhpcy4kZWxlbWVudC5hdHRyKCdkYXRhc2V0JykpIHtcbiAgICAgICAgICAgIHRoaXMuaXNEYXRhU2V0Qm91bmQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dHNbMF0uX29uRm9jdXNGaWVsZCA9IHRoaXMuX29uRm9jdXNGaWVsZC5iaW5kKHRoaXMpO1xuICAgICAgICBjb250ZXh0c1swXS5fb25CbHVyRmllbGQgPSB0aGlzLl9vbkJsdXJGaWVsZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuX2RlYm91bmNlU2V0VXBWYWxpZGF0b3JzID0gZGVib3VuY2UoKCkgPT4gdGhpcy5zZXRVcFZhbGlkYXRvcnMoKSwgNTAwKTtcbiAgICB9XG5cbiAgICBfb25Gb2N1c0ZpZWxkKCRldnQpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRmllbGQgPSB0cnVlO1xuICAgICAgICAkKCRldnQudGFyZ2V0KS5jbG9zZXN0KCcubGl2ZS1maWVsZCcpLmFkZENsYXNzKCdhY3RpdmUnKTtcblxuICAgIH1cblxuICAgIC8vIEZ1bmN0aW9uIHRvIGdldCB0aGUgYWN0aXZlIGVsZW1lbnQgbWFya3VwIGJhc2VkIG9uIHdpZGdldCB0eXBlXG4gICAgZ2V0QWN0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3Qgd2lkZ2V0VHlwZSA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dpZGdldHR5cGUnKTtcbiAgICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc2VsZWN0Jyk7XG4gICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRBcmlhQXR0cmlidXRlcygpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICBpZiAodGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lXS5pbnZhbGlkICYmIHRoaXMubmdmb3JtLmNvbnRyb2xzW3RoaXMuX2ZpZWxkTmFtZV0udG91Y2hlZCAmJiB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdfX2Vycm9ybXNnJywgYCR7dGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnX192YWxpZGF0aW9uSWQnKX1gKTtcbiAgICAgICAgICAgIGVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1pbnZhbGlkJywgYCR7dGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lXS5pbnZhbGlkfWApO1xuICAgICAgICAgICAgZWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgYCR7dGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnX192YWxpZGF0aW9uSWQnKX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ19fZXJyb3Jtc2cnKTtcbiAgICAgICAgICAgIGVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1pbnZhbGlkJyk7XG4gICAgICAgICAgICBlbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJsdXJGaWVsZCgkZXZ0KSB7XG4gICAgICAgICQoJGV2dC50YXJnZXQpLmNsb3Nlc3QoJy5saXZlLWZpZWxkJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICBjb25zdCBlbGUgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigncC50ZXh0LWRhbmdlcicpO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjM5NTldOiBBREEgaXNzdWUgLSBhZGRpbmcgYXJpYS1kZXNjcmliZWRieSwgYXJpYS1pbnZhbGlkLCBfX2Vycm9ybXNnIGF0dHJpYnV0ZXMgb25seSB3aGVuIHRoZSBmb3JtIGZpZWxkIGlzIGludmFsaWQgLCBlbHNlIHJlbW92aW5nIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgIHRoaXMuc2V0QXJpYUF0dHJpYnV0ZXMoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRmllbGQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fdHJpZ2dlcmVkQnlVc2VyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NsaWNrdHJpZ2dlcmVkQnlVc2VyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gRXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQgaW4gdmlldyBtb2RlIG9mIGZvcm0gZmllbGRcbiAgICBldmFsdWF0ZUV4cHIob2JqZWN0LCBkaXNwbGF5RmllbGQsIGRpc3BsYXlFeHByKSB7XG4gICAgICAgIGlmICghZGlzcGxheUV4cHIgfHwgIWRpc3BsYXlGaWVsZCkge1xuICAgICAgICAgICAgZGlzcGxheUZpZWxkID0gT2JqZWN0LmtleXMob2JqZWN0KVswXTtcbiAgICAgICAgICAgIC8vIElmIGRhdGFzZXQgaXMgbm90IHJlYWR5LCBkaXNwbGF5IGV4cHJlc3Npb24gd2lsbCBub3QgYmUgZGVmaW5lZFxuICAgICAgICAgICAgaWYgKCFkaXNwbGF5RmllbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEV2YWx1YXRlZERhdGEob2JqZWN0LCB7XG4gICAgICAgICAgICBmaWVsZDogZGlzcGxheUZpZWxkLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZGlzcGxheUV4cHJcbiAgICAgICAgfSwgdGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICAvLyBFeHByZXNzaW9uIHRvIGJlIGV2YWx1YXRlZCBpbiB2aWV3IG1vZGUgb2YgZm9ybSBmaWVsZFxuICAgIGdldERpc3BsYXlFeHByKCkge1xuICAgICAgICBjb25zdCBjYXB0aW9uID0gW107XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgY29uc3QgZGlzcGxheUZpZWxkID0gdGhpcy5kaXNwbGF5ZmllbGQgfHwgdGhpcy5kaXNwbGF5bGFiZWxcbiAgICAgICAgY29uc3QgZGlzcGxheUV4cHIgPSB0aGlzLmRpc3BsYXlleHByZXNzaW9uO1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3JFYWNoKHZhbHVlLCBvYmogPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3Qob2JqKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbi5wdXNoKHRoaXMuZXZhbHVhdGVFeHByKG9iaiwgZGlzcGxheUZpZWxkLCBkaXNwbGF5RXhwcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcHRpb24ucHVzaCh0aGlzLmV2YWx1YXRlRXhwcih2YWx1ZSwgZGlzcGxheUZpZWxkLCBkaXNwbGF5RXhwcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGpvaW4oY2FwdGlvbiwgJywnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpID8gJycgOiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGdldENhcHRpb24oKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWUgPT09IG51bGwpID8gKGdldCh0aGlzLmZvcm0uZGF0YW91dHB1dCwgdGhpcy5fZmllbGROYW1lKSB8fCAnJykgOiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIC8vIE5vdGlmaWVzIGNoYW5nZXMgdG8gb2JzZXJ2aW5nIHZhbGlkYXRpb24gZmllbGRzXG4gICAgbm90aWZ5Q2hhbmdlcygpIHtcbiAgICAgICAgZm9yRWFjaCh0aGlzLm5vdGlmeUZvckZpZWxkcywgZmllbGQgPT4ge1xuICAgICAgICAgICAgZmllbGQuZmllbGRWYWxpZGF0aW9ucy52YWxpZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlcnMgb2JzZXJ2ZXIgb2YgdmFsaWRhdGlvbiBmaWVsZHNcbiAgICBvYnNlcnZlT24oZmllbGRzKSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5vYnNlcnZlT24oZmllbGRzLCAnZm9ybWZpZWxkcycpO1xuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBzZXR1cCB2YWxpZGF0b3JzIGZvciByZWFjdGl2ZSBmb3JtIGNvbnRyb2xcbiAgICBzZXRVcFZhbGlkYXRvcnMoY3VzdG9tVmFsaWRhdG9yPykge1xuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VXBWYWxpZGF0b3JzKGN1c3RvbVZhbGlkYXRvcik7XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgY3VzdG9tIGFzeW5jIHZhbGlkYXRpb24gb24gdGhlIGZvcm0gZmllbGRcbiAgICBzZXRBc3luY1ZhbGlkYXRvcnModmFsaWRhdG9ycykge1xuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0QXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIC8vIHNldHMgdGhlIGRlZmF1bHQgYW5kIGN1c3RvbSBzeW5jIHZhbGlkYXRpb24gb24gdGhlIGZvcm0gZmllbGRcbiAgICBzZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIHNldCB0aGUgcHJvcGVydGllcyBvbiBpbm5lciBmb3JtIHdpZGdldFxuICAgIHNldEZvcm1XaWRnZXQoa2V5LCB2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybVdpZGdldCAmJiB0aGlzLmZvcm1XaWRnZXQud2lkZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXQud2lkZ2V0W2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBib3VuZEZuKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBzZXQgdGhlIHByb3BlcnRpZXMgb24gaW5uZXIgbWF4IGZvcm0gd2lkZ2V0ICh3aGVuIHJhbmdlIGlzIHNlbGVjdGVkKVxuICAgIHNldE1heEZvcm1XaWRnZXQoa2V5LCB2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybVdpZGdldE1heCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtV2lkZ2V0TWF4LndpZGdldFtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgY29uc3QgaXNGb3JtRGlydHkgPSB0aGlzLmZvcm0uZGlydHk7XG5cbiAgICAgICAgaWYgKGtleSAhPT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5leGNsdWRlUHJvcHMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFzIHVwbG9hZCB3aWRnZXQgaXMgYW4gSFRNTCB3aWRnZXQsIG9ubHkgcmVxdWlyZWQgcHJvcGVydHkgaXMgc2V0dXBcbiAgICAgICAgaWYgKHRoaXMud2lkZ2V0dHlwZSA9PT0gRm9ybVdpZGdldFR5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVib3VuY2VTZXRVcFZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KGtleSwgbnYpO1xuXG4gICAgICAgIC8vIFBsYWNlaG9sZGVyIHNob3VsZCBub3QgYmUgc2V0dXAgb24gbWF4IHdpZGdldFxuICAgICAgICBpZiAoa2V5ICE9PSAncGxhY2Vob2xkZXInKSB7XG4gICAgICAgICAgICB0aGlzLnNldE1heEZvcm1XaWRnZXQoa2V5LCBudik7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGVmYXVsdHZhbHVlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ub25GaWVsZERlZmF1bHRWYWx1ZUNoYW5nZSh0aGlzLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtYXhkZWZhdWx0dmFsdWUnOlxuICAgICAgICAgICAgICAgIHRoaXMubWF4VmFsdWUgPSBudjtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1heEZvcm1XaWRnZXQoJ2RhdGF2YWx1ZScsIG52KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ub25NYXhEZWZhdWx0VmFsdWVDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heHBsYWNlaG9sZGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1heEZvcm1XaWRnZXQoJ3BsYWNlaG9sZGVyJywgbnYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxuICAgICAgICAgICAgICAgIC8vIFdNUy0xODkwNiA6IERvIG5vdCBtYWtlIGZvcm0gYXMgZGlydHkgZHVyaW5nIHJlcXVpcmVkIHByb3AgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgICAgICAgICBpZiAoaXNGb3JtRGlydHkgIT09IHRoaXMuZm9ybS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdtYXhjaGFycyc6XG4gICAgICAgICAgICBjYXNlICdtaW52YWx1ZSc6XG4gICAgICAgICAgICBjYXNlICdtYXh2YWx1ZSc6XG4gICAgICAgICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVib3VuY2VTZXRVcFZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ByaW1hcnkta2V5JzpcbiAgICAgICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldFByaW1hcnlLZXkodGhpcy5fZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkaXNwbGF5LW5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheW5hbWUgPSBudjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlYWRvbmx5JzpcbiAgICAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHlTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TdHlsZUNoYW5nZShrZXksIG52LCBvdj8pIHtcbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KGtleSwgbnYpO1xuICAgICAgICB0aGlzLnNldE1heEZvcm1XaWRnZXQoa2V5LCBudik7XG4gICAgICAgIHN1cGVyLm9uU3R5bGVDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIGdldCBkYXRhdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1XaWRnZXQgJiYgdGhpcy5mb3JtV2lkZ2V0LmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKHZhbCkge1xuICAgICAgICBpZiAodGhpcy5fY29udHJvbCAmJiB0aGlzLndpZGdldHR5cGUgIT09IEZvcm1XaWRnZXRUeXBlLlVQTE9BRCkge1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbC5zZXRWYWx1ZSh2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1XaWRnZXRNYXggJiYgdGhpcy5mb3JtV2lkZ2V0TWF4LmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgbWF4VmFsdWUodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLl9tYXhDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9tYXhDb250cm9sLnNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbWluVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCBtaW5WYWx1ZSh2YWwpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHJlYWN0aXZlIGZvcm0gY29udHJvbFxuICAgIGdldCBfY29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdmb3JtICYmIHRoaXMubmdmb3JtLmNvbnRyb2xzW3RoaXMuX2ZpZWxkTmFtZV07XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSByZWFjdGl2ZSBtYXggZm9ybSBjb250cm9sXG4gICAgZ2V0IF9tYXhDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ2Zvcm0gJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lICsgJ19tYXgnXTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGRpc3BsYXlWYWx1ZVxuICAgIGdldCBkaXNwbGF5VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1XaWRnZXQgJiYgdGhpcy5mb3JtV2lkZ2V0LmRpc3BsYXlWYWx1ZTtcbiAgICB9XG5cbiAgICAvL0dldCB0aGUgdGltZXN0YW1wXG4gICAgZ2V0IHRpbWVzdGFtcCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtV2lkZ2V0ICYmIHRoaXMuZm9ybVdpZGdldC50aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgLy9HZXQgdGhlIGNoYXJsZW5ndGhcbiAgICBnZXQgY2hhcmxlbmd0aCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtV2lkZ2V0ICYmIHRoaXMuZm9ybVdpZGdldC5jaGFybGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcmVhY3RpdmUgZm9ybSBjb250cm9sXG4gICAgY3JlYXRlQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbCh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IHRoaXMuX3ZhbGlkYXRvcnNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gT24gZmllbGQgdmFsdWUgY2hhbmdlLCBwcm9wYWdhdGUgZXZlbnQgdG8gcGFyZW50IGZvcm1cbiAgICBvblZhbHVlQ2hhbmdlKHZhbCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhcHRpb25FbCA9ICAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgICAgIGlmIChjYXB0aW9uRWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGhhc1ZhbHVlIGNoZWNrIHdoZXRoZXIgZm9ybS1maWVsZCBoYXMgYSB2YWx1ZSBmcm9tIHBhc3NlZCB2YWwgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgLy8gQWRkZWQgc2FuaXR5IGNoZWNrIG9uIHZhbCB0byBzdXBwb3J0IHZhbHVlcyBsaWtlZCAwLCBmYWxzZSBldGMgYXMgaW5wdXQgdmFsIC0gV01TLTIwMDg0XG4gICAgICAgICAgICAgICAgLy8gZXhwbGljaXRseSBjaGVja2luZyBmb3IgaW5wdXQgdmFsdWUgb3IgLXdlYmtpdC1hdXRvZmlsbCB0byBzZWUgd2hldGhlciB0aGVyZSBhcmUgYW55IGF1dG9maWxsZWQgZmllbGRzIC0gV01TLTIwMTQxXG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9ICgoaXNEZWZpbmVkKHZhbCkgJiYgdmFsICE9PSAnJyAmJiB2YWwgIT09IG51bGwpIHx8IGNhcHRpb25FbC5maW5kKCdpbnB1dCcpLnZhbCgpKSB8fCBjYXB0aW9uRWwuZmluZCgnaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCcpLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgnY2FwdGlvblBvc2l0aW9uQW5pbWF0ZScsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVZhbDogaGFzVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZUVsOiBjYXB0aW9uRWwsXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0TXVsdGlwbGU6IHRoaXMuZm9ybVdpZGdldCAmJiB0aGlzLmZvcm1XaWRnZXQubXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIGlzRm9jdXNlZDogdGhpcy5fYWN0aXZlRmllbGRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgLy8gRml4IGZvciBbV01TLTIzOTU5XTogQURBIGlzc3VlIC0gYWRkaW5nIGFyaWEtZGVzY3JpYmVkYnksIGFyaWEtaW52YWxpZCwgX19lcnJvcm1zZyBhdHRyaWJ1dGVzIG9ubHkgd2hlbiB0aGUgZm9ybSBmaWVsZCBpcyBpbnZhbGlkICwgZWxzZSByZW1vdmluZyB0aGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgdGhpcy5zZXRBcmlhQXR0cmlidXRlcygpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLm9uRmllbGRWYWx1ZUNoYW5nZSh0aGlzLCB2YWwpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzKCk7XG4gICAgICAgICAgICAvLyBEbyBtYXJrIGFzIHRvdWNoZWQsIG9ubHkgaW5jYXNlIHdoZW4gdXNlciBoYXMgZW50ZXJlZCBhbiBpbnB1dCBidXQgbm90IHRocm91Z2ggdGhlIHNjcmlwdC4gSGVuY2UgYWRkZWQgbW91c2Vkb3duIGV2ZW50IGNoZWNrXG4gICAgICAgICAgICAvLyBhY3RpdmUgY2xhc3MgY2hlY2tzIHdoZXRoZXIgdXNlciBpcyBvbiB0aGUgY3VycmVudCBmaWVsZCwgaWYgc28gbWFya2luZyB0aGUgZmllbGQgYXMgdG91Y2hlZC4gQW5kIGZvcm0gZmllbGQgdmFsaWRhdGlvbiBoYXBwZW5zIG9uY2UgYSBmaWVsZCBpcyB0b3VjaGVkXG4gICAgICAgICAgICAvLyBfdHJpZ2dlcmVkQnlVc2VyIGNoZWNrcyB3aGV0aGVyIHRoZSBmaWVsZCBpcyB0b3VjaGVkIGJ5IHRoZSB1c2VyIG9yIHRyaWdnZXJlZCBmcm9tIGV4dGVybmFsIHNjcmlwdFxuICAgICAgICAgICAgLy8gV01TLTIyNDU2OiBfY2xpY2t0cmlnZ2VyZWRCeVVzZXIgY2hlY2tzIHdoZW4gdXNlciBzZWxlY3RzIGRhdGV0aW1ldHlwZSBmcm9tIHBpY2tlciwgbWFyayB0aGUgZmllbGQgYXMgdG91Y2hlZCB0byBzaG93IHZhbGlkYXRpb24gZXJyb3JzIGluIG1vYmlsZVxuXG4gICAgICAgICAgICBpZiAodGhpcy4kZWxlbWVudC5maW5kKCcuYWN0aXZlJykubGVuZ3RoID4gMCB8fCB0aGlzLmZvcm0udG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmlnZ2VyZWRCeVVzZXIgfHwgKGlzTW9iaWxlKCkgJiYgdGhpcy5fY2xpY2t0cmlnZ2VyZWRCeVVzZXIgJiYgaXNEYXRlVGltZVR5cGUodGhpcy53aWRnZXR0eXBlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5zZXRDdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TdGF0dXNDaGFuZ2Uoc3RhdHVzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93UGVuZGluZ1NwaW5uZXIgPSAoc3RhdHVzID09PSAnUEVORElORycpO1xuICAgICAgICAgICAgLy8gd2hpbGUgcnVubmluZyB2YWxpZGF0aW9uLCB3aWRnZXQgaXMgZGlzYWJsZWQgYW5kIHNwaW5uZXIgaXMgc2hvd25cbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBmb3JtV2lkZ2V0IGRpc2FibGVkIHN0YXRlIGlzIHJlc2V0IHRvIHRoZSBzdGF0ZSBvZiB0aGUgZm9ybUZpZWxkLlxuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtV2lkZ2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtV2lkZ2V0LmRpc2FibGVkICE9PSAodGhpcyBhcyBhbnkpLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtV2lkZ2V0LmRpc2FibGVkID0gKHRoaXMgYXMgYW55KS5kaXNhYmxlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBleHBvc2UgdmFsaWRhdGlvbiBtZXNzYWdlIGFuZCBzZXQgY29udHJvbCB0byBpbnZhbGlkXG4gICAgc2V0VmFsaWRhdGlvbk1lc3NhZ2UodmFsKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZSA9IHZhbDtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBWYWxpZGF0b3JzKGN1c3RvbVZhbGlkYXRvckZuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0UmVhZE9ubHlTdGF0ZSgpIHtcbiAgICAgICAgbGV0IHJlYWRPbmx5O1xuICAgICAgICBpZiAodGhpcy5mb3JtLmlzVXBkYXRlTW9kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXNbJ3ByaW1hcnkta2V5J10gJiYgIXRoaXNbJ2lzLXJlbGF0ZWQnXSAmJiAhdGhpcy5wZXJpb2QpIHtcbiAgICAgICAgICAgICAgICAvKklmIHRoZSBmaWVsZCBpcyBwcmltYXJ5IGJ1dCBpcyBhc3NpZ25lZCBzZXQgcmVhZG9ubHkgZmFsc2UuXG4gICAgICAgICAgICAgICAgICAgQXNzaWduZWQgaXMgd2hlcmUgdGhlIHVzZXIgaW5wdXRzIHRoZSB2YWx1ZSB3aGlsZSBhIG5ldyBlbnRyeS5cbiAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5vdCBlZGl0YWJsZShpbiB1cGRhdGUgbW9kZSkgb25jZSBlbnRyeSBpcyBzdWNjZXNzZnVsKi9cbiAgICAgICAgICAgICAgICByZWFkT25seSA9ICEodGhpcy5nZW5lcmF0b3IgPT09ICdhc3NpZ25lZCcgJiYgdGhpcy5mb3JtLm9wZXJhdGlvblR5cGUgIT09ICd1cGRhdGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVhZE9ubHkgPSB0aGlzLnJlYWRvbmx5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSW4gdmlldyBtb2RlLCBzZXQgd2lkZ2V0IHN0YXRlIHRvIHJlYWRvbmx5IGFsd2F5c1xuICAgICAgICAgICAgcmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlYWRPbmx5ID0gcmVhZE9ubHkgfHwgdGhpcy5mb3JtLnJlYWRvbmx5O1xuICAgICAgICB0aGlzLnNldEZvcm1XaWRnZXQoJ3JlYWRvbmx5JywgcmVhZE9ubHkpO1xuICAgIH1cblxuICAgIHJlc2V0RGlzcGxheUlucHV0KCkge1xuICAgICAgICBpZiAoKCFpc0RlZmluZWQodGhpcy52YWx1ZSkgfHwgdGhpcy52YWx1ZSA9PT0gJycpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXQgJiYgdGhpcy5mb3JtV2lkZ2V0LnJlc2V0RGlzcGxheUlucHV0ICYmIHRoaXMuZm9ybVdpZGdldC5yZXNldERpc3BsYXlJbnB1dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICBpZih0aGlzLl9jb250cm9sKVxuICAgICAgICB0aGlzLl9jb250cm9sLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgdHJpZ2dlclVwbG9hZEV2ZW50KCRldmVudCwgZXZlbnROYW1lKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0geyAkZXZlbnQgfTtcbiAgICAgICAgaWYgKGV2ZW50TmFtZSA9PT0gJ2NoYW5nZScpIHtcbiAgICAgICAgICAgIHBhcmFtcy5uZXdWYWwgPSAkZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICAgICAgcGFyYW1zLm9sZFZhbCA9IHRoaXMuX29sZFVwbG9hZFZhbDtcbiAgICAgICAgICAgIHRoaXMuX29sZFVwbG9hZFZhbCA9IHBhcmFtcy5uZXdWYWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKGV2ZW50TmFtZSwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyRm9ybUZpZWxkKCkge1xuXG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHRoaXMuX2ZpZWxkTmFtZTtcblxuICAgICAgICBpZiAodGhpcy5wYXJlbnRMaXN0ICYmICEodGhpcy5mb3JtLnBhcmVudExpc3QgPT09IHRoaXMucGFyZW50TGlzdCkpIHtcbiAgICAgICAgICAgIGxldCBjb3VudGVyID0gMTtcbiAgICAgICAgICAgIGxldCBfZmllbGROYW1lID0gZmllbGROYW1lO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMubmdmb3JtLmNvbnRyb2xzLmhhc093blByb3BlcnR5KF9maWVsZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgX2ZpZWxkTmFtZSA9IGAke2ZpZWxkTmFtZX1fJHtjb3VudGVyfWA7XG4gICAgICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5uZ2Zvcm0uYWRkQ29udHJvbChfZmllbGROYW1lLCB0aGlzLmNyZWF0ZUNvbnRyb2woKSk7XG4gICAgICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBfZmllbGROYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ2Zvcm0uYWRkQ29udHJvbChmaWVsZE5hbWUsIHRoaXMuY3JlYXRlQ29udHJvbCgpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLm9uVmFsdWVDaGFuZ2UuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25WYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICBjb25zdCBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuX2NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMub25TdGF0dXNDaGFuZ2UuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25TdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSYW5nZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICB0aGlzLm5nZm9ybS5hZGRDb250cm9sKGZpZWxkTmFtZSArICdfbWF4JywgdGhpcy5jcmVhdGVDb250cm9sKCkpO1xuICAgICAgICAgICAgLy8gcmVnaXN0ZXJpbmcgZm9yIHZhbHVlQ2hhbmdlcyBvbiBNYXhmb3JtV2lkZ2V0XG4gICAgICAgICAgICBjb25zdCBvbk1heFZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fbWF4Q29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMub25WYWx1ZUNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gb25NYXhWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gZ2V0KHRoaXMuZm9ybS5mb3JtZGF0YSwgdGhpcy5fZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5uZ2Zvcm0gPSB0aGlzLmZvcm0ubmdmb3JtO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9ybUZpZWxkKCk7XG4gICAgICAgIC8vIEluc3RhbnRpYXRlIGN1c3RvbSB2YWxpZGF0b3JzIGNsYXNzIGZvciBmb3JtIGZpZWxkXG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucyA9IG5ldyBCYXNlRmllbGRWYWxpZGF0aW9ucyh0aGlzLCB0aGlzLmZvcm1XaWRnZXQsIHRoaXMud2lkZ2V0dHlwZSwgdGhpcy5fY29udHJvbCwgdGhpcy5mb3JtKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBwcmVwYXJlRm9ybVdpZGdldCgpIHtcbiAgICAgICAgdGhpcy5faW5pdFByb3BzUmVzKCk7XG5cbiAgICAgICAgLy8gc2V0dGluZyBkaXNwbGF5RXhwcmVzc2lvbnMgb24gdGhlIGZvcm13aWRnZXQgZXhwbGljaXRseSBhcyBleHByIHdhcyBldmFsdWF0ZWQgdG8gXCJcIi5cbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KCdiaW5kZGlzcGxheWxhYmVsJywgdGhpcy5iaW5kZGlzcGxheWxhYmVsKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KCdiaW5kZGlzcGxheWV4cHJlc3Npb24nLCB0aGlzLmJpbmRkaXNwbGF5ZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVdpZGdldCgnYmluZGRpc3BsYXlpbWFnZXNyYycsIHRoaXMuYmluZGRpc3BsYXlpbWFnZXNyYyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVdpZGdldCgnYmluZENoaXBjbGFzcycsIHRoaXMuYmluZENoaXBjbGFzcyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVdpZGdldCgnYmluZGRhdGFzZXQnLCB0aGlzLmJpbmRkYXRhc2V0KTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMua2V5ID0gdGhpcy5fZmllbGROYW1lIHx8IHRoaXMudGFyZ2V0IHx8IHRoaXMuYmluZGluZztcbiAgICAgICAgICAgIHRoaXMudmlld21vZGV3aWRnZXQgPSB0aGlzLnZpZXdtb2Rld2lkZ2V0IHx8IGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCh0aGlzLndpZGdldHR5cGUpO1xuXG4gICAgICAgICAgICAvLyBGb3IgdXBsb2FkIHdpZGdldCwgZ2VuZXJhdGUgdGhlIHBlcm1pdHRlZCBmaWVsZFxuICAgICAgICAgICAgaWYgKHRoaXMud2lkZ2V0dHlwZSA9PT0gRm9ybVdpZGdldFR5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGVUeXBlO1xuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgYWNjZXB0cyBzdHJpbmcgZnJvbSBmaWxlIHR5cGUgYW5kIGV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9IHRoaXMuZmlsZXR5cGUgPyBGSUxFX1RZUEVTW3RoaXMuZmlsZXR5cGVdIDogJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXR0ZWQgPSBmaWxlVHlwZSArICh0aGlzLmV4dGVuc2lvbnMgPyAoZmlsZVR5cGUgPyAnLCcgOiAnJykgKyB0aGlzLmV4dGVuc2lvbnMgOiAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiB0aGlzLnZpZXdwb3J0LmlzTW9iaWxlVHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpc1snbW9iaWxlLWRpc3BsYXknXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5zaG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdwb3J0LmlzVGFibGV0VHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpc1sndGFibGV0LWRpc3BsYXknXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5zaG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXNbJ3BjLWRpc3BsYXknXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZGdldC5zaG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLmRpc3BsYW5hbWUgPSB0aGlzLmRpc3BsYXluYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5zaG93ID0gdGhpcy5zaG93O1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5pc1JlbGF0ZWQgPSB0aGlzWydpcy1yZWxhdGVkJ107XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLmlucHV0dHlwZSA9IHRoaXMuaW5wdXR0eXBlO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5nZW5lcmF0b3IgPSB0aGlzLmdlbmVyYXRvcjtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5wcmltYXJ5S2V5ID0gdGhpc1sncHJpbWFyeS1rZXknXTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcucmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5fcmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5O1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5yZWdleHAgPSB0aGlzLnJlZ2V4cDtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcudHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcua2V5ID0gdGhpcy5rZXk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLm1vYmlsZURpc3BsYXkgPSB0aGlzWydtb2JpbGUtZGlzcGxheSddO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5uYW1lID0gdGhpcy5uYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5wY0Rpc3BsYXkgPSB0aGlzWydwYy1kaXNwbGF5J107XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnRhYmxldERpc3BsYXkgPSB0aGlzWyd0YWJsZXQtZGlzcGxheSddO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy52YWxpZGF0aW9ubWVzc2FnZSA9IHRoaXMudmFsaWRhdGlvbm1lc3NhZ2U7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnZpZXdtb2Rld2lkZ2V0ID0gdGhpcy52aWV3bW9kZXdpZGdldDtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcud2lkZ2V0ID0gdGhpcy53aWRnZXR0eXBlO1xuXG4gICAgICAgICAgICAvLyBSZWdpc3RlciB0aGUgZm9ybSBmaWVsZCB3aXRoIHBhcmVudCBmb3JtXG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVnaXN0ZXJGb3JtRmllbGRzKHRoaXMud2lkZ2V0KTtcblxuICAgICAgICAgICAgYWRkRm9ySWRBdHRyaWJ1dGVzKHRoaXMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHlTdGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICBpZih0aGlzLndpZGdldFN1YlR5cGUgPT09IFwid20tZm9ybS1maWVsZC1jdXN0b20td2lkZ2V0XCIgJiYgdGhpcy5mb3JtV2lkZ2V0Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXQgPSB0aGlzLmZvcm1XaWRnZXQubmF0aXZlRWxlbWVudC53aWRnZXQ7XG4gICAgICAgIGlmICh0aGlzLmZvcm1XaWRnZXQpIHtcbiAgICAgICAgICAgIGlmKHRoaXMud2lkZ2V0U3ViVHlwZSA9PT0gXCJ3bS1mb3JtLWZpZWxkLWN1c3RvbS13aWRnZXRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldC5jb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1XaWRnZXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybVdpZGdldCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldDirective, decorators: [{
|
|
506
|
+
type: Directive,
|
|
507
|
+
args: [{
|
|
508
|
+
standalone: true,
|
|
509
|
+
selector: '[wmFormField]',
|
|
510
|
+
exportAs: 'wmFormField',
|
|
511
|
+
providers: [
|
|
512
|
+
provideAsWidgetRef(FormFieldDirective),
|
|
513
|
+
provideAs(FormFieldDirective, NG_VALUE_ACCESSOR, true),
|
|
514
|
+
{ provide: Context, useFactory: () => { return {}; }, multi: true }
|
|
515
|
+
]
|
|
516
|
+
}]
|
|
517
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FormComponent }, { type: i2.FormBuilder }, { type: i3.Viewport }, { type: i3.App }, { type: i4.ListComponent, decorators: [{
|
|
518
|
+
type: Optional
|
|
519
|
+
}] }, { type: undefined, decorators: [{
|
|
520
|
+
type: Attribute,
|
|
521
|
+
args: ['chipclass.bind']
|
|
522
|
+
}] }, { type: undefined, decorators: [{
|
|
523
|
+
type: Attribute,
|
|
524
|
+
args: ['dataset.bind']
|
|
525
|
+
}] }, { type: undefined, decorators: [{
|
|
526
|
+
type: Attribute,
|
|
527
|
+
args: ['displayexpression.bind']
|
|
528
|
+
}] }, { type: undefined, decorators: [{
|
|
529
|
+
type: Attribute,
|
|
530
|
+
args: ['displaylabel.bind']
|
|
531
|
+
}] }, { type: undefined, decorators: [{
|
|
532
|
+
type: Attribute,
|
|
533
|
+
args: ['widgettype']
|
|
534
|
+
}] }, { type: undefined, decorators: [{
|
|
535
|
+
type: Attribute,
|
|
536
|
+
args: ['name']
|
|
537
|
+
}] }, { type: String, decorators: [{
|
|
538
|
+
type: Attribute,
|
|
539
|
+
args: ['displayimagesrc.bind']
|
|
540
|
+
}] }, { type: undefined, decorators: [{
|
|
541
|
+
type: Attribute,
|
|
542
|
+
args: ['key']
|
|
543
|
+
}] }, { type: undefined, decorators: [{
|
|
544
|
+
type: Attribute,
|
|
545
|
+
args: ['is-range']
|
|
546
|
+
}] }, { type: undefined, decorators: [{
|
|
547
|
+
type: Attribute,
|
|
548
|
+
args: ['pc-display']
|
|
549
|
+
}] }, { type: undefined, decorators: [{
|
|
550
|
+
type: Attribute,
|
|
551
|
+
args: ['mobile-display']
|
|
552
|
+
}] }, { type: undefined, decorators: [{
|
|
553
|
+
type: Attribute,
|
|
554
|
+
args: ['tablet-display']
|
|
555
|
+
}] }, { type: Array, decorators: [{
|
|
556
|
+
type: Self
|
|
557
|
+
}, {
|
|
558
|
+
type: Inject,
|
|
559
|
+
args: [Context]
|
|
560
|
+
}] }, { type: undefined, decorators: [{
|
|
561
|
+
type: Inject,
|
|
562
|
+
args: ['EXPLICIT_CONTEXT']
|
|
563
|
+
}, {
|
|
564
|
+
type: Optional
|
|
565
|
+
}] }], propDecorators: { formWidget: [{
|
|
566
|
+
type: ContentChild,
|
|
567
|
+
args: ['formWidget', { static: true }]
|
|
568
|
+
}], formWidgetMax: [{
|
|
569
|
+
type: ContentChild,
|
|
570
|
+
args: ['formWidgetMax']
|
|
571
|
+
}], onKeydownHandler: [{
|
|
572
|
+
type: HostListener,
|
|
573
|
+
args: ['keydown', ['$event']]
|
|
574
|
+
}], handleClick: [{
|
|
575
|
+
type: HostListener,
|
|
576
|
+
args: ['click', ['$event']]
|
|
577
|
+
}] } });
|
|
578
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9mb3JtL3NyYy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFFUixRQUFRLEVBQ1IsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQWEsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixHQUFHLEVBQ0gsUUFBUSxFQUNSLGNBQWMsRUFDZCxjQUFjLEVBQ2QsU0FBUyxFQUNULFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNYLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBSWhFLG9GQUFvRjtBQUNwRixNQUFNLGlCQUFpQixHQUFHLEdBQUcs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QyxNQUFNOzswQkFDaEIsU0FBUzsyQkFBQyxzQkFBc0I7OzBCQUNoQyxTQUFTOzJCQUFDLEtBQUs7OzBCQUNmLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLFNBQVM7MkJBQUMsWUFBWTs7MEJBQ3RCLFNBQVM7MkJBQUMsZ0JBQWdCOzswQkFDMUIsU0FBUzsyQkFBQyxnQkFBZ0I7OzBCQUMxQixJQUFJOzswQkFBSSxNQUFNOzJCQUFDLE9BQU87OzBCQUN0QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0E5RkcsVUFBVTtzQkFBckQsWUFBWTt1QkFBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNYLGFBQWE7c0JBQTNDLFlBQVk7dUJBQUMsZUFBZTtnQkFnRVEsZ0JBQWdCO3NCQUFwRCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJQSxXQUFXO3NCQUE3QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIGFkZEZvcklkQXR0cmlidXRlcyxcbiAgICBBcHAsXG4gICAgZGVib3VuY2UsXG4gICAgRm9ybVdpZGdldFR5cGUsXG4gICAgaXNEYXRlVGltZVR5cGUsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzTW9iaWxlLFxuICAgIG5vb3AsXG4gICAgVmlld3BvcnRcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlRmllbGRWYWxpZGF0aW9ucyxcbiAgICBDb250ZXh0LFxuICAgIGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCxcbiAgICBnZXRFdmFsdWF0ZWREYXRhLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgU3R5bGFibGVDb21wb25lbnRcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0xpc3RDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvbGlzdCc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9mb3JtLWZpZWxkLnByb3BzJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtmb3JFYWNoLCBnZXQsIGlzQXJyYXksIGlzT2JqZWN0LCBqb2lufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuLy8gQ3VzdG9tIHZhbGlkYXRvciB0byBzaG93IHZhbGlkYXRpb24gZXJyb3IsIGlmIHNldFZhbGlkYXRpb25NZXNzYWdlIG1ldGhvZCBpcyB1c2VkXG5jb25zdCBjdXN0b21WYWxpZGF0b3JGbiA9ICgpID0+IHtcbiAgICByZXR1cm4geyBjdXN0b206IHRydWUgfTtcbn07XG5cbmNvbnN0IEZJTEVfVFlQRVMgPSB7XG4gICAgJ2ltYWdlJyA6ICdpbWFnZS8qJyxcbiAgICAndmlkZW8nIDogJ3ZpZGVvLyonLFxuICAgICdhdWRpbycgOiAnYXVkaW8vKidcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtRm9ybUZpZWxkXScsXG4gICAgZXhwb3J0QXM6ICd3bUZvcm1GaWVsZCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihGb3JtRmllbGREaXJlY3RpdmUpLFxuICAgICAgICBwcm92aWRlQXMoRm9ybUZpZWxkRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHtwcm92aWRlOiBDb250ZXh0LCB1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiB7fSB9LCBtdWx0aTogdHJ1ZX1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZERpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnZm9ybVdpZGdldCcsIHtzdGF0aWM6IHRydWV9KSBmb3JtV2lkZ2V0O1xuICAgIEBDb250ZW50Q2hpbGQoJ2Zvcm1XaWRnZXRNYXgnKSBmb3JtV2lkZ2V0TWF4O1xuXG4gICAgcHJpdmF0ZSBmYjtcbiAgICBwcml2YXRlIHZpZXdwb3J0O1xuXG4gICAgLy8gZXhjbHVkZVByb3BzIGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb3BzIHRoYXQgc2hvdWxkIG5vdCBiZSBhcHBsaWVkIG9uIGlubmVyIHdpZGdldFxuICAgIHByaXZhdGUgZXhjbHVkZVByb3BzO1xuICAgIHByaXZhdGUgX3ZhbGlkYXRvcnM7XG4gICAgcHJpdmF0ZSBfb2xkVXBsb2FkVmFsO1xuXG4gICAgbmdmb3JtOiBGb3JtR3JvdXA7XG4gICAgZGVmYXVsdHZhbHVlO1xuICAgIGRpc3BsYXlleHByZXNzaW9uO1xuICAgIGRpc3BsYXlmaWVsZDtcbiAgICBkaXNwbGF5bGFiZWw7XG4gICAgZGlzcGxheW5hbWU7XG4gICAgZ2VuZXJhdG9yO1xuICAgIGtleTtcbiAgICB0YXJnZXQ7XG4gICAgYmluZGluZztcbiAgICB3aWRnZXR0eXBlO1xuICAgIGNsYXNzO1xuICAgIHJlYWRvbmx5O1xuICAgIHNob3c7XG4gICAgdHlwZTtcbiAgICBpc0RhdGFTZXRCb3VuZDtcbiAgICB2aWV3bW9kZXdpZGdldDtcbiAgICBiaW5kZGF0YXNldDtcbiAgICBiaW5kZGlzcGxheWV4cHJlc3Npb247XG4gICAgYmluZENoaXBjbGFzcztcbiAgICBkaXNwbGF5aW1hZ2VzcmM6IHN0cmluZztcbiAgICBiaW5kZGlzcGxheWltYWdlc3JjO1xuICAgIGJpbmRkaXNwbGF5bGFiZWw7XG4gICAgZm9ybTtcbiAgICBmaWxldHlwZTtcbiAgICBleHRlbnNpb25zO1xuICAgIHBlcm1pdHRlZDtcbiAgICBwZXJpb2Q7XG4gICAgaXNSYW5nZTtcbiAgICBuYW1lO1xuICAgIC8vIFZhbGlkYXRpb24gcHJvcGVydGllc1xuICAgIHJlcXVpcmVkO1xuICAgIG1heGNoYXJzO1xuICAgIG1pbnZhbHVlO1xuICAgIG1heHZhbHVlO1xuICAgIHJlZ2V4cDtcbiAgICBmaWVsZERlZkNvbmZpZztcbiAgICBwbGFjZWhvbGRlcjtcbiAgICBpbnB1dHR5cGU7XG4gICAgdmFsaWRhdGlvbm1lc3NhZ2U7XG5cbiAgICBwdWJsaWMgX2ZpZWxkTmFtZTtcblxuICAgIHByaXZhdGUgX2RlYm91bmNlU2V0VXBWYWxpZGF0b3JzO1xuICAgIHByaXZhdGUgX2luaXRQcm9wc1JlcztcbiAgICBwcml2YXRlIHBhcmVudExpc3Q7XG4gICAgcHJpdmF0ZSBzaG93UGVuZGluZ1NwaW5uZXI6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfYWN0aXZlRmllbGQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBub3RpZnlGb3JGaWVsZHM6IGFueTtcbiAgICBwcml2YXRlIGZpZWxkVmFsaWRhdGlvbnM7XG4gICAgcHJpdmF0ZSBfdHJpZ2dlcmVkQnlVc2VyOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2NsaWNrdHJpZ2dlcmVkQnlVc2VyOiBib29sZWFuO1xuICAgIHByaXZhdGUgYXBwOiBBcHA7XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLl90cmlnZ2VyZWRCeVVzZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgaGFuZGxlQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5fY2xpY2t0cmlnZ2VyZWRCeVVzZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGb2N1c2VkO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBmb3JtOiBGb3JtQ29tcG9uZW50LFxuICAgICAgICBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHZpZXdwb3J0OiBWaWV3cG9ydCxcbiAgICAgICAgYXBwOiBBcHAsXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudExpc3Q6IExpc3RDb21wb25lbnQsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2NoaXBjbGFzcy5iaW5kJykgYmluZENoaXBjbGFzczogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc2V0LmJpbmQnKSBiaW5kZGF0YXNldCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlzcGxheWV4cHJlc3Npb24uYmluZCcpIGJpbmRkaXNwbGF5ZXhwcmVzc2lvbjogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdkaXNwbGF5bGFiZWwuYmluZCcpIGJpbmRkaXNwbGF5bGFiZWw6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnd2lkZ2V0dHlwZScpIF93aWRnZXRUeXBlLFxuICAgICAgICBAQXR0cmlidXRlKCduYW1lJykgbmFtZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlzcGxheWltYWdlc3JjLmJpbmQnKSBiaW5kZGlzcGxheWltYWdlc3JjOiBTdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2tleScpIGtleSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnaXMtcmFuZ2UnKSBpc1JhbmdlLFxuICAgICAgICBAQXR0cmlidXRlKCdwYy1kaXNwbGF5JykgcGNEaXNwbGF5LFxuICAgICAgICBAQXR0cmlidXRlKCdtb2JpbGUtZGlzcGxheScpIG1vYmlsZURpc3BsYXksXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3RhYmxldC1kaXNwbGF5JykgdGFibGV0RGlzcGxheSxcbiAgICAgICAgQFNlbGYoKSBASW5qZWN0KENvbnRleHQpIGNvbnRleHRzOiBBcnJheTxhbnk+LFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgY29uc3QgV0lER0VUX0NPTkZJRyA9IHtcbiAgICAgICAgICAgIHdpZGdldFR5cGU6ICd3bS1mb3JtLWZpZWxkJyxcbiAgICAgICAgICAgIGhvc3RDbGFzczogJycsXG4gICAgICAgICAgICB3aWRnZXRTdWJUeXBlOiAnd20tZm9ybS1maWVsZC0nICsgKF93aWRnZXRUeXBlIHx8IEZvcm1XaWRnZXRUeXBlLlRFWFQpLnRyaW0oKVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzb2x2ZUZuOiBGdW5jdGlvbiA9IG5vb3A7XG5cbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcbiAgICAgICAgdGhpcy5faW5pdFByb3BzUmVzID0gcmVzb2x2ZUZuO1xuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZyA9IHt9O1xuICAgICAgICB0aGlzLmNsYXNzID0gJyc7XG4gICAgICAgIHRoaXMuYmluZGRhdGFzZXQgPSBiaW5kZGF0YXNldDtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjID0gYmluZGRpc3BsYXlpbWFnZXNyYztcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWV4cHJlc3Npb24gPSBiaW5kZGlzcGxheWV4cHJlc3Npb247XG4gICAgICAgIHRoaXMuYmluZENoaXBjbGFzcyA9IGJpbmRDaGlwY2xhc3M7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlsYWJlbCA9IGJpbmRkaXNwbGF5bGFiZWw7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgICAgIHRoaXMuZmIgPSBmYjtcbiAgICAgICAgdGhpcy52aWV3cG9ydCA9IHZpZXdwb3J0O1xuICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBrZXkgfHwgbmFtZTtcbiAgICAgICAgdGhpcy5pc1JhbmdlID0gaXNSYW5nZTtcbiAgICAgICAgdGhpcy5leGNsdWRlUHJvcHMgPSBuZXcgU2V0KFsndHlwZScsICduYW1lJ10pO1xuICAgICAgICB0aGlzLndpZGdldHR5cGUgPSBfd2lkZ2V0VHlwZTtcbiAgICAgICAgdGhpcy5wYXJlbnRMaXN0ID0gcGFyZW50TGlzdDtcbiAgICAgICAgdGhpcy5ub3RpZnlGb3JGaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5iaW5kZGF0YXNldCB8fCB0aGlzLiRlbGVtZW50LmF0dHIoJ2RhdGFzZXQnKSkge1xuICAgICAgICAgICAgdGhpcy5pc0RhdGFTZXRCb3VuZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0c1swXS5fb25Gb2N1c0ZpZWxkID0gdGhpcy5fb25Gb2N1c0ZpZWxkLmJpbmQodGhpcyk7XG4gICAgICAgIGNvbnRleHRzWzBdLl9vbkJsdXJGaWVsZCA9IHRoaXMuX29uQmx1ckZpZWxkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdGhpcy5fZGVib3VuY2VTZXRVcFZhbGlkYXRvcnMgPSBkZWJvdW5jZSgoKSA9PiB0aGlzLnNldFVwVmFsaWRhdG9ycygpLCA1MDApO1xuICAgIH1cblxuICAgIF9vbkZvY3VzRmllbGQoJGV2dCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVGaWVsZCA9IHRydWU7XG4gICAgICAgICQoJGV2dC50YXJnZXQpLmNsb3Nlc3QoJy5saXZlLWZpZWxkJykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuXG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdG8gZ2V0IHRoZSBhY3RpdmUgZWxlbWVudCBtYXJrdXAgYmFzZWQgb24gd2lkZ2V0IHR5cGVcbiAgICBnZXRBY3RpdmVFbGVtZW50KCkge1xuICAgICAgICBjb25zdCB3aWRnZXRUeXBlID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnd2lkZ2V0dHlwZScpO1xuICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdzZWxlY3QnKTtcbiAgICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RleHRhcmVhJyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEFyaWFBdHRyaWJ1dGVzKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICAgIGlmICh0aGlzLm5nZm9ybS5jb250cm9sc1t0aGlzLl9maWVsZE5hbWVdLmludmFsaWQgJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lXS50b3VjaGVkICYmIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ19fZXJyb3Jtc2cnLCBgJHt0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdfX3ZhbGlkYXRpb25JZCcpfWApO1xuICAgICAgICAgICAgZWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWludmFsaWQnLCBgJHt0aGlzLm5nZm9ybS5jb250cm9sc1t0aGlzLl9maWVsZE5hbWVdLmludmFsaWR9YCk7XG4gICAgICAgICAgICBlbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBgJHt0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdfX3ZhbGlkYXRpb25JZCcpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnX19lcnJvcm1zZycpO1xuICAgICAgICAgICAgZWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWludmFsaWQnKTtcbiAgICAgICAgICAgIGVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX29uQmx1ckZpZWxkKCRldnQpIHtcbiAgICAgICAgJCgkZXZ0LnRhcmdldCkuY2xvc2VzdCgnLmxpdmUtZmllbGQnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIGNvbnN0IGVsZSA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwLnRleHQtZGFuZ2VyJyk7XG4gICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzk1OV06IEFEQSBpc3N1ZSAtIGFkZGluZyBhcmlhLWRlc2NyaWJlZGJ5LCBhcmlhLWludmFsaWQsIF9fZXJyb3Jtc2cgYXR0cmlidXRlcyBvbmx5IHdoZW4gdGhlIGZvcm0gZmllbGQgaXMgaW52YWxpZCAsIGVsc2UgcmVtb3ZpbmcgdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgdGhpcy5zZXRBcmlhQXR0cmlidXRlcygpO1xuICAgICAgICB0aGlzLl9hY3RpdmVGaWVsZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl90cmlnZ2VyZWRCeVVzZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2xpY2t0cmlnZ2VyZWRCeVVzZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBFeHByZXNzaW9uIHRvIGJlIGV2YWx1YXRlZCBpbiB2aWV3IG1vZGUgb2YgZm9ybSBmaWVsZFxuICAgIGV2YWx1YXRlRXhwcihvYmplY3QsIGRpc3BsYXlGaWVsZCwgZGlzcGxheUV4cHIpIHtcbiAgICAgICAgaWYgKCFkaXNwbGF5RXhwciB8fCAhZGlzcGxheUZpZWxkKSB7XG4gICAgICAgICAgICBkaXNwbGF5RmllbGQgPSBPYmplY3Qua2V5cyhvYmplY3QpWzBdO1xuICAgICAgICAgICAgLy8gSWYgZGF0YXNldCBpcyBub3QgcmVhZHksIGRpc3BsYXkgZXhwcmVzc2lvbiB3aWxsIG5vdCBiZSBkZWZpbmVkXG4gICAgICAgICAgICBpZiAoIWRpc3BsYXlGaWVsZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0RXZhbHVhdGVkRGF0YShvYmplY3QsIHtcbiAgICAgICAgICAgIGZpZWxkOiBkaXNwbGF5RmllbGQsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBkaXNwbGF5RXhwclxuICAgICAgICB9LCB0aGlzLnZpZXdQYXJlbnQpO1xuICAgIH1cblxuICAgIC8vIEV4cHJlc3Npb24gdG8gYmUgZXZhbHVhdGVkIGluIHZpZXcgbW9kZSBvZiBmb3JtIGZpZWxkXG4gICAgZ2V0RGlzcGxheUV4cHIoKSB7XG4gICAgICAgIGNvbnN0IGNhcHRpb24gPSBbXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGQgPSB0aGlzLmRpc3BsYXlmaWVsZCB8fCB0aGlzLmRpc3BsYXlsYWJlbFxuICAgICAgICBjb25zdCBkaXNwbGF5RXhwciA9IHRoaXMuZGlzcGxheWV4cHJlc3Npb247XG4gICAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGZvckVhY2godmFsdWUsIG9iaiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChvYmopKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uLnB1c2godGhpcy5ldmFsdWF0ZUV4cHIob2JqLCBkaXNwbGF5RmllbGQsIGRpc3BsYXlFeHByKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FwdGlvbi5wdXNoKHRoaXMuZXZhbHVhdGVFeHByKHZhbHVlLCBkaXNwbGF5RmllbGQsIGRpc3BsYXlFeHByKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gam9pbihjYXB0aW9uLCAnLCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgPyAnJyA6IHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0Q2FwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSA9PT0gbnVsbCkgPyAoZ2V0KHRoaXMuZm9ybS5kYXRhb3V0cHV0LCB0aGlzLl9maWVsZE5hbWUpIHx8ICcnKSA6IHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTm90aWZpZXMgY2hhbmdlcyB0byBvYnNlcnZpbmcgdmFsaWRhdGlvbiBmaWVsZHNcbiAgICBub3RpZnlDaGFuZ2VzKCkge1xuICAgICAgICBmb3JFYWNoKHRoaXMubm90aWZ5Rm9yRmllbGRzLCBmaWVsZCA9PiB7XG4gICAgICAgICAgICBmaWVsZC5maWVsZFZhbGlkYXRpb25zLnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVycyBvYnNlcnZlciBvZiB2YWxpZGF0aW9uIGZpZWxkc1xuICAgIG9ic2VydmVPbihmaWVsZHMpIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLm9ic2VydmVPbihmaWVsZHMsICdmb3JtZmllbGRzJyk7XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIHNldHVwIHZhbGlkYXRvcnMgZm9yIHJlYWN0aXZlIGZvcm0gY29udHJvbFxuICAgIHNldFVwVmFsaWRhdG9ycyhjdXN0b21WYWxpZGF0b3I/KSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5zZXRVcFZhbGlkYXRvcnMoY3VzdG9tVmFsaWRhdG9yKTtcbiAgICB9XG5cbiAgICAvLyBzZXRzIHRoZSBjdXN0b20gYXN5bmMgdmFsaWRhdGlvbiBvbiB0aGUgZm9ybSBmaWVsZFxuICAgIHNldEFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG4gICAgICAgIHRoaXMuZmllbGRWYWxpZGF0aW9ucy5zZXRBc3luY1ZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgZGVmYXVsdCBhbmQgY3VzdG9tIHN5bmMgdmFsaWRhdGlvbiBvbiB0aGUgZm9ybSBmaWVsZFxuICAgIHNldFZhbGlkYXRvcnModmFsaWRhdG9ycykge1xuICAgICAgICB0aGlzLmZpZWxkVmFsaWRhdGlvbnMuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gc2V0IHRoZSBwcm9wZXJ0aWVzIG9uIGlubmVyIGZvcm0gd2lkZ2V0XG4gICAgc2V0Rm9ybVdpZGdldChrZXksIHZhbCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtV2lkZ2V0ICYmIHRoaXMuZm9ybVdpZGdldC53aWRnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldC53aWRnZXRba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJvdW5kRm4oZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIHNldCB0aGUgcHJvcGVydGllcyBvbiBpbm5lciBtYXggZm9ybSB3aWRnZXQgKHdoZW4gcmFuZ2UgaXMgc2VsZWN0ZWQpXG4gICAgc2V0TWF4Rm9ybVdpZGdldChrZXksIHZhbCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtV2lkZ2V0TWF4KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXRNYXgud2lkZ2V0W2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBjb25zdCBpc0Zvcm1EaXJ0eSA9IHRoaXMuZm9ybS5kaXJ0eTtcblxuICAgICAgICBpZiAoa2V5ICE9PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmV4Y2x1ZGVQcm9wcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXMgdXBsb2FkIHdpZGdldCBpcyBhbiBIVE1MIHdpZGdldCwgb25seSByZXF1aXJlZCBwcm9wZXJ0eSBpcyBzZXR1cFxuICAgICAgICBpZiAodGhpcy53aWRnZXR0eXBlID09PSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQpIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZVNldFVwVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEZvcm1XaWRnZXQoa2V5LCBudik7XG5cbiAgICAgICAgLy8gUGxhY2Vob2xkZXIgc2hvdWxkIG5vdCBiZSBzZXR1cCBvbiBtYXggd2lkZ2V0XG4gICAgICAgIGlmIChrZXkgIT09ICdwbGFjZWhvbGRlcicpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TWF4Rm9ybVdpZGdldChrZXksIG52KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdkZWZhdWx0dmFsdWUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5vbkZpZWxkRGVmYXVsdFZhbHVlQ2hhbmdlKHRoaXMsIG52KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heGRlZmF1bHR2YWx1ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9IG52O1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWF4Rm9ybVdpZGdldCgnZGF0YXZhbHVlJywgbnYpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5vbk1heERlZmF1bHRWYWx1ZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWF4cGxhY2Vob2xkZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWF4Rm9ybVdpZGdldCgncGxhY2Vob2xkZXInLCBudik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICAgICAgLy8gV01TLTE4OTA2IDogRG8gbm90IG1ha2UgZm9ybSBhcyBkaXJ0eSBkdXJpbmcgcmVxdWlyZWQgcHJvcCBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGlmIChpc0Zvcm1EaXJ0eSAhPT0gdGhpcy5mb3JtLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21heGNoYXJzJzpcbiAgICAgICAgICAgIGNhc2UgJ21pbnZhbHVlJzpcbiAgICAgICAgICAgIGNhc2UgJ21heHZhbHVlJzpcbiAgICAgICAgICAgIGNhc2UgJ3JlZ2V4cCc6XG4gICAgICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZVNldFVwVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJpbWFyeS1rZXknOlxuICAgICAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0UHJpbWFyeUtleSh0aGlzLl9maWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXktbmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5bmFtZSA9IG52O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVhZG9ubHknOlxuICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN0eWxlQ2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICB0aGlzLnNldEZvcm1XaWRnZXQoa2V5LCBudik7XG4gICAgICAgIHRoaXMuc2V0TWF4Rm9ybVdpZGdldChrZXksIG52KTtcbiAgICAgICAgc3VwZXIub25TdHlsZUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVdpZGdldCAmJiB0aGlzLmZvcm1XaWRnZXQuZGF0YXZhbHVlO1xuICAgIH1cblxuICAgIHNldCBkYXRhdmFsdWUodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb250cm9sICYmIHRoaXMud2lkZ2V0dHlwZSAhPT0gRm9ybVdpZGdldFR5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250cm9sLnNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIGdldCBtYXhWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVdpZGdldE1heCAmJiB0aGlzLmZvcm1XaWRnZXRNYXguZGF0YXZhbHVlO1xuICAgIH1cblxuICAgIHNldCBtYXhWYWx1ZSh2YWwpIHtcbiAgICAgICAgaWYgKHRoaXMuX21heENvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuX21heENvbnRyb2wuc2V0VmFsdWUodmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBtaW5WYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IG1pblZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgcmVhY3RpdmUgZm9ybSBjb250cm9sXG4gICAgZ2V0IF9jb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ2Zvcm0gJiYgdGhpcy5uZ2Zvcm0uY29udHJvbHNbdGhpcy5fZmllbGROYW1lXTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHJlYWN0aXZlIG1heCBmb3JtIGNvbnRyb2xcbiAgICBnZXQgX21heENvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nZm9ybSAmJiB0aGlzLm5nZm9ybS5jb250cm9sc1t0aGlzLl9maWVsZE5hbWUgKyAnX21heCddO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgZGlzcGxheVZhbHVlXG4gICAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybVdpZGdldCAmJiB0aGlzLmZvcm1XaWRnZXQuZGlzcGxheVZhbHVlO1xuICAgIH1cblxuICAgIC8vR2V0IHRoZSB0aW1lc3RhbXBcbiAgICBnZXQgdGltZXN0YW1wKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1XaWRnZXQgJiYgdGhpcy5mb3JtV2lkZ2V0LnRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICAvL0dldCB0aGUgY2hhcmxlbmd0aFxuICAgIGdldCBjaGFybGVuZ3RoKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1XaWRnZXQgJiYgdGhpcy5mb3JtV2lkZ2V0LmNoYXJsZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSByZWFjdGl2ZSBmb3JtIGNvbnRyb2xcbiAgICBjcmVhdGVDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgdmFsaWRhdG9yczogdGhpcy5fdmFsaWRhdG9yc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPbiBmaWVsZCB2YWx1ZSBjaGFuZ2UsIHByb3BhZ2F0ZSBldmVudCB0byBwYXJlbnQgZm9ybVxuICAgIG9uVmFsdWVDaGFuZ2UodmFsKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgY29uc3QgY2FwdGlvbkVsID0gICQodGhpcy5uYXRpdmVFbGVtZW50KS5maW5kKCcuY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICAgICAgaWYgKGNhcHRpb25FbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gaGFzVmFsdWUgY2hlY2sgd2hldGhlciBmb3JtLWZpZWxkIGhhcyBhIHZhbHVlIGZyb20gcGFzc2VkIHZhbCBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAvLyBBZGRlZCBzYW5pdHkgY2hlY2sgb24gdmFsIHRvIHN1cHBvcnQgdmFsdWVzIGxpa2VkIDAsIGZhbHNlIGV0YyBhcyBpbnB1dCB2YWwgLSBXTVMtMjAwODRcbiAgICAgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBpbnB1dCB2YWx1ZSBvciAtd2Via2l0LWF1dG9maWxsIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgYXV0b2ZpbGxlZCBmaWVsZHMgLSBXTVMtMjAxNDFcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gKChpc0RlZmluZWQodmFsKSAmJiB2YWwgIT09ICcnICYmIHZhbCAhPT0gbnVsbCkgfHwgY2FwdGlvbkVsLmZpbmQoJ2lucHV0JykudmFsKCkpIHx8IGNhcHRpb25FbC5maW5kKCdpbnB1dDotd2Via2l0LWF1dG9maWxsJykubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hcHAubm90aWZ5KCdjYXB0aW9uUG9zaXRpb25BbmltYXRlJywge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VmFsOiBoYXNWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlRWw6IGNhcHRpb25FbCxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RNdWx0aXBsZTogdGhpcy5mb3JtV2lkZ2V0ICYmIHRoaXMuZm9ybVdpZGdldC5tdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgaXNGb2N1c2VkOiB0aGlzLl9hY3RpdmVGaWVsZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjM5NTldOiBBREEgaXNzdWUgLSBhZGRpbmcgYXJpYS1kZXNjcmliZWRieSwgYXJpYS1pbnZhbGlkLCBfX2Vycm9ybXNnIGF0dHJpYnV0ZXMgb25seSB3aGVuIHRoZSBmb3JtIGZpZWxkIGlzIGludmFsaWQgLCBlbHNlIHJlbW92aW5nIHRoZSBhdHRyaWJ1dGVzXG4gICAgICAgICAgICB0aGlzLnNldEFyaWFBdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICB0aGlzLmZvcm0ub25GaWVsZFZhbHVlQ2hhbmdlKHRoaXMsIHZhbCk7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXMoKTtcbiAgICAgICAgICAgIC8vIERvIG1hcmsgYXMgdG91Y2hlZCwgb25seSBpbmNhc2Ugd2hlbiB1c2VyIGhhcyBlbnRlcmVkIGFuIGlucHV0IGJ1dCBub3QgdGhyb3VnaCB0aGUgc2NyaXB0LiBIZW5jZSBhZGRlZCBtb3VzZWRvd24gZXZlbnQgY2hlY2tcbiAgICAgICAgICAgIC8vIGFjdGl2ZSBjbGFzcyBjaGVja3Mgd2hldGhlciB1c2VyIGlzIG9uIHRoZSBjdXJyZW50IGZpZWxkLCBpZiBzbyBtYXJraW5nIHRoZSBmaWVsZCBhcyB0b3VjaGVkLiBBbmQgZm9ybSBmaWVsZCB2YWxpZGF0aW9uIGhhcHBlbnMgb25jZSBhIGZpZWxkIGlzIHRvdWNoZWRcbiAgICAgICAgICAgIC8vIF90cmlnZ2VyZWRCeVVzZXIgY2hlY2tzIHdoZXRoZXIgdGhlIGZpZWxkIGlzIHRvdWNoZWQgYnkgdGhlIHVzZXIgb3IgdHJpZ2dlcmVkIGZyb20gZXh0ZXJuYWwgc2NyaXB0XG4gICAgICAgICAgICAvLyBXTVMtMjI0NTY6IF9jbGlja3RyaWdnZXJlZEJ5VXNlciBjaGVja3Mgd2hlbiB1c2VyIHNlbGVjdHMgZGF0ZXRpbWV0eXBlIGZyb20gcGlja2VyLCBtYXJrIHRoZSBmaWVsZCBhcyB0b3VjaGVkIHRvIHNob3cgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbW9iaWxlXG5cbiAgICAgICAgICAgIGlmICh0aGlzLiRlbGVtZW50LmZpbmQoJy5hY3RpdmUnKS5sZW5ndGggPiAwIHx8IHRoaXMuZm9ybS50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXJlZEJ5VXNlciB8fCAoaXNNb2JpbGUoKSAmJiB0aGlzLl9jbGlja3RyaWdnZXJlZEJ5VXNlciAmJiBpc0RhdGVUaW1lVHlwZSh0aGlzLndpZGdldHR5cGUpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nZm9ybS5jb250cm9sc1t0aGlzLl9maWVsZE5hbWVdLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zLnNldEN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN0YXR1c0NoYW5nZShzdGF0dXMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dQZW5kaW5nU3Bpbm5lciA9IChzdGF0dXMgPT09ICdQRU5ESU5HJyk7XG4gICAgICAgICAgICAvLyB3aGlsZSBydW5uaW5nIHZhbGlkYXRpb24sIHdpZGdldCBpcyBkaXNhYmxlZCBhbmQgc3Bpbm5lciBpcyBzaG93blxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGZvcm1XaWRnZXQgZGlzYWJsZWQgc3RhdGUgaXMgcmVzZXQgdG8gdGhlIHN0YXRlIG9mIHRoZSBmb3JtRmllbGQuXG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnUEVORElORycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1XaWRnZXQuZGlzYWJsZWQgIT09ICh0aGlzIGFzIGFueSkuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1XaWRnZXQuZGlzYWJsZWQgPSAodGhpcyBhcyBhbnkpLmRpc2FibGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIGV4cG9zZSB2YWxpZGF0aW9uIG1lc3NhZ2UgYW5kIHNldCBjb250cm9sIHRvIGludmFsaWRcbiAgICBzZXRWYWxpZGF0aW9uTWVzc2FnZSh2YWwpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlID0gdmFsO1xuICAgICAgICAgICAgdGhpcy5zZXRVcFZhbGlkYXRvcnMoY3VzdG9tVmFsaWRhdG9yRm4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZWFkT25seVN0YXRlKCkge1xuICAgICAgICBsZXQgcmVhZE9ubHk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaXNVcGRhdGVNb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpc1sncHJpbWFyeS1rZXknXSAmJiAhdGhpc1snaXMtcmVsYXRlZCddICYmICF0aGlzLnBlcmlvZCkge1xuICAgICAgICAgICAgICAgIC8qSWYgdGhlIGZpZWxkIGlzIHByaW1hcnkgYnV0IGlzIGFzc2lnbmVkIHNldCByZWFkb25seSBmYWxzZS5cbiAgICAgICAgICAgICAgICAgICBBc3NpZ25lZCBpcyB3aGVyZSB0aGUgdXNlciBpbnB1dHMgdGhlIHZhbHVlIHdoaWxlIGEgbmV3IGVudHJ5LlxuICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IGVkaXRhYmxlKGluIHVwZGF0ZSBtb2RlKSBvbmNlIGVudHJ5IGlzIHN1Y2Nlc3NmdWwqL1xuICAgICAgICAgICAgICAgIHJlYWRPbmx5ID0gISh0aGlzLmdlbmVyYXRvciA9PT0gJ2Fzc2lnbmVkJyAmJiB0aGlzLmZvcm0ub3BlcmF0aW9uVHlwZSAhPT0gJ3VwZGF0ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWFkT25seSA9IHRoaXMucmVhZG9ubHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJbiB2aWV3IG1vZGUsIHNldCB3aWRnZXQgc3RhdGUgdG8gcmVhZG9ubHkgYWx3YXlzXG4gICAgICAgICAgICByZWFkT25seSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVhZE9ubHkgPSByZWFkT25seSB8fCB0aGlzLmZvcm0ucmVhZG9ubHk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVdpZGdldCgncmVhZG9ubHknLCByZWFkT25seSk7XG4gICAgfVxuXG4gICAgcmVzZXREaXNwbGF5SW5wdXQoKSB7XG4gICAgICAgIGlmICgoIWlzRGVmaW5lZCh0aGlzLnZhbHVlKSB8fCB0aGlzLnZhbHVlID09PSAnJykpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldCAmJiB0aGlzLmZvcm1XaWRnZXQucmVzZXREaXNwbGF5SW5wdXQgJiYgdGhpcy5mb3JtV2lkZ2V0LnJlc2V0RGlzcGxheUlucHV0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgIGlmKHRoaXMuX2NvbnRyb2wpXG4gICAgICAgIHRoaXMuX2NvbnRyb2wucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0cmlnZ2VyVXBsb2FkRXZlbnQoJGV2ZW50LCBldmVudE5hbWUpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7ICRldmVudCB9O1xuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnY2hhbmdlJykge1xuICAgICAgICAgICAgcGFyYW1zLm5ld1ZhbCA9ICRldmVudC50YXJnZXQuZmlsZXM7XG4gICAgICAgICAgICBwYXJhbXMub2xkVmFsID0gdGhpcy5fb2xkVXBsb2FkVmFsO1xuICAgICAgICAgICAgdGhpcy5fb2xkVXBsb2FkVmFsID0gcGFyYW1zLm5ld1ZhbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJGb3JtRmllbGQoKSB7XG5cbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5fZmllbGROYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLnBhcmVudExpc3QgJiYgISh0aGlzLmZvcm0ucGFyZW50TGlzdCA9PT0gdGhpcy5wYXJlbnRMaXN0KSkge1xuICAgICAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICAgICAgbGV0IF9maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5uZ2Zvcm0uY29udHJvbHMuaGFzT3duUHJvcGVydHkoX2ZpZWxkTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBfZmllbGROYW1lID0gYCR7ZmllbGROYW1lfV8ke2NvdW50ZXJ9YDtcbiAgICAgICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm5nZm9ybS5hZGRDb250cm9sKF9maWVsZE5hbWUsIHRoaXMuY3JlYXRlQ29udHJvbCgpKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkTmFtZSA9IF9maWVsZE5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5nZm9ybS5hZGRDb250cm9sKGZpZWxkTmFtZSwgdGhpcy5jcmVhdGVDb250cm9sKCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9uVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9jb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMub25WYWx1ZUNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBvblZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIGNvbnN0IG9uU3RhdHVzQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fY29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5vblN0YXR1c0NoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBvblN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICBpZiAodGhpcy5pc1JhbmdlID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgIHRoaXMubmdmb3JtLmFkZENvbnRyb2woZmllbGROYW1lICsgJ19tYXgnLCB0aGlzLmNyZWF0ZUNvbnRyb2woKSk7XG4gICAgICAgICAgICAvLyByZWdpc3RlcmluZyBmb3IgdmFsdWVDaGFuZ2VzIG9uIE1heGZvcm1XaWRnZXRcbiAgICAgICAgICAgIGNvbnN0IG9uTWF4VmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9tYXhDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5vblZhbHVlQ2hhbmdlLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBvbk1heFZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUgPSBnZXQodGhpcy5mb3JtLmZvcm1kYXRhLCB0aGlzLl9maWVsZE5hbWUpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5nZm9ybSA9IHRoaXMuZm9ybS5uZ2Zvcm07XG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb3JtRmllbGQoKTtcbiAgICAgICAgLy8gSW5zdGFudGlhdGUgY3VzdG9tIHZhbGlkYXRvcnMgY2xhc3MgZm9yIGZvcm0gZmllbGRcbiAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRpb25zID0gbmV3IEJhc2VGaWVsZFZhbGlkYXRpb25zKHRoaXMsIHRoaXMuZm9ybVdpZGdldCwgdGhpcy53aWRnZXR0eXBlLCB0aGlzLl9jb250cm9sLCB0aGlzLmZvcm0pO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIHByZXBhcmVGb3JtV2lkZ2V0KCkge1xuICAgICAgICB0aGlzLl9pbml0UHJvcHNSZXMoKTtcblxuICAgICAgICAvLyBzZXR0aW5nIGRpc3BsYXlFeHByZXNzaW9ucyBvbiB0aGUgZm9ybXdpZGdldCBleHBsaWNpdGx5IGFzIGV4cHIgd2FzIGV2YWx1YXRlZCB0byBcIlwiLlxuICAgICAgICB0aGlzLnNldEZvcm1XaWRnZXQoJ2JpbmRkaXNwbGF5bGFiZWwnLCB0aGlzLmJpbmRkaXNwbGF5bGFiZWwpO1xuICAgICAgICB0aGlzLnNldEZvcm1XaWRnZXQoJ2JpbmRkaXNwbGF5ZXhwcmVzc2lvbicsIHRoaXMuYmluZGRpc3BsYXlleHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KCdiaW5kZGlzcGxheWltYWdlc3JjJywgdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KCdiaW5kQ2hpcGNsYXNzJywgdGhpcy5iaW5kQ2hpcGNsYXNzKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtV2lkZ2V0KCdiaW5kZGF0YXNldCcsIHRoaXMuYmluZGRhdGFzZXQpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZWFkeVN0YXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5rZXkgPSB0aGlzLl9maWVsZE5hbWUgfHwgdGhpcy50YXJnZXQgfHwgdGhpcy5iaW5kaW5nO1xuICAgICAgICAgICAgdGhpcy52aWV3bW9kZXdpZGdldCA9IHRoaXMudmlld21vZGV3aWRnZXQgfHwgZ2V0RGVmYXVsdFZpZXdNb2RlV2lkZ2V0KHRoaXMud2lkZ2V0dHlwZSk7XG5cbiAgICAgICAgICAgIC8vIEZvciB1cGxvYWQgd2lkZ2V0LCBnZW5lcmF0ZSB0aGUgcGVybWl0dGVkIGZpZWxkXG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXR0eXBlID09PSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZVR5cGU7XG4gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBhY2NlcHRzIHN0cmluZyBmcm9tIGZpbGUgdHlwZSBhbmQgZXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gdGhpcy5maWxldHlwZSA/IEZJTEVfVFlQRVNbdGhpcy5maWxldHlwZV0gOiAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnBlcm1pdHRlZCA9IGZpbGVUeXBlICsgKHRoaXMuZXh0ZW5zaW9ucyA/IChmaWxlVHlwZSA/ICcsJyA6ICcnKSArIHRoaXMuZXh0ZW5zaW9ucyA6ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01vYmlsZSgpICYmIHRoaXMudmlld3BvcnQuaXNNb2JpbGVUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzWydtb2JpbGUtZGlzcGxheSddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0LnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld3BvcnQuaXNUYWJsZXRUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzWyd0YWJsZXQtZGlzcGxheSddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0LnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpc1sncGMtZGlzcGxheSddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0LnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcuZGlzcGxhbmFtZSA9IHRoaXMuZGlzcGxheW5hbWU7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnNob3cgPSB0aGlzLnNob3c7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLmlzUmVsYXRlZCA9IHRoaXNbJ2lzLXJlbGF0ZWQnXTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcuaW5wdXR0eXBlID0gdGhpcy5pbnB1dHR5cGU7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLmdlbmVyYXRvciA9IHRoaXMuZ2VuZXJhdG9yO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnByaW1hcnlLZXkgPSB0aGlzWydwcmltYXJ5LWtleSddO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5yZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQ7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLl9yZWFkb25seSA9IHRoaXMucmVhZG9ubHk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnJlZ2V4cCA9IHRoaXMucmVnZXhwO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy50eXBlID0gdGhpcy50eXBlO1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy5rZXkgPSB0aGlzLmtleTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcubW9iaWxlRGlzcGxheSA9IHRoaXNbJ21vYmlsZS1kaXNwbGF5J107XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLm5hbWUgPSB0aGlzLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnBjRGlzcGxheSA9IHRoaXNbJ3BjLWRpc3BsYXknXTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcudGFibGV0RGlzcGxheSA9IHRoaXNbJ3RhYmxldC1kaXNwbGF5J107XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmQ29uZmlnLnZhbGlkYXRpb25tZXNzYWdlID0gdGhpcy52YWxpZGF0aW9ubWVzc2FnZTtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZDb25maWcudmlld21vZGV3aWRnZXQgPSB0aGlzLnZpZXdtb2Rld2lkZ2V0O1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZkNvbmZpZy53aWRnZXQgPSB0aGlzLndpZGdldHR5cGU7XG5cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBmb3JtIGZpZWxkIHdpdGggcGFyZW50IGZvcm1cbiAgICAgICAgICAgIHRoaXMuZm9ybS5yZWdpc3RlckZvcm1GaWVsZHModGhpcy53aWRnZXQpO1xuXG4gICAgICAgICAgICBhZGRGb3JJZEF0dHJpYnV0ZXModGhpcy5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIGlmKHRoaXMud2lkZ2V0U3ViVHlwZSA9PT0gXCJ3bS1mb3JtLWZpZWxkLWN1c3RvbS13aWRnZXRcIiAmJiB0aGlzLmZvcm1XaWRnZXQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIHRoaXMuZm9ybVdpZGdldCA9IHRoaXMuZm9ybVdpZGdldC5uYXRpdmVFbGVtZW50LndpZGdldDtcbiAgICAgICAgaWYgKHRoaXMuZm9ybVdpZGdldCkge1xuICAgICAgICAgICAgaWYodGhpcy53aWRnZXRTdWJUeXBlID09PSBcIndtLWZvcm0tZmllbGQtY3VzdG9tLXdpZGdldFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtV2lkZ2V0LmNvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybVdpZGdldCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVGb3JtV2lkZ2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|