@kirbydesign/designsystem 5.3.1 → 6.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kirbydesign-designsystem-testing-base.umd.js +1988 -1260
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js +34 -16
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.js +34 -16
- package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +9965 -9186
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/esm2015/kirbydesign-designsystem.js +1 -115
- package/esm2015/lib/components/accordion/accordion-item.component.js +31 -20
- package/esm2015/lib/components/accordion/accordion.directive.js +11 -7
- package/esm2015/lib/components/app/app.component.js +23 -18
- package/esm2015/lib/components/app/app.module.js +13 -8
- package/esm2015/lib/components/avatar/avatar.component.js +31 -19
- package/esm2015/lib/components/button/button.component.js +63 -34
- package/esm2015/lib/components/calendar/calendar.component.js +58 -34
- package/esm2015/lib/components/calendar/helpers/calendar.helper.js +8 -8
- package/esm2015/lib/components/card/card-footer/card-footer.component.js +14 -11
- package/esm2015/lib/components/card/card-header/card-header.component.js +26 -15
- package/esm2015/lib/components/card/card.component.js +34 -25
- package/esm2015/lib/components/chart/chart-js/chart-js.service.js +11 -9
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -3
- package/esm2015/lib/components/chart/chart.component.js +36 -39
- package/esm2015/lib/components/chart/chart.module.js +13 -8
- package/esm2015/lib/components/chart/configs/chart-config.service.js +7 -4
- package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.js +8 -10
- package/esm2015/lib/components/chart/configs/shared.utils.js +1 -1
- package/esm2015/lib/components/chart/configs/type.config.js +1 -3
- package/esm2015/lib/components/chart/index.js +2 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.js +7 -4
- package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +54 -36
- package/esm2015/lib/components/chart-deprecated/options/areaspline.js +7 -9
- package/esm2015/lib/components/chart-deprecated/options/donut.js +5 -7
- package/esm2015/lib/components/chart-deprecated/options/timeseries.js +8 -10
- package/esm2015/lib/components/checkbox/checkbox.component.js +47 -21
- package/esm2015/lib/components/chip/chip.component.js +24 -13
- package/esm2015/lib/components/divider/divider.component.js +16 -12
- package/esm2015/lib/components/dropdown/dropdown.component.js +154 -61
- package/esm2015/lib/components/dropdown/keyboard-handler.service.js +9 -7
- package/esm2015/lib/components/empty-state/empty-state.component.js +27 -16
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +35 -22
- package/esm2015/lib/components/flag/flag.component.js +20 -14
- package/esm2015/lib/components/form-field/directives/date/date-input.directive.js +16 -15
- package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.js +41 -28
- package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.js +17 -13
- package/esm2015/lib/components/form-field/form-field.component.js +39 -26
- package/esm2015/lib/components/form-field/input/input.component.js +65 -23
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +14 -10
- package/esm2015/lib/components/form-field/textarea/textarea.component.js +51 -20
- package/esm2015/lib/components/grid/breakpoint-helper.service.js +9 -9
- package/esm2015/lib/components/grid/grid.component.js +21 -18
- package/esm2015/lib/components/icon/icon-registry.service.js +11 -19
- package/esm2015/lib/components/icon/icon-settings.js +2 -3
- package/esm2015/lib/components/icon/icon.component.js +27 -20
- package/esm2015/lib/components/icon/icon.module.js +13 -8
- package/esm2015/lib/components/icon/index.js +1 -2
- package/esm2015/lib/components/icon/kirby-icon-settings.js +2 -4
- package/esm2015/lib/components/index.js +11 -10
- package/esm2015/lib/components/item/item.component.js +33 -16
- package/esm2015/lib/components/item/item.module.js +13 -8
- package/esm2015/lib/components/item/label/label.component.js +18 -12
- package/esm2015/lib/components/item-group/item-group.component.js +15 -11
- package/esm2015/lib/components/item-sliding/item-sliding.component.js +19 -12
- package/esm2015/lib/components/list/directives/infinite-scroll.directive.js +18 -17
- package/esm2015/lib/components/list/directives/list-item-color.directive.js +17 -11
- package/esm2015/lib/components/list/helpers/list-helper.js +7 -4
- package/esm2015/lib/components/list/index.js +2 -3
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.js +20 -13
- package/esm2015/lib/components/list/list-header/list-header.component.js +14 -11
- package/esm2015/lib/components/list/list-item/list-item.component.js +38 -24
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +15 -13
- package/esm2015/lib/components/list/list.component.js +81 -40
- package/esm2015/lib/components/list/list.directive.js +34 -45
- package/esm2015/lib/components/list/list.module.js +33 -12
- package/esm2015/lib/components/list/pipes/group-by.pipe.js +10 -6
- package/esm2015/lib/components/loading-overlay/loading-overlay.component.js +20 -13
- package/esm2015/lib/components/loading-overlay/loading-overlay.service.js +9 -13
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +32 -18
- package/esm2015/lib/components/modal/alert/alert.component.js +38 -26
- package/esm2015/lib/components/modal/alert/config/alert-config.js +1 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.js +25 -13
- package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.js +25 -21
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.js +1 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +124 -56
- package/esm2015/lib/components/modal/services/action-sheet.helper.js +8 -8
- package/esm2015/lib/components/modal/services/alert.helper.js +10 -20
- package/esm2015/lib/components/modal/services/modal-animation-builder.service.js +7 -10
- package/esm2015/lib/components/modal/services/modal-navigation.service.js +7 -10
- package/esm2015/lib/components/modal/services/modal.controller.js +17 -16
- package/esm2015/lib/components/modal/services/modal.helper.js +10 -10
- package/esm2015/lib/components/page/index.js +2 -1
- package/esm2015/lib/components/page/page-footer/page-footer.component.js +21 -18
- package/esm2015/lib/components/page/page.component.js +187 -110
- package/esm2015/lib/components/page/page.module.js +60 -32
- package/esm2015/lib/components/popover/popover.component.js +38 -34
- package/esm2015/lib/components/progress-circle/progress-circle-ring.component.js +29 -17
- package/esm2015/lib/components/progress-circle/progress-circle.component.js +30 -21
- package/esm2015/lib/components/radio/radio-group/radio-group.component.js +60 -34
- package/esm2015/lib/components/radio/radio.component.js +36 -17
- package/esm2015/lib/components/range/range.component.js +51 -29
- package/esm2015/lib/components/reorder-list/reorder-list.component.js +32 -21
- package/esm2015/lib/components/router-outlet/router-outlet.component.js +18 -12
- package/esm2015/lib/components/router-outlet/router-outlet.module.js +13 -8
- package/esm2015/lib/components/section-header/section-header.component.js +15 -9
- package/esm2015/lib/components/segmented-control/segment-item.js +1 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.js +38 -29
- package/esm2015/lib/components/shared/component-loader.directive.js +15 -16
- package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.js +7 -5
- package/esm2015/lib/components/shared/resize-observer/resize-observer.service.js +7 -10
- package/esm2015/lib/components/slide-button/slide-button.component.js +22 -19
- package/esm2015/lib/components/slides/slides.component.js +42 -20
- package/esm2015/lib/components/spinner/index.js +3 -0
- package/esm2015/lib/components/spinner/spinner.component.js +14 -11
- package/esm2015/lib/components/spinner/spinner.module.js +14 -9
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +9 -3
- package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.js +25 -20
- package/esm2015/lib/components/tabs/tab-button/tab-button.component.js +21 -18
- package/esm2015/lib/components/tabs/tabs.component.js +20 -16
- package/esm2015/lib/components/tabs/tabs.module.js +14 -9
- package/esm2015/lib/components/tabs/tabs.service.js +9 -7
- package/esm2015/lib/components/toast/config/toast-config.js +1 -1
- package/esm2015/lib/components/toast/services/toast.controller.js +8 -8
- package/esm2015/lib/components/toast/services/toast.helper.js +8 -12
- package/esm2015/lib/components/toggle/toggle.component.js +21 -14
- package/esm2015/lib/components/toggle-button/index.js +3 -0
- package/esm2015/lib/components/toggle-button/toggle-button.component.js +20 -13
- package/esm2015/lib/components/toggle-button/toggle-button.module.js +13 -8
- package/esm2015/lib/components/web-component-proxies.component.js +13 -15
- package/esm2015/lib/directives/element-as-button/element-as-button.directive.js +26 -17
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +16 -17
- package/esm2015/lib/directives/fit-heading/fit-heading.module.js +12 -7
- package/esm2015/lib/directives/index.js +3 -1
- package/esm2015/lib/directives/key-handler/key-handler.directive.js +14 -14
- package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.js +20 -15
- package/esm2015/lib/directives/theme-color/theme-color.directive.js +55 -24
- package/esm2015/lib/helpers/element-has-ancestor.js +1 -1
- package/esm2015/lib/helpers/line-clamp-helper.js +7 -8
- package/esm2015/lib/helpers/platform.service.js +9 -11
- package/esm2015/lib/index.js +1 -5
- package/esm2015/lib/kirby.module.js +166 -25
- package/esm2015/lib/types/window-ref.js +9 -7
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +1 -59
- package/esm2015/testing-base/lib/components/index.js +56 -0
- package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.app.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.avatar.component.js +36 -23
- package/esm2015/testing-base/lib/components/mock.button.component.js +35 -23
- package/esm2015/testing-base/lib/components/mock.calendar.component.js +54 -32
- package/esm2015/testing-base/lib/components/mock.card-footer.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.card-header.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.card.component.js +34 -22
- package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.chart.component.js +38 -25
- package/esm2015/testing-base/lib/components/mock.checkbox.component.js +36 -23
- package/esm2015/testing-base/lib/components/mock.chip.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.divider.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.dropdown.component.js +48 -29
- package/esm2015/testing-base/lib/components/mock.empty-state.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.flag.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.form-field.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.grid.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.icon.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.input-counter.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.input.component.js +41 -26
- package/esm2015/testing-base/lib/components/mock.item-group.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.item.component.js +32 -21
- package/esm2015/testing-base/lib/components/mock.label.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.list-header.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.list-item.component.js +40 -25
- package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.list.component.js +50 -30
- package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.page-footer.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.page.component.js +228 -125
- package/esm2015/testing-base/lib/components/mock.popover.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.radio-group.component.js +38 -24
- package/esm2015/testing-base/lib/components/mock.radio.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.range.component.js +44 -27
- package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +32 -21
- package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +24 -17
- package/esm2015/testing-base/lib/components/mock.section-header.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +34 -22
- package/esm2015/testing-base/lib/components/mock.slide-button.component.js +30 -20
- package/esm2015/testing-base/lib/components/mock.slides.component.js +51 -0
- package/esm2015/testing-base/lib/components/mock.spinner.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.tab-button.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.tabs.component.js +22 -14
- package/esm2015/testing-base/lib/components/mock.textarea.component.js +35 -23
- package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +26 -18
- package/esm2015/testing-base/lib/components/mock.toggle.component.js +28 -19
- package/esm2015/testing-base/lib/components/mock.web-component-proxies.component.js +33 -0
- package/esm2015/testing-base/lib/directives/index.js +4 -0
- package/esm2015/testing-base/lib/directives/mock.accordion.directive.js +22 -13
- package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.js +24 -15
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.js +24 -16
- package/esm2015/testing-base/lib/index.js +4 -0
- package/esm2015/testing-base/lib/kirby-testing-base.module.js +69 -7
- package/esm2015/testing-base/lib/mock-components.js +5 -2
- package/esm2015/testing-base/public_api.js +2 -2
- package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.js +1 -2
- package/esm2015/testing-jasmine/lib/kirby-testing.module.js +14 -8
- package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.js +1 -2
- package/esm2015/testing-jest/lib/kirby-testing.module.js +14 -8
- package/fesm2015/kirbydesign-designsystem-testing-base.js +1859 -1164
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.js +13 -8
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-jest.js +13 -8
- package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +5374 -4465
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/kirbydesign-designsystem.d.ts +1 -114
- package/lib/components/accordion/accordion-item.component.d.ts +3 -0
- package/lib/components/accordion/accordion.directive.d.ts +3 -0
- package/lib/components/app/app.component.d.ts +3 -0
- package/lib/components/app/app.module.d.ts +7 -0
- package/lib/components/avatar/avatar.component.d.ts +4 -1
- package/lib/components/button/button.component.d.ts +4 -1
- package/lib/components/calendar/calendar.component.d.ts +3 -0
- package/lib/components/calendar/helpers/calendar.helper.d.ts +3 -0
- package/lib/components/card/card-footer/card-footer.component.d.ts +3 -0
- package/lib/components/card/card-header/card-header.component.d.ts +3 -0
- package/lib/components/card/card.component.d.ts +3 -0
- package/lib/components/chart/chart-js/chart-js.service.d.ts +3 -0
- package/lib/components/chart/chart.component.d.ts +4 -4
- package/lib/components/chart/chart.module.d.ts +5 -0
- package/lib/components/chart/configs/chart-config.service.d.ts +4 -1
- package/lib/components/chart/index.d.ts +1 -0
- package/lib/components/chart-deprecated/chart-deprecated-helper.d.ts +3 -0
- package/lib/components/chart-deprecated/chart-deprecated.component.d.ts +3 -0
- package/lib/components/checkbox/checkbox.component.d.ts +3 -0
- package/lib/components/chip/chip.component.d.ts +3 -0
- package/lib/components/divider/divider.component.d.ts +3 -0
- package/lib/components/dropdown/dropdown.component.d.ts +3 -0
- package/lib/components/dropdown/keyboard-handler.service.d.ts +3 -0
- package/lib/components/empty-state/empty-state.component.d.ts +3 -0
- package/lib/components/fab-sheet/fab-sheet.component.d.ts +3 -0
- package/lib/components/flag/flag.component.d.ts +3 -0
- package/lib/components/form-field/directives/date/date-input.directive.d.ts +3 -0
- package/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.d.ts +3 -0
- package/lib/components/form-field/form-field-message/form-field-message.component.d.ts +3 -0
- package/lib/components/form-field/form-field.component.d.ts +3 -0
- package/lib/components/form-field/input/input.component.d.ts +3 -0
- package/lib/components/form-field/input-counter/input-counter.component.d.ts +3 -0
- package/lib/components/form-field/textarea/textarea.component.d.ts +3 -0
- package/lib/components/grid/breakpoint-helper.service.d.ts +3 -0
- package/lib/components/grid/grid.component.d.ts +3 -0
- package/lib/components/icon/icon-registry.service.d.ts +4 -2
- package/lib/components/icon/icon-settings.d.ts +0 -2
- package/lib/components/icon/icon.component.d.ts +3 -0
- package/lib/components/icon/icon.module.d.ts +6 -0
- package/lib/components/icon/index.d.ts +1 -1
- package/lib/components/index.d.ts +10 -9
- package/lib/components/item/item.component.d.ts +3 -0
- package/lib/components/item/item.module.d.ts +9 -0
- package/lib/components/item/label/label.component.d.ts +3 -0
- package/lib/components/item-group/item-group.component.d.ts +3 -0
- package/lib/components/item-sliding/item-sliding.component.d.ts +3 -0
- package/lib/components/list/directives/infinite-scroll.directive.d.ts +3 -0
- package/lib/components/list/directives/list-item-color.directive.d.ts +3 -0
- package/lib/components/list/helpers/list-helper.d.ts +3 -0
- package/lib/components/list/index.d.ts +1 -2
- package/lib/components/list/list-experimental/list-experimental.component.d.ts +3 -0
- package/lib/components/list/list-header/list-header.component.d.ts +3 -0
- package/lib/components/list/list-item/list-item.component.d.ts +3 -0
- package/lib/components/list/list-section-header/list-section-header.component.d.ts +3 -0
- package/lib/components/list/list.component.d.ts +3 -0
- package/lib/components/list/list.directive.d.ts +9 -6
- package/lib/components/list/list.module.d.ts +16 -0
- package/lib/components/list/pipes/group-by.pipe.d.ts +3 -0
- package/lib/components/loading-overlay/loading-overlay.component.d.ts +3 -0
- package/lib/components/loading-overlay/loading-overlay.service.d.ts +3 -0
- package/lib/components/modal/action-sheet/action-sheet.component.d.ts +3 -0
- package/lib/components/modal/alert/alert.component.d.ts +5 -2
- package/lib/components/modal/alert/config/alert-config.d.ts +0 -8
- package/lib/components/modal/footer/modal-footer.component.d.ts +3 -0
- package/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +3 -0
- package/lib/components/modal/modal-wrapper/config/modal-config.d.ts +1 -8
- package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +5 -0
- package/lib/components/modal/services/action-sheet.helper.d.ts +3 -0
- package/lib/components/modal/services/alert.helper.d.ts +4 -2
- package/lib/components/modal/services/modal-animation-builder.service.d.ts +3 -0
- package/lib/components/modal/services/modal-navigation.service.d.ts +3 -0
- package/lib/components/modal/services/modal.controller.d.ts +3 -0
- package/lib/components/modal/services/modal.helper.d.ts +3 -0
- package/lib/components/page/index.d.ts +1 -0
- package/lib/components/page/page-footer/page-footer.component.d.ts +3 -0
- package/lib/components/page/page.component.d.ts +26 -0
- package/lib/components/page/page.module.d.ts +10 -0
- package/lib/components/popover/popover.component.d.ts +4 -2
- package/lib/components/progress-circle/progress-circle-ring.component.d.ts +3 -0
- package/lib/components/progress-circle/progress-circle.component.d.ts +3 -0
- package/lib/components/radio/radio-group/radio-group.component.d.ts +3 -0
- package/lib/components/radio/radio.component.d.ts +3 -0
- package/lib/components/range/range.component.d.ts +3 -0
- package/lib/components/reorder-list/reorder-list.component.d.ts +3 -0
- package/lib/components/router-outlet/router-outlet.component.d.ts +3 -0
- package/lib/components/router-outlet/router-outlet.module.d.ts +7 -0
- package/lib/components/section-header/section-header.component.d.ts +3 -0
- package/lib/components/segmented-control/segment-item.d.ts +0 -4
- package/lib/components/segmented-control/segmented-control.component.d.ts +3 -0
- package/lib/components/shared/component-loader.directive.d.ts +3 -0
- package/lib/components/shared/resize-observer/resize-observer.factory.d.ts +3 -0
- package/lib/components/shared/resize-observer/resize-observer.service.d.ts +3 -0
- package/lib/components/slide-button/slide-button.component.d.ts +3 -0
- package/lib/components/slides/slides.component.d.ts +5 -0
- package/lib/components/spinner/index.d.ts +2 -0
- package/lib/components/spinner/spinner.component.d.ts +3 -0
- package/lib/components/spinner/spinner.module.d.ts +6 -0
- package/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.d.ts +3 -0
- package/lib/components/tabs/tab-button/tab-button.component.d.ts +3 -0
- package/lib/components/tabs/tabs.component.d.ts +3 -0
- package/lib/components/tabs/tabs.module.d.ts +9 -0
- package/lib/components/tabs/tabs.service.d.ts +3 -0
- package/lib/components/toast/config/toast-config.d.ts +1 -4
- package/lib/components/toast/services/toast.controller.d.ts +3 -0
- package/lib/components/toast/services/toast.helper.d.ts +3 -0
- package/lib/components/toggle/toggle.component.d.ts +3 -0
- package/lib/components/toggle-button/index.d.ts +2 -0
- package/lib/components/toggle-button/toggle-button.component.d.ts +3 -0
- package/lib/components/toggle-button/toggle-button.module.d.ts +6 -0
- package/lib/components/web-component-proxies.component.d.ts +3 -0
- package/lib/custom-elements-initializer.d.ts +1 -1
- package/lib/directives/element-as-button/element-as-button.directive.d.ts +3 -0
- package/lib/directives/fit-heading/fit-heading.directive.d.ts +3 -0
- package/lib/directives/fit-heading/fit-heading.module.d.ts +5 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/key-handler/key-handler.directive.d.ts +3 -0
- package/lib/directives/modal-router-link/modal-router-link.directive.d.ts +3 -0
- package/lib/directives/theme-color/theme-color.directive.d.ts +3 -0
- package/lib/helpers/line-clamp-helper.d.ts +3 -0
- package/lib/helpers/platform.service.d.ts +3 -0
- package/lib/index.d.ts +0 -1
- package/lib/kirby.module.d.ts +69 -0
- package/lib/types/window-ref.d.ts +3 -0
- package/package.json +3 -4
- package/readme.md +6 -79
- package/scss/base/_link.scss +1 -0
- package/scss/interaction-state/_active.scss +1 -0
- package/scss/interaction-state/_focus.scss +1 -0
- package/scss/interaction-state/_hover.scss +1 -0
- package/scss/interaction-state/_index.scss +1 -0
- package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
- package/scss/interaction-state/_layer.scss +1 -0
- package/scss/opt-out/_index.scss +1 -0
- package/scss/opt-out/_link.scss +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts +1 -58
- package/testing-base/lib/components/index.d.ts +55 -0
- package/testing-base/lib/components/mock.accordion-item.component.d.ts +3 -0
- package/testing-base/lib/components/mock.action-sheet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.app.component.d.ts +3 -0
- package/testing-base/lib/components/mock.avatar.component.d.ts +3 -0
- package/testing-base/lib/components/mock.button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.calendar.component.d.ts +3 -0
- package/testing-base/lib/components/mock.card-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.card-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.card.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chart-deprecated.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chart.component.d.ts +3 -1
- package/testing-base/lib/components/mock.checkbox.component.d.ts +3 -0
- package/testing-base/lib/components/mock.chip.component.d.ts +3 -0
- package/testing-base/lib/components/mock.divider.component.d.ts +3 -0
- package/testing-base/lib/components/mock.dropdown.component.d.ts +3 -0
- package/testing-base/lib/components/mock.empty-state.component.d.ts +3 -0
- package/testing-base/lib/components/mock.fab-sheet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.flag.component.d.ts +3 -0
- package/testing-base/lib/components/mock.form-field-message.component.d.ts +3 -0
- package/testing-base/lib/components/mock.form-field.component.d.ts +3 -0
- package/testing-base/lib/components/mock.grid.component.d.ts +3 -0
- package/testing-base/lib/components/mock.icon.component.d.ts +3 -0
- package/testing-base/lib/components/mock.input-counter.component.d.ts +3 -0
- package/testing-base/lib/components/mock.input.component.d.ts +3 -0
- package/testing-base/lib/components/mock.item-group.component.d.ts +3 -0
- package/testing-base/lib/components/mock.item-sliding.component.d.ts +3 -0
- package/testing-base/lib/components/mock.item.component.d.ts +3 -0
- package/testing-base/lib/components/mock.label.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-experimental.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-item.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list-section-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.list.component.d.ts +3 -0
- package/testing-base/lib/components/mock.loading-overlay.component.d.ts +3 -0
- package/testing-base/lib/components/mock.modal-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.page-footer.component.d.ts +3 -0
- package/testing-base/lib/components/mock.page.component.d.ts +24 -0
- package/testing-base/lib/components/mock.popover.component.d.ts +3 -0
- package/testing-base/lib/components/mock.progress-circle.component.d.ts +3 -0
- package/testing-base/lib/components/mock.radio-group.component.d.ts +3 -0
- package/testing-base/lib/components/mock.radio.component.d.ts +3 -0
- package/testing-base/lib/components/mock.range.component.d.ts +3 -0
- package/testing-base/lib/components/mock.reorder-list.component.d.ts +3 -0
- package/testing-base/lib/components/mock.router-outlet.component.d.ts +3 -0
- package/testing-base/lib/components/mock.section-header.component.d.ts +3 -0
- package/testing-base/lib/components/mock.segmented-control.component.d.ts +3 -0
- package/testing-base/lib/components/mock.slide-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.slides.component.d.ts +11 -0
- package/testing-base/lib/components/mock.spinner.component.d.ts +3 -0
- package/testing-base/lib/components/mock.tab-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.tabs.component.d.ts +3 -0
- package/testing-base/lib/components/mock.textarea.component.d.ts +3 -0
- package/testing-base/lib/components/mock.toggle-button.component.d.ts +3 -0
- package/testing-base/lib/components/mock.toggle.component.d.ts +3 -0
- package/testing-base/lib/components/mock.web-component-proxies.component.d.ts +8 -0
- package/testing-base/lib/directives/index.d.ts +3 -0
- package/testing-base/lib/directives/mock.accordion.directive.d.ts +3 -0
- package/testing-base/lib/directives/mock.fit-heading.directive.d.ts +3 -0
- package/testing-base/lib/directives/mock.theme-color.directive.d.ts +3 -0
- package/testing-base/lib/index.d.ts +3 -0
- package/testing-base/lib/kirby-testing-base.module.d.ts +61 -0
- package/testing-base/package.json +0 -1
- package/testing-base/public_api.d.ts +1 -1
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.d.ts +1 -1
- package/testing-jasmine/lib/kirby-testing.module.d.ts +5 -0
- package/testing-jasmine/package.json +0 -1
- package/testing-jest/kirbydesign-designsystem-testing-jest.d.ts +1 -1
- package/testing-jest/lib/kirby-testing.module.d.ts +5 -0
- package/testing-jest/package.json +0 -1
- package/README.md +0 -7
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +0 -2
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js +0 -16
- package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js +0 -16
- package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +0 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +0 -2
- package/bundles/kirbydesign-designsystem.umd.min.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/kirbydesign-designsystem.metadata.json +0 -1
- package/esm2015/lib/components/accordion/accordion-item.component.metadata.json +0 -1
- package/esm2015/lib/components/accordion/accordion.directive.metadata.json +0 -1
- package/esm2015/lib/components/accordion/index.metadata.json +0 -1
- package/esm2015/lib/components/angular-component-lib/utils.metadata.json +0 -1
- package/esm2015/lib/components/app/app.component.metadata.json +0 -1
- package/esm2015/lib/components/app/app.module.metadata.json +0 -1
- package/esm2015/lib/components/app/index.metadata.json +0 -1
- package/esm2015/lib/components/avatar/avatar.component.metadata.json +0 -1
- package/esm2015/lib/components/button/button.component.metadata.json +0 -1
- package/esm2015/lib/components/calendar/calendar.component.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar-cell.model.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar-options.model.metadata.json +0 -1
- package/esm2015/lib/components/calendar/helpers/calendar.helper.metadata.json +0 -1
- package/esm2015/lib/components/calendar/index.metadata.json +0 -1
- package/esm2015/lib/components/calendar/options/calendar-year-navigator-config.metadata.json +0 -1
- package/esm2015/lib/components/card/card-footer/card-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +0 -1
- package/esm2015/lib/components/card/card.component.metadata.json +0 -1
- package/esm2015/lib/components/card/index.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/chart-js.service.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.component.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.module.metadata.json +0 -1
- package/esm2015/lib/components/chart/chart.types.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/annotations.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/chart-config.service.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/global-defaults.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/interaction-functions-extensions.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/shared.utils.metadata.json +0 -1
- package/esm2015/lib/components/chart/configs/type.config.metadata.json +0 -1
- package/esm2015/lib/components/chart/index.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-helper.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated-type.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/index.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/activitygauge.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/areaspline.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/bar.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/column.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/donut.metadata.json +0 -1
- package/esm2015/lib/components/chart-deprecated/options/timeseries.metadata.json +0 -1
- package/esm2015/lib/components/checkbox/checkbox.component.metadata.json +0 -1
- package/esm2015/lib/components/chip/chip.component.metadata.json +0 -1
- package/esm2015/lib/components/divider/divider.component.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/dropdown.types.metadata.json +0 -1
- package/esm2015/lib/components/dropdown/keyboard-handler.service.metadata.json +0 -1
- package/esm2015/lib/components/empty-state/empty-state.component.metadata.json +0 -1
- package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +0 -1
- package/esm2015/lib/components/flag/flag.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/directives/date/date-input.directive.metadata.json +0 -1
- package/esm2015/lib/components/form-field/directives/decimal-mask/decimal-mask.directive.metadata.json +0 -1
- package/esm2015/lib/components/form-field/form-field-message/form-field-message.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/form-field.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/index.metadata.json +0 -1
- package/esm2015/lib/components/form-field/input/input.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +0 -1
- package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +0 -1
- package/esm2015/lib/components/grid/breakpoint-helper.service.metadata.json +0 -1
- package/esm2015/lib/components/grid/grid-card-configuration.metadata.json +0 -1
- package/esm2015/lib/components/grid/grid.component.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon-registry.service.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon-settings.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon.component.metadata.json +0 -1
- package/esm2015/lib/components/icon/icon.module.metadata.json +0 -1
- package/esm2015/lib/components/icon/index.metadata.json +0 -1
- package/esm2015/lib/components/icon/kirby-icon-settings.metadata.json +0 -1
- package/esm2015/lib/components/index.metadata.json +0 -1
- package/esm2015/lib/components/item/index.metadata.json +0 -1
- package/esm2015/lib/components/item/item.component.metadata.json +0 -1
- package/esm2015/lib/components/item/item.module.metadata.json +0 -1
- package/esm2015/lib/components/item/label/label.component.metadata.json +0 -1
- package/esm2015/lib/components/item-group/item-group.component.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/index.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/item-sliding.component.metadata.json +0 -1
- package/esm2015/lib/components/item-sliding/item-sliding.types.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/infinite-scroll.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/list-item-color.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/directives/scroll.model.metadata.json +0 -1
- package/esm2015/lib/components/list/helpers/list-helper.metadata.json +0 -1
- package/esm2015/lib/components/list/index.metadata.json +0 -1
- package/esm2015/lib/components/list/list-experimental/list-experimental.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-header/list-header.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list-swipe-action.type.metadata.json +0 -1
- package/esm2015/lib/components/list/list.component.metadata.json +0 -1
- package/esm2015/lib/components/list/list.directive.metadata.json +0 -1
- package/esm2015/lib/components/list/list.event.metadata.json +0 -1
- package/esm2015/lib/components/list/list.module.metadata.json +0 -1
- package/esm2015/lib/components/list/pipes/group-by.pipe.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/index.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/loading-overlay.component.metadata.json +0 -1
- package/esm2015/lib/components/loading-overlay/loading-overlay.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/config/action-sheet-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/action-sheet/config/action-sheet-item.metadata.json +0 -1
- package/esm2015/lib/components/modal/alert/alert.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/alert/config/alert-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/index.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/compact/modal-compact-wrapper.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/drawer-supplementary-action.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/config/modal-config.metadata.json +0 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/action-sheet.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/alert.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal-animation-builder.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal-navigation.service.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.controller.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.helper.metadata.json +0 -1
- package/esm2015/lib/components/modal/services/modal.interfaces.metadata.json +0 -1
- package/esm2015/lib/components/page/index.metadata.json +0 -1
- package/esm2015/lib/components/page/page-footer/page-footer.component.metadata.json +0 -1
- package/esm2015/lib/components/page/page.component.metadata.json +0 -1
- package/esm2015/lib/components/page/page.module.metadata.json +0 -1
- package/esm2015/lib/components/popover/popover.component.metadata.json +0 -1
- package/esm2015/lib/components/progress-circle/progress-circle-ring.component.metadata.json +0 -1
- package/esm2015/lib/components/progress-circle/progress-circle.component.metadata.json +0 -1
- package/esm2015/lib/components/radio/index.metadata.json +0 -1
- package/esm2015/lib/components/radio/radio-group/radio-group.component.metadata.json +0 -1
- package/esm2015/lib/components/radio/radio.component.metadata.json +0 -1
- package/esm2015/lib/components/range/range.component.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/index.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/reorder-event.metadata.json +0 -1
- package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/index.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/router-outlet.component.metadata.json +0 -1
- package/esm2015/lib/components/router-outlet/router-outlet.module.metadata.json +0 -1
- package/esm2015/lib/components/section-header/section-header.component.metadata.json +0 -1
- package/esm2015/lib/components/segmented-control/segment-item.metadata.json +0 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +0 -1
- package/esm2015/lib/components/shared/component-configuration.metadata.json +0 -1
- package/esm2015/lib/components/shared/component-loader.directive.metadata.json +0 -1
- package/esm2015/lib/components/shared/dynamic-component.metadata.json +0 -1
- package/esm2015/lib/components/shared/index.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/resize-observer.factory.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/resize-observer.service.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer-callback.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer-entry.metadata.json +0 -1
- package/esm2015/lib/components/shared/resize-observer/types/resize-observer.metadata.json +0 -1
- package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +0 -1
- package/esm2015/lib/components/slides/slides.component.metadata.json +0 -1
- package/esm2015/lib/components/spinner/spinner.component.metadata.json +0 -1
- package/esm2015/lib/components/spinner/spinner.module.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/index.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.metadata.json +0 -1
- package/esm2015/lib/components/stock-chart-deprecated/stock-chart-deprecated.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/index.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tab-button/tab-button.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tab-button/tab-button.events.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.component.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.module.metadata.json +0 -1
- package/esm2015/lib/components/tabs/tabs.service.metadata.json +0 -1
- package/esm2015/lib/components/toast/config/toast-config.metadata.json +0 -1
- package/esm2015/lib/components/toast/index.metadata.json +0 -1
- package/esm2015/lib/components/toast/services/toast.controller.metadata.json +0 -1
- package/esm2015/lib/components/toast/services/toast.helper.metadata.json +0 -1
- package/esm2015/lib/components/toggle/toggle.component.metadata.json +0 -1
- package/esm2015/lib/components/toggle-button/toggle-button.component.metadata.json +0 -1
- package/esm2015/lib/components/toggle-button/toggle-button.module.metadata.json +0 -1
- package/esm2015/lib/components/web-component-proxies.component.metadata.json +0 -1
- package/esm2015/lib/custom-elements-initializer.metadata.json +0 -1
- package/esm2015/lib/directives/element-as-button/element-as-button.directive.metadata.json +0 -1
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.metadata.json +0 -1
- package/esm2015/lib/directives/fit-heading/fit-heading.module.metadata.json +0 -1
- package/esm2015/lib/directives/index.metadata.json +0 -1
- package/esm2015/lib/directives/key-handler/key-handler.directive.metadata.json +0 -1
- package/esm2015/lib/directives/modal-router-link/modal-router-link.directive.metadata.json +0 -1
- package/esm2015/lib/directives/theme-color/theme-color.directive.metadata.json +0 -1
- package/esm2015/lib/helpers/color-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/deep-copy.metadata.json +0 -1
- package/esm2015/lib/helpers/design-token-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/element-has-ancestor.metadata.json +0 -1
- package/esm2015/lib/helpers/index.metadata.json +0 -1
- package/esm2015/lib/helpers/line-clamp-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/merge-deep.metadata.json +0 -1
- package/esm2015/lib/helpers/platform.service.metadata.json +0 -1
- package/esm2015/lib/helpers/string-helper.metadata.json +0 -1
- package/esm2015/lib/helpers/theme-color.type.metadata.json +0 -1
- package/esm2015/lib/helpers/unique-id-generator.helper.metadata.json +0 -1
- package/esm2015/lib/index.metadata.json +0 -1
- package/esm2015/lib/kirby.module.metadata.json +0 -1
- package/esm2015/lib/scss/scss-helper.metadata.json +0 -1
- package/esm2015/lib/types/window-ref.metadata.json +0 -1
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.accordion-item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.action-sheet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.app.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.avatar.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.card.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chart.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.checkbox.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.chip.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.divider.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.dropdown.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.empty-state.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.fab-sheet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.flag.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.form-field-message.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.form-field.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.grid.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.icon.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.input-counter.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.input.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item-group.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item-sliding.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.label.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-experimental.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-item.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list-section-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.list.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.loading-overlay.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.modal-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.page-footer.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.page.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.popover.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.progress-circle.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.radio-group.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.radio.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.range.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.reorder-list.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.router-outlet.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.section-header.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.segmented-control.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.slide-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.spinner.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.tab-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.tabs.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.textarea.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.toggle-button.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.toggle.component.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.accordion.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.fit-heading.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.metadata.json +0 -1
- package/esm2015/testing-base/lib/kirby-testing-base.module.metadata.json +0 -1
- package/esm2015/testing-base/lib/mock-components.metadata.json +0 -1
- package/esm2015/testing-base/lib/mock-directives.metadata.json +0 -1
- package/esm2015/testing-base/public_api.metadata.json +0 -1
- package/esm2015/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
- package/esm2015/testing-jasmine/lib/kirby-testing.module.metadata.json +0 -1
- package/esm2015/testing-jasmine/lib/mock-providers.metadata.json +0 -1
- package/esm2015/testing-jasmine/public_api.metadata.json +0 -1
- package/esm2015/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
- package/esm2015/testing-jest/lib/kirby-testing.module.metadata.json +0 -1
- package/esm2015/testing-jest/lib/mock-providers.metadata.json +0 -1
- package/esm2015/testing-jest/public_api.metadata.json +0 -1
- package/kirbydesign-designsystem.metadata.json +0 -1
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +0 -1
- package/testing-jasmine/kirbydesign-designsystem-testing-jasmine.metadata.json +0 -1
- package/testing-jest/kirbydesign-designsystem-testing-jest.metadata.json +0 -1
|
@@ -7,6 +7,14 @@ import { ListItemTemplateDirective } from '../list/list.directive';
|
|
|
7
7
|
import { HorizontalDirection, PopoverComponent } from '../popover/popover.component';
|
|
8
8
|
import { OpenState, VerticalDirection } from './dropdown.types';
|
|
9
9
|
import { KeyboardHandlerService } from './keyboard-handler.service';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "./keyboard-handler.service";
|
|
12
|
+
import * as i2 from "../button/button.component";
|
|
13
|
+
import * as i3 from "../icon/icon.component";
|
|
14
|
+
import * as i4 from "../popover/popover.component";
|
|
15
|
+
import * as i5 from "../card/card.component";
|
|
16
|
+
import * as i6 from "../item/item.component";
|
|
17
|
+
import * as i7 from "@angular/common";
|
|
10
18
|
export class DropdownComponent {
|
|
11
19
|
constructor(renderer, elementRef, changeDetectorRef, keyboardHandlerService) {
|
|
12
20
|
this.renderer = renderer;
|
|
@@ -381,64 +389,149 @@ export class DropdownComponent {
|
|
|
381
389
|
}
|
|
382
390
|
}
|
|
383
391
|
DropdownComponent.OPEN_DELAY_IN_MS = 100;
|
|
384
|
-
DropdownComponent
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
]
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
]
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBY3BFLE1BQU0sT0FBTyxpQkFBaUI7SUFtSjVCLFlBQ1UsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsaUJBQW9DLEVBQ3BDLHNCQUE4QztRQUg5QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlC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RTdDLFNBQVMsU0FBQyxnQkFBZ0I7NEJBRTFCLFNBQVMsU0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0NBRTdELFlBQVksU0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dDQUVoRCxlQUFlLFNBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtxQkFrUW5ELFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7MkJBUXRDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7dUJBUXBDLFlBQVksU0FBQyxPQUFPO3NCQVlwQixZQUFZLFNBQUMsZUFBZSxjQUM1QixZQUFZLFNBQUMsZ0JBQWdCLGNBQzdCLFlBQVksU0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7dUJBVy9CLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7dUJBU3hDLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7MkJBT3hDLFlBQVksU0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUMxQyxZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDNUMsWUFBWSxTQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQzVDLFlBQVksU0FBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs2QkFjN0MsWUFBWSxTQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUN2QyxZQUFZLFNBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uL2NhcmQvY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW0vaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL2xpc3QvbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbERpcmVjdGlvbiwgUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBPcGVuU3RhdGUsIFZlcnRpY2FsRGlyZWN0aW9uIH0gZnJvbSAnLi9kcm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9rZXlib2FyZC1oYW5kbGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIHN0YXRpYyByZWFkb25seSBPUEVOX0RFTEFZX0lOX01TID0gMTAwO1xuICBwcml2YXRlIHN0YXRlID0gT3BlblN0YXRlLmNsb3NlZDtcbiAgcHJpdmF0ZSBoYXNDb25maWd1cmVkU2xvdHRlZEl0ZW1zID0gZmFsc2U7XG4gIHByaXZhdGUgaG9yaXpvbnRhbERpcmVjdGlvbjogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YCA9XG4gICAgSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgcHJpdmF0ZSB2ZXJ0aWNhbERpcmVjdGlvbjogVmVydGljYWxEaXJlY3Rpb24gfCBgJHtWZXJ0aWNhbERpcmVjdGlvbn1gID0gVmVydGljYWxEaXJlY3Rpb24uZG93bjtcblxuICBwcml2YXRlIF9pdGVtczogc3RyaW5nW10gfCBhbnlbXSA9IFtdO1xuICBnZXQgaXRlbXMoKTogc3RyaW5nW10gfCBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGl0ZW1zKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSB7XG4gICAgdGhpcy5faXRlbXMgPSB2YWx1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleDogbnVtYmVyID0gLTE7XG4gIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdIHx8IG51bGw7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgaXRlbVRleHRQcm9wZXJ0eSA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlciA9ICdQbGVhc2Ugc2VsZWN0Oic7XG5cbiAgQElucHV0KCkgc2V0IHBvcG91dChkaXJlY3Rpb246IEhvcml6b250YWxEaXJlY3Rpb24gfCBgJHtIb3Jpem9udGFsRGlyZWN0aW9ufWApIHtcbiAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgfVxuXG4gIGdldCBwb3BvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGF0dGVudGlvbkxldmVsOiAnMScgfCAnMicgfCAnMycgfCAnNCcgPSAnMyc7XG4gIHJlYWRvbmx5IGF0dGVudGlvbkxldmVsT3BlbiA9ICcyJztcblxuICBASW5wdXQoKVxuICBleHBhbmQ/OiAnYmxvY2snO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IF9pc0Rpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVycm9yJylcbiAgQElucHV0KClcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2l6ZTogJ3NtJyB8ICdtZCcgPSAnbWQnO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmluZGV4ID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLndpdGgtcG9wb3ZlcicpXG4gIEBJbnB1dCgpXG4gIHVzZVBvcG92ZXIgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICBnZXQgX3RhYmluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLnRhYmluZGV4O1xuICB9XG5cbiAgLy8gUHJldmVudCBJb25pYyBibHVyIG9uIHNjcm9sbFxuICBASG9zdEJpbmRpbmcoJ2F0dHIubm8tYmx1cicpXG4gIGdldCBfbm9CbHVyT25TY3JvbGwoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQgKHRhcCBvbiBtb2JpbGUsIGNsaWNrL2tleXByZXNzIG9uIHdlYilcbiAgICovXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IGFueSA9IG51bGw7XG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUZXh0RnJvbUl0ZW0odGhpcy52YWx1ZSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZCcpXG4gIGdldCBfaXNCbG9ja0xldmVsKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZCA9PT0gJ2Jsb2NrJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgX3JvbGUgPSAnbGlzdGJveCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1vcGVuaW5nJylcbiAgZ2V0IF9pc09wZW5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IE9wZW5TdGF0ZS5vcGVuaW5nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1vcGVuJylcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gT3BlblN0YXRlLm9wZW47XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvcG91dC1sZWZ0JylcbiAgZ2V0IF9wb3BvdXRMZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPT09IEhvcml6b250YWxEaXJlY3Rpb24ubGVmdDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9wb3V0LXVwJylcbiAgZ2V0IF9wb3BvdXRVcCgpIHtcbiAgICByZXR1cm4gdGhpcy52ZXJ0aWNhbERpcmVjdGlvbiA9PT0gVmVydGljYWxEaXJlY3Rpb24udXA7XG4gIH1cblxuICBAQ29udGVudENoaWxkKExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHNsb3R0ZWRJdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcbiAgQFZpZXdDaGlsZChDYXJkQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY2FyZEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFBvcG92ZXJDb21wb25lbnQpXG4gIHBvcG92ZXI/OiBQb3BvdmVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKEJ1dHRvbkNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgYnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGtpcmJ5SXRlbXNEZWZhdWx0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuICBAQ29udGVudENoaWxkcmVuKEl0ZW1Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBraXJieUl0ZW1zU2xvdHRlZDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBwcml2YXRlIGl0ZW1DbGlja1VubGlzdGVuOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyUmVmOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBzaG93RHJvcGRvd25UaW1lb3V0SWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUga2V5Ym9hcmRIYW5kbGVyU2VydmljZTogS2V5Ym9hcmRIYW5kbGVyU2VydmljZVxuICApIHt9XG5cbiAgb25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZSgpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvbkJ1dHRvbk1vdXNlRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gUHJldmVudCBidXR0b24gZm9jdXM7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uZmlndXJlZFNsb3R0ZWRJdGVtcyAmJiB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkLmxlbmd0aCkge1xuICAgICAgdGhpcy5raXJieUl0ZW1zU2xvdHRlZC5mb3JFYWNoKChraXJieUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGtpcmJ5SXRlbS5uYXRpdmVFbGVtZW50LCAncm9sZScsICdvcHRpb24nKTtcbiAgICAgICAgY29uc3QgdW5saXN0ZW4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihraXJieUl0ZW0ubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25JdGVtU2VsZWN0KGluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrVW5saXN0ZW4ucHVzaCh1bmxpc3Rlbik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaGFzQ29uZmlndXJlZFNsb3R0ZWRJdGVtcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyogVXRpbGl0eSB0aGF0IG1ha2VzIGl0IGVhc2llciB0byBzZXQgc3R5bGVzIG9uIGNhcmQgZWxlbWVudCBcbiAgd2hlbiB1c2luZyBwb3BvdmVyKi9cbiAgcHJpdmF0ZSBzZXRQb3BvdmVyQ2FyZFN0eWxlKHN0eWxlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudXNlUG9wb3ZlcikgcmV0dXJuO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHN0eWxlLFxuICAgICAgdmFsdWUsXG4gICAgICBSZW5kZXJlclN0eWxlRmxhZ3MyLkRhc2hDYXNlXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyICYmIHRoaXMuZXhwYW5kID09PSAnYmxvY2snKSB7XG4gICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnLS1raXJieS1jYXJkLXdpZHRoJywgYCR7d2lkdGh9cHhgKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWF4LXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWluLXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplQWxpZ25tZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBbGlnbm1lbnQoKSB7XG4gICAgaWYgKHRoaXMudXNlUG9wb3ZlcikgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlclJlZikge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgICAvLyBPbmx5IGFwcGx5IGFsaWdubWVudCB3aGVuIG9wZW5pbmc6XG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyB0aW1lciB0byBzaG93IGRyb3Bkb3duOlxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+IDA7XG4gICAgICAgIGlmIChpc1Zpc2libGUgJiYgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPCAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRIb3Jpem9udGFsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgICB0aGlzLnNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SG9yaXpvbnRhbERpcmVjdGlvbihlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkge1xuICAgIC8vIElmIHBvcG91dCBkaXJlY3Rpb24gaXMgc2V0IHRvIHJpZ2h0LCBhbmQgdGhlIGVudHJ5IGlzIGN1dCBvZmYgdG8gdGhlIHJpZ2h0IGJ5ICR7ZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnJpZ2h0IC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5yaWdodH1weFxuICAgIC8vIGl0IGlzIHNldCB0byBwb3BvdXQgbGVmdCBpbnN0ZWFkLCBhbmQgdmljZSB2ZXJzYSBmb3IgcG9wb3V0IGRpcmVjdGlvbiBsZWZ0XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5yaWdodCA+IGVudHJ5LnJvb3RCb3VuZHMucmlnaHQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQgPCBlbnRyeS5yb290Qm91bmRzLmxlZnQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSB7XG4gICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgPCAwKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSB0b3AgYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QudG9wfXB4XG4gICAgICAvLyBvcGVuIGRvd253YXJkczpcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgIH1cbiAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA+IGVudHJ5LnJvb3RCb3VuZHMuYm90dG9tKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSBib3R0b20gYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuYm90dG9tIC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5ib3R0b219cHhcbiAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFRvcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IFNQQUNJTkcgPSA1OyAvL1RPRE86IEdldCBmcm9tIFNDU1NcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjYXJkIGNhbiBmaXQgb24gdG9wIG9mIGJ1dHRvbjpcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRUb3AgPiBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0ICsgU1BBQ0lORykge1xuICAgICAgICAvLyBvcGVuIHVwd2FyZHM6XG4gICAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi51cDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUub3BlbmluZztcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGluIGNhc2UgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgaXNuJ3QgaW52b2tlZFxuICAgICAgdGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnNob3dEcm9wZG93bigpLFxuICAgICAgICBEcm9wZG93bkNvbXBvbmVudC5PUEVOX0RFTEFZX0lOX01TXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Ryb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5vcGVuO1xuICAgICAgdGhpcy5wb3BvdmVyPy5zaG93KCk7XG4gICAgICB0aGlzLnNjcm9sbEl0ZW1JbnRvVmlldyh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgICAgLy8gUmVzZXQgdmVydGljYWwgZGlyZWN0aW9uIHRvIGRlZmF1bHRcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgICAgdGhpcy5wb3BvdmVyPy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25JdGVtU2VsZWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaW5kZXgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RJdGVtQnlWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCdzIHZhbHVlXG4gICAqIGNoYW5nZXMgZnJvbSB1c2VyIGlucHV0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QgaXMgYmx1cnJlZFxuICAgKiBieSB0aGUgdXNlci4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHJlcXVpcmVkXG4gICAqIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ICE9IHRoaXMuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLnNjcm9sbEl0ZW1JbnRvVmlldyhpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0SXRlbUJ5VmFsdWUodmFsdWU6IHN0cmluZyB8IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuaXRlbXMuaW5kZXhPZih2YWx1ZSk7XG4gIH1cblxuICBnZXRUZXh0RnJvbUl0ZW0oaXRlbTogc3RyaW5nIHwgYW55KSB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtW3RoaXMuaXRlbVRleHRQcm9wZXJ0eV07XG4gIH1cblxuICBzY3JvbGxJdGVtSW50b1ZpZXcoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGtpcmJ5SXRlbXMgPVxuICAgICAgdGhpcy5raXJieUl0ZW1zU2xvdHRlZCAmJiB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkLmxlbmd0aFxuICAgICAgICA/IHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWRcbiAgICAgICAgOiB0aGlzLmtpcmJ5SXRlbXNEZWZhdWx0O1xuICAgIGlmIChraXJieUl0ZW1zICYmIGtpcmJ5SXRlbXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEtpcmJ5SXRlbSA9IGtpcmJ5SXRlbXMudG9BcnJheSgpW2luZGV4XTtcbiAgICAgIGlmIChzZWxlY3RlZEtpcmJ5SXRlbSAmJiBzZWxlY3RlZEtpcmJ5SXRlbS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1FbGVtZW50ID0gc2VsZWN0ZWRLaXJieUl0ZW0ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy5jYXJkRWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpdGVtVG9wID0gaXRlbUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBpdGVtQm90dG9tID0gaXRlbUVsZW1lbnQub2Zmc2V0VG9wICsgaXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBjb250YWluZXJWaXNpYmxlVG9wID0gc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyVmlzaWJsZUJvdHRvbSA9IHNjcm9sbENvbnRhaW5lci5jbGllbnRIZWlnaHQgKyBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICBpZiAoaXRlbVRvcCA8IGNvbnRhaW5lclZpc2libGVUb3ApIHtcbiAgICAgICAgICBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0gaXRlbVRvcDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtQm90dG9tID4gY29udGFpbmVyVmlzaWJsZUJvdHRvbSkge1xuICAgICAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSBpdGVtQm90dG9tIC0gc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24udGFiJywgWyckZXZlbnQnXSlcbiAgX29uVGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIF9vbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBfb25Gb2N1cygpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH1cbiAgfVxuXG4gIF9vblBvcG92ZXJXaWxsSGlkZSgpIHtcbiAgICB0aGlzLnN0YXRlID0gT3BlblN0YXRlLmNsb3NlZDtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicpXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJylcbiAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50J10pXG4gIF9vbkJsdXIoZXZlbnQ/OiBGb2N1c0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGlmICghdGhpcy5jYXJkRWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScsIFsnJGV2ZW50J10pXG4gIF9vblNwYWNlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgX29uRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgX29uQXJyb3dLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAvLyBNaXJyb3IgZGVmYXVsdCBIVE1MNSBzZWxlY3QgYmVoYXZpb3VyIC0gcHJldmVudCBsZWZ0L3JpZ2h0IGFycm93cyB3aGVuIG9wZW46XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIChldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMua2V5Ym9hcmRIYW5kbGVyU2VydmljZS5oYW5kbGUoZXZlbnQsIHRoaXMuaXRlbXMsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgaWYgKG5ld0luZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbShuZXdJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW5kJywgWyckZXZlbnQnXSlcbiAgX29uSG9tZUVuZEtleXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5rZXlib2FyZEhhbmRsZXJTZXJ2aWNlLmhhbmRsZShldmVudCwgdGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICBpZiAobmV3SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RJdGVtKG5ld0luZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgbGV0IHVubGlzdGVuOiAoKSA9PiB2b2lkO1xuICAgIHdoaWxlICgodW5saXN0ZW4gPSB0aGlzLml0ZW1DbGlja1VubGlzdGVuLnBvcCgpKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB1bmxpc3RlbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlclJlZikge1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
392
|
+
/** @nocollapse */ DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.KeyboardHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
393
|
+
/** @nocollapse */ DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: DropdownComponent, selector: "kirby-dropdown", inputs: { items: "items", selectedIndex: "selectedIndex", itemTextProperty: "itemTextProperty", placeholder: "placeholder", popout: "popout", attentionLevel: "attentionLevel", expand: "expand", disabled: "disabled", hasError: "hasError", size: "size", tabindex: "tabindex", usePopover: "usePopover" }, outputs: { change: "change" }, host: { listeners: { "keydown.tab": "_onTab($event)", "mousedown": "_onMouseDown($event)", "focus": "_onFocus()", "keydown.enter": "_onEnter($event)", "keydown.escape": "_onBlur()", "blur": "_onBlur($event)", "keydown.space": "_onSpace($event)", "keydown.arrowup": "_onArrowKeys($event)", "keydown.arrowdown": "_onArrowKeys($event)", "keydown.arrowleft": "_onArrowKeys($event)", "keydown.arrowright": "_onArrowKeys($event)", "keydown.home": "_onHomeEndKeys($event)", "keydown.end": "_onHomeEndKeys($event)" }, properties: { "attr.disabled": "this._isDisabled", "class.error": "this.hasError", "class.with-popover": "this.usePopover", "attr.tabindex": "this._tabindex", "attr.no-blur": "this._noBlurOnScroll", "class.expand": "this._isBlockLevel", "attr.role": "this._role", "class.is-opening": "this._isOpening", "class.is-open": "this.isOpen", "class.popout-left": "this._popoutLeft", "class.popout-up": "this._popoutUp" } }, providers: [
|
|
394
|
+
{
|
|
395
|
+
provide: NG_VALUE_ACCESSOR,
|
|
396
|
+
useExisting: forwardRef((() => DropdownComponent)),
|
|
397
|
+
multi: true,
|
|
398
|
+
},
|
|
399
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "slottedItems", predicate: ListItemTemplateDirective, read: ElementRef }, { propertyName: "kirbyItemsSlotted", predicate: ItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "cardElement", first: true, predicate: CardComponent, descendants: true, read: ElementRef }, { propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "buttonElement", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "kirbyItemsDefault", predicate: ItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"isOpen ? attentionLevelOpen : attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover [target]=\"buttonElement\" [popout]=\"popout\" (willHide)=\"_onPopoverWillHide()\">\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: i === selectedIndex, index: i }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item let-selected=\"selected\" let-index=\"index\">\n <kirby-item [selectable]=\"true\" [selected]=\"selected\" (click)=\"onItemSelect(index)\" role=\"option\">\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <h3 tabindex=\"0\">{{ getTextFromItem(item) }}</h3>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative;max-width:calc(100vw - 32px);outline:none}:host.expand{display:block}:host.expand kirby-card{width:100%;min-width:initial;max-width:initial}@media (hover: hover){:host:focus>button,:host:focus>button.attention-level3{border-color:#4d90fe}}:host.error>button,:host.ng-touched.ng-invalid>button{border-color:var(--kirby-danger)}:host>button{position:relative;margin:0;outline:none;width:100%;transition:box-shadow .2s,border-color .2s}:host>button.attention-level2{border:1px solid transparent}:host>button .text{overflow:hidden;text-overflow:ellipsis}kirby-popover{--max-height: 352px}kirby-card{max-height:352px;margin-top:4px;margin-bottom:4px;overflow-y:auto;box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;min-width:288px;max-width:calc(100vw - 32px)}@media (min-width: 321px){kirby-card{min-width:343px}}:host(:not(.with-popover)) kirby-card{display:none;opacity:0;position:absolute;z-index:800}:host(:not(.with-popover)).is-opening kirby-card{display:block}:host(:not(.with-popover)).is-open kirby-card{display:block;opacity:1}:host(:not(.with-popover)).popout-left kirby-card{right:0}:host(:not(.with-popover)).popout-up kirby-card{top:0;margin-top:-4px;transform:translateY(-100%)}:host(:not(.with-popover)).popout-up.is-open>button{z-index:801}:host(.with-popover).is-open kirby-card{display:block}:host(.is-open)>button{box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14}:host-context(kirby-calendar)>button{border-color:transparent;font-weight:700;font-size:initial}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"], components: [{ type: i2.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "isDestructive", "themeColor", "expand", "isFloating", "size"] }, { type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { type: i4.PopoverComponent, selector: "kirby-popover", inputs: ["popout", "target"], outputs: ["willHide"] }, { type: i5.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "mode"] }, { type: i6.ItemComponent, selector: "kirby-item", inputs: ["disabled", "selected", "selectable", "reorderable", "size"] }], directives: [{ type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
400
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
401
|
+
type: Component,
|
|
402
|
+
args: [{
|
|
403
|
+
selector: 'kirby-dropdown',
|
|
404
|
+
templateUrl: './dropdown.component.html',
|
|
405
|
+
styleUrls: ['./dropdown.component.scss'],
|
|
406
|
+
providers: [
|
|
407
|
+
{
|
|
408
|
+
provide: NG_VALUE_ACCESSOR,
|
|
409
|
+
useExisting: forwardRef((() => DropdownComponent)),
|
|
410
|
+
multi: true,
|
|
411
|
+
},
|
|
412
|
+
],
|
|
413
|
+
}]
|
|
414
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.KeyboardHandlerService }]; }, propDecorators: { items: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], selectedIndex: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], itemTextProperty: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], placeholder: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], popout: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], attentionLevel: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], expand: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}], disabled: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], _isDisabled: [{
|
|
431
|
+
type: HostBinding,
|
|
432
|
+
args: ['attr.disabled']
|
|
433
|
+
}], hasError: [{
|
|
434
|
+
type: HostBinding,
|
|
435
|
+
args: ['class.error']
|
|
436
|
+
}, {
|
|
437
|
+
type: Input
|
|
438
|
+
}], size: [{
|
|
439
|
+
type: Input
|
|
440
|
+
}], tabindex: [{
|
|
441
|
+
type: Input
|
|
442
|
+
}], usePopover: [{
|
|
443
|
+
type: HostBinding,
|
|
444
|
+
args: ['class.with-popover']
|
|
445
|
+
}, {
|
|
446
|
+
type: Input
|
|
447
|
+
}], _tabindex: [{
|
|
448
|
+
type: HostBinding,
|
|
449
|
+
args: ['attr.tabindex']
|
|
450
|
+
}], _noBlurOnScroll: [{
|
|
451
|
+
type: HostBinding,
|
|
452
|
+
args: ['attr.no-blur']
|
|
453
|
+
}], change: [{
|
|
454
|
+
type: Output
|
|
455
|
+
}], _isBlockLevel: [{
|
|
456
|
+
type: HostBinding,
|
|
457
|
+
args: ['class.expand']
|
|
458
|
+
}], _role: [{
|
|
459
|
+
type: HostBinding,
|
|
460
|
+
args: ['attr.role']
|
|
461
|
+
}], _isOpening: [{
|
|
462
|
+
type: HostBinding,
|
|
463
|
+
args: ['class.is-opening']
|
|
464
|
+
}], isOpen: [{
|
|
465
|
+
type: HostBinding,
|
|
466
|
+
args: ['class.is-open']
|
|
467
|
+
}], _popoutLeft: [{
|
|
468
|
+
type: HostBinding,
|
|
469
|
+
args: ['class.popout-left']
|
|
470
|
+
}], _popoutUp: [{
|
|
471
|
+
type: HostBinding,
|
|
472
|
+
args: ['class.popout-up']
|
|
473
|
+
}], itemTemplate: [{
|
|
474
|
+
type: ContentChild,
|
|
475
|
+
args: [ListItemTemplateDirective, { static: true, read: TemplateRef }]
|
|
476
|
+
}], slottedItems: [{
|
|
477
|
+
type: ContentChildren,
|
|
478
|
+
args: [ListItemTemplateDirective, { read: ElementRef }]
|
|
479
|
+
}], cardElement: [{
|
|
480
|
+
type: ViewChild,
|
|
481
|
+
args: [CardComponent, { read: ElementRef }]
|
|
482
|
+
}], popover: [{
|
|
483
|
+
type: ViewChild,
|
|
484
|
+
args: [PopoverComponent]
|
|
485
|
+
}], buttonElement: [{
|
|
486
|
+
type: ViewChild,
|
|
487
|
+
args: [ButtonComponent, { static: true, read: ElementRef }]
|
|
488
|
+
}], kirbyItemsDefault: [{
|
|
489
|
+
type: ViewChildren,
|
|
490
|
+
args: [ItemComponent, { read: ElementRef }]
|
|
491
|
+
}], kirbyItemsSlotted: [{
|
|
492
|
+
type: ContentChildren,
|
|
493
|
+
args: [ItemComponent, { read: ElementRef }]
|
|
494
|
+
}], _onTab: [{
|
|
495
|
+
type: HostListener,
|
|
496
|
+
args: ['keydown.tab', ['$event']]
|
|
497
|
+
}], _onMouseDown: [{
|
|
498
|
+
type: HostListener,
|
|
499
|
+
args: ['mousedown', ['$event']]
|
|
500
|
+
}], _onFocus: [{
|
|
501
|
+
type: HostListener,
|
|
502
|
+
args: ['focus']
|
|
503
|
+
}], _onBlur: [{
|
|
504
|
+
type: HostListener,
|
|
505
|
+
args: ['keydown.enter']
|
|
506
|
+
}, {
|
|
507
|
+
type: HostListener,
|
|
508
|
+
args: ['keydown.escape']
|
|
509
|
+
}, {
|
|
510
|
+
type: HostListener,
|
|
511
|
+
args: ['blur', ['$event']]
|
|
512
|
+
}], _onSpace: [{
|
|
513
|
+
type: HostListener,
|
|
514
|
+
args: ['keydown.space', ['$event']]
|
|
515
|
+
}], _onEnter: [{
|
|
516
|
+
type: HostListener,
|
|
517
|
+
args: ['keydown.enter', ['$event']]
|
|
518
|
+
}], _onArrowKeys: [{
|
|
519
|
+
type: HostListener,
|
|
520
|
+
args: ['keydown.arrowup', ['$event']]
|
|
521
|
+
}, {
|
|
522
|
+
type: HostListener,
|
|
523
|
+
args: ['keydown.arrowdown', ['$event']]
|
|
524
|
+
}, {
|
|
525
|
+
type: HostListener,
|
|
526
|
+
args: ['keydown.arrowleft', ['$event']]
|
|
527
|
+
}, {
|
|
528
|
+
type: HostListener,
|
|
529
|
+
args: ['keydown.arrowright', ['$event']]
|
|
530
|
+
}], _onHomeEndKeys: [{
|
|
531
|
+
type: HostListener,
|
|
532
|
+
args: ['keydown.home', ['$event']]
|
|
533
|
+
}, {
|
|
534
|
+
type: HostListener,
|
|
535
|
+
args: ['keydown.end', ['$event']]
|
|
536
|
+
}] } });
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFjcEUsTUFBTSxPQUFPLGlCQUFpQjtJQW1KNUIsWUFDVSxRQUFtQixFQUNuQixVQUFtQyxFQUNuQyxpQkFBb0MsRUFDcEMsc0JBQThDO1FBSDlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBbkpoRCxVQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6Qiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsd0JBQW1CLEdBQ3pCLG1CQUFtQixDQUFDLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBK0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBRXZGLFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBVTlCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFhcEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDO1FBRzFCLGdCQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFXL0IsbUJBQWMsR0FBMEIsR0FBRyxDQUFDO1FBQ25DLHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQU1sQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBWWpCLFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBR3pCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFJYixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBYW5COztXQUVHO1FBQ08sV0FBTSxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUV4RSxXQUFNLEdBQWlCLElBQUksQ0FBQztRQWVwQyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBcUNWLHNCQUFpQixHQUFtQixFQUFFLENBQUM7UUF1S3ZDLGNBQVMsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzNDLGVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUEvSjNCLENBQUM7SUE3SUosSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUF1QjtRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBR0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLGFBQWEsQ0FBQyxLQUFhO1FBQ3RDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBUUQsSUFBYSxNQUFNLENBQUMsU0FBeUQ7UUFDM0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDcEUsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFZRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFnQkQsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLElBQ0ksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQ0ksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7SUFDakMsQ0FBQztJQUtELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQTRCRCxRQUFRLENBQUMsS0FBaUI7UUFDeEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFZO1FBQzdCLHdCQUF3QjtRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7d0JBQ29CO0lBQ1osbUJBQW1CLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLEtBQUssRUFDTCxLQUFLLEVBQ0wsbUJBQW1CLENBQUMsUUFBUSxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7WUFDOUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixFQUFFLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDakMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFpQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6RCxxQ0FBcUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFO29CQUNwQyxPQUFPO2lCQUNSO2dCQUVELDZDQUE2QztnQkFDN0MsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFO29CQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFnQztRQUM3RCxtSkFBbUo7UUFDbkosNkVBQTZFO1FBQzdFLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLG1CQUFtQixDQUFDLEtBQUssRUFBRTtZQUMxRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7YUFDckQ7U0FDRjthQUFNO1lBQ0wsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDO2FBQ3REO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBZ0M7UUFDM0QsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUNwQyxtRUFBbUU7WUFDbkUsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7U0FDakQ7UUFDRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDN0QseUdBQXlHO1lBQ3pHLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDckYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQ3hDLDhDQUE4QztZQUM5QyxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLE9BQU8sRUFBRTtnQkFDNUQsZ0JBQWdCO2dCQUNoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2FBQy9DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDL0IsNkZBQTZGO1lBQzdGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLENBQ3JDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDekIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQ25DLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxZQUFZOztRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDNUIsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxLQUFLOztRQUNILElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDOUIsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDaEQsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxJQUFJLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFLRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQW1CO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU07WUFDckQsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3QixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ25DLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksaUJBQWlCLElBQUksaUJBQWlCLENBQUMsYUFBYSxFQUFFO2dCQUN4RCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7Z0JBQ3BELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO2dCQUN2RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO2dCQUN0QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hGLElBQUksT0FBTyxHQUFHLG1CQUFtQixFQUFFO29CQUNqQyxlQUFlLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztpQkFDckM7cUJBQU0sSUFBSSxVQUFVLEdBQUcsc0JBQXNCLEVBQUU7b0JBQzlDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsVUFBVSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUM7aUJBQ3ZFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFHRCxNQUFNLENBQUMsS0FBb0I7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFpQjtRQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBS0QsT0FBTyxDQUFDLEtBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGFBQTRCLENBQUMsRUFBRTtnQkFDakYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2Q7U0FDRjtRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFNRCxZQUFZLENBQUMsS0FBb0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsK0VBQStFO1FBQy9FLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEVBQUU7WUFDNUUsT0FBTztTQUNSO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0YsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUlELGNBQWMsQ0FBQyxLQUFvQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksUUFBb0IsQ0FBQztRQUN6QixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUM5RCxRQUFRLEVBQUUsQ0FBQztTQUNaO1FBQ0QsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7QUF4ZWUsa0NBQWdCLEdBQUcsR0FBRyxDQUFDO2tJQUg1QixpQkFBaUI7c0hBQWpCLGlCQUFpQixxeENBUmpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUM7WUFDaEQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLG9FQWtJYSx5QkFBeUIsMkJBQXdCLFdBQVcsNkRBRXpELHlCQUF5QixRQUFVLFVBQVUsb0RBVTdDLGFBQWEsUUFBVSxVQUFVLDBFQVJ2QyxhQUFhLDJCQUFVLFVBQVUsdURBRWpDLGdCQUFnQixnRkFFaEIsZUFBZSwyQkFBd0IsVUFBVSxrRUFFOUMsYUFBYSwyQkFBVSxVQUFVLDZCQ3ZMakQsa2xEQTBDQTs0RkRHYSxpQkFBaUI7a0JBWjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ3hDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OExBZ0JjLEtBQUs7c0JBQWpCLEtBQUs7Z0JBVU8sYUFBYTtzQkFBekIsS0FBSztnQkFRTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFTTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsZUFBZTtnQkFPNUIsUUFBUTtzQkFGUCxXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sVUFBVTtzQkFGVCxXQUFXO3VCQUFDLG9CQUFvQjs7c0JBQ2hDLEtBQUs7Z0JBSUYsU0FBUztzQkFEWixXQUFXO3VCQUFDLGVBQWU7Z0JBT3hCLGVBQWU7c0JBRGxCLFdBQVc7dUJBQUMsY0FBYztnQkFRakIsTUFBTTtzQkFBZixNQUFNO2dCQVlILGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsY0FBYztnQkFNM0IsS0FBSztzQkFESixXQUFXO3VCQUFDLFdBQVc7Z0JBSXBCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBTTNCLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxlQUFlO2dCQU14QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixTQUFTO3NCQURaLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU05QixZQUFZO3NCQURYLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzVFLFlBQVk7c0JBRFgsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR2hFLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUc5QyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUczQixhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUc5RCxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHakQsaUJBQWlCO3NCQURoQixlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBbVFwRCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVN2QyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNyQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsT0FBTztnQkFlckIsT0FBTztzQkFITixZQUFZO3VCQUFDLGVBQWU7O3NCQUM1QixZQUFZO3VCQUFDLGdCQUFnQjs7c0JBQzdCLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVloQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVd6QyxZQUFZO3NCQUpYLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzVDLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0I5QyxjQUFjO3NCQUZiLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDdkMsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlclN0eWxlRmxhZ3MyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vaXRlbS9pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vbGlzdC9saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIb3Jpem9udGFsRGlyZWN0aW9uLCBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IE9wZW5TdGF0ZSwgVmVydGljYWxEaXJlY3Rpb24gfSBmcm9tICcuL2Ryb3Bkb3duLnR5cGVzJztcbmltcG9ydCB7IEtleWJvYXJkSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2tleWJvYXJkLWhhbmRsZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgc3RhdGljIHJlYWRvbmx5IE9QRU5fREVMQVlfSU5fTVMgPSAxMDA7XG4gIHByaXZhdGUgc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICBwcml2YXRlIGhhc0NvbmZpZ3VyZWRTbG90dGVkSXRlbXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsRGlyZWN0aW9uIHwgYCR7SG9yaXpvbnRhbERpcmVjdGlvbn1gID1cbiAgICBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICBwcml2YXRlIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbERpcmVjdGlvbiB8IGAke1ZlcnRpY2FsRGlyZWN0aW9ufWAgPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuXG4gIHByaXZhdGUgX2l0ZW1zOiBzdHJpbmdbXSB8IGFueVtdID0gW107XG4gIGdldCBpdGVtcygpOiBzdHJpbmdbXSB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgYW55W10pIHtcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0gfHwgbnVsbDtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBpdGVtVGV4dFByb3BlcnR5ID0gJ3RleHQnO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJ1BsZWFzZSBzZWxlY3Q6JztcblxuICBASW5wdXQoKSBzZXQgcG9wb3V0KGRpcmVjdGlvbjogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YCkge1xuICAgIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICB9XG5cbiAgZ2V0IHBvcG91dCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uO1xuICB9XG5cbiAgQElucHV0KClcbiAgYXR0ZW50aW9uTGV2ZWw6ICcxJyB8ICcyJyB8ICczJyB8ICc0JyA9ICczJztcbiAgcmVhZG9ubHkgYXR0ZW50aW9uTGV2ZWxPcGVuID0gJzInO1xuXG4gIEBJbnB1dCgpXG4gIGV4cGFuZD86ICdibG9jayc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2lzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXJyb3InKVxuICBASW5wdXQoKVxuICBoYXNFcnJvcjogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBzaXplOiAnc20nIHwgJ21kJyA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgdGFiaW5kZXggPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mud2l0aC1wb3BvdmVyJylcbiAgQElucHV0KClcbiAgdXNlUG9wb3ZlciA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfdGFiaW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6IHRoaXMudGFiaW5kZXg7XG4gIH1cblxuICAvLyBQcmV2ZW50IElvbmljIGJsdXIgb24gc2Nyb2xsXG4gIEBIb3N0QmluZGluZygnYXR0ci5uby1ibHVyJylcbiAgZ2V0IF9ub0JsdXJPblNjcm9sbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCAodGFwIG9uIG1vYmlsZSwgY2xpY2sva2V5cHJlc3Mgb24gd2ViKVxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IGFueT4oKTtcblxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nIHwgYW55ID0gbnVsbDtcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFRleHRGcm9tSXRlbSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXhwYW5kJylcbiAgZ2V0IF9pc0Jsb2NrTGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kID09PSAnYmxvY2snO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICBfcm9sZSA9ICdsaXN0Ym94JztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLW9wZW5pbmcnKVxuICBnZXQgX2lzT3BlbmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSA9PT0gT3BlblN0YXRlLm9wZW5pbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLW9wZW4nKVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucG9wb3V0LWxlZnQnKVxuICBnZXQgX3BvcG91dExlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb3BvdXQtdXAnKVxuICBnZXQgX3BvcG91dFVwKCkge1xuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsRGlyZWN0aW9uID09PSBWZXJ0aWNhbERpcmVjdGlvbi51cDtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgc2xvdHRlZEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuICBAVmlld0NoaWxkKENhcmRDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjYXJkRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoUG9wb3ZlckNvbXBvbmVudClcbiAgcG9wb3Zlcj86IFBvcG92ZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoQnV0dG9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBidXR0b25FbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZHJlbihJdGVtQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAga2lyYnlJdGVtc0RlZmF1bHQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBDb250ZW50Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGtpcmJ5SXRlbXNTbG90dGVkOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuXG4gIHByaXZhdGUgaXRlbUNsaWNrVW5saXN0ZW46ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHNob3dEcm9wZG93blRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBrZXlib2FyZEhhbmRsZXJTZXJ2aWNlOiBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlXG4gICkge31cblxuICBvblRvZ2dsZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIG9uQnV0dG9uTW91c2VFdmVudChldmVudDogRXZlbnQpIHtcbiAgICAvLyBQcmV2ZW50IGJ1dHRvbiBmb2N1cztcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGlmICghdGhpcy5oYXNDb25maWd1cmVkU2xvdHRlZEl0ZW1zICYmIHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWQubGVuZ3RoKSB7XG4gICAgICB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkLmZvckVhY2goKGtpcmJ5SXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoa2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgICBjb25zdCB1bmxpc3RlbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGtpcmJ5SXRlbS5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkl0ZW1TZWxlY3QoaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbi5wdXNoKHVubGlzdGVuKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5oYXNDb25maWd1cmVkU2xvdHRlZEl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKiBVdGlsaXR5IHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNldCBzdHlsZXMgb24gY2FyZCBlbGVtZW50IFxuICB3aGVuIHVzaW5nIHBvcG92ZXIqL1xuICBwcml2YXRlIHNldFBvcG92ZXJDYXJkU3R5bGUoc3R5bGU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5jYXJkRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgc3R5bGUsXG4gICAgICB2YWx1ZSxcbiAgICAgIFJlbmRlcmVyU3R5bGVGbGFnczIuRGFzaENhc2VcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnVzZVBvcG92ZXIgJiYgdGhpcy5leHBhbmQgPT09ICdibG9jaycpIHtcbiAgICAgIGNvbnN0IHsgd2lkdGggfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgdGhpcy5zZXRQb3BvdmVyQ2FyZFN0eWxlKCctLWtpcmJ5LWNhcmQtd2lkdGgnLCBgJHt3aWR0aH1weGApO1xuICAgICAgdGhpcy5zZXRQb3BvdmVyQ2FyZFN0eWxlKCdtYXgtd2lkdGgnLCAnaW5pdGlhbCcpO1xuICAgICAgdGhpcy5zZXRQb3BvdmVyQ2FyZFN0eWxlKCdtaW4td2lkdGgnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVBbGlnbm1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFsaWdubWVudCgpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICAgIC8vIE9ubHkgYXBwbHkgYWxpZ25tZW50IHdoZW4gb3BlbmluZzpcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IE9wZW5TdGF0ZS5vcGVuaW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FuY2VsIGFueSBwZW5kaW5nIHRpbWVyIHRvIHNob3cgZHJvcGRvd246XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dEcm9wZG93blRpbWVvdXRJZCk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoID4gMDtcbiAgICAgICAgaWYgKGlzVmlzaWJsZSAmJiBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDEpIHtcbiAgICAgICAgICB0aGlzLnNldEhvcml6b250YWxEaXJlY3Rpb24oZW50cnkpO1xuICAgICAgICAgIHRoaXMuc2V0VmVydGljYWxEaXJlY3Rpb24oZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMuY2FyZEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRIb3Jpem9udGFsRGlyZWN0aW9uKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSB7XG4gICAgLy8gSWYgcG9wb3V0IGRpcmVjdGlvbiBpcyBzZXQgdG8gcmlnaHQsIGFuZCB0aGUgZW50cnkgaXMgY3V0IG9mZiB0byB0aGUgcmlnaHQgYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QucmlnaHQgLSBlbnRyeS5pbnRlcnNlY3Rpb25SZWN0LnJpZ2h0fXB4XG4gICAgLy8gaXQgaXMgc2V0IHRvIHBvcG91dCBsZWZ0IGluc3RlYWQsIGFuZCB2aWNlIHZlcnNhIGZvciBwb3BvdXQgZGlyZWN0aW9uIGxlZnRcbiAgICBpZiAodGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID09PSBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0KSB7XG4gICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnJpZ2h0ID4gZW50cnkucm9vdEJvdW5kcy5yaWdodCkge1xuICAgICAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBIb3Jpem9udGFsRGlyZWN0aW9uLmxlZnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QubGVmdCA8IGVudHJ5LnJvb3RCb3VuZHMubGVmdCkge1xuICAgICAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmVydGljYWxEaXJlY3Rpb24oZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnRvcCA8IDApIHtcbiAgICAgIC8vIGVudHJ5IGlzIGN1dCBvZmYgYXQgdGhlIHRvcCBieSAke2VudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3B9cHhcbiAgICAgIC8vIG9wZW4gZG93bndhcmRzOlxuICAgICAgdGhpcy52ZXJ0aWNhbERpcmVjdGlvbiA9IFZlcnRpY2FsRGlyZWN0aW9uLmRvd247XG4gICAgfVxuICAgIGlmIChlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuYm90dG9tID4gZW50cnkucm9vdEJvdW5kcy5ib3R0b20pIHtcbiAgICAgIC8vIGVudHJ5IGlzIGN1dCBvZmYgYXQgdGhlIGJvdHRvbSBieSAke2VudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5ib3R0b20gLSBlbnRyeS5pbnRlcnNlY3Rpb25SZWN0LmJvdHRvbX1weFxuICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0VG9wID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgY29uc3QgU1BBQ0lORyA9IDU7IC8vVE9ETzogR2V0IGZyb20gU0NTU1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNhcmQgY2FuIGZpdCBvbiB0b3Agb2YgYnV0dG9uOlxuICAgICAgaWYgKGNvbnRhaW5lck9mZnNldFRvcCA+IGVudHJ5LnRhcmdldC5jbGllbnRIZWlnaHQgKyBTUEFDSU5HKSB7XG4gICAgICAgIC8vIG9wZW4gdXB3YXJkczpcbiAgICAgICAgdGhpcy52ZXJ0aWNhbERpcmVjdGlvbiA9IFZlcnRpY2FsRGlyZWN0aW9uLnVwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5vcGVuaW5nO1xuICAgICAgLy8gZW5zdXJlcyB0aGF0IHRoZSBkcm9wZG93biBpcyBvcGVuZWQgaW4gY2FzZSB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayBpc24ndCBpbnZva2VkXG4gICAgICB0aGlzLnNob3dEcm9wZG93blRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMuc2hvd0Ryb3Bkb3duKCksXG4gICAgICAgIERyb3Bkb3duQ29tcG9uZW50Lk9QRU5fREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93RHJvcGRvd24oKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IE9wZW5TdGF0ZS5vcGVuaW5nKSB7XG4gICAgICB0aGlzLnN0YXRlID0gT3BlblN0YXRlLm9wZW47XG4gICAgICB0aGlzLnBvcG92ZXI/LnNob3coKTtcbiAgICAgIHRoaXMuc2Nyb2xsSXRlbUludG9WaWV3KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5jbG9zZWQ7XG4gICAgICAvLyBSZXNldCB2ZXJ0aWNhbCBkaXJlY3Rpb24gdG8gZGVmYXVsdFxuICAgICAgdGhpcy52ZXJ0aWNhbERpcmVjdGlvbiA9IFZlcnRpY2FsRGlyZWN0aW9uLmRvd247XG4gICAgICB0aGlzLnBvcG92ZXI/LmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBvbkl0ZW1TZWxlY3QoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0SXRlbShpbmRleCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3QncyB2YWx1ZS4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gICAqIHJlcXVpcmVkIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIHRoZSBtb2RlbC5cbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdEl0ZW1CeVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgc2VsZWN0J3MgdmFsdWVcbiAgICogY2hhbmdlcyBmcm9tIHVzZXIgaW5wdXQuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCBpcyBibHVycmVkXG4gICAqIGJ5IHRoZSB1c2VyLiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIHRoZSBzZWxlY3QuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZSByZXF1aXJlZFxuICAgKiB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIFNldHMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaW5kZXggIT0gdGhpcy5zZWxlY3RlZEluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuc2Nyb2xsSXRlbUludG9WaWV3KGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RJdGVtQnlWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5pdGVtcy5pbmRleE9mKHZhbHVlKTtcbiAgfVxuXG4gIGdldFRleHRGcm9tSXRlbShpdGVtOiBzdHJpbmcgfCBhbnkpIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5pdGVtVGV4dFByb3BlcnR5XTtcbiAgfVxuXG4gIHNjcm9sbEl0ZW1JbnRvVmlldyhpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qga2lyYnlJdGVtcyA9XG4gICAgICB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkICYmIHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWQubGVuZ3RoXG4gICAgICAgID8gdGhpcy5raXJieUl0ZW1zU2xvdHRlZFxuICAgICAgICA6IHRoaXMua2lyYnlJdGVtc0RlZmF1bHQ7XG4gICAgaWYgKGtpcmJ5SXRlbXMgJiYga2lyYnlJdGVtcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkS2lyYnlJdGVtID0ga2lyYnlJdGVtcy50b0FycmF5KClbaW5kZXhdO1xuICAgICAgaWYgKHNlbGVjdGVkS2lyYnlJdGVtICYmIHNlbGVjdGVkS2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaXRlbUVsZW1lbnQgPSBzZWxlY3RlZEtpcmJ5SXRlbS5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSB0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGl0ZW1Ub3AgPSBpdGVtRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IGl0ZW1Cb3R0b20gPSBpdGVtRWxlbWVudC5vZmZzZXRUb3AgKyBpdGVtRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclZpc2libGVUb3AgPSBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICBjb25zdCBjb250YWluZXJWaXNpYmxlQm90dG9tID0gc2Nyb2xsQ29udGFpbmVyLmNsaWVudEhlaWdodCArIHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChpdGVtVG9wIDwgY29udGFpbmVyVmlzaWJsZVRvcCkge1xuICAgICAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSBpdGVtVG9wO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW1Cb3R0b20gPiBjb250YWluZXJWaXNpYmxlQm90dG9tKSB7XG4gICAgICAgICAgc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IGl0ZW1Cb3R0b20gLSBzY3JvbGxDb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi50YWInLCBbJyRldmVudCddKVxuICBfb25UYWIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgX29uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIF9vbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgX29uUG9wb3ZlcldpbGxIaWRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnKVxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgX29uQmx1cihldmVudD86IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgaWYgKCF0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNwYWNlJywgWyckZXZlbnQnXSlcbiAgX29uU3BhY2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBfb25FbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3d1cCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2xlZnQnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCddKVxuICBfb25BcnJvd0tleXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIC8vIE1pcnJvciBkZWZhdWx0IEhUTUw1IHNlbGVjdCBiZWhhdmlvdXIgLSBwcmV2ZW50IGxlZnQvcmlnaHQgYXJyb3dzIHdoZW4gb3BlbjpcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5rZXlib2FyZEhhbmRsZXJTZXJ2aWNlLmhhbmRsZShldmVudCwgdGhpcy5pdGVtcywgdGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICBpZiAobmV3SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RJdGVtKG5ld0luZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5ob21lJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbmQnLCBbJyRldmVudCddKVxuICBfb25Ib21lRW5kS2V5cyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLmtleWJvYXJkSGFuZGxlclNlcnZpY2UuaGFuZGxlKGV2ZW50LCB0aGlzLml0ZW1zLCB0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgIGlmIChuZXdJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0obmV3SW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBsZXQgdW5saXN0ZW46ICgpID0+IHZvaWQ7XG4gICAgd2hpbGUgKCh1bmxpc3RlbiA9IHRoaXMuaXRlbUNsaWNrVW5saXN0ZW4ucG9wKCkpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHVubGlzdGVuKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAga2lyYnktYnV0dG9uXG4gIFtzaXplXT1cInNpemVcIlxuICBbYXR0ZW50aW9uTGV2ZWxdPVwiaXNPcGVuID8gYXR0ZW50aW9uTGV2ZWxPcGVuIDogYXR0ZW50aW9uTGV2ZWxcIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlKCRldmVudClcIlxuICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IHNlbGVjdGVkVGV4dCB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgPGtpcmJ5LWljb24gW25hbWVdPVwiaXNPcGVuID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJ1wiPjwva2lyYnktaWNvbj5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlUG9wb3ZlciA/IHBvcG92ZXJUZW1wbGF0ZSA6IGl0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gIDxraXJieS1wb3BvdmVyIFt0YXJnZXRdPVwiYnV0dG9uRWxlbWVudFwiIFtwb3BvdXRdPVwicG9wb3V0XCIgKHdpbGxIaWRlKT1cIl9vblBvcG92ZXJXaWxsSGlkZSgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9raXJieS1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtV3JhcHBlclRlbXBsYXRlPlxuICA8a2lyYnktY2FyZD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgaXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIHNlbGVjdGVkOiBpID09PSBzZWxlY3RlZEluZGV4LCBpbmRleDogaSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwva2lyYnktY2FyZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1pbmRleD1cImluZGV4XCI+XG4gIDxraXJieS1pdGVtIFtzZWxlY3RhYmxlXT1cInRydWVcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIiAoY2xpY2spPVwib25JdGVtU2VsZWN0KGluZGV4KVwiIHJvbGU9XCJvcHRpb25cIj5cbiAgICA8IS0tIFRhYmluZGV4IGZpeGVzIGlzc3VlIHdpdGggcG9wb3ZlciBkcm9wZG93biBub3Qgd29ya2luZyBpbiBzYWZhcmkgLS0+XG4gICAgPGgzIHRhYmluZGV4PVwiMFwiPnt7IGdldFRleHRGcm9tSXRlbShpdGVtKSB9fTwvaDM+XG4gICAgPGtpcmJ5LWljb24gKm5nSWY9XCJzZWxlY3RlZFwiIG5hbWU9XCJjaGVja21hcmstc2VsZWN0ZWRcIiBzbG90PVwiZW5kXCI+PC9raXJieS1pY29uPlxuICA8L2tpcmJ5LWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -34,10 +34,12 @@ export class KeyboardHandlerService {
|
|
|
34
34
|
return newIndex;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
/** @nocollapse */ KeyboardHandlerService.ɵ
|
|
38
|
-
KeyboardHandlerService
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
/** @nocollapse */ KeyboardHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyboardHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
/** @nocollapse */ KeyboardHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyboardHandlerService, providedIn: 'root' });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyboardHandlerService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{
|
|
42
|
+
providedIn: 'root',
|
|
43
|
+
}]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duL2tleWJvYXJkLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxLQUFvQixFQUFFLEtBQXVCLEVBQUUsYUFBcUI7UUFDekUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2pCLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxXQUFXO2dCQUNkLHdCQUF3QjtnQkFDeEIsUUFBUSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO29CQUMvQixvQ0FBb0M7b0JBQ3BDLFFBQVEsR0FBRyxDQUFDLENBQUM7aUJBQ2Q7cUJBQU0sSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzNDLG9CQUFvQjtvQkFDcEIsUUFBUSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7aUJBQzlCO2dCQUNELE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QscUJBQXFCO2dCQUNyQixRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1Isb0JBQW9CO2dCQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzt1SUEvQlUsc0JBQXNCOzJJQUF0QixzQkFBc0IsY0FGckIsTUFBTTs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB7XG4gIGhhbmRsZShldmVudDogS2V5Ym9hcmRFdmVudCwgaXRlbXM6IGFueVtdIHwgc3RyaW5nW10sIHNlbGVjdGVkSW5kZXg6IG51bWJlcikge1xuICAgIGxldCBuZXdJbmRleCA9IC0xO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIC8vIFNlbGVjdCBwcmV2aW91cyBpdGVtOlxuICAgICAgICBuZXdJbmRleCA9IHNlbGVjdGVkSW5kZXggLSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIE5vbmUgc2VsZWN0ZWQsIHNlbGVjdCBmaXJzdCBpdGVtOlxuICAgICAgICAgIG5ld0luZGV4ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZEluZGV4IDwgaXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIFNlbGVjdCBuZXh0IGl0ZW06XG4gICAgICAgICAgbmV3SW5kZXggPSBzZWxlY3RlZEluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAvLyBTZWxlY3QgZmlyc3QgaXRlbTpcbiAgICAgICAgbmV3SW5kZXggPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIC8vIFNlbGVjdCBsYXN0IGl0ZW06XG4gICAgICAgIG5ld0luZGV4ID0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG5ld0luZGV4O1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Component, ContentChildren, Input, QueryList } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList, } from '@angular/core';
|
|
2
2
|
import { ButtonComponent } from '../button/button.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../icon/icon.component";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
3
6
|
export class EmptyStateComponent {
|
|
4
7
|
ngAfterContentInit() {
|
|
5
8
|
this.enforceAttentionLevelRules();
|
|
@@ -23,18 +26,26 @@ export class EmptyStateComponent {
|
|
|
23
26
|
});
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
|
-
EmptyStateComponent
|
|
27
|
-
{ type:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
/** @nocollapse */ EmptyStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
/** @nocollapse */ EmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", customIconName: "customIconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName || customIconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" [customName]=\"customIconName\" size=\"lg\"></kirby-icon>\n </div>\n <h3 *ngIf=\"title\" class=\"title\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}h3.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}\n"], components: [{ type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EmptyStateComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'kirby-empty-state',
|
|
35
|
+
templateUrl: './empty-state.component.html',
|
|
36
|
+
styleUrls: ['./empty-state.component.scss'],
|
|
37
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38
|
+
}]
|
|
39
|
+
}], propDecorators: { iconName: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], customIconName: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], title: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], subtitle: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], slottedButtons: [{
|
|
48
|
+
type: ContentChildren,
|
|
49
|
+
args: [ButtonComponent]
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFRN0QsTUFBTSxPQUFPLG1CQUFtQjtJQVM5QixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEM7dUVBQytEO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsaUJBQWlCO2dCQUFFLE9BQU87WUFFcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDN0IsTUFBTSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O29JQS9CVSxtQkFBbUI7d0hBQW5CLG1CQUFtQixrTUFNYixlQUFlLDZCQ3ZCbEMsa1lBVUE7NEZET2EsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBRVUsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdFLGNBQWM7c0JBRHJCLGVBQWU7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktZW1wdHktc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoKSBpY29uTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21JY29uTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQnV0dG9uQ29tcG9uZW50KVxuICBwcml2YXRlIHNsb3R0ZWRCdXR0b25zOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5lbmZvcmNlQXR0ZW50aW9uTGV2ZWxSdWxlcygpO1xuXG4gICAgLyogc2V0VGltZW91dCBwcmV2ZW50cyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIHdoZW4gY2hhbmdpbmcgYXR0ZW50aW9uIFxuICAgIGxldmVscyBvZiBzbG90dGVkIGJ1dHRvbnMgaW4gdGhpcy5lbmZvcmNlQXR0ZW50aW9uTGV2ZWxSdWxlcyAqL1xuICAgIHRoaXMuc2xvdHRlZEJ1dHRvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEVuZm9yY2VzIHRoYXQgYWxsIHNsb3R0ZWQgYnV0dG9ucyB3aWxsIGhhdmUgdGhlaXIgYXR0ZW50aW9uXG4gICAqIGxldmVsIHNldCB0byAzLCBleGNlcHQgdGhlIGZpcnN0IGJ1dHRvbiBpZiBpdCBoYXNcbiAgICogbGV2ZWwgMS5cbiAgICovXG4gIHByaXZhdGUgZW5mb3JjZUF0dGVudGlvbkxldmVsUnVsZXMoKSB7XG4gICAgdGhpcy5zbG90dGVkQnV0dG9ucy5mb3JFYWNoKChidXR0b24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IDAgJiYgYnV0dG9uLmlzQXR0ZW50aW9uTGV2ZWwxKSByZXR1cm47XG5cbiAgICAgIGlmICghYnV0dG9uLmlzQXR0ZW50aW9uTGV2ZWwzKSB7XG4gICAgICAgIGJ1dHRvbi5hdHRlbnRpb25MZXZlbCA9ICczJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGFydGljbGU+XG4gIDxkaXYgKm5nSWY9XCJpY29uTmFtZSB8fCBjdXN0b21JY29uTmFtZVwiIGNsYXNzPVwiaWNvbi1vdXRsaW5lXCI+XG4gICAgPGtpcmJ5LWljb24gW25hbWVdPVwiaWNvbk5hbWVcIiBbY3VzdG9tTmFtZV09XCJjdXN0b21JY29uTmFtZVwiIHNpemU9XCJsZ1wiPjwva2lyYnktaWNvbj5cbiAgPC9kaXY+XG4gIDxoMyAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgPHAgKm5nSWY9XCJzdWJ0aXRsZVwiIGNsYXNzPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvcD5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9hcnRpY2xlPlxuIl19
|