ngx-bootstrap 5.3.2 → 5.6.1
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/CHANGELOG.md +148 -99
- package/README.md +14 -10
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js +71 -2
- package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -1
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +1 -1
- package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -1
- package/accordion/fesm2015/ngx-bootstrap-accordion.js +79 -0
- package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -1
- package/accordion/fesm5/ngx-bootstrap-accordion.js +80 -1
- package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -1
- package/accordion/package.json +2 -2
- package/alert/bundles/ngx-bootstrap-alert.umd.js +224 -2
- package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -1
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js +15 -1
- package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -1
- package/alert/fesm2015/ngx-bootstrap-alert.js +71 -0
- package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -1
- package/alert/fesm5/ngx-bootstrap-alert.js +72 -1
- package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -1
- package/alert/package.json +2 -2
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js +208 -85
- package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +1 -1
- package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -1
- package/buttons/button-radio-group.directive.d.ts +4 -1
- package/buttons/esm2015/button-radio-group.directive.js +26 -2
- package/buttons/esm5/button-radio-group.directive.js +30 -2
- package/buttons/fesm2015/ngx-bootstrap-buttons.js +194 -65
- package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -1
- package/buttons/fesm5/ngx-bootstrap-buttons.js +216 -83
- package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -1
- package/buttons/ngx-bootstrap-buttons.metadata.json +1 -1
- package/buttons/package.json +2 -2
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js +295 -4
- package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -1
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +15 -1
- package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -1
- package/carousel/carousel.component.d.ts +2 -0
- package/carousel/esm2015/carousel.component.js +15 -2
- package/carousel/esm2015/slide.component.js +21 -2
- package/carousel/esm5/carousel.component.js +15 -2
- package/carousel/esm5/slide.component.js +6 -2
- package/carousel/fesm2015/ngx-bootstrap-carousel.js +169 -2
- package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -1
- package/carousel/fesm5/ngx-bootstrap-carousel.js +156 -4
- package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -1
- package/carousel/ngx-bootstrap-carousel.metadata.json +1 -1
- package/carousel/package.json +2 -2
- package/carousel/slide.component.d.ts +1 -0
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +11172 -10061
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
- package/chronos/esm2015/format/format.js +1 -1
- package/chronos/esm2015/i18n/ka.js +108 -0
- package/chronos/esm2015/i18n/kk.js +89 -0
- package/chronos/esm2015/i18n/sq.js +62 -0
- package/chronos/esm2015/i18n/th-be.js +85 -0
- package/chronos/esm2015/index.js +2 -2
- package/chronos/esm2015/locale/locale.class.js +16 -2
- package/chronos/esm2015/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm2015/public_api.js +5 -1
- package/chronos/esm2015/units/year.js +4 -1
- package/chronos/esm5/format/format.js +1 -1
- package/chronos/esm5/i18n/ka.js +108 -0
- package/chronos/esm5/i18n/kk.js +89 -0
- package/chronos/esm5/i18n/sq.js +62 -0
- package/chronos/esm5/i18n/th-be.js +86 -0
- package/chronos/esm5/index.js +2 -2
- package/chronos/esm5/locale/locale.class.js +22 -2
- package/chronos/esm5/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm5/public_api.js +5 -1
- package/chronos/esm5/units/year.js +4 -1
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +1117 -13
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/fesm5/ngx-bootstrap-chronos.js +1130 -13
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/i18n/ka.d.ts +2 -0
- package/chronos/i18n/kk.d.ts +2 -0
- package/chronos/i18n/sq.d.ts +2 -0
- package/chronos/i18n/th-be.d.ts +2 -0
- package/chronos/locale/locale.class.d.ts +2 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -1
- package/chronos/package.json +2 -2
- package/chronos/public_api.d.ts +4 -0
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js +100 -2
- package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +1 -1
- package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -1
- package/collapse/collapse.directive.d.ts +1 -0
- package/collapse/esm2015/collapse.directive.js +14 -1
- package/collapse/esm5/collapse.directive.js +14 -1
- package/collapse/fesm2015/ngx-bootstrap-collapse.js +108 -0
- package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -1
- package/collapse/fesm5/ngx-bootstrap-collapse.js +109 -1
- package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -1
- package/collapse/ngx-bootstrap-collapse.metadata.json +1 -1
- package/collapse/package.json +2 -2
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +169 -2
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +177 -0
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +178 -1
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/package.json +2 -2
- package/datepicker/base/bs-datepicker-container.d.ts +2 -1
- package/datepicker/bs-datepicker-inline.component.d.ts +4 -0
- package/datepicker/bs-datepicker-input.directive.d.ts +1 -0
- package/datepicker/bs-datepicker.component.d.ts +12 -3
- package/datepicker/bs-datepicker.config.d.ts +31 -1
- package/datepicker/bs-datepicker.css +19 -1
- package/datepicker/bs-datepicker.css.map +3 -3
- package/datepicker/bs-datepicker.scss +0 -1
- package/datepicker/bs-daterangepicker-inline.component.d.ts +8 -0
- package/datepicker/bs-daterangepicker-input.directive.d.ts +1 -0
- package/datepicker/bs-daterangepicker.component.d.ts +16 -3
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +2100 -99
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +15 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +1 -0
- package/datepicker/esm2015/base/bs-datepicker-container.js +10 -3
- package/datepicker/esm2015/bs-datepicker-inline.component.js +25 -9
- package/datepicker/esm2015/bs-datepicker-input.directive.js +19 -1
- package/datepicker/esm2015/bs-datepicker.component.js +55 -8
- package/datepicker/esm2015/bs-datepicker.config.js +42 -3
- package/datepicker/esm2015/bs-datepicker.module.js +23 -16
- package/datepicker/esm2015/bs-daterangepicker-inline.component.js +37 -7
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +34 -3
- package/datepicker/esm2015/bs-daterangepicker.component.js +66 -9
- package/datepicker/esm2015/engine/flag-days-calendar.js +6 -3
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +14 -1
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +15 -11
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +28 -6
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +7 -1
- package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +46 -8
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +5 -2
- package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +2 -2
- package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +8 -7
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +21 -3
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +22 -8
- package/datepicker/esm2015/utils/bs-calendar-utils.js +18 -3
- package/datepicker/esm5/base/bs-datepicker-container.js +14 -3
- package/datepicker/esm5/bs-datepicker-inline.component.js +25 -9
- package/datepicker/esm5/bs-datepicker-input.directive.js +23 -1
- package/datepicker/esm5/bs-datepicker.component.js +59 -8
- package/datepicker/esm5/bs-datepicker.config.js +42 -3
- package/datepicker/esm5/bs-datepicker.module.js +26 -19
- package/datepicker/esm5/bs-daterangepicker-inline.component.js +37 -7
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +38 -3
- package/datepicker/esm5/bs-daterangepicker.component.js +70 -9
- package/datepicker/esm5/engine/flag-days-calendar.js +6 -3
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +18 -1
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +21 -17
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +28 -6
- package/datepicker/esm5/reducer/bs-datepicker.state.js +7 -1
- package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +39 -7
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +5 -2
- package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +25 -3
- package/datepicker/esm5/themes/bs/bs-daterangepicker-inline-container.component.js +2 -2
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +22 -8
- package/datepicker/esm5/utils/bs-calendar-utils.js +18 -3
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +1953 -91
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +1985 -98
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
- package/datepicker/package.json +2 -2
- package/datepicker/reducer/bs-datepicker.actions.d.ts +2 -0
- package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
- package/datepicker/reducer/bs-datepicker.state.d.ts +3 -0
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +6 -1
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +3 -0
- package/datepicker/utils/bs-calendar-utils.d.ts +1 -0
- package/datepicker/utils/scss/mixins.css.map +1 -1
- package/datepicker/utils/scss/mixins.scss +9 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +387 -3
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +15 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
- package/dropdown/esm2015/bs-dropdown-container.component.js +2 -2
- package/dropdown/esm5/bs-dropdown-container.component.js +2 -2
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +234 -1
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +234 -1
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
- package/dropdown/package.json +2 -2
- package/locale/bundles/ngx-bootstrap-locale.umd.js +36 -2
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -1
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +1 -1
- package/locale/esm2015/ngx-bootstrap-locale.js +2 -2
- package/locale/esm2015/public_api.js +5 -1
- package/locale/esm5/ngx-bootstrap-locale.js +2 -2
- package/locale/esm5/public_api.js +5 -1
- package/locale/fesm2015/ngx-bootstrap-locale.js +11 -1
- package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -1
- package/locale/fesm5/ngx-bootstrap-locale.js +11 -1
- package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -1
- package/locale/ngx-bootstrap-locale.metadata.json +1 -1
- package/locale/package.json +2 -2
- package/locale/public_api.d.ts +4 -0
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +187 -2
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -1
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +15 -1
- package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -1
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +32 -0
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -1
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +32 -0
- package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -1
- package/mini-ngrx/package.json +2 -2
- package/modal/bs-modal.service.d.ts +1 -2
- package/modal/bundles/ngx-bootstrap-modal.umd.js +558 -16
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +15 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
- package/modal/esm2015/bs-modal.service.js +13 -4
- package/modal/esm2015/modal-container.component.js +24 -5
- package/modal/esm2015/modal-options.class.js +16 -1
- package/modal/esm2015/modal.directive.js +21 -4
- package/modal/esm2015/modal.module.js +10 -1
- package/modal/esm5/bs-modal.service.js +28 -8
- package/modal/esm5/modal-container.component.js +28 -5
- package/modal/esm5/modal-options.class.js +16 -1
- package/modal/esm5/modal.directive.js +25 -4
- package/modal/esm5/modal.module.js +13 -1
- package/modal/fesm2015/ngx-bootstrap-modal.js +354 -10
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
- package/modal/fesm5/ngx-bootstrap-modal.js +381 -15
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
- package/modal/modal-container.component.d.ts +3 -1
- package/modal/modal-options.class.d.ts +13 -0
- package/modal/modal.directive.d.ts +3 -1
- package/modal/modal.module.d.ts +1 -0
- package/modal/ngx-bootstrap-modal.metadata.json +1 -1
- package/modal/package.json +2 -2
- package/package.json +2 -2
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js +276 -4
- package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -1
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +1 -1
- package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -1
- package/pagination/esm2015/models/index.js +49 -4
- package/pagination/esm2015/pager.component.js +2 -2
- package/pagination/esm2015/pagination.component.js +33 -3
- package/pagination/esm2015/public_api.js +1 -1
- package/pagination/esm5/models/index.js +49 -4
- package/pagination/esm5/pager.component.js +2 -2
- package/pagination/esm5/pagination.component.js +33 -3
- package/pagination/esm5/public_api.js +1 -1
- package/pagination/fesm2015/ngx-bootstrap-pagination.js +284 -2
- package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -1
- package/pagination/fesm5/ngx-bootstrap-pagination.js +285 -3
- package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -1
- package/pagination/models/index.d.ts +28 -0
- package/pagination/ngx-bootstrap-pagination.metadata.json +1 -1
- package/pagination/package.json +2 -2
- package/pagination/pagination.component.d.ts +12 -2
- package/pagination/public_api.d.ts +1 -0
- package/popover/bundles/ngx-bootstrap-popover.umd.js +215 -20
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
- package/popover/esm2015/popover.config.js +10 -1
- package/popover/esm2015/popover.directive.js +97 -16
- package/popover/esm5/popover.config.js +10 -1
- package/popover/esm5/popover.directive.js +98 -16
- package/popover/fesm2015/ngx-bootstrap-popover.js +221 -16
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
- package/popover/fesm5/ngx-bootstrap-popover.js +222 -16
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
- package/popover/ngx-bootstrap-popover.metadata.json +1 -1
- package/popover/package.json +2 -2
- package/popover/popover.config.d.ts +2 -0
- package/popover/popover.directive.d.ts +9 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +286 -13
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +15 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
- package/positioning/esm2015/modifiers/arrow.js +19 -5
- package/positioning/esm2015/modifiers/initData.js +12 -2
- package/positioning/esm2015/modifiers/shift.js +6 -4
- package/positioning/esm5/modifiers/arrow.js +19 -5
- package/positioning/esm5/modifiers/initData.js +12 -2
- package/positioning/esm5/modifiers/shift.js +8 -6
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +128 -8
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/fesm5/ngx-bootstrap-positioning.js +132 -10
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/package.json +2 -2
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +77 -2
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -1
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +1 -1
- package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -1
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +85 -0
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -1
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js +85 -0
- package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -1
- package/progressbar/package.json +2 -2
- package/rating/bundles/ngx-bootstrap-rating.umd.js +92 -7
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
- package/rating/esm2015/ngx-bootstrap-rating.js +2 -2
- package/rating/esm2015/public_api.js +2 -1
- package/rating/esm2015/rating.component.js +14 -5
- package/rating/esm2015/rating.config.js +27 -0
- package/rating/esm2015/rating.module.js +3 -2
- package/rating/esm5/ngx-bootstrap-rating.js +2 -2
- package/rating/esm5/public_api.js +2 -1
- package/rating/esm5/rating.component.js +13 -5
- package/rating/esm5/rating.config.js +29 -0
- package/rating/esm5/rating.module.js +3 -2
- package/rating/fesm2015/ngx-bootstrap-rating.js +101 -7
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
- package/rating/fesm5/ngx-bootstrap-rating.js +101 -7
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
- package/rating/ngx-bootstrap-rating.metadata.json +1 -1
- package/rating/package.json +2 -2
- package/rating/public_api.d.ts +1 -0
- package/rating/rating.component.d.ts +4 -1
- package/rating/rating.config.d.ts +5 -0
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js +254 -2
- package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -1
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +15 -1
- package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -1
- package/sortable/fesm2015/ngx-bootstrap-sortable.js +113 -0
- package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -1
- package/sortable/fesm5/ngx-bootstrap-sortable.js +114 -1
- package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -1
- package/sortable/package.json +2 -2
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js +153 -4
- package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +1 -1
- package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -1
- package/tabs/esm2015/tab.directive.js +13 -2
- package/tabs/esm2015/tabset.component.js +7 -2
- package/tabs/esm2015/tabset.config.js +10 -1
- package/tabs/esm5/tab.directive.js +17 -2
- package/tabs/esm5/tabset.component.js +7 -2
- package/tabs/esm5/tabset.config.js +10 -1
- package/tabs/fesm2015/ngx-bootstrap-tabs.js +157 -2
- package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -1
- package/tabs/fesm5/ngx-bootstrap-tabs.js +162 -3
- package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -1
- package/tabs/ngx-bootstrap-tabs.metadata.json +1 -1
- package/tabs/package.json +2 -2
- package/tabs/tab.directive.d.ts +2 -0
- package/tabs/tabset.component.d.ts +2 -0
- package/tabs/tabset.config.d.ts +2 -0
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +464 -8
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +15 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
- package/timepicker/esm2015/timepicker.component.js +8 -2
- package/timepicker/esm2015/timepicker.config.js +28 -1
- package/timepicker/esm2015/timepicker.utils.js +9 -6
- package/timepicker/esm5/timepicker.component.js +8 -2
- package/timepicker/esm5/timepicker.config.js +28 -1
- package/timepicker/esm5/timepicker.utils.js +9 -6
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +311 -6
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +315 -7
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
- package/timepicker/package.json +2 -2
- package/timepicker/timepicker.component.d.ts +3 -0
- package/timepicker/timepicker.config.d.ts +6 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +356 -8
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +15 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
- package/tooltip/esm2015/tooltip.directive.js +48 -10
- package/tooltip/esm5/tooltip.directive.js +51 -10
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +201 -7
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +204 -7
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
- package/tooltip/package.json +2 -2
- package/tooltip/tooltip.directive.d.ts +3 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +748 -69
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +15 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
- package/typeahead/esm2015/models/index.js +87 -0
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm2015/public_api.js +2 -1
- package/typeahead/esm2015/typeahead-container.component.js +82 -37
- package/typeahead/esm2015/typeahead-order.class.js +19 -0
- package/typeahead/esm2015/typeahead.config.js +10 -1
- package/typeahead/esm2015/typeahead.directive.js +133 -30
- package/typeahead/esm5/models/index.js +87 -0
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm5/public_api.js +2 -1
- package/typeahead/esm5/typeahead-container.component.js +92 -37
- package/typeahead/esm5/typeahead-order.class.js +23 -0
- package/typeahead/esm5/typeahead.config.js +10 -1
- package/typeahead/esm5/typeahead.directive.js +140 -36
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +574 -61
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +594 -67
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/models/index.d.ts +41 -0
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
- package/typeahead/package.json +2 -2
- package/typeahead/public_api.d.ts +2 -0
- package/typeahead/typeahead-container.component.d.ts +15 -7
- package/typeahead/typeahead-order.class.d.ts +6 -0
- package/typeahead/typeahead.config.d.ts +2 -0
- package/typeahead/typeahead.directive.d.ts +28 -10
- package/utils/bundles/ngx-bootstrap-utils.umd.js +54 -2
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +2 -2
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
- package/utils/fesm2015/ngx-bootstrap-utils.js +62 -0
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
- package/utils/fesm5/ngx-bootstrap-utils.js +62 -0
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
- package/utils/package.json +2 -2
- package/bundles/ngx-bootstrap.umd.js +0 -1037
- package/bundles/ngx-bootstrap.umd.js.map +0 -1
- package/bundles/ngx-bootstrap.umd.min.js +0 -2
- package/bundles/ngx-bootstrap.umd.min.js.map +0 -1
- package/esm2015/ngx-bootstrap.js +0 -9
- package/esm2015/public_api.js +0 -30
- package/esm5/ngx-bootstrap.js +0 -9
- package/esm5/public_api.js +0 -30
- package/fesm2015/ngx-bootstrap.js +0 -24
- package/fesm2015/ngx-bootstrap.js.map +0 -1
- package/fesm5/ngx-bootstrap.js +0 -24
- package/fesm5/ngx-bootstrap.js.map +0 -1
- package/ngx-bootstrap.d.ts +0 -4
- package/ngx-bootstrap.metadata.json +0 -1
- package/public_api.d.ts +0 -25
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ngx-bootstrap-datepicker.js","sources":["ng://ngx-bootstrap/datepicker/bs-datepicker.config.ts","ng://ngx-bootstrap/datepicker/base/bs-datepicker-container.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.actions.ts","ng://ngx-bootstrap/datepicker/bs-locale.service.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.effects.ts","ng://ngx-bootstrap/datepicker/reducer/_defaults.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.state.ts","ng://ngx-bootstrap/datepicker/utils/bs-calendar-utils.ts","ng://ngx-bootstrap/datepicker/utils/matrix-utils.ts","ng://ngx-bootstrap/datepicker/engine/calc-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/view-mode.ts","ng://ngx-bootstrap/datepicker/engine/format-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-years-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.reducer.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.store.ts","ng://ngx-bootstrap/datepicker/datepicker-animations.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-container.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.config.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-calendar-layout.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-current-date-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-custom-dates-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","ng://ngx-bootstrap/datepicker/models/index.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-days-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-months-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-timepicker-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-years-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.module.ts","ng://ngx-bootstrap/datepicker/date-formatter.ts","ng://ngx-bootstrap/datepicker/datepicker-inner.component.ts","ng://ngx-bootstrap/datepicker/datepicker.config.ts","ng://ngx-bootstrap/datepicker/datepicker.component.ts","ng://ngx-bootstrap/datepicker/daypicker.component.ts","ng://ngx-bootstrap/datepicker/monthpicker.component.ts","ng://ngx-bootstrap/datepicker/yearpicker.component.ts","ng://ngx-bootstrap/datepicker/datepicker.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n DatepickerRenderOptions,\n BsDatepickerViewMode,\n DatepickerDateCustomClasses\n} from './models';\n\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable()\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** sets use UTC date time format */\n useUtc = false;\n /** turn on/off animation */\n isAnimated = false;\n value?: Date | Date[];\n isDisabled?: boolean;\n /**\n * Default min date for all date/range pickers\n */\n minDate?: Date;\n /**\n * Default max date for all date/range pickers\n */\n maxDate?: Date;\n /**\n * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatepickerDateCustomClasses[];\n\n daysDisabled?: number[];\n\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Makes dates from other months active\n */\n selectWeek?: boolean;\n\n /**\n * Add class to current day\n */\n customTodayClass?: string;\n\n /**\n * Default mode for all date pickers\n */\n minMode?: BsDatepickerViewMode;\n\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n containerClass = 'theme-green';\n\n // DatepickerRenderOptions\n displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n showWeekNumbers = true;\n\n dateInputFormat = 'L';\n // range picker\n rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n rangeInputFormat = 'L';\n\n // DatepickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n}\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n\n _effects: BsDatepickerEffects;\n _customRangesFish: BsCustomDates[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatepickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n setViewMode(event: BsDatepickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n /* tslint:disable-next-line: no-any */\n _stopPropagation(event: any): void {\n event.stopPropagation();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from 'ngx-bootstrap/chronos';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n BsDatepickerViewMode,\n BsViewNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses\n} from '../models';\n\n@Injectable()\nexport class BsDatepickerActions {\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\n static readonly FORMAT = '[datepicker] format datepicker values';\n static readonly FLAG = '[datepicker] set flags';\n static readonly SELECT = '[datepicker] select date';\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n static readonly NAVIGATE_TO = '[datepicker] change view date';\n static readonly SET_OPTIONS = '[datepicker] update render options';\n static readonly HOVER = '[datepicker] hover date';\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n static readonly SET_MIN_DATE = '[datepicker] set min date';\n static readonly SET_MAX_DATE = '[datepicker] set max date';\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n calculate(): Action {\n return { type: BsDatepickerActions.CALCULATE };\n }\n\n format(): Action {\n return { type: BsDatepickerActions.FORMAT };\n }\n\n flag(): Action {\n return { type: BsDatepickerActions.FLAG };\n }\n\n select(date: Date): Action {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n\n changeViewMode(event: BsDatepickerViewMode): Action {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n\n navigateStep(step: TimeUnit): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n\n setOptions(options: DatepickerRenderOptions): Action {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n\n // date range picker\n selectRange(value: Date[]): Action {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n\n minDate(date: Date): Action {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n\n maxDate(date: Date): Action {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n\n daysDisabled(days: number[]): Action {\n return {\n type: BsDatepickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n\n datesDisabled(dates: Date[]): Action {\n return {\n type: BsDatepickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n\n isDisabled(value: boolean): Action {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n\n setDateCustomClasses(value: DatepickerDateCustomClasses[]): Action {\n return {\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n\n setLocale(locale: string): Action {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class BsLocaleService {\n private _defaultLocale = 'en';\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\n private _localeChange: Observable<string> = this._locale.asObservable();\n\n get locale(): BehaviorSubject<string> {\n return this._locale;\n }\n\n get localeChange(): Observable<string> {\n return this._localeChange;\n }\n\n get currentLocale(): string {\n return this._locale.getValue();\n }\n\n use(locale: string): void {\n if (locale === this.currentLocale) {\n return;\n }\n\n this._locale.next(locale);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsDatepickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\n\n\n@Injectable()\nexport class BsDatepickerEffects {\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n private _store: BsDatepickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: BsDatepickerActions,\n private _localeService: BsLocaleService) {}\n\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n this._store = _bsDatepickerStore;\n\n return this;\n }\n\n /** setters */\n\n setValue(value: Date): void {\n this._store.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value: Date[]): void {\n this._store.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value: Date): BsDatepickerEffects {\n this._store.dispatch(this._actions.minDate(value));\n\n return this;\n }\n\n setMaxDate(value: Date): BsDatepickerEffects {\n this._store.dispatch(this._actions.maxDate(value));\n\n return this;\n }\n\n setDaysDisabled(value: number[]) {\n this._store.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value: Date[]) {\n this._store.dispatch(this._actions.datesDisabled(value));\n\n return this;\n }\n\n setDisabled(value: boolean): BsDatepickerEffects {\n this._store.dispatch(this._actions.isDisabled(value));\n\n return this;\n }\n\n setDateCustomClasses(value: DatepickerDateCustomClasses[]): BsDatepickerEffects {\n this._store.dispatch(this._actions.setDateCustomClasses(value));\n\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n const _options = Object.assign({locale: this._localeService.currentLocale}, _config);\n this._store.dispatch(this._actions.setOptions(_options));\n\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\n );\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.setViewMode = (event: BsDatepickerViewMode): void => {\n this._store.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.monthSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(event.date),\n year: getFullYear(event.date)\n },\n viewMode: 'day'\n })\n );\n };\n\n container.yearSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(event.date)\n },\n viewMode: 'month'\n })\n );\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\n this._store.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(\n filter(monthModel => !!monthModel)\n )\n .subscribe(month => this._store.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(\n filter(month => !!month)\n )\n .subscribe(month => this._store.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(\n filter(selectedDate => !!selectedDate)\n )\n .subscribe(selectedDate => this._store.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(\n filter(selectedRange => !!selectedRange)\n )\n .subscribe(selectedRange => this._store.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(\n filter(state => !!state)\n )\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(\n filter(hoveredDate => !!hoveredDate)\n )\n .subscribe(hoveredDate => this._store.dispatch(this._actions.flag()))\n );\n\n // date custom classes\n this._subs.push(\n this._store\n .select(state => state.dateCustomClasses)\n .pipe(\n filter(dateCustomClasses => !!dateCustomClasses)\n )\n .subscribe(dateCustomClasses => this._store.dispatch(this._actions.flag()))\n );\n\n // on locale change\n this._subs.push(\n this._localeService.localeChange\n .subscribe(locale => this._store.dispatch(this._actions.setLocale(locale)))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n","import {\n BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n date: Date;\n mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState\n implements DatepickerRenderOptions, DatepickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view: BsDatepickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n daysDisabled?: number[];\n datesDisabled?: Date[];\n minMode?: BsDatepickerViewMode;\n dateCustomClasses?: DatepickerDateCustomClasses[];\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n selectFromOtherMonth?: boolean;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions: MonthViewOptions;\n\n // DatepickerRenderOptions\n showWeekNumbers?: boolean;\n displayMonths?: number;\n\n // DatepickerFormatOptions\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nconst _initialView: BsDatepickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n new BsDatepickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date,\n options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset: number): number {\n if (startingDayOffset === 0) {\n return weekday;\n }\n\n const offset = weekday - startingDayOffset % 7;\n\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isDisabledDate(date: Date, datesDisabled: Date[]): boolean {\n if (datesDisabled === undefined || !datesDisabled || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n","import { TimeUnit, shiftDate } from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n options: MatrixOptions,\n fn: CreateMatrixCb<T>\n): T[][] {\n let prevValue = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","// user and model input should handle parsing and validating input values\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n startingDate: Date,\n options: MonthViewOptions\n): DaysCalendarModel {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions = {\n width: options.width,\n height: options.height,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n return {\n daysMatrix,\n month: firstDay\n };\n}\n","import {\n DatepickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n formatOptions: DatepickerFormatOptions,\n monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(\n daysCalendar.month,\n formatOptions.monthTitle,\n formatOptions.locale\n ),\n yearTitle: formatDate(\n daysCalendar.month,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n weekNumbers: getWeekNumbers(\n daysCalendar.daysMatrix,\n formatOptions.weekNumbers,\n formatOptions.locale\n ),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n }))\n };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n format: string,\n locale: string): string[] {\n return daysMatrix.map(\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n );\n}\n\nexport function getShiftedWeekdays(locale: string): string[] {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort() as string[];\n const firstDayOfWeek = _locale.firstDayOfWeek();\n\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n DaysCalendarViewModel,\n DayViewModel,\n WeekViewModel,\n DatepickerDateCustomClasses\n} from '../models';\n\nimport {\n isAfter,\n isBefore,\n isDisabledDay,\n isSameDay,\n isSameMonth,\n shiftDate\n} from 'ngx-bootstrap/chronos';\n\nimport { isMonthDisabled, isDisabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n daysDisabled: number[];\n datesDisabled: Date[];\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatepickerDateCustomClasses[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n const isHovered =\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n\n const isSelected =\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n\n const isInRange =\n !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n const isDisabled =\n options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled);\n\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: -1 }),\n options.minDate,\n options.maxDate\n );\n formattedMonth.disableRightArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !selectedRange[0]) {\n return false;\n }\n\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n\n return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {\n DatepickerFormatOptions,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions\n): MonthsCalendarViewModel {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(\n viewDate,\n formatOptions.yearTitle,\n formatOptions.locale\n )\n };\n}\n","import { isSameMonth, shiftDate } from 'ngx-bootstrap/chronos';\nimport {\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n const isSelected = isSameMonth(month.date, options.selectedDate);\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n monthCalendar.disableRightArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return monthCalendar;\n}\n","import {\n DatepickerFormatOptions,\n YearsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions,\n previousInitialDate?: Date\n): YearsCalendarViewModel {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n yearsMatrix: CalendarCellViewModel[][],\n formatOptions: DatepickerFormatOptions\n): string {\n const from = formatDate(\n yearsMatrix[0][0].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n const to = formatDate(\n yearsMatrix[height - 1][width - 1].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n\n return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from 'ngx-bootstrap/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n const isSelected = isSameYear(year.date, options.selectedDate);\n\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n\n yearsCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return yearsCalendar;\n}\n","// tslint:disable:max-file-line-count\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n setFullDate,\n shiftDate,\n isArray,\n isDateValid,\n startOf,\n getLocale,\n isAfter,\n isBefore\n} from 'ngx-bootstrap/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatepickerFormatOptions, BsDatepickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\n\n\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function bsDatepickerReducer(state = initialDatepickerState,\n action: Action): BsDatepickerState {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state, action);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode: BsDatepickerViewMode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n } else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode)) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n\n case BsDatepickerActions.SELECT: {\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_OPTIONS: {\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n\n // provided value is not supported :)\n // need to report it somehow\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n // how many calendars\n const displayMonths = state.displayMonths;\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(\n viewDate,\n state.monthViewOptions\n );\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n\n return Object.assign({}, state, { monthsModel });\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state),\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n );\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction formatReducer(state: BsDatepickerState,\n action: Action): BsDatepickerState {\n if (state.view.mode === 'day') {\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n );\n\n return Object.assign({}, state, { formattedMonths });\n }\n\n // how many calendars\n const displayMonths = state.displayMonths;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction flagReducer(state: BsDatepickerState,\n action: Action): BsDatepickerState {\n if (state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map(\n (formattedMonth, monthIndex) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths: state.displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\n const flaggedMonthsCalendar = state.monthsCalendar.map(\n (formattedMonth, monthIndex) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n displayMonths: state.displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\n (formattedMonth, yearIndex) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n displayMonths: state.displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n\n weekNumbers: state.weekNumbers\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate: Date, maxDate: Date) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n\n return _date;\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\n\n@Injectable()\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState<BsDatepickerState>(\n initialDatepickerState,\n _dispatcher,\n bsDatepickerReducer\n );\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n\n set value(value: Date) {\n this._effects.setValue(value);\n }\n\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n animationState = 'void';\n\n _subs: Subscription[] = [];\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this._effects\n .init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Subscription } from 'rxjs';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges {\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDatepickerConfig>;\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n\n /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: BsDatepickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerContainerComponent>;\n\n constructor(public _config: BsDatepickerConfig,\n _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n /**\n * Opens an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({placement: this.placement});\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Closes an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /**\n * Toggles an elementâs datepicker. This is considered a âmanualâ triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { BsDatepickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-datepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDatepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDatepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\n });\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n /** turn on/off animation */\n isAnimated = false;\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\n\n\n@Component({\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n set value(value: Date[]) {\n this._effects.setRangeValue(value);\n }\n\n valueChange = new EventEmitter<Date[]>();\n animationState = 'void';\n\n _rangeStack: Date[] = [];\n _subs: Subscription[] = [];\n\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects\n .init(this._store)\n // intial state options\n // todo: fix this, split configs\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .subscribe(date => this.valueChange.emit(date))\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\nimport { BsDaterangepickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-daterangepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date[];\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDaterangepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\n });\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isDate,\n isDateValid,\n parseDate,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[bsDatepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class BsDatepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n\n constructor(@Host() private _picker: BsDatepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value: Date) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n _setInputValue(value: Date): void {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n /* tslint:disable-next-line: prefer-switch */\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Subscription } from 'rxjs';\nimport { ComponentLoaderFactory, ComponentLoader } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { filter } from 'rxjs/operators';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n})\nexport class BsDaterangepickerDirective\n implements OnInit, OnDestroy, OnChanges {\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n /**\n * Initial value of daterangepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for daterangepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerConfig>;\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerContainerComponent>;\n\n constructor(public _config: BsDaterangepickerConfig,\n _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n }\n\n ngOnInit(): void {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n /**\n * Opens an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({placement: this.placement});\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.bsConfig,\n {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled\n }\n );\n }\n\n /**\n * Closes an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n\n /**\n * Toggles an elementâs datepicker. This is considered a âmanualâ triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n parseDate,\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isArray,\n isDateValid,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[bsDaterangepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class BsDaterangepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n\n constructor(@Host() private _picker: BsDaterangepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value: Date[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n _setInputValue(date: Date[]): void {\n let range = '';\n if (date) {\n const start: string = !date[0] ? ''\n : formatDate(date[0],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n const end: string = !date[1] ? ''\n : formatDate(\n date[1],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: [Date, Date] = c.value;\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n\n if (!_isFirstDateValid) {\n return { bsDate: { invalid: _value[0] } };\n }\n\n if (!_isSecondDateValid) {\n return { bsDate: { invalid: _value[1] } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n let _input: (string[] | Date[]) = [];\n if (typeof value === 'string') {\n _input = value.split(this._picker._config.rangeSeparator);\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n\n this._value = (_input as string[])\n .map((_val: string): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : date));\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <bs-timepicker *ngIf=\"false\"></bs-timepicker>\n `\n})\nexport class BsCalendarLayoutComponent {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'bs-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n @Input() title: string;\n}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\n\nexport interface BsCustomDates {\n label: string;\n value: Date | Date[];\n}\n\n@Component({\n selector: 'bs-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\" type=\"button\">{{ range.label }}</button>\n <button *ngIf=\"isCustomRangeShown\" type=\"button\">Custom Range</button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() isCustomRangeShown: true;\n @Input() ranges: BsCustomDates[];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2\n} from '@angular/core';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day.label }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: BsDatepickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n if (this.day.isToday && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n\n if (typeof this.day.customClasses === 'string') {\n this.day.customClasses.split(' ')\n .filter((className: string) => className)\n .forEach((className: string) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow?: boolean;\n hideRightArrow?: boolean;\n disableLeftArrow?: boolean;\n disableRightArrow?: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonthHovered?: boolean;\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n customClasses?: string;\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n // additional information\n month: Date;\n weekNumbers: string[];\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nexport interface DatepickerRenderOptions {\n showWeekNumbers?: boolean;\n displayMonths?: number;\n}\n\nexport interface DatepickerDateCustomClasses {\n date: Date;\n classes: string[];\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(true)\">\n <span>‹</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n *ngIf=\"calendar.monthTitle\"\n type=\"button\"\n (click)=\"view('month')\">\n <span>{{ calendar.monthTitle }}</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\n <span>{{ calendar.yearTitle }}</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(false)\"><span>›</span>\n </button>\n `\n})\nexport class BsDatepickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n navTo(down: boolean): void {\n this.onNavigate.emit(\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n );\n }\n\n view(viewMode: BsDatepickerViewMode): void {\n this.onViewMode.emit(viewMode);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options.showWeekNumbers\">\n <span\n (click)=\"selectWeek(week)\"\n (mouseenter)=\"weekHoverHandler(week, true)\"\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n <span bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </bs-calendar-layout>\n `\n})\nexport class BsDaysCalendarViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n @Input() options: DatepickerRenderOptions;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n isWeekHovered: boolean;\n\n constructor(private _config: BsDatepickerConfig) { }\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n selectWeek(week: WeekViewModel): void {\n if (!this._config.selectWeek) {\n return;\n }\n\n if (week.days\n && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n\n this.onSelect.emit(week.days[0]);\n\n return;\n }\n\n if (week.days.length === 0) {\n return;\n }\n\n const selectedDay = week.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(selectedDay);\n }\n\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek) {\n return;\n }\n\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n\n this.onHover.emit({ cell, isHovered });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-month-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendar: MonthsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","// tslint:disable:max-line-length\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-timepicker',\n template: `\n <div class=\"bs-timepicker-container\">\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n})\nexport class BsTimepickerViewComponent {\n ampm = 'ok';\n hours = 0;\n minutes = 0;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-years-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar: YearsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { BsDaterangepickerInlineDirective } from './bs-daterangepicker-inline.component';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\nconst _exports = [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n\n ..._exports\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: _exports\n})\nexport class BsDatepickerModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerConfig,\n BsDaterangepickerConfig,\n BsDatepickerInlineConfig,\n BsDaterangepickerInlineConfig,\n BsDatepickerEffects,\n BsLocaleService\n ]\n };\n }\n}\n","import { formatDate } from 'ngx-bootstrap/chronos';\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return formatDate(date, format, locale);\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input() locale: string;\n @Input() datepickerMode: string;\n @Input() startingDay: number;\n @Input() yearRange: number;\n\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minMode: string;\n @Input() maxMode: string;\n @Input() showWeeks: boolean;\n @Input() formatDay: string;\n @Input() formatMonth: string;\n @Input() formatYear: string;\n @Input() formatDayHeader: string;\n @Input() formatDayTitle: string;\n @Input() formatMonthTitle: string;\n @Input() onlyCurrentMonth: boolean;\n @Input() shortcutPropagation: boolean;\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n @Input() monthColLimit: number;\n @Input() yearColLimit: number;\n @Input() dateDisabled: { date: Date; mode: string }[];\n @Input() dayDisabled: number[];\n @Input() initDate: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (\n previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()\n ) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hours === 23 ? hours + 2 : 0\n );\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year =\n this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month =\n this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if (\n (this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)\n ) {\n return;\n }\n\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\n ];\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return (\n customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode\n );\n }, this);\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(\n date1Disabled: { date: Date; mode: string },\n date2: Date\n ): number {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach(\n (disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n }\n );\n }\n\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Provider,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\n@Component({\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input() initDate: Date;\n /** oldest selectable date */\n @Input() minDate: Date;\n /** latest selectable date */\n @Input() maxDate: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input() minMode: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input() maxMode: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input() formatDay: string;\n /** format of month in year */\n @Input() formatMonth: string;\n /** format of year in year range */\n @Input() formatYear: string;\n /** format of day in week header */\n @Input() formatDayHeader: string;\n /** format of title when selecting day */\n @Input() formatDayTitle: string;\n /** format of title when selecting month */\n @Input() formatMonthTitle: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() startingDay: number;\n /** number of years displayed in year selection */\n @Input() yearRange: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input() onlyCurrentMonth: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input() shortcutPropagation: boolean;\n /** number of months displayed in a single row of month picker */\n @Input() monthColLimit: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input() dateDisabled: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() dayDisabled: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(\n undefined\n );\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = value ? new Date(value) : void 0;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">â¹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"><</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">âº</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">>\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth =\n difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date)\n );\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + 1\n );\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (\n Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1\n );\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">â¹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong> \n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">âº</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class MonthPickerComponent implements OnInit {\n title: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'yearpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">â¹</button>\n </th>\n <th [attr.colspan]=\"((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\" role=\"heading\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">âº</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n})\nexport class DatepickerModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\n"],"names":["height","width","shift"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ngx-bootstrap-datepicker.js","sources":["ng://ngx-bootstrap/datepicker/bs-datepicker.config.ts","ng://ngx-bootstrap/datepicker/base/bs-datepicker-container.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.actions.ts","ng://ngx-bootstrap/datepicker/bs-locale.service.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.effects.ts","ng://ngx-bootstrap/datepicker/reducer/_defaults.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.state.ts","ng://ngx-bootstrap/datepicker/utils/bs-calendar-utils.ts","ng://ngx-bootstrap/datepicker/utils/matrix-utils.ts","ng://ngx-bootstrap/datepicker/engine/calc-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-days-calendar.ts","ng://ngx-bootstrap/datepicker/engine/view-mode.ts","ng://ngx-bootstrap/datepicker/engine/format-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-months-calendar.ts","ng://ngx-bootstrap/datepicker/engine/format-years-calendar.ts","ng://ngx-bootstrap/datepicker/engine/flag-years-calendar.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.reducer.ts","ng://ngx-bootstrap/datepicker/reducer/bs-datepicker.store.ts","ng://ngx-bootstrap/datepicker/datepicker-animations.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.config.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-container.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-inline.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.config.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker.component.ts","ng://ngx-bootstrap/datepicker/bs-daterangepicker-input.directive.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-calendar-layout.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-current-date-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-custom-dates-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","ng://ngx-bootstrap/datepicker/models/index.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-days-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-months-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-timepicker-view.component.ts","ng://ngx-bootstrap/datepicker/themes/bs/bs-years-calendar-view.component.ts","ng://ngx-bootstrap/datepicker/bs-datepicker.module.ts","ng://ngx-bootstrap/datepicker/date-formatter.ts","ng://ngx-bootstrap/datepicker/datepicker-inner.component.ts","ng://ngx-bootstrap/datepicker/datepicker.config.ts","ng://ngx-bootstrap/datepicker/datepicker.component.ts","ng://ngx-bootstrap/datepicker/daypicker.component.ts","ng://ngx-bootstrap/datepicker/monthpicker.component.ts","ng://ngx-bootstrap/datepicker/yearpicker.component.ts","ng://ngx-bootstrap/datepicker/datepicker.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n DatepickerRenderOptions,\n BsDatepickerViewMode,\n DatepickerDateCustomClasses\n} from './models';\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\n\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable()\nexport class BsDatepickerConfig implements DatepickerRenderOptions {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** sets use UTC date time format */\n useUtc = false;\n /** turn on/off animation */\n isAnimated = false;\n value?: Date | Date[];\n isDisabled?: boolean;\n /**\n * Default min date for all date/range pickers\n */\n minDate?: Date;\n /**\n * Default max date for all date/range pickers\n */\n maxDate?: Date;\n /**\n * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Show one months for special cases (only for dateRangePicker)\n * 1. maxDate is equal to today's date\n * 2. minDate's month is equal to maxDate's month\n */\n displayOneMonthRange?: boolean;\n /**\n * Enable specific dates\n */\n datesEnabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Allows select first date of the week by click on week number\n */\n selectWeek?: boolean;\n\n /**\n * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\n */\n selectWeekDateRange?: boolean;\n\n /**\n * Shows previous and current month, instead of current and next (dateRangePicker only)\n */\n showPreviousMonth?: boolean;\n\n /**\n * Add class to current day\n */\n customTodayClass?: string;\n\n /**\n * Default mode for all date pickers\n */\n minMode?: BsDatepickerViewMode;\n\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n returnFocusToInput = false;\n\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n containerClass = 'theme-green';\n\n // DatepickerRenderOptions\n displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n showWeekNumbers = true;\n\n dateInputFormat = 'L';\n // range picker\n rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n rangeInputFormat = 'L';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n // DatepickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n}\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class BsDatepickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n\n _effects: BsDatepickerEffects;\n customRanges: BsCustomDates[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set datesEnabled(value: Date[]) {\n this._effects.setDatesEnabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatepickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n setViewMode(event: BsDatepickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n /* tslint:disable-next-line: no-any */\n _stopPropagation(event: any): void {\n event.stopPropagation();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from 'ngx-bootstrap/chronos';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport {\n BsDatepickerViewMode,\n BsViewNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses\n} from '../models';\n\n@Injectable()\nexport class BsDatepickerActions {\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\n static readonly FORMAT = '[datepicker] format datepicker values';\n static readonly FLAG = '[datepicker] set flags';\n static readonly SELECT = '[datepicker] select date';\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n static readonly NAVIGATE_TO = '[datepicker] change view date';\n static readonly SET_OPTIONS = '[datepicker] update render options';\n static readonly HOVER = '[datepicker] hover date';\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n static readonly SET_MIN_DATE = '[datepicker] set min date';\n static readonly SET_MAX_DATE = '[datepicker] set max date';\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n calculate(): Action {\n return { type: BsDatepickerActions.CALCULATE };\n }\n\n format(): Action {\n return { type: BsDatepickerActions.FORMAT };\n }\n\n flag(): Action {\n return { type: BsDatepickerActions.FLAG };\n }\n\n select(date: Date): Action {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n\n changeViewMode(event: BsDatepickerViewMode): Action {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n\n navigateStep(step: TimeUnit): Action {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n\n setOptions(options: DatepickerRenderOptions): Action {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n\n // date range picker\n selectRange(value: Date[]): Action {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n\n minDate(date: Date): Action {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n\n maxDate(date: Date): Action {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n\n daysDisabled(days: number[]): Action {\n return {\n type: BsDatepickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n\n datesDisabled(dates: Date[]): Action {\n return {\n type: BsDatepickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n\n datesEnabled(dates: Date[]): Action {\n return {\n type: BsDatepickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n\n isDisabled(value: boolean): Action {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n\n setDateCustomClasses(value: DatepickerDateCustomClasses[]): Action {\n return {\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n\n setLocale(locale: string): Action {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class BsLocaleService {\n private _defaultLocale = 'en';\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\n private _localeChange: Observable<string> = this._locale.asObservable();\n\n get locale(): BehaviorSubject<string> {\n return this._locale;\n }\n\n get localeChange(): Observable<string> {\n return this._localeChange;\n }\n\n get currentLocale(): string {\n return this._locale.getValue();\n }\n\n use(locale: string): void {\n if (locale === this.currentLocale) {\n return;\n }\n\n this._locale.next(locale);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { getFullYear, getMonth } from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nimport { BsDatepickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\n\n\n@Injectable()\nexport class BsDatepickerEffects {\n viewMode: Observable<BsDatepickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatepickerRenderOptions>;\n\n private _store: BsDatepickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: BsDatepickerActions,\n private _localeService: BsLocaleService) {}\n\n init(_bsDatepickerStore: BsDatepickerStore): BsDatepickerEffects {\n this._store = _bsDatepickerStore;\n\n return this;\n }\n\n /** setters */\n\n setValue(value: Date): void {\n this._store.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value: Date[]): void {\n this._store.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value: Date): BsDatepickerEffects {\n this._store.dispatch(this._actions.minDate(value));\n\n return this;\n }\n\n setMaxDate(value: Date): BsDatepickerEffects {\n this._store.dispatch(this._actions.maxDate(value));\n\n return this;\n }\n\n setDaysDisabled(value: number[]): BsDatepickerEffects {\n this._store.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value: Date[]): BsDatepickerEffects {\n this._store.dispatch(this._actions.datesDisabled(value));\n\n return this;\n }\n\n setDatesEnabled(value: Date[]): BsDatepickerEffects {\n this._store.dispatch(this._actions.datesEnabled(value));\n\n return this;\n }\n\n setDisabled(value: boolean): BsDatepickerEffects {\n this._store.dispatch(this._actions.isDisabled(value));\n\n return this;\n }\n\n setDateCustomClasses(value: DatepickerDateCustomClasses[]): BsDatepickerEffects {\n this._store.dispatch(this._actions.setDateCustomClasses(value));\n\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: BsDatepickerConfig): BsDatepickerEffects {\n const _options = Object.assign({locale: this._localeService.currentLocale}, _config);\n this._store.dispatch(this._actions.setOptions(_options));\n\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\n );\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: BsDatepickerAbstractComponent): BsDatepickerEffects {\n container.setViewMode = (event: BsDatepickerViewMode): void => {\n this._store.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.monthSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(event.date),\n year: getFullYear(event.date)\n },\n viewMode: 'day'\n })\n );\n };\n\n container.yearSelectHandler = (event: CalendarCellViewModel): void => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(event.date)\n },\n viewMode: 'month'\n })\n );\n };\n\n return this;\n }\n\n registerDatepickerSideEffects(): BsDatepickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\n this._store.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(\n filter(monthModel => !!monthModel)\n )\n .subscribe(month => this._store.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(\n filter(month => !!month)\n )\n .subscribe(month => this._store.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(\n filter(selectedDate => !!selectedDate)\n )\n .subscribe(selectedDate => this._store.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(\n filter(selectedRange => !!selectedRange)\n )\n .subscribe(selectedRange => this._store.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(\n filter(state => !!state)\n )\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(\n filter(hoveredDate => !!hoveredDate)\n )\n .subscribe(hoveredDate => this._store.dispatch(this._actions.flag()))\n );\n\n // date custom classes\n this._subs.push(\n this._store\n .select(state => state.dateCustomClasses)\n .pipe(\n filter(dateCustomClasses => !!dateCustomClasses)\n )\n .subscribe(dateCustomClasses => this._store.dispatch(this._actions.flag()))\n );\n\n // on locale change\n this._subs.push(\n this._localeService.localeChange\n .subscribe(locale => this._store.dispatch(this._actions.setLocale(locale)))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n","import {\n BsDatepickerViewMode,\n DatepickerFormatOptions,\n DatepickerRenderOptions,\n DatepickerDateCustomClasses,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\n\nexport interface BsDatepickerViewState {\n date: Date;\n mode: BsDatepickerViewMode;\n}\n\nexport class BsDatepickerState\n implements DatepickerRenderOptions, DatepickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view: BsDatepickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n daysDisabled?: number[];\n datesDisabled?: Date[];\n datesEnabled?: Date[];\n minMode?: BsDatepickerViewMode;\n dateCustomClasses?: DatepickerDateCustomClasses[];\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n selectFromOtherMonth?: boolean;\n showPreviousMonth?: boolean; // dateRangePicker only;\n displayOneMonthRange?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions: MonthViewOptions;\n\n // DatepickerRenderOptions\n showWeekNumbers?: boolean;\n displayMonths?: number;\n\n // DatepickerFormatOptions\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nconst _initialView: BsDatepickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatepickerState: BsDatepickerState = Object.assign(\n new BsDatepickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isArray,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { BsDatepickerState } from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date,\n options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset: number): number {\n if (startingDayOffset === 0) {\n return weekday;\n }\n\n const offset = weekday - startingDayOffset % 7;\n\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isDisabledDate(date: Date, datesDisabled: Date[]): boolean {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function isEnabledDate(date: Date, datesEnabled: Date[]): boolean {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n\n return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: BsDatepickerState, calendarIndex = 0): Date {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n","import { TimeUnit, shiftDate } from 'ngx-bootstrap/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n options: MatrixOptions,\n fn: CreateMatrixCb<T>\n): T[][] {\n let prevValue = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","// user and model input should handle parsing and validating input values\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from 'ngx-bootstrap/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n startingDate: Date,\n options: MonthViewOptions\n): DaysCalendarModel {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions = {\n width: options.width,\n height: options.height,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n return {\n daysMatrix,\n month: firstDay\n };\n}\n","import {\n DatepickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from 'ngx-bootstrap/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n formatOptions: DatepickerFormatOptions,\n monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(\n daysCalendar.month,\n formatOptions.monthTitle,\n formatOptions.locale\n ),\n yearTitle: formatDate(\n daysCalendar.month,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n weekNumbers: getWeekNumbers(\n daysCalendar.daysMatrix,\n formatOptions.weekNumbers,\n formatOptions.locale\n ),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n }))\n };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n format: string,\n locale: string): string[] {\n return daysMatrix.map(\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n );\n}\n\nexport function getShiftedWeekdays(locale: string): string[] {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort() as string[];\n const firstDayOfWeek = _locale.firstDayOfWeek();\n\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n DaysCalendarViewModel,\n DayViewModel,\n WeekViewModel,\n DatepickerDateCustomClasses\n} from '../models';\n\nimport {\n isAfter,\n isBefore,\n isDisabledDay,\n isSameDay,\n isSameMonth,\n shiftDate\n} from 'ngx-bootstrap/chronos';\n\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n daysDisabled: number[];\n datesDisabled: Date[];\n datesEnabled: Date[];\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatepickerDateCustomClasses[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n const isHovered =\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n\n const isSelected =\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n\n const isInRange =\n !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n const isDisabled =\n options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: -1 }),\n options.minDate,\n options.maxDate\n );\n formattedMonth.disableRightArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !selectedRange[0]) {\n return false;\n }\n\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n\n return false;\n}\n","import { BsDatepickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: BsDatepickerViewMode, minMode?: BsDatepickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {\n DatepickerFormatOptions,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions\n): MonthsCalendarViewModel {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(\n viewDate,\n formatOptions.yearTitle,\n formatOptions.locale\n )\n };\n}\n","import { isSameMonth, shiftDate } from 'ngx-bootstrap/chronos';\nimport {\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n const isSelected = isSameMonth(month.date, options.selectedDate);\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n monthCalendar.disableRightArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return monthCalendar;\n}\n","import {\n DatepickerFormatOptions,\n YearsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from 'ngx-bootstrap/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n viewDate: Date,\n formatOptions: DatepickerFormatOptions,\n previousInitialDate?: Date\n): YearsCalendarViewModel {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n yearsMatrix: CalendarCellViewModel[][],\n formatOptions: DatepickerFormatOptions\n): string {\n const from = formatDate(\n yearsMatrix[0][0].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n const to = formatDate(\n yearsMatrix[height - 1][width - 1].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n\n return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from 'ngx-bootstrap/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n const isSelected = isSameYear(year.date, options.selectedDate);\n\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n\n yearsCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return yearsCalendar;\n}\n","// tslint:disable:max-file-line-count\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { Action } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n setFullDate,\n shiftDate,\n isArray,\n isDateValid,\n startOf,\n getLocale,\n isAfter,\n isBefore,\n isSame\n} from 'ngx-bootstrap/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatepickerFormatOptions, BsDatepickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\n\n\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function bsDatepickerReducer(state = initialDatepickerState,\n action: Action): BsDatepickerState {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state, action);\n }\n\n case BsDatepickerActions.FLAG: {\n return flagReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode: BsDatepickerViewMode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n } else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode)) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n\n case BsDatepickerActions.SELECT: {\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_OPTIONS: {\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n\n // provided value is not supported :)\n // need to report it somehow\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: BsDatepickerState): BsDatepickerState {\n // how many calendars\n const displayMonths = (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) ? 1 : state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n if (state.showPreviousMonth && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(\n viewDate,\n state.monthViewOptions\n );\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n\n return Object.assign({}, state, { monthsModel });\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state),\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n );\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction formatReducer(state: BsDatepickerState,\n action: Action): BsDatepickerState {\n if (state.view.mode === 'day') {\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n );\n\n return Object.assign({}, state, { formattedMonths });\n }\n\n // how many calendars\n const displayMonths = state.displayMonths;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction flagReducer(state: BsDatepickerState,\n action: Action): BsDatepickerState {\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map(\n (formattedMonth, monthIndex) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\n const flaggedMonthsCalendar = state.monthsCalendar.map(\n (formattedMonth, monthIndex) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\n (formattedMonth, yearIndex) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: BsDatepickerState, action: Action): BsDatepickerState {\n const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: BsDatepickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: BsDatepickerState): DatepickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n\n weekNumbers: state.weekNumbers\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate: Date, maxDate: Date) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate: Date, maxDate: Date) {\n if (maxDate && isSame(maxDate, viewDate, 'day')) {\n return true;\n }\n\n if (minDate && maxDate && minDate.getMonth() === maxDate.getMonth()) {\n return true;\n }\n\n return false;\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { BsDatepickerState, initialDatepickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\n\n@Injectable()\nexport class BsDatepickerStore extends MiniStore<BsDatepickerState> {\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState<BsDatepickerState>(\n initialDatepickerState,\n _dispatcher,\n bsDatepickerReducer\n );\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n\n set value(value: Date) {\n this._effects.setValue(value);\n }\n\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n animationState = 'void';\n\n _subs: Subscription[] = [];\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this._effects\n .init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef, AfterViewInit\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerViewMode, DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n})\nexport class BsDatepickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date;\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDatepickerConfig>;\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n\n /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: BsDatepickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerContainerComponent>;\n\n constructor(public _config: BsDatepickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({placement: this.placement});\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Closes an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an elementâs datepicker. This is considered a âmanualâ triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDatepickerInlineConfig extends BsDatepickerConfig { }\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { BsDatepickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-datepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n})\nexport class BsDatepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDatepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDatepickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<BsDatepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDatepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDatepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n /** turn on/off animation */\n isAnimated = false;\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { Subscription } from 'rxjs';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { take } from 'rxjs/operators';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\n\n@Component({\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent\n implements OnInit, OnDestroy {\n set value(value: Date[]) {\n this._effects.setRangeValue(value);\n }\n\n valueChange = new EventEmitter<Date[]>();\n animationState = 'void';\n\n _rangeStack: Date[] = [];\n chosenRange: Date[] = [];\n _subs: Subscription[] = [];\n\n constructor(\n _renderer: Renderer2,\n private _config: BsDatepickerConfig,\n private _store: BsDatepickerStore,\n private _element: ElementRef,\n private _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n this.customRanges = this._config.ranges;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects\n .init(this._store)\n // intial state options\n // todo: fix this, split configs\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .subscribe(date => {\n this.valueChange.emit(date);\n this.chosenRange = date;\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n\n setRangeOnCalendar(dates: BsCustomDates) {\n this._rangeStack = (dates === null) ? [] : (dates.value instanceof Date ? [dates.value] : dates.value);\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n}\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\nimport { BsDaterangepickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'bs-daterangepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: BsDatepickerConfig,\n _store: BsDatepickerStore,\n _element: ElementRef,\n _actions: BsDatepickerActions,\n _effects: BsDatepickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline'\n})\nexport class BsDaterangepickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date[];\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDaterangepickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerInlineContainerComponent>;\n\n constructor(\n public _config: BsDaterangepickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<BsDaterangepickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n this.setConfig();\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: this.bsConfig && this.bsConfig.ranges\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({provide: BsDatepickerConfig, useValue: this._config})\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isDate,\n isDateValid,\n parseDate,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[bsDatepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class BsDatepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n\n constructor(@Host() private _picker: BsDatepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value: Date) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(value: Date): void {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n /* tslint:disable-next-line: prefer-switch */\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n\n return { bsDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\n\n@Injectable()\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n // DatepickerRenderOptions\n displayMonths = 2;\n}\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { ComponentLoaderFactory, ComponentLoader } from 'ngx-bootstrap/component-loader';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { DatepickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n})\nexport class BsDaterangepickerDirective\n implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n\n /**\n * Initial value of daterangepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for daterangepicker\n */\n @Input() bsConfig: Partial<BsDaterangepickerConfig>;\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatepickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<BsDaterangepickerContainerComponent>;\n private _datepickerRef: ComponentRef<BsDaterangepickerContainerComponent>;\n\n constructor(public _config: BsDaterangepickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n this._datepicker = cis.createLoader<BsDaterangepickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.bsConfig,\n {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: this.bsConfig && this.bsConfig.ranges\n }\n );\n }\n\n /**\n * Closes an elementâs datepicker. This is considered a âmanualâ triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an elementâs datepicker. This is considered a âmanualâ triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n parseDate,\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isArray,\n isDateValid,\n utcAsLocal\n} from 'ngx-bootstrap/chronos';\n\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[bsDaterangepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class BsDaterangepickerInputDirective\n implements ControlValueAccessor, Validator {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n\n constructor(@Host() private _picker: BsDaterangepickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value: Date[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(date: Date[]): void {\n let range = '';\n if (date) {\n const start: string = !date[0] ? ''\n : formatDate(date[0],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n const end: string = !date[1] ? ''\n : formatDate(\n date[1],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: [Date, Date] = c.value;\n const errors: object[] = [];\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n // @ts-ignore\n _value.sort((a, b) => a - b);\n\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n\n if (!_isFirstDateValid) {\n return { bsDate: { invalid: _value[0] } };\n }\n\n if (!_isSecondDateValid) {\n return { bsDate: { invalid: _value[1] } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ bsDate: { minDate: this._picker.minDate } });\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ bsDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n\n return errors;\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n let _input: (string[] | Date[]) = [];\n if (typeof value === 'string') {\n _input = value.split(this._picker._config.rangeSeparator);\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n this._value = (_input as string[])\n .map((_val: string): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : date));\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <bs-timepicker *ngIf=\"false\"></bs-timepicker>\n `\n})\nexport class BsCalendarLayoutComponent {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'bs-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n @Input() title: string;\n}\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface BsCustomDates {\n label: string;\n value: Date | Date[];\n}\n\n@Component({\n selector: 'bs-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\"\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(range)\"\n [class.selected]=\"range.value === selectedRange\">\n {{ range.label }}\n </button>\n <button\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(customRange)\"\n [class.selected]=\"!checkRange()\">\n Custom Range\n </button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() ranges: BsCustomDates[];\n @Input() selectedRange: Date[];\n @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n customRange: any = null;\n\n selectFromRanges(range: BsCustomDates) {\n this.onSelect.emit(range);\n }\n\n checkRange() {\n return this.ranges ? this.ranges.filter(range => range.value === this.selectedRange).length > 0 : false;\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2\n} from '@angular/core';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day.label }}`\n})\nexport class BsDatepickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: BsDatepickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n if (this.day.isToday && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n\n if (typeof this.day.customClasses === 'string') {\n this.day.customClasses.split(' ')\n .filter((className: string) => className)\n .forEach((className: string) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\n","import { TimeUnit } from 'ngx-bootstrap/chronos';\n\nexport type BsDatepickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow?: boolean;\n hideRightArrow?: boolean;\n disableLeftArrow?: boolean;\n disableRightArrow?: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonthHovered?: boolean;\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n customClasses?: string;\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n // additional information\n month: Date;\n weekNumbers: string[];\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatepickerFormatOptions {\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nexport interface DatepickerRenderOptions {\n showWeekNumbers?: boolean;\n displayMonths?: number;\n}\n\nexport interface DatepickerDateCustomClasses {\n date: Date;\n classes: string[];\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: BsDatepickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(true)\">\n <span>‹</span>\n </button>\n\n <ng-container *ngIf=\"calendar.monthTitle\">\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n type=\"button\"\n (click)=\"view('month')\"\n ><span>{{ calendar.monthTitle }}</span>\n </button>\n </ng-container>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\n <span>{{ calendar.yearTitle }}</span>\n </button>\n\n ​ <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(false)\"><span>›</span>\n </button>\n `\n})\nexport class BsDatepickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n navTo(down: boolean): void {\n this.onNavigate.emit(\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n );\n }\n\n view(viewMode: BsDatepickerViewMode): void {\n this.onViewMode.emit(viewMode);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n DatepickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options.showWeekNumbers\">\n <span\n (click)=\"selectWeek(week)\"\n (mouseenter)=\"weekHoverHandler(week, true)\"\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n <span bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </bs-calendar-layout>\n `\n})\nexport class BsDaysCalendarViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n @Input() options: DatepickerRenderOptions;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n isWeekHovered: boolean;\n\n constructor(private _config: BsDatepickerConfig) { }\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n selectWeek(week: WeekViewModel): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n if (week.days.length === 0) {\n return;\n }\n\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n\n this.onSelect.emit(week.days[0]);\n\n return;\n }\n\n const selectedDay = week.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(selectedDay);\n\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(lastDayOfRange);\n }\n }\n\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n\n this.onHover.emit({ cell, isHovered });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-month-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendar: MonthsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","// tslint:disable:max-line-length\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-timepicker',\n template: `\n <div class=\"bs-timepicker-container\">\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n})\nexport class BsTimepickerViewComponent {\n ampm = 'ok';\n hours = 0;\n minutes = 0;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n BsDatepickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'bs-years-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar: YearsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<BsDatepickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: BsDatepickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\n\nimport { BsDatepickerInlineDirective } from './bs-datepicker-inline.component';\nimport { BsDatepickerInlineConfig } from './bs-datepicker-inline.config';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { BsDatepickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { BsDaterangepickerInlineDirective } from './bs-daterangepicker-inline.component';\nimport { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ]\n})\nexport class BsDatepickerModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerConfig,\n BsDaterangepickerConfig,\n BsDatepickerInlineConfig,\n BsDaterangepickerInlineConfig,\n BsDatepickerEffects,\n BsLocaleService\n ]\n };\n }\n}\n","import { formatDate } from 'ngx-bootstrap/chronos';\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return formatDate(date, format, locale);\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input() locale: string;\n @Input() datepickerMode: string;\n @Input() startingDay: number;\n @Input() yearRange: number;\n\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minMode: string;\n @Input() maxMode: string;\n @Input() showWeeks: boolean;\n @Input() formatDay: string;\n @Input() formatMonth: string;\n @Input() formatYear: string;\n @Input() formatDayHeader: string;\n @Input() formatDayTitle: string;\n @Input() formatMonthTitle: string;\n @Input() onlyCurrentMonth: boolean;\n @Input() shortcutPropagation: boolean;\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n @Input() monthColLimit: number;\n @Input() yearColLimit: number;\n @Input() dateDisabled: { date: Date; mode: string }[];\n @Input() dayDisabled: number[];\n @Input() initDate: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (\n previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()\n ) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hours === 23 ? hours + 2 : 0\n );\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year =\n this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month =\n this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if (\n (this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)\n ) {\n return;\n }\n\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\n ];\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return (\n customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode\n );\n }, this);\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(\n date1Disabled: { date: Date; mode: string },\n date2: Date\n ): number {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach(\n (disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n }\n );\n }\n\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Provider,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\n@Component({\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input() initDate: Date;\n /** oldest selectable date */\n @Input() minDate: Date;\n /** latest selectable date */\n @Input() maxDate: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input() minMode: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input() maxMode: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input() formatDay: string;\n /** format of month in year */\n @Input() formatMonth: string;\n /** format of year in year range */\n @Input() formatYear: string;\n /** format of day in week header */\n @Input() formatDayHeader: string;\n /** format of title when selecting day */\n @Input() formatDayTitle: string;\n /** format of title when selecting month */\n @Input() formatMonthTitle: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() startingDay: number;\n /** number of years displayed in year selection */\n @Input() yearRange: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input() onlyCurrentMonth: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input() shortcutPropagation: boolean;\n /** number of months displayed in a single row of month picker */\n @Input() monthColLimit: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input() dateDisabled: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() dayDisabled: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(\n undefined\n );\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = value ? new Date(value) : void 0;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">â¹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"><</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">âº</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">>\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth =\n difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date)\n );\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + 1\n );\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (\n Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1\n );\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">â¹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong> \n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">âº</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class MonthPickerComponent implements OnInit {\n title: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'yearpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">â¹</button>\n </th>\n <th [attr.colspan]=\"((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\" role=\"heading\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">âº</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n})\nexport class DatepickerModule {\n static forRoot(): ModuleWithProviders {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\n"],"names":["height","width","shift"],"mappings":";;;;;;;;;;;;;;;;;;;;MAca,kBAAkB;IAD/B;;;;QAGE,qBAAgB,GAAG,KAAK,CAAC;;;;QAEzB,WAAM,GAAG,KAAK,CAAC;;;;QAEf,eAAU,GAAG,KAAK,CAAC;;;;QAkEnB,uBAAkB,GAAG,KAAK,CAAC;;;;;QAK3B,mBAAc,GAAG,aAAa,CAAC;;QAG/B,kBAAa,GAAG,CAAC,CAAC;;;;QAIlB,oBAAe,GAAG,IAAI,CAAC;QAEvB,oBAAe,GAAG,GAAG,CAAC;;QAEtB,mBAAc,GAAG,KAAK,CAAC;;;;QAIvB,qBAAgB,GAAG,GAAG,CAAC;;QAQvB,eAAU,GAAG,MAAM,CAAC;QACpB,cAAS,GAAG,MAAM,CAAC;QACnB,aAAQ,GAAG,GAAG,CAAC;QACf,eAAU,GAAG,MAAM,CAAC;QACpB,cAAS,GAAG,MAAM,CAAC;QACnB,gBAAW,GAAG,GAAG,CAAC;KACnB;;;YA3GA,UAAU;;;;;;;IAGT,8CAAyB;;;;;IAEzB,oCAAe;;;;;IAEf,wCAAmB;;IACnB,mCAAsB;;IACtB,wCAAqB;;;;;IAIrB,qCAAe;;;;;IAIf,qCAAe;;;;;IAIf,+CAAiD;;;;;IAIjD,0CAAwB;;;;;IAIxB,2CAAuB;;;;;;;IAMvB,kDAA+B;;;;;IAI/B,0CAAsB;;;;;IAItB,kDAA+B;;;;;IAK/B,wCAAqB;;;;;IAKrB,iDAA8B;;;;;IAK9B,+CAA4B;;;;;IAK5B,8CAA0B;;;;;IAK1B,qCAA+B;;;;;IAK/B,gDAA2B;;;;;;IAK3B,4CAA+B;;IAG/B,2CAAkB;;;;;IAIlB,6CAAuB;;IAEvB,6CAAsB;;IAEtB,4CAAuB;;;;;IAIvB,8CAAuB;;;;;IAKvB,oCAAyB;;IAGzB,wCAAoB;;IACpB,uCAAmB;;IACnB,sCAAe;;IACf,wCAAoB;;IACpB,uCAAmB;;IACnB,yCAAkB;;;;;;;;;;ACpGpB,MAAsB,6BAA6B;IAAnD;QAKE,iBAAY,GAAoB,EAAE,CAAC;KAwDpC;;;;;IAtDC,IAAI,OAAO,CAAC,KAAW;QACrB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACjC;;;;;IAED,IAAI,OAAO,CAAC,KAAW;QACrB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACjC;;;;;IACD,IAAI,YAAY,CAAC,KAAe;QAC9B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACtC;;;;;IACD,IAAI,aAAa,CAAC,KAAa;QAC7B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KACvC;;;;;IAED,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACtC;;;;;IAED,IAAI,UAAU,CAAC,KAAc;QAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAClC;;;;;IAED,IAAI,iBAAiB,CAAC,KAAoC;QACxD,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAC3C;;;;;IAQD,WAAW,CAAC,KAA2B,KAAU;;;;;IAEjD,UAAU,CAAC,KAAwB,KAAU;;;;;IAE7C,eAAe,CAAC,KAAqB,KAAU;;;;;IAE/C,gBAAgB,CAAC,KAAoB,KAAU;;;;;IAE/C,iBAAiB,CAAC,KAAqB,KAAU;;;;;IAEjD,gBAAgB,CAAC,KAAqB,KAAU;;;;;IAEhD,gBAAgB,CAAC,GAAiB,KAAU;;;;;IAE5C,kBAAkB,CAAC,KAA4B,KAAU;;;;;IAEzD,iBAAiB,CAAC,KAA4B,KAAU;;;;;;IAGxD,gBAAgB,CAAC,KAAU;QACzB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;CACF;;;IA5DC,uDAAuB;;IACvB,4DAA6B;;IAE7B,iDAA8B;;IAC9B,qDAAmC;;IA4BnC,iDAA2C;;IAC3C,qDAAkD;;IAClD,uDAAsD;;IACtD,sDAAoD;;IACpD,gDAA6C;;;;;;;ACxD/C,MAYa,mBAAmB;;;;IAuB9B,SAAS;QACP,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,CAAC;KAChD;;;;IAED,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,CAAC;KAC7C;;;;IAED,IAAI;QACF,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC;KAC3C;;;;;IAED,MAAM,CAAC,IAAU;QACf,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,MAAM;YAChC,OAAO,EAAE,IAAI;SACd,CAAC;KACH;;;;;IAED,cAAc,CAAC,KAA2B;QACxC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,UAAU,CAAC,KAA4B;QACrC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,WAAW;YACrC,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,YAAY,CAAC,IAAc;QACzB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;YACzC,OAAO,EAAE,IAAI;SACd,CAAC;KACH;;;;;IAED,UAAU,CAAC,OAAgC;QACzC,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,WAAW;YACrC,OAAO,EAAE,OAAO;SACjB,CAAC;KACH;;;;;;IAGD,WAAW,CAAC,KAAa;QACvB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;YACtC,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,QAAQ,CAAC,KAAqB;QAC5B,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,KAAK;YAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;SAClD,CAAC;KACH;;;;;IAED,OAAO,CAAC,IAAU;QAChB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;YACtC,OAAO,EAAE,IAAI;SACd,CAAC;KACH;;;;;IAED,OAAO,CAAC,IAAU;QAChB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,YAAY;YACtC,OAAO,EAAE,IAAI;SACd,CAAC;KACH;;;;;IAED,YAAY,CAAC,IAAc;QACzB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,gBAAgB;YAC1C,OAAO,EAAE,IAAI;SACd,CAAC;KACH;;;;;IAED,aAAa,CAAC,KAAa;QACzB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,iBAAiB;YAC3C,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,YAAY,CAAC,KAAa;QACxB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,gBAAgB;YAC1C,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,UAAU,CAAC,KAAc;QACvB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,eAAe;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,oBAAoB,CAAC,KAAoC;QACvD,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,uBAAuB;YACjD,OAAO,EAAE,KAAK;SACf,CAAC;KACH;;;;;IAED,SAAS,CAAC,MAAc;QACtB,OAAO;YACL,IAAI,EAAE,mBAAmB,CAAC,UAAU;YACpC,OAAO,EAAE,MAAM;SAChB,CAAC;KACH;;AA1Ie,6BAAS,GAAG,qCAAqC,CAAC;AAClD,0BAAM,GAAG,uCAAuC,CAAC;AACjD,wBAAI,GAAG,wBAAwB,CAAC;AAChC,0BAAM,GAAG,0BAA0B,CAAC;AACpC,mCAAe,GAAG,8BAA8B,CAAC;AACjD,+BAAW,GAAG,+BAA+B,CAAC;AAC9C,+BAAW,GAAG,oCAAoC,CAAC;AACnD,yBAAK,GAAG,yBAAyB,CAAC;AAClC,mCAAe,GAAG,+BAA+B,CAAC;AAElD,gCAAY,GAAG,2BAA2B,CAAC;AAC3C,gCAAY,GAAG,2BAA2B,CAAC;AAC3C,oCAAgB,GAAG,gCAAgC,CAAC;AACpD,qCAAiB,GAAG,iCAAiC,CAAC;AACtD,oCAAgB,GAAG,gCAAgC,CAAC;AACpD,mCAAe,GAAG,8BAA8B,CAAC;AACjD,2CAAuB,GAAG,sCAAsC,CAAC;AAEjE,8BAAU,GAAG,oCAAoC,CAAC;AAElD,gCAAY,GAAG,sCAAsC,CAAC;;YAtBvE,UAAU;;;;IAET,8BAAkE;;IAClE,2BAAiE;;IACjE,yBAAgD;;IAChD,2BAAoD;;IACpD,oCAAiE;;IACjE,gCAA8D;;IAC9D,gCAAmE;;IACnE,0BAAkD;;IAClD,oCAAkE;;IAElE,iCAA2D;;IAC3D,iCAA2D;;IAC3D,qCAAoE;;IACpE,sCAAsE;;IACtE,qCAAoE;;IACpE,oCAAiE;;IACjE,4CAAiF;;IAEjF,+BAAkE;;IAElE,iCAAsE;;;;;;;ACjCxE,MAIa,eAAe;IAD5B;QAEU,mBAAc,GAAG,IAAI,CAAC;QACtB,YAAO,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,kBAAa,GAAuB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KAqBzE;;;;IAnBC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;;;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KAChC;;;;;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;YACjC,OAAO;SACR;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;;;YAxBF,UAAU;;;;;;;IAET,yCAA8B;;;;;IAC9B,kCAAmE;;;;;IACnE,wCAAwE;;;;;;;ACP1E,MA4Ba,mBAAmB;;;;;IAU9B,YAAoB,QAA6B,EAC7B,cAA+B;QAD/B,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,mBAAc,GAAd,cAAc,CAAiB;QAH3C,UAAK,GAAmB,EAAE,CAAC;KAGoB;;;;;IAEvD,IAAI,CAAC,kBAAqC;QACxC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;QAEjC,OAAO,IAAI,CAAC;KACb;;;;;;IAID,QAAQ,CAAC,KAAW;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACnD;;;;;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KACxD;;;;;IAED,UAAU,CAAC,KAAW;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;KACb;;;;;IAED,UAAU,CAAC,KAAW;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;KACb;;;;;IAED,eAAe,CAAC,KAAe;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC;KACb;;;;;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC;KACb;;;;;IAED,eAAe,CAAC,KAAa;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC;KACb;;;;;IAED,WAAW,CAAC,KAAc;QACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC;KACb;;;;;IAED,oBAAoB,CAAC,KAAoC;QACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC;KACb;;;;;;IAGD,UAAU,CAAC,OAA2B;;cAC9B,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAC,EAAE,OAAO,CAAC;QACpF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC;KACb;;;;;;IAGD,WAAW,CAAC,SAAwC;QAClD,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;aACjC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,aAAa,EAAC;aACpC,IAAI,CACH,MAAM;;;;QAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAC,CAC3B,CAAC;;QAGJ,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM;aACnC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,qBAAqB,EAAC;aAC5C,IAAI,CACH,MAAM;;;;QAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAC,CAC3B,CAAC;;QAGJ,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;aAClC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB,EAAC;aAC3C,IAAI,CACH,MAAM;;;;QAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAC,CACzB,CAAC;QAEJ,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC;QAElE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM;aAC5B,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,eAAe,EAAC;aACtC,IAAI,CACH,GAAG;;;;QAAC,eAAe,KAAK,EAAC,eAAe,EAAC,CAAC,EAAC,CAC5C,CAAC;QAEJ,OAAO,IAAI,CAAC;KACb;;;;;;IAGD,gBAAgB,CAAC,SAAwC;QACvD,SAAS,CAAC,WAAW;;;;QAAG,CAAC,KAA2B;YAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3D,CAAA,CAAC;QAEF,SAAS,CAAC,UAAU;;;;QAAG,CAAC,KAAwB;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D,CAAA,CAAC;QAEF,SAAS,CAAC,eAAe;;;;QAAG,CAAC,KAAqB;;kBAC1C,KAAK,sBAAG,KAAK,CAAC,IAAI,EAAgB;YACxC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,EAAE;gBAC1C,OAAO;aACR;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;SACnC,CAAA,CAAC;QAEF,SAAS,CAAC,iBAAiB;;;;QAAG,CAAC,KAAqB;YAClD,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;SACxC,CAAA,CAAC;QAEF,SAAS,CAAC,gBAAgB;;;;QAAG,CAAC,KAAqB;YACjD,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;SACxC,CAAA,CAAC;QAEF,SAAS,CAAC,kBAAkB;;;;QAAG,CAAC,KAA4B;YAC1D,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC9B;gBACD,QAAQ,EAAE,KAAK;aAChB,CAAC,CACH,CAAC;SACH,CAAA,CAAC;QAEF,SAAS,CAAC,iBAAiB;;;;QAAG,CAAC,KAA4B;YACzD,IAAI,KAAK,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC9B;gBACD,QAAQ,EAAE,OAAO;aAClB,CAAC,CACH,CAAC;SACH,CAAA,CAAC;QAEF,OAAO,IAAI,CAAC;KACb;;;;IAED,6BAA6B;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM,CAAC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAC,CAAC,SAAS;;;;QAAC,IAAI;YACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;SACjD,EAAC,CACH,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAC;aAClC,IAAI,CACH,MAAM;;;;QAAC,UAAU,IAAI,CAAC,CAAC,UAAU,EAAC,CACnC;aACA,SAAS;;;;QAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAC,CACpE,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,eAAe,EAAC;aACtC,IAAI,CACH,MAAM;;;;QAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAC,CACzB;aACA,SAAS;;;;QAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CAClE,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,YAAY,EAAC;aACnC,IAAI,CACH,MAAM;;;;QAAC,YAAY,IAAI,CAAC,CAAC,YAAY,EAAC,CACvC;aACA,SAAS;;;;QAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CACzE,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,aAAa,EAAC;aACpC,IAAI,CACH,MAAM;;;;QAAC,aAAa,IAAI,CAAC,CAAC,aAAa,EAAC,CACzC;aACA,SAAS;;;;QAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CAC1E,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,cAAc,EAAC;aACrC,SAAS;;;QAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CAC/D,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,kBAAkB,EAAC;aACzC,IAAI,CACH,MAAM;;;;QAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAC,CACzB;aACA,SAAS;;;QAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CAC/D,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAC;aAClC,IAAI,CACH,MAAM;;;;QAAC,WAAW,IAAI,CAAC,CAAC,WAAW,EAAC,CACrC;aACA,SAAS;;;;QAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CACxE,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAC;aACxC,IAAI,CACH,MAAM;;;;QAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,EAAC,CACjD;aACA,SAAS;;;;QAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAC,CAC9E,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,YAAY;aAC7B,SAAS;;;;QAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAC,CAC9E,CAAC;QAEF,OAAO,IAAI,CAAC;KACb;;;;IAED,OAAO;QACL,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;KACF;;;YA9QF,UAAU;;;;YAnBF,mBAAmB;YAGnB,eAAe;;;;IAkBtB,uCAA2C;;IAC3C,2CAAkD;;IAClD,6CAAsD;;IACtD,4CAAoD;;IACpD,sCAA6C;;;;;IAE7C,qCAAkC;;;;;IAClC,oCAAmC;;;;;IAEvB,uCAAqC;;;;;IACrC,6CAAuC;;;;;;;;ACnCrD,MAAa,mBAAmB,GAAqB;IACnD,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;CACV;;;;;;ACID;;;AAGA,oCAGC;;;IAFC,qCAAW;;IACX,qCAA2B;;AAG7B,MAAa,iBAAiB;CA0D7B;;;IAvDC,yCAAoB;;IAEpB,0CAAuB;;IAGvB,iCAA4B;;IAE5B,uCAAqB;;IAErB,oCAAe;;IACf,oCAAe;;IACf,yCAAwB;;IACxB,0CAAuB;;IACvB,yCAAsB;;IACtB,oCAA+B;;IAC/B,8CAAkD;;IAElD,wCAAmB;;IACnB,yCAAoB;;IACpB,wCAAmB;;IAGnB,wCAAkC;;IAClC,4CAA0C;;IAC1C,0CAAwC;;IACxC,iDAA+B;;IAC/B,8CAA4B;;IAC5B,iDAA+B;;IAG/B,2CAA2C;;IAC3C,kDAAkD;;IAGlD,+CAA8C;;IAC9C,iDAAgD;;IAGhD,6CAAmC;;IAGnC,4CAA0B;;IAC1B,0CAAuB;;IAGvB,mCAAe;;IAEf,uCAAmB;;IACnB,sCAAkB;;IAElB,qCAAiB;;IACjB,uCAAmB;;IACnB,sCAAkB;;IAElB,wCAAoB;;;MAGhB,YAAY,GAA0B,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;;AAE7E,MAAa,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CACpE,IAAI,kBAAkB,EAAE,EACxB;IACE,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,YAAY;IAClB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,mBAAmB;CACtC,CACF;;;;;;ACzFD;;;;;AAaA,SAAgB,wBAAwB,CAAC,IAAU,EACV,OAAoC;IAC3E,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE;QAClD,OAAO,IAAI,CAAC;KACb;;UAEK,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;;UACtB,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC;IAEnE,OAAO,SAAS,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,CAAC,MAAM,EAAC,CAAC,CAAC;AACzC,CAAC;;;;;;AAED,SAAgB,mBAAmB,CAAC,OAAe,EAAE,iBAAyB;IAC5E,IAAI,iBAAiB,KAAK,CAAC,EAAE;QAC3B,OAAO,OAAO,CAAC;KAChB;;UAEK,MAAM,GAAG,OAAO,GAAG,iBAAiB,GAAG,CAAC;IAE9C,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AAC1C,CAAC;;;;;;;AAED,SAAgB,eAAe,CAAC,IAAU,EAAE,GAAS,EAAE,GAAS;;UACxD,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;UAC5D,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAEnE,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,CAAC;;;;;;;AAED,SAAgB,cAAc,CAAC,IAAU,EAAE,GAAS,EAAE,GAAS;;UACvD,QAAQ,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;UAC3D,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAElE,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,CAAC;;;;;;AAED,SAAgB,cAAc,CAAC,IAAU,EAAE,aAAqB;IAC9D,IAAI,CAAC,aAAa,IAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QACvE,OAAO,KAAK,CAAC;KACd;IAED,OAAO,aAAa,CAAC,IAAI;;;;IAAC,CAAC,YAAkB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAC,CAAC;AACxF,CAAC;;;;;;AAED,SAAgB,aAAa,CAAC,IAAU,EAAE,YAAoB;IAC5D,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACnE,OAAO,KAAK,CAAC;KACd;IAED,OAAO,CAAC,YAAY,CAAC,IAAI;;;;IAAC,CAAC,WAAiB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAC,CAAC;AACtF,CAAC;;;;;;AAED,SAAgB,2BAA2B,CAAC,KAAwB,EAAE,aAAa,GAAG,CAAC;;UAC/E,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC;IAE1F,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/F,CAAC;;;;;;ACrED;;;AAIA,4BAKC;;;IAJC,+BAAe;;IACf,8BAAc;;IACd,oCAAkB;;IAClB,8BAAgB;;;;;;;;AAGlB,SAAgB,YAAY,CAC1B,OAAsB,EACtB,EAAqB;;QAEjB,SAAS,GAAG,OAAO,CAAC,WAAW;;UAC7B,MAAM,GAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7B,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;SACjD;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;;;;;;ACtBD;;;;;AAIA,SAAgB,gBAAgB,CAC9B,YAAkB,EAClB,OAAyB;;UAEnB,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC;;UAC3C,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;;UAEzD,aAAa,GAAG;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW;QACX,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB;;UACK,UAAU,GAAG,YAAY,CAAO,aAAa;;;;IAAE,IAAI,IAAI,IAAI,EAAC;IAElE,OAAO;QACL,UAAU;QACV,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC;;;;;;ACtBD;;;;;;AAEA,SAAgB,kBAAkB,CAAC,YAA+B,EAC/B,aAAsC,EACtC,UAAkB;IACnD,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,UAAU,EAAE,UAAU,CACpB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,MAAM,CACrB;QACD,SAAS,EAAE,UAAU,CACnB,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;QACD,WAAW,EAAE,cAAc,CACzB,YAAY,CAAC,UAAU,EACvB,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,MAAM,CACrB;QACD,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC;QAClD,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG;;;;;QAAC,CAAC,IAAY,EAAE,SAAiB,MAAM;YACvE,IAAI,EAAE,IAAI,CAAC,GAAG;;;;;YAAC,CAAC,IAAU,EAAE,QAAgB,MAAM;gBAChD,IAAI;gBACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;gBACrE,UAAU;gBACV,SAAS;gBACT,QAAQ;aACT,CAAC,EAAC;SACJ,CAAC,EAAC;KACJ,CAAC;AACJ,CAAC;;;;;;;AAED,SAAgB,cAAc,CAAC,UAAoB,EACpB,MAAc,EACd,MAAc;IAC3C,OAAO,UAAU,CAAC,GAAG;;;;IACnB,CAAC,IAAY,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EACvE,CAAC;AACJ,CAAC;;;;;AAED,SAAgB,kBAAkB,CAAC,MAAc;;UACzC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;;UAC3B,QAAQ,sBAAG,OAAO,CAAC,aAAa,EAAE,EAAY;;UAC9C,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE;IAE/C,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AACnF,CAAC;;;;;;AC/CD;;;AAWA,sCAaC;;;IAZC,6CAAoB;;IACpB,0CAAc;;IACd,0CAAc;;IACd,+CAAuB;;IACvB,gDAAsB;;IACtB,+CAAqB;;IACrB,8CAAkB;;IAClB,+CAAmB;;IACnB,gDAAsB;;IACtB,gDAAsB;;IACtB,6CAAmB;;IACnB,oDAAiD;;;;;;;AAGnD,SAAgB,gBAAgB,CAC9B,cAAqC,EACrC,OAAgC;IAEhC,cAAc,CAAC,KAAK,CAAC,OAAO;;;;IAAC,CAAC,IAAmB;;QAE/C,IAAI,CAAC,IAAI,CAAC,OAAO;;;;;QAAC,CAAC,GAAiB,EAAE,QAAgB;;;kBAE9C,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;;kBAE3D,SAAS,GACb,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;;;kBAErD,gBAAgB,GACpB,CAAC,YAAY;gBACb,OAAO,CAAC,aAAa;gBACrB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;kBACzC,cAAc,GAClB,CAAC,YAAY;gBACb,OAAO,CAAC,aAAa;gBACrB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;kBAEzC,UAAU,GACd,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;gBAC3D,gBAAgB;gBAChB,cAAc;;kBAEV,SAAS,GACb,CAAC,YAAY;gBACb,OAAO,CAAC,aAAa;gBACrB,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC;;kBAE/D,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBACzC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;gBAC7C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;gBAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;kBAEzC,WAAW,GAAG,IAAI,IAAI,EAAE;;kBACxB,OAAO,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;;kBAE3D,aAAa,GAAG,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB;iBACzE,GAAG;;;;YAAC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,EAAC;iBAC5D,MAAM;;;;;YAAC,CAAC,aAAa,EAAE,YAAY,KAAK,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,GAAE,EAAE,CAAC;iBAC/E,IAAI,CAAC,GAAG,CAAC;mBACP,EAAE;;;kBAID,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;gBACpC,YAAY;gBACZ,SAAS;gBACT,UAAU;gBACV,gBAAgB;gBAChB,cAAc;gBACd,SAAS;gBACT,UAAU;gBACV,OAAO;gBACP,aAAa;aACd,CAAC;YAEF,IACE,GAAG,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;gBACxC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;gBAClC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;gBACpC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC,gBAAgB;gBAChD,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;gBAC5C,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;gBACpC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;gBAClC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,EAC1C;gBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;aAC9B;SACF,EAAC,CAAC;KACJ,EAAC,CAAC;;IAGH,cAAc,CAAC,aAAa;QAC1B,OAAO,CAAC,UAAU;aACjB,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3E,cAAc,CAAC,cAAc;QAC3B,OAAO,CAAC,UAAU;aACjB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa;gBACzC,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtD,cAAc,CAAC,gBAAgB,GAAG,eAAe,CAC/C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAC9C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,cAAc,CAAC,iBAAiB,GAAG,eAAe,CAChD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC7C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC;;;;;;;AAED,SAAS,aAAa,CACpB,IAAU,EACV,aAAqB,EACrB,WAAiB;IAEjB,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;QACpB,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;KAC5D;IAED,IAAI,WAAW,EAAE;QACf,OAAO,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC;KACvD;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;;;;;;ACtJD,SAAgB,aAAa,CAAC,IAA0B,EAAE,OAA8B;IACtF,OAAO,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AAC1C,CAAC;;;;;;ACCD;MAGM,MAAM,GAAG,CAAC;;MACV,KAAK,GAAG,CAAC;;MACT,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;;;;;;AAE1B,SAAgB,oBAAoB,CAClC,QAAc,EACd,aAAsC;;UAEhC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;;UACvC,aAAa,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;;UACrD,WAAW,GAAG,YAAY,CAE9B,aAAa;;;;IAAE,IAAI,KAAK;QACxB,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;KACxE,CAAC,EAAC;IAEH,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,UAAU,CACnB,QAAQ,EACR,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;KACF,CAAC;AACJ,CAAC;;;;;;AClCD;;;AAOA,uCAQC;;;IAPC,8CAAoB;;IACpB,2CAAc;;IACd,2CAAc;;IACd,gDAAmB;;IACnB,gDAAmB;;IACnB,iDAAsB;;IACtB,8CAAmB;;;;;;;AAGrB,SAAgB,kBAAkB,CAChC,aAAsC,EACtC,OAAiC;IAEjC,aAAa,CAAC,MAAM,CAAC,OAAO;;;;;IAC1B,CAAC,MAA+B,EAAE,QAAgB;QAChD,MAAM,CAAC,OAAO;;;;;QAAC,CAAC,KAA4B,EAAE,UAAkB;;kBACxD,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;kBACzD,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;;kBACzD,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;kBAC1D,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,KAAK,EAAE;gBAC5C,SAAS;gBACT,UAAU;gBACV,UAAU;aACX,CAAC;YACF,IACE,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;gBACtC,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;gBACxC,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACxC;gBACA,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;aACvD;SACF,EAAC,CAAC;KACJ,EACF,CAAC;;IAGF,aAAa,CAAC,aAAa;QACzB,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,aAAa,CAAC;IACzE,aAAa,CAAC,cAAc;QAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa;YAC1C,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC;IAEnD,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACxD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC;;;;;;AC3DD;MAGMA,QAAM,GAAG,CAAC;;MACVC,OAAK,GAAG,CAAC;;AACf,MAAa,gBAAgB,GAAGD,QAAM,GAAGC,OAAK;;AAC9C,MAAa,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;MACrEC,OAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;;;;;;;AAEzB,SAAgB,mBAAmB,CACjC,QAAc,EACd,aAAsC,EACtC,mBAA0B;;UAEpB,WAAW,GAAG,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,CAAC;;UACjE,aAAa,GAAG,SAAED,OAAK,UAAED,QAAM,EAAE,WAAW,SAAEE,OAAK,EAAE;;UACrD,WAAW,GAAG,YAAY,CAE9B,aAAa;;;;IAAE,IAAI,KAAK;QACxB,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;KACvE,CAAC,EAAC;;UACG,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC;IAElE,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,EAAE;QACd,SAAS;KACV,CAAC;AACJ,CAAC;;;;;;AAED,SAAS,oBAAoB,CAAC,QAAc,EAAE,mBAA0B;IACtE,IAAI,mBAAmB;WAClB,QAAQ,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,WAAW,EAAE;WAC3D,QAAQ,CAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,gBAAgB,EAAE;QAClF,OAAO,mBAAmB,CAAC;KAC5B;IAED,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACzD,CAAC;;;;;;AAED,SAAS,oBAAoB,CAC3B,WAAsC,EACtC,aAAsC;;UAEhC,IAAI,GAAG,UAAU,CACrB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EACtB,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;;UACK,EAAE,GAAG,UAAU,CACnB,WAAW,CAACF,QAAM,GAAG,CAAC,CAAC,CAACC,OAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EACvC,aAAa,CAAC,SAAS,EACvB,aAAa,CAAC,MAAM,CACrB;IAED,OAAO,GAAG,IAAI,MAAM,EAAE,EAAE,CAAC;AAC3B,CAAC;;;;;;AC9DD;;;AAIA,uCAQC;;;IAPC,8CAAoB;;IACpB,2CAAc;;IACd,2CAAc;;IACd,+CAAkB;;IAClB,gDAAmB;;IACnB,iDAAsB;;IACtB,6CAAkB;;;;;;;AAGpB,SAAgB,iBAAiB,CAC/B,aAAqC,EACrC,OAAiC;IAEjC,aAAa,CAAC,KAAK,CAAC,OAAO;;;;;IACzB,CAAC,KAA8B,EAAE,QAAgB;QAC/C,KAAK,CAAC,OAAO;;;;;QAAC,CAAC,IAA2B,EAAE,SAAiB;;kBACrD,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;;kBACtD,UAAU,GACd,OAAO,CAAC,UAAU;gBAClB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;;kBACvD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;;kBAExD,QAAQ,GAAG,MAAM,CAAC,MAAM,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YACnF,IACE,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;gBACrC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;gBACvC,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EACvC;gBACA,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;aACrD;SACF,EAAC,CAAC;KACJ,EACF,CAAC;;IAGF,aAAa,CAAC,aAAa;QACzB,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC;IACvE,aAAa,CAAC,cAAc;QAC1B,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa;YACzC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC;IAElD,aAAa,CAAC,gBAAgB,GAAG,cAAc,CAC7C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;;UACI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;UAClC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;IAC3C,aAAa,CAAC,iBAAiB,GAAG,cAAc,CAC9C,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EACtD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC;;;;;;;;;;;;AChCD,SAAgB,mBAAmB,CAAC,KAAK,GAAG,sBAAsB,EAC9B,MAAc;IAChD,QAAQ,MAAM,CAAC,IAAI;QACjB,KAAK,mBAAmB,CAAC,SAAS,EAAE;YAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,KAAK,mBAAmB,CAAC,MAAM,EAAE;YAC/B,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACrC;QAED,KAAK,mBAAmB,CAAC,IAAI,EAAE;YAC7B,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACnC;QAED,KAAK,mBAAmB,CAAC,eAAe,EAAE;YACxC,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7C;QAED,KAAK,mBAAmB,CAAC,WAAW,EAAE;;kBAC9B,OAAO,GAA0B,MAAM,CAAC,OAAO;;kBAE/C,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;;gBACnD,QAAQ;;gBACR,IAA0B;YAC9B,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAClD,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACxB,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;aACrC;iBAAM;gBACL,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvB,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;aACzD;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC3C;QAED,KAAK,mBAAmB,CAAC,eAAe,EAAE;YACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBACjD,OAAO,KAAK,CAAC;aACd;;kBACK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;;kBACtB,IAAI,GAAG,MAAM,CAAC,OAAO;;kBACrB,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAEzC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC3C;QAED,KAAK,mBAAmB,CAAC,KAAK,EAAE;YAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;SAClE;QAED,KAAK,mBAAmB,CAAC,MAAM,EAAE;;kBACzB,QAAQ,GAAG;gBACf,YAAY,EAAE,MAAM,CAAC,OAAO;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB;;kBAEK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;;kBACtB,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI;;kBACzC,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAE/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC3C;QAED,KAAK,mBAAmB,CAAC,WAAW,EAAE;;kBAC9B,QAAQ,GAAG,MAAM,CAAC,OAAO;;;kBAEzB,IAAI,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;;kBAC5D,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK;mBAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;mBAC9E,KAAK,CAAC,IAAI,CAAC,IAAI;;kBACd,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;YACvE,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;YAE/B,IAAI,QAAQ,CAAC,KAAK,EAAE;;gBAElB,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC3B,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;iBACzC;;gBAGD,IAAI,QAAQ,CAAC,KAAK,YAAY,IAAI,EAAE;oBAClC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;iBACxC;;;aAIF;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC3C;;QAGD,KAAK,mBAAmB,CAAC,YAAY,EAAE;;kBAC/B,QAAQ,GAAG;gBACf,aAAa,EAAE,MAAM,CAAC,OAAO;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB;;kBAEK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;;kBACtB,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI;;kBAC9D,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAC7D,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAE/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC3C;QAED,KAAK,mBAAmB,CAAC,YAAY,EAAE;YACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,KAAK,mBAAmB,CAAC,YAAY,EAAE;YACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,KAAK,mBAAmB,CAAC,eAAe,EAAE;YACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,UAAU,EAAE,MAAM,CAAC,OAAO;aAC3B,CAAC,CAAC;SACJ;QACD,KAAK,mBAAmB,CAAC,uBAAuB,EAAE;YAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;gBAC9B,iBAAiB,EAAE,MAAM,CAAC,OAAO;aAClC,CAAC,CAAC;SACJ;QAED;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;;;;;AAED,SAAS,gBAAgB,CAAC,KAAwB;;;UAE1C,aAAa,GAAG,CAAC,KAAK,CAAC,oBAAoB;QAC/C,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa;;;QAGzF,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;IAE9B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;QAC7B,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/D,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/C;QAED,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;;cAC3E,WAAW,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;QAC5C,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE;;YAEjE,WAAW,CAAC,UAAU,CAAC,GAAG,gBAAgB,CACxC,QAAQ,EACR,KAAK,CAAC,gBAAgB,CACvB,CAAC;YACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;KAClD;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;;cACzB,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;QAC/C,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;YAEA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;YACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;KACrD;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;cACxB,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;QAEnD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;YAEA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,EACvB,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,SAAS,CACzF,CAAC;YACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;SAC5D;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;KACzD;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;AAED,SAAS,aAAa,CAAC,KAAwB,EACxB,MAAc;IACnC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;;cACvB,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG;;;;;QAAC,CAAC,KAAK,EAAE,UAAU,KAC9D,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAC/D;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;KACtD;;;UAGK,aAAa,GAAG,KAAK,CAAC,aAAa;;;;QAGrC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;IAE9B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;;cACzB,cAAc,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;QAC/C,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;YAEA,cAAc,CAAC,aAAa,CAAC,GAAG,oBAAoB,CAClD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;YACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;KACrD;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;cACxB,kBAAkB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;QACnD,KACE,IAAI,aAAa,GAAG,CAAC,EACrB,aAAa,GAAG,aAAa,EAC7B,aAAa,EAAE,EACf;;YAEA,kBAAkB,CAAC,aAAa,CAAC,GAAG,mBAAmB,CACrD,QAAQ,EACR,gBAAgB,CAAC,KAAK,CAAC,CACxB,CAAC;YACF,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;KACzD;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;AAED,SAAS,WAAW,CAAC,KAAwB,EACxB,MAAc;;UAC3B,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa;IAChH,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;;cACvB,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG;;;;;QAC7C,CAAC,cAAc,EAAE,UAAU,KACzB,gBAAgB,CAAC,cAAc,EAAE;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa;YACb,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,UAAU;SACX,CAAC,EACL;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;KACpD;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;;cACzB,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG;;;;;QACpD,CAAC,cAAc,EAAE,UAAU,KACzB,kBAAkB,CAAC,cAAc,EAAE;YACjC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa;YACb,UAAU;SACX,CAAC,EACL;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;KAC5D;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;cACxB,oBAAoB,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG;;;;;QACvD,CAAC,cAAc,EAAE,SAAS,KACxB,iBAAiB,CAAC,cAAc,EAAE;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa;YACb,SAAS;SACV,CAAC,EACL;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;KAC3D;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;AAED,SAAS,qBAAqB,CAAC,KAAwB,EAAE,MAAc;;UAC/D,QAAQ,GAAG;QACf,IAAI,EAAE;YACJ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;YACrB,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;SACnC;KACF;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;;;;;;AAED,SAAS,aAAa,CAAC,KAAwB,EAAE,MAAc;IAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;;cACpD,WAAW,GAAG,2BAA2B,CAAC,KAAK,EAAE,CAAC,CAAC;;cACnD,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAEtE,OAAO,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAC9C;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;;;;;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QAEpB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAE1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAE1B,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;AACJ,CAAC;;;;;;;;;;;AAQD,SAAS,WAAW,CAAC,QAAuB,EAAE,OAAa,EAAE,OAAa;;UAClE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ;IAE9D,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;QAC7C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;QAC9C,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;;AAED,SAAS,iBAAiB,CAAC,QAAc,EAAE,OAAa,EAAE,OAAa;IACrE,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/C,OAAO,IAAI,CAAC;KACb;IAED,IAAI,OAAO,IAAI,OAAO,IAAK,OAAO,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE;QACpE,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;AC9ZD,MAOa,iBAAkB,SAAQ,SAA4B;IACjE;;cACQ,WAAW,GAAG,IAAI,eAAe,CAAS;YAC9C,IAAI,EAAE,8BAA8B;SACrC,CAAC;;cACI,KAAK,GAAG,IAAI,SAAS,CACzB,sBAAsB,EACtB,WAAW,EACX,mBAAmB,CACpB;QACD,KAAK,CAAC,WAAW,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;KAChD;;;YAZF,UAAU;;;;;;;;;ACNX;AASA,MAAa,2BAA2B,GAAG,kCAAkC;;AAE7E,MAAa,mBAAmB,GAC9B,OAAO,CAAC,qBAAqB,EAAE;IAC7B,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IACjE,UAAU,CAAC,oBAAoB,EAAE;QAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,2BAA2B,CAAC;KACrC,CAAC;IACF,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC/D,UAAU,CAAC,kBAAkB,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,2BAA2B,CAAC;KACrC,CAAC;IACF,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC;;;;;;ACxBJ,MA0Ba,8BAA+B,SAAQ,6BAA6B;;;;;;;;;;IAW/E,YACE,SAAoB,EACZ,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EACrC,QAA6B,EACrB,gBAAoC;QAE5C,KAAK,EAAE,CAAC;QAPA,YAAO,GAAP,OAAO,CAAoB;QAC3B,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAAY;QACpB,aAAQ,GAAR,QAAQ,CAAqB;QAE7B,qBAAgB,GAAhB,gBAAgB,CAAoB;QAX9C,gBAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC3D,mBAAc,GAAG,MAAM,CAAC;QAExB,UAAK,GAAmB,EAAE,CAAC;QAWzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;KACpE;;;;;IAtBD,IAAI,KAAK,CAAC,KAAW;QACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/B;;;;IAsBD,QAAQ;QACN,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;YAC/D,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM;aACzB,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS;;;QAAC;YACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;gBAE3E,OAAO;aACR;YAED,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;SACpC,EAAC,CAAC;QAEL,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,QAAQ;aACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;aAEjB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;aAExB,WAAW,CAAC,IAAI,CAAC;;aAEjB,gBAAgB,CAAC,IAAI,CAAC;aACtB,6BAA6B,EAAE,CAAC;;;QAInC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;;aAER,MAAM;;;;QAAC,CAAC,KAAU,KAAK,KAAK,CAAC,YAAY,EAAC;;aAE1C,SAAS;;;;QAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CACzD,CAAC;KACH;;;;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9D;;;;IAED,qBAAqB;QACnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;KAChC;;;;;IAED,gBAAgB,CAAC,GAAiB;QAChC,IAAI,CAAC,GAAG,EAAE;YACT,OAAO;SACP;;cAEK,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;QAEnG,IAAI,UAAU,EAAE;YACd,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;;;;IAED,WAAW;QACT,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KACzB;;;YA/GF,SAAS,SAAC;gBACT,QAAQ,EAAE,yBAAyB;gBACnC,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;gBACnD,+rFAAwC;gBACxC,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,0BAA0B;oBACrC,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,UAAU;iBACzB;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aAClC;;;;YAzBgE,SAAS;YAGjE,kBAAkB;YAIlB,iBAAiB;YAPN,UAAU;YAKrB,mBAAmB;YACnB,mBAAmB;YAEnB,kBAAkB;;;;IAyBzB,qDAA2D;;IAC3D,wDAAwB;;IAExB,+CAA2B;;;;;IAGzB,iDAAmC;;;;;IACnC,gDAAiC;;;;;IACjC,kDAA4B;;;;;IAC5B,kDAAqC;;;;;IAErC,0DAA4C;;;;;;;AC5ChD,MAea,qBAAqB;;;;;;;;IA4GhC,YAAmB,OAA2B,EACzB,WAAuB,EACvB,SAAoB,EAC7B,iBAAmC,EACnC,GAA2B;QAJpB,YAAO,GAAP,OAAO,CAAoB;QACzB,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAW;;;;QA1GhC,cAAS,GAAwC,QAAQ,CAAC;;;;;QAK1D,aAAQ,GAAG,OAAO,CAAC;;;;QAInB,iBAAY,GAAG,IAAI,CAAC;;;;QAIpB,cAAS,GAAG,MAAM,CAAC;QAEnB,eAAU,GAAG,IAAI,CAAC;;;;QAkFjB,kBAAa,GAAuB,IAAI,YAAY,EAAE,CAAC;QAEvD,UAAK,GAAmB,EAAE,CAAC;;QAWnC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjD;;;;;IAnGD,IACI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACjC;;;;;IAED,IAAI,MAAM,CAAC,KAAc;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;;;;;;IAmBD,IACI,OAAO,CAAC,KAAW;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE;YACzE,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;IAoED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI;;;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;;;;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD,OAAO;SACR;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SACrD;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SACrD;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/D;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SACjE;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/D;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC3D;QAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACzE;KACF;;;;IAED,eAAe;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,MAAM;;;;QAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,EACxC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS;;;QAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAC,CAAC;KACjC;;;;;;IAMD,IAAI;QACF,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B,OAAO;SACR;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;aACnC,OAAO,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC9D,MAAM,CAAC,8BAA8B,CAAC;aACtC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;aAClB,QAAQ,CAAC,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;aACtC,IAAI,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;;QAGrC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAW;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;SAC5C,EAAC,CACH,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS;;;;QAAC,CAAC,KAAW;YAC7D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb,EAAC,CACH,CAAC;KACH;;;;;;IAMD,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1E;KACF;;;;;;IAMD,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;;;IAKD,SAAS;QACP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;YAC7F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;YACjF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;SAChE,CAAC,CAAC;KACJ;;;;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;SAC5B;KACF;;;YA7QF,SAAS,SAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,QAAQ,EAAE,cAAc;aACzB;;;;YANQ,kBAAkB;YAPA,UAAU;YACR,SAAS;YAAiB,gBAAgB;YAE7C,sBAAsB;;;wBAe7C,KAAK;uBAKL,KAAK;2BAIL,KAAK;wBAIL,KAAK;yBAEL,KAAK;qBAKL,KAAK;sBAaL,MAAM;uBAKN,MAAM;sBAQN,KAAK;uBAYL,KAAK;yBAIL,KAAK;sBAIL,KAAK;sBAIL,KAAK;sBAKL,KAAK;2BAKL,KAAK;4BAKL,KAAK;2BAIL,KAAK;gCAIL,KAAK;4BAIL,MAAM;;;;;;;IAjGP,0CAAmE;;;;;;IAKnE,yCAA4B;;;;;IAI5B,6CAA6B;;;;;IAI7B,0CAA4B;;IAE5B,2CAA2B;;;;;IAkB3B,wCAAqC;;;;;IAKrC,yCAAsC;;IAEtC,yCAAe;;IACf,wCAAkC;;IAClC,2CAA0B;;;;;IAgB1B,yCAA+C;;;;;IAI/C,2CAA6B;;;;;IAI7B,wCAAuB;;;;;IAIvB,wCAAuB;;;;;IAKvB,wCAAuC;;;;;IAKvC,6CAAgC;;;;;IAKhC,8CAA+B;;;;;IAI/B,6CAA8B;;;;;IAI9B,kDAA0D;;;;;IAI1D,8CAAiE;;;;;IAEjE,sCAAqC;;;;;IAErC,4CAAqE;;;;;IACrE,+CAAqE;;IAEzD,wCAAkC;;;;;IAClC,4CAAgC;;;;;IAChC,0CAA6B;;;;;;;AC7H3C,MAIa,wBAAyB,SAAQ,kBAAkB;;;YAD/D,UAAU;;;;;;;ACHX,MAoBa,oCAAqC,SAAQ,8BAA8B;;;;;;;;;;IAGtF,YACE,SAAoB,EACpB,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EAC7B,QAA6B,EAC7B,mBAAuC;QAEvC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAErF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KAClE;;;YAzBF,SAAS,SAAC;gBACT,QAAQ,EAAE,gCAAgC;gBAC1C,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;gBACnD,+rFAAwC;gBACxC,IAAI,EAAE;oBACJ,SAAS,EAAE,0BAA0B;iBACtC;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aAClC;;;;YAnBkD,SAAS;YAInD,kBAAkB;YAElB,iBAAiB;YANN,UAAU;YAGrB,mBAAmB;YAEnB,mBAAmB;YAGnB,kBAAkB;;;;;;;ACR3B,MAkBa,2BAA2B;;;;;;;;IAoDtC,YACS,OAAiC,EAChC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B;QAJpB,YAAO,GAAP,OAAO,CAA0B;QAChC,gBAAW,GAAX,WAAW,CAAY;;;;QATvB,kBAAa,GAAuB,IAAI,YAAY,EAAE,CAAC;QAEvD,UAAK,GAAmB,EAAE,CAAC;;QAanC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;KACH;;;;;;IA7DD,IACI,OAAO,CAAC,KAAW;QACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;IAwDD,QAAQ;QACN,IAAI,CAAC,SAAS,EAAE,CAAC;;QAGjB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAW;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;SAC5C,EAAC,CACH,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS;;;;QAAC,CAAC,KAAW;YAC7D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,EAAC,CACH,CAAC;KACH;;;;;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD,OAAO;SACR;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAChE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;SACpD;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;;;;;IAKD,SAAS;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;YAC7F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;YACjF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;SAC/E,CAAC,CAAC;QAGH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;aACnC,OAAO,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC9D,MAAM,CAAC,oCAAoC,CAAC;aAC5C,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aACpB,IAAI,EAAE,CAAC;KACX;;;;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;KAC5B;;;YA1JF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,QAAQ,EAAE,oBAAoB;aAC/B;;;;YAPQ,wBAAwB;YATN,UAAU;YACR,SAAS;YAAiB,gBAAgB;YAG7C,sBAAsB;;;sBAkB7C,KAAK;uBAYL,KAAK;yBAIL,KAAK;sBAIL,KAAK;sBAIL,KAAK;gCAIL,KAAK;2BAIL,KAAK;4BAIL,KAAK;4BAIL,MAAM;;;;IA5CP,+CAAe;;;;;IAgBf,+CAAqD;;;;;IAIrD,iDAA6B;;;;;IAI7B,8CAAuB;;;;;IAIvB,8CAAuB;;;;;IAIvB,wDAA0D;;;;;IAI1D,mDAA8B;;;;;IAI9B,oDAA+B;;;;;IAI/B,oDAAiE;;;;;IAEjE,4CAAqC;;;;;IAErC,kDAA2E;;;;;IAC3E,qDAA2E;;IAGzE,8CAAwC;;;;;IACxC,kDAA+B;;;;;;;ACxEnC,MAIa,6BAA8B,SAAQ,kBAAkB;IADrE;;;QAGI,kBAAa,GAAG,CAAC,CAAC;;;;QAElB,eAAU,GAAG,KAAK,CAAC;KACtB;;;YANA,UAAU;;;;IAGP,sDAAkB;;;;;IAElB,mDAAmB;;;;;;;ACRvB,MA2Ba,mCAAoC,SAAQ,6BAA6B;;;;;;;;;;IAapF,YACE,SAAoB,EACZ,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EACrC,QAA6B,EACrB,gBAAoC;QAE5C,KAAK,EAAE,CAAC;QAPA,YAAO,GAAP,OAAO,CAAoB;QAC3B,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAAY;QACpB,aAAQ,GAAR,QAAQ,CAAqB;QAE7B,qBAAgB,GAAhB,gBAAgB,CAAoB;QAd9C,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QACzC,mBAAc,GAAG,MAAM,CAAC;QAExB,gBAAW,GAAW,EAAE,CAAC;QACzB,gBAAW,GAAW,EAAE,CAAC;QACzB,UAAK,GAAmB,EAAE,CAAC;QAYzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;KACpE;;;;;IA3BD,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACpC;;;;IA2BD,QAAQ;QACN,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;YAC/D,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM;aACzB,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS;;;QAAC;YACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;gBAE3E,OAAO;aACR;YAED,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;SACpC,EAAC,CAAC;QACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC7D,IAAI,CAAC,QAAQ;aACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;;aAGjB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;aAExB,WAAW,CAAC,IAAI,CAAC;;aAEjB,gBAAgB,CAAC,IAAI,CAAC;aACtB,6BAA6B,EAAE,CAAC;;;QAInC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,MAAM;aACR,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,aAAa,EAAC;aACpC,SAAS;;;;QAAC,IAAI;YACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB,EAAC,CACL,CAAC;KACH;;;;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9D;;;;IAED,qBAAqB;QACnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;KAChC;;;;;IAED,gBAAgB,CAAC,GAAiB;QAChC,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;;cACK,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;QAEnG,IAAI,UAAU,EAAE;YACd,OAAO;SACR;;;;;;QAOD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,WAAW;gBACd,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;sBAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;sBAC/B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB;KACF;;;;IAED,WAAW;QACT,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KACzB;;;;;IAED,kBAAkB,CAAC,KAAoB;QACrC,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACvG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KACnE;;;YA5IF,SAAS,SAAC;gBACT,QAAQ,EAAE,8BAA8B;gBACxC,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;gBACnD,+rFAAwC;gBACxC,IAAI,EAAE;oBACJ,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,0BAA0B;oBACrC,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,UAAU;iBACzB;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aAClC;;;;YA1BgE,SAAS;YAGjE,kBAAkB;YAIlB,iBAAiB;YAPN,UAAU;YAKrB,mBAAmB;YACnB,mBAAmB;YAEnB,kBAAkB;;;;IAyBzB,0DAAyC;;IACzC,6DAAwB;;IAExB,0DAAyB;;IACzB,0DAAyB;;IACzB,oDAA2B;;;;;IAIzB,sDAAmC;;;;;IACnC,qDAAiC;;;;;IACjC,uDAA4B;;;;;IAC5B,uDAAqC;;;;;IAErC,+DAA4C;;;;;;;AC/ChD,MAoBa,yCAA0C,SAAQ,mCAAmC;;;;;;;;;;IAGhG,YACE,SAAoB,EACpB,OAA2B,EAC3B,MAAyB,EACzB,QAAoB,EACpB,QAA6B,EAC7B,QAA6B,EAC7B,mBAAuC;QAEvC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAErF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KAClE;;;YAzBF,SAAS,SAAC;gBACT,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;gBACnD,+rFAAwC;gBACxC,IAAI,EAAE;oBACJ,SAAS,EAAE,0BAA0B;iBACtC;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aAClC;;;;YAnBkD,SAAS;YAInD,kBAAkB;YAElB,iBAAiB;YANE,UAAU;YAG7B,mBAAmB;YAEnB,mBAAmB;YAGnB,kBAAkB;;;;;;;ACR3B,MAmBa,gCAAgC;;;;;;;;IAwDzC,YACS,OAAsC,EACrC,WAAuB,EAC/B,SAAoB,EACpB,iBAAmC,EACnC,GAA2B;QAJpB,YAAO,GAAP,OAAO,CAA+B;QACrC,gBAAW,GAAX,WAAW,CAAY;;;;QATvB,kBAAa,GAAyB,IAAI,YAAY,EAAE,CAAC;QAEzD,UAAK,GAAmB,EAAE,CAAC;;QAanC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;KACH;;;;;;IAjED,IACI,OAAO,CAAC,KAAa;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;IA4DD,QAAQ;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;;QAGjB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAa;YACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;SAC5C,EAAC,CACH,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;aACrC,IAAI,CACD,MAAM;;;;QAAC,CAAC,KAAa,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAC7D;aACA,SAAS;;;;QAAC,CAAC,KAAa;YACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,EAAC,CACL,CAAC;KACL;;;;;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD,OAAO;SACR;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/D;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAChE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;QAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACJ;;;;;IAKD,SAAS;QACP,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;YAC7F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;YACjF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;SAC9C,CAAC,CAAC;QAGH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;aACnC,OAAO,CAAC,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC;aAC9D,MAAM,CAAC,yCAAyC,CAAC;aACjD,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aACpB,IAAI,EAAE,CAAC;KACX;;;;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;KAC5B;;;YAxKJ,SAAS,SAAC;gBACP,QAAQ,EAAE,2BAA2B;gBACrC,QAAQ,EAAE,yBAAyB;aACtC;;;;YAPQ,6BAA6B;YAVX,UAAU;YACR,SAAS;YAAiB,gBAAgB;YAG7C,sBAAsB;;;sBAmB3C,KAAK;uBAYL,KAAK;yBAIL,KAAK;sBAIL,KAAK;sBAIL,KAAK;gCAIL,KAAK;2BAIL,KAAK;4BAIL,KAAK;2BAIL,KAAK;4BAIL,MAAM;;;;IAhDP,oDAAiB;;;;;IAgBjB,oDAA0D;;;;;IAI1D,sDAA6B;;;;;IAI7B,mDAAuB;;;;;IAIvB,mDAAuB;;;;;IAIvB,6DAA0D;;;;;IAI1D,wDAAiC;;;;;IAIjC,yDAA+B;;;;;IAI/B,wDAA8B;;;;;IAI9B,yDAAmE;;;;;IAEnE,iDAAqC;;;;;IAErC,uDAAgF;;;;;IAChF,0DAAgF;;IAG9E,mDAA6C;;;;;IAC7C,uDAA+B;;;;;;;AC7ErC;MAiCM,4BAA4B,GAAa;IAC7C,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,0BAA0B,EAAC;IACzD,KAAK,EAAE,IAAI;CACZ;;MAEK,uBAAuB,GAAa;IACxC,OAAO,EAAE,aAAa;;IAEtB,WAAW,EAAE,UAAU;;;IAAC,MAAM,0BAA0B,EAAC;IACzD,KAAK,EAAE,IAAI;CACZ;AAYD,MAAa,0BAA0B;;;;;;;;IAQrC,YAA4B,OAA8B,EACtC,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC;QAJ1B,YAAO,GAAP,OAAO,CAAuB;QACtC,mBAAc,GAAd,cAAc,CAAiB;QAC/B,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAY;QAClB,oBAAe,GAAf,eAAe,CAAmB;QAV9C,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC/B,eAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;;QAEhC,qBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;;QAS5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAW;YAC/C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;YACD,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;SACrC,EAAC,CAAC;;QAGH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS;;;QAAC;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC,EAAC,CAAC;KACJ;;;;;IAED,cAAc,CAAC,KAAK;QAClB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAClD,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;;;;;IAED,cAAc,CAAC,KAAW;;cAClB,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE;cAC3B,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;QAE9F,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;KAC7E;;;;;IAED,QAAQ,CAAC,KAAY;;QAEnB,IAAI,CAAC,UAAU,CAAC,oBAAC,KAAK,CAAC,MAAM,IAAS,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SACrE;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;;;;IAED,QAAQ,CAAC,CAAkB;;cACnB,MAAM,GAAkB,CAAC,CAAC,KAAK;;QAGrC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE;YAC5D,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;;kBACZ,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;aACxC;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBAC1F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEtC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACtD;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEtC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACtD;SACF;KACF;;;;;IAED,yBAAyB,CAAC,EAAc;QACtC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;;;;;IAED,UAAU,CAAC,KAAoB;QAC7B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;aAAM;;kBACC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;;kBAC9C,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,0DAA0D,CAChF,CAAC;aACH;YAED,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAExG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC;SACF;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;KACpC;;;;;IAED,gBAAgB,CAAC,UAAmB;QAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QACrC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAE/E,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KACvE;;;;;IAED,gBAAgB,CAAC,EAAc;QAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;;;IAED,iBAAiB,CAAC,EAAc;QAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;;;;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;;;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SACrE;KACF;;;YAjJF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE;oBACJ,UAAU,EAAE,kBAAkB;oBAC9B,aAAa,EAAE,QAAQ;oBACvB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,UAAU;iBACrB;gBACD,SAAS,EAAE,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;aACnE;;;;YA1BQ,qBAAqB,uBAmCf,IAAI;YAlCV,eAAe;YAxBtB,SAAS;YAJT,UAAU;YAFV,iBAAiB;;;;;;;IA0DjB,+CAAuC;;;;;IACvC,gDAAwC;;;;;IAExC,sDAA8C;;;;;IAC9C,4CAAqB;;;;;IAET,6CAA8C;;;;;IAC9C,oDAAuC;;;;;IACvC,+CAA4B;;;;;IAC5B,4CAA0B;;;;;IAC1B,qDAA0C;;;;;;;ACrExD,MAIa,uBAAwB,SAAQ,kBAAkB;IAD/D;;;QAGE,kBAAa,GAAG,CAAC,CAAC;KACnB;;;YAJA,UAAU;;;;IAGT,gDAAkB;;;;;;;ACNpB,MA2Ba,0BAA0B;;;;;;;;IAwGrC,YAAmB,OAAgC,EAC9B,WAAuB,EACvB,SAAoB,EAC7B,iBAAmC,EACnC,GAA2B;QAJpB,YAAO,GAAP,OAAO,CAAyB;QAC9B,gBAAW,GAAX,WAAW,CAAY;QACvB,cAAS,GAAT,SAAS,CAAW;;;;QArGhC,cAAS,GAAwC,QAAQ,CAAC;;;;;QAK1D,aAAQ,GAAG,OAAO,CAAC;;;;QAInB,iBAAY,GAAG,IAAI,CAAC;;;;QAIpB,cAAS,GAAG,MAAM,CAAC;QAEnB,eAAU,GAAG,IAAI,CAAC;;;;QA6EjB,kBAAa,GAAyB,IAAI,YAAY,EAAE,CAAC;QAEzD,UAAK,GAAmB,EAAE,CAAC;QAUnC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CACjC,WAAW,EACX,iBAAiB,EACjB,SAAS,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjD;;;;;IA7FD,IACI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACjC;;;;;IAED,IAAI,MAAM,CAAC,KAAc;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;;;;;;IAoBD,IACI,OAAO,CAAC,KAAa;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;IA6DD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI;;;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;;;;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YACzD,OAAO;SACR;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SACrD;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SACrD;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SACjE;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/D;QAED,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SAC/D;QAED,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SAC3D;QAED,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;SACzE;KACF;;;;IAED,eAAe;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,MAAM;;;;QAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAC,EACxC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACE,SAAS;;;QAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAC,CAAC;KACnC;;;;;;IAMD,IAAI;QACF,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B,OAAO;SACR;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;aACnC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;aAChE,MAAM,CAAC,mCAAmC,CAAC;aAC3C,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;aAClB,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aACxC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;;QAGvC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAa;YACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;SAC5C,EAAC,CACH,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW;aACrC,IAAI,CACH,MAAM;;;;QAAC,CAAC,KAAa,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAC3D;aACA,SAAS;;;;QAAC,CAAC,KAAa;YACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb,EAAC,CACL,CAAC;KACH;;;;;IAKD,SAAS;QACP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAC1B,EAAE,EACF,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb;YACE,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC/D,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB;YAC7F,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;YACjF,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC9E,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;SAC9C,CACF,CAAC;KACH;;;;;;IAMD,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1E;KACF;;;;;;IAMD,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;;;;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;SAC5B;KACF;;;YAjRF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,QAAQ,EAAE,mBAAmB;aAC9B;;;;YAXQ,uBAAuB;YAX9B,UAAU;YAOV,SAAS;YAET,gBAAgB;YAMT,sBAAsB;;;wBAa5B,KAAK;uBAKL,KAAK;2BAIL,KAAK;wBAIL,KAAK;yBAEL,KAAK;qBAKL,KAAK;sBAaL,MAAM;uBAKN,MAAM;sBASN,KAAK;uBAYL,KAAK;yBAIL,KAAK;sBAIL,KAAK;sBAIL,KAAK;gCAIL,KAAK;2BAIL,KAAK;4BAIL,KAAK;2BAKL,KAAK;4BAIL,MAAM;;;;;;;IA5FP,+CAAmE;;;;;;IAKnE,8CAA4B;;;;;IAI5B,kDAA6B;;;;;IAI7B,+CAA4B;;IAE5B,gDAA2B;;;;;IAkB3B,6CAAqC;;;;;IAKrC,8CAAsC;;IAEtC,8CAAiB;;IACjB,6CAAkC;;IAClC,gDAA0B;;;;;IAiB1B,8CAAoD;;;;;IAIpD,gDAA6B;;;;;IAI7B,6CAAuB;;;;;IAIvB,6CAAuB;;;;;IAIvB,uDAA0D;;;;;IAI1D,kDAAiC;;;;;IAIjC,mDAA+B;;;;;IAK/B,kDAA8B;;;;;IAI9B,mDAAmE;;;;;IAEnE,2CAAqC;;;;;IAErC,iDAA0E;;;;;IAC1E,oDAA0E;;IAE9D,6CAAuC;;;;;IACvC,iDAAgC;;;;;IAChC,+CAA6B;;;;;;;ACrI3C;MAiCM,iCAAiC,GAAa;IAClD,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,+BAA+B,EAAC;IAC9D,KAAK,EAAE,IAAI;CACZ;;MAEK,4BAA4B,GAAa;IAC7C,OAAO,EAAE,aAAa;;IAEtB,WAAW,EAAE,UAAU;;;IAAC,MAAM,+BAA+B,EAAC;IAC9D,KAAK,EAAE,IAAI;CACZ;AAaD,MAAa,+BAA+B;;;;;;;;IAQ1C,YAA4B,OAAmC,EAC3C,cAA+B,EAC/B,SAAoB,EACpB,MAAkB,EAClB,eAAkC;QAJ1B,YAAO,GAAP,OAAO,CAA4B;QAC3C,mBAAc,GAAd,cAAc,CAAiB;QAC/B,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAY;QAClB,oBAAe,GAAf,eAAe,CAAmB;QAV9C,cAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC/B,eAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;;QAEhC,qBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;;QAS5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;;;;QAAC,CAAC,KAAa;YACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;gBACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;YACD,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;SACrC,EAAC,CAAC;;QAGH,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS;;;QAAC;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClC,EAAC,CAAC;KACJ;;;;;IAED,cAAc,CAAC,KAAK;QAClB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAClD,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;;;;;IAED,cAAc,CAAC,IAAY;;YACrB,KAAK,GAAG,EAAE;QACd,IAAI,IAAI,EAAE;;kBACF,KAAK,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;kBAC/B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EACrC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC;;kBACG,GAAG,GAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;kBAC7B,UAAU,CACV,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EACrC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC;YACH,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,EAAE,CAAC;SACjF;QACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KACvE;;;;;IAED,QAAQ,CAAC,KAAY;;QAEnB,IAAI,CAAC,UAAU,CAAC,oBAAC,KAAK,CAAC,MAAM,IAAS,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SACrE;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;;;;IAED,QAAQ,CAAC,CAAkB;;cACnB,MAAM,GAAiB,CAAC,CAAC,KAAK;;cAC9B,MAAM,GAAa,EAAE;QAE3B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/D,OAAO,IAAI,CAAC;SACb;;QAGD,MAAM,CAAC,IAAI;;;;;QAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,CAAC;;cAEvB,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;cAC1C,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC7F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAC5D;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YAC5F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAC5D;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAExB,OAAO,MAAM,CAAC;SACf;KACF;;;;;IAED,yBAAyB,CAAC,EAAc;QACtC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;;;;;IAED,UAAU,CAAC,KAAsB;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;aAAM;;kBACC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;;kBAC9C,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,0DAA0D,CAChF,CAAC;aACH;;gBAEG,MAAM,GAAwB,EAAE;YACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aAC3D;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,GAAG,KAAK,CAAC;aAChB;YAED,IAAI,CAAC,MAAM,GAAG,oBAAC,MAAM;iBAClB,GAAG;;;;YAAC,CAAC,IAAY;gBACd,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC/B,OAAO,UAAU,CACf,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CACzF,CAAC;iBACH;gBAED,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aACjG,EACF;iBACA,GAAG;;;;YAAC,CAAC,IAAU,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAC,CAAC;SAC/D;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;KACpC;;;;;IAED,gBAAgB,CAAC,UAAmB;QAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QACrC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAE/E,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KACvE;;;;;;IAGD,gBAAgB,CAAC,EAAc;QAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;;;;IAGD,iBAAiB,CAAC,EAAc;QAC9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;;;;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;;;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SACrE;KACF;;;YA1LF,SAAS,SAAC;gBACT,QAAQ,EAAE,0BAA0B;gBACpC,IAAI,EAAE;oBACJ,UAAU,EAAE,kBAAkB;oBAC9B,aAAa,EAAE,QAAQ;oBACvB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,UAAU;iBACrB;gBACD,SAAS,EAAE,CAAC,iCAAiC,EAAE,4BAA4B,CAAC;aAC7E;;;;YA3BQ,0BAA0B,uBAoCpB,IAAI;YAnCV,eAAe;YAxBtB,SAAS;YAJT,UAAU;YAFV,iBAAiB;;;;;;;IA2DjB,oDAAuC;;;;;IACvC,qDAAwC;;;;;IAExC,2DAA8C;;;;;IAC9C,iDAAuB;;;;;IAEX,kDAAmD;;;;;IACnD,yDAAuC;;;;;IACvC,oDAA4B;;;;;IAC5B,iDAA0B;;;;;IAC1B,0DAA0C;;;;;;;ACtExD,MAqBa,yBAAyB;;;YAnBrC,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,QAAQ,EAAE;;;;;;;;;;;;;;;GAeT;aACF;;;;;;;ACpBD,MAMa,0BAA0B;;;YAJtC,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE,8DAA8D;aACzE;;;oBAEE,KAAK;;;;IAAN,2CAAuB;;;;;;;ACPzB;;;AAEA,4BAGC;;;IAFC,8BAAc;;IACd,8BAAqB;;AAyBvB,MAAa,0BAA0B;IAtBvC;QAyBY,aAAQ,GAAG,IAAI,YAAY,EAAiB,CAAC;QAEvD,gBAAW,GAAQ,IAAI,CAAC;KAUzB;;;;;IARC,gBAAgB,CAAC,KAAoB;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;;;;QAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,EAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;KACzG;;;YAnCF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,QAAQ,EAAE;;;;;;;;;;;;;;;;;GAiBT;gBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAChD;;;qBAEE,KAAK;4BACL,KAAK;uBACL,MAAM;;;;IAFP,4CAAiC;;IACjC,mDAA+B;;IAC/B,8CAAuD;;IAEvD,iDAAwB;;;;;;;AClC1B,MA2Ba,iCAAiC;;;;;;IAG5C,YACU,OAA2B,EAC3B,MAAkB,EAClB,SAAoB;QAFpB,YAAO,GAAP,OAAO,CAAoB;QAC3B,WAAM,GAAN,MAAM,CAAY;QAClB,cAAS,GAAT,SAAS,CAAW;KACzB;;;;IAEL,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACrE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SACnF;QAED,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;YAC9C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC9B,MAAM;;;;YAAC,CAAC,SAAiB,KAAK,SAAS,EAAC;iBACxC,OAAO;;;;YAAC,CAAC,SAAiB;gBACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aAC/D,EAAC,CAAC;SACN;KACF;;;YApCF,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,IAAI,EAAE;oBACJ,kBAAkB,EAAE,gBAAgB;oBACpC,wBAAwB,EAAE,eAAe;oBACzC,wBAAwB,EAAE,kBAAkB;oBAC5C,+BAA+B,EAAE,yBAAyB;oBAC1D,kBAAkB,EAAE,eAAe;oBACnC,sBAAsB,EAAE,sBAAsB;oBAC9C,oBAAoB,EAAE,oBAAoB;oBAC1C,kBAAkB,EAAE,gBAAgB;iBACrC;gBACD,QAAQ,EAAE,iBAAiB;aAC5B;;;;YAjBQ,kBAAkB;YANzB,UAAU;YAGV,SAAS;;;kBAsBR,KAAK;;;;IAAN,gDAA2B;;;;;IAGzB,oDAAmC;;;;;IACnC,mDAA0B;;;;;IAC1B,sDAA4B;;;;;;;;;;;AC3BhC,kCAOC;;;IANC,yCAAmB;;IACnB,wCAAkB;;IAClB,4CAAwB;;IACxB,6CAAyB;;IACzB,+CAA2B;;IAC3B,gDAA4B;;;;;AAG9B,oCAMC;;;IALC,qCAAW;;IACX,sCAAc;;IACd,2CAAqB;;IACrB,0CAAoB;;IACpB,2CAAqB;;;;;;AAKvB,2BAYC;;;IAXC,2CAA8B;;IAC9B,oCAAuB;;IACvB,iCAAoB;;IACpB,wCAA2B;;IAC3B,sCAAyB;;IACzB,+BAAkB;;IAClB,qCAAuB;;IAEvB,kCAAoB;;IACpB,iCAAmB;;IACnB,gCAAkB;;;;;AAGpB,4BAGC;;;IAFC,6BAAqB;;IACrB,kCAAoB;;;;;AAItB,oCAMC;;;IALC,sCAAuB;;IAEvB,sCAAY;;IACZ,4CAAsB;;IACtB,yCAAmB;;;;;;AAKrB,sCAEC;;;IADC,yCAAkC;;;;;;AAKpC,qCAEC;;;IADC,uCAAiC;;;;;;AASnC,gCAGC;;;IAFC,uCAAqB;;IACrB,kCAAY;;;;;;AAKd,+BAIC;;;IAHC,iCAAe;;IACf,kCAAgB;;IAChB,0CAAwB;;;;;;AAK1B,sCAWC;;;IAVC,yCAAe;;IAEf,6CAAmB;;IACnB,4CAAkB;;IAElB,2CAAiB;;IACjB,6CAAmB;;IACnB,4CAAkB;;IAElB,8CAAoB;;;;;AAGtB,sCAGC;;;IAFC,kDAA0B;;IAC1B,gDAAuB;;;;;AAGzB,0CAGC;;;IAFC,2CAAW;;IACX,8CAAkB;;;;IAOlB,KAAE;IACF,OAAI;;;;;;;AAIN,gCAGC;;;IAFC,sCAAkC;;IAClC,iCAAgB;;;;;AAGlB,oCAGC;;;IAFC,qCAAgB;;IAChB,yCAA+B;;;;;AAGjC,6BAGC;;;IAFC,8BAA4B;;IAC5B,mCAAmB;;;;;;;AClIrB,MAsDa,mCAAmC;IAzChD;QA4CY,eAAU,GAAG,IAAI,YAAY,EAAyB,CAAC;QACvD,eAAU,GAAG,IAAI,YAAY,EAAwB,CAAC;KAWjE;;;;;IATC,KAAK,CAAC,IAAa;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,GAAG,qBAAqB,CAAC,IAAI,GAAG,qBAAqB,CAAC,EAAE,CAC7D,CAAC;KACH;;;;;IAED,IAAI,CAAC,QAA8B;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;;;YAvDF,SAAS,SAAC;gBACT,QAAQ,EAAE,+BAA+B;gBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCT;aACF;;;uBAEE,KAAK;yBAEL,MAAM;yBACN,MAAM;;;;IAHP,uDAAyC;;IAEzC,yDAAiE;;IACjE,yDAAgE;;;;;;;AC1DlE,MA+Da,2BAA2B;;;;IAatC,YAAoB,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QATrC,eAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;QACnD,eAAU,GAAG,IAAI,YAAY,EAAwB,CAAC;QAEtD,aAAQ,GAAG,IAAI,YAAY,EAAgB,CAAC;QAC5C,YAAO,GAAG,IAAI,YAAY,EAAkB,CAAC;QAC7C,gBAAW,GAAG,IAAI,YAAY,EAAiB,CAAC;KAIN;;;;;IAEpD,UAAU,CAAC,KAA4B;;cAC/B,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KACjD;;;;;IAED,cAAc,CAAC,KAA2B;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;;;;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;IAED,UAAU,CAAC,IAAmB;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACjE,OAAO;SACR;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;eACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;eACxB,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAEtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjC,OAAO;SACV;;cAEK,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;;;;QAAC,CAAC,GAAiB;YACnD,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB;kBACpC,CAAC,GAAG,CAAC,UAAU;kBACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SAC1C,EAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;;kBAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;kBACzB,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI;;;;YAAC,CAAC,GAAiB;gBAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB;sBACpC,CAAC,GAAG,CAAC,UAAU;sBACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;aAC1C,EAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpC;KACF;;;;;;IAED,gBAAgB,CAAC,IAAmB,EAAE,SAAkB;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACjE,OAAO;SACR;;cAEK,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;;;;QAAC,CAAC,GAAiB;YACrD,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB;kBACpC,CAAC,GAAG,CAAC,UAAU;kBACf,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SAC1C,EAAC;QAEF,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;KACF;;;;;;IAED,QAAQ,CAAC,IAAkB,EAAE,SAAkB;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1D,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;SACtC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;KACxC;;;YAtIF,SAAS,SAAC;gBACT,QAAQ,EAAE,uBAAuB;;gBAEjC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCT;aACF;;;;YA7CQ,kBAAkB;;;uBA+CxB,KAAK;sBACL,KAAK;yBAEL,MAAM;yBACN,MAAM;uBAEN,MAAM;sBACN,MAAM;0BACN,MAAM;;;;IARP,+CAAyC;;IACzC,8CAA0C;;IAE1C,iDAA6D;;IAC7D,iDAAgE;;IAEhE,+CAAsD;;IACtD,8CAAuD;;IACvD,kDAA0D;;IAE1D,oDAAuB;;;;;IAEX,8CAAmC;;;;;;;AC5EjD,MAqCa,4BAA4B;IA3BzC;QA8BY,eAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;QACnD,eAAU,GAAG,IAAI,YAAY,EAAwB,CAAC;QAEtD,aAAQ,GAAG,IAAI,YAAY,EAAyB,CAAC;QACrD,YAAO,GAAG,IAAI,YAAY,EAAkB,CAAC;KAkBxD;;;;;IAhBC,UAAU,CAAC,KAA4B;;cAC/B,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KAChD;;;;;IAED,SAAS,CAAC,KAA4B;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;IAED,UAAU,CAAC,IAA2B,EAAE,SAAkB;QACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;KACxC;;;;;IAED,cAAc,CAAC,KAA2B;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;;YAnDF,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;GAuBT;aACF;;;uBAEE,KAAK;yBAEL,MAAM;yBACN,MAAM;uBAEN,MAAM;sBACN,MAAM;;;;IANP,gDAA2C;;IAE3C,kDAA6D;;IAC7D,kDAAgE;;IAEhE,gDAA+D;;IAC/D,+CAAuD;;;;;;;MCnB5C,yBAAyB;IAtBtC;QAuBE,SAAI,GAAG,IAAI,CAAC;QACZ,UAAK,GAAG,CAAC,CAAC;QACV,YAAO,GAAG,CAAC,CAAC;KACb;;;YA1BA,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;GAkBT;aACF;;;;IAEC,yCAAY;;IACZ,0CAAU;;IACV,4CAAY;;;;;;;AC5Bd,MAsCa,4BAA4B;IA3BzC;QA8BY,eAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;QACnD,eAAU,GAAG,IAAI,YAAY,EAAwB,CAAC;QAEtD,aAAQ,GAAG,IAAI,YAAY,EAAyB,CAAC;QACrD,YAAO,GAAG,IAAI,YAAY,EAAkB,CAAC;KAkBxD;;;;;IAhBC,UAAU,CAAC,KAA4B;;cAC/B,IAAI,GAAG,qBAAqB,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,EAAE,CAAC,CAAC;KACnE;;;;;IAED,QAAQ,CAAC,IAA2B;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;;;;;;IAED,SAAS,CAAC,IAA2B,EAAE,SAAkB;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;KACxC;;;;;IAED,cAAc,CAAC,KAA2B;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;;YAnDF,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;GAuBT;aACF;;;uBAEE,KAAK;yBAEL,MAAM;yBACN,MAAM;uBAEN,MAAM;sBACN,MAAM;;;;IANP,gDAA0C;;IAE1C,kDAA6D;;IAC7D,kDAAgE;;IAEhE,gDAA+D;;IAC/D,+CAAuD;;;;;;;AC7CzD,MAgFa,kBAAkB;;;;IAC7B,OAAO,OAAO;QACZ,OAAO;YACL,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE;gBACT,sBAAsB;gBACtB,kBAAkB;gBAClB,iBAAiB;gBACjB,mBAAmB;gBACnB,kBAAkB;gBAClB,uBAAuB;gBACvB,wBAAwB;gBACxB,6BAA6B;gBAC7B,mBAAmB;gBACnB,eAAe;aAChB;SACF,CAAC;KACH;;;YA3DF,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,YAAY,EAAE;oBACZ,yBAAyB;oBACzB,0BAA0B;oBAC1B,0BAA0B;oBAC1B,iCAAiC;oBACjC,mCAAmC;oBACnC,2BAA2B;oBAC3B,4BAA4B;oBAC5B,yBAAyB;oBACzB,4BAA4B;oBAC5B,8BAA8B;oBAC9B,qBAAqB;oBACrB,oCAAoC;oBACpC,2BAA2B;oBAC3B,0BAA0B;oBAC1B,mCAAmC;oBACnC,0BAA0B;oBAC1B,yCAAyC;oBACzC,gCAAgC;oBAChC,+BAA+B;iBAChC;gBACD,eAAe,EAAE;oBACf,8BAA8B;oBAC9B,mCAAmC;oBACnC,oCAAoC;oBACpC,yCAAyC;iBAC1C;gBACD,OAAO,EAAE;oBACP,8BAA8B;oBAC9B,qBAAqB;oBACrB,oCAAoC;oBACpC,2BAA2B;oBAC3B,0BAA0B;oBAC1B,mCAAmC;oBACnC,0BAA0B;oBAC1B,yCAAyC;oBACzC,gCAAgC;oBAChC,+BAA+B;iBAChC;aACF;;;;;;;AC/ED,MAEa,aAAa;;;;;;;IACxB,MAAM,CAAC,IAAU,EAAE,MAAc,EAAE,MAAc;QAC/C,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC;CACF;;;;;;MCiBY,wBAAwB;IATrC;QAmCY,kBAAa,GAAuB,IAAI,YAAY,CAAO,SAAS,CAAC,CAAC;QACtE,WAAM,GAAuB,IAAI,YAAY,CAAO,KAAK,CAAC,CAAC;QAC3D,qBAAgB,GAAuB,IAAI,YAAY,CAAO,SAAS,CAAC,CAAC;;QAGnF,YAAO,GAAQ,EAAE,CAAC;;QAElB,cAAS,GAAQ,EAAE,CAAC;;QAEpB,aAAQ,GAAQ,EAAE,CAAC;QAIT,UAAK,GAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,kBAAa,GAAkB,IAAI,aAAa,EAAE,CAAC;KAqU9D;;;;IAzTC,IACI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;;;;IAED,IAAI,UAAU,CAAC,KAAW;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;;;;;IAGD,QAAQ;;QAEN,IAAI,CAAC,QAAQ,GAAI,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAEpE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YACxC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;SAC9B;KACF;;;;;;;IAID,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtD;;;;;;;IAID,2BAA2B,CAAC,UAAe;QACzC,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;kBACnC,aAAa,GAAG,UAAU,CAAC,aAAa;YAC9C,IACE,aAAa;gBACb,aAAa,YAAY,IAAI;gBAC7B,aAAa,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,EAC7D;gBACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7C;SACF;KACF;;;;;;IAED,iBAAiB,CAAC,OAAiB,EAAE,IAAY;QAC/C,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;SAClC;QAED,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;SACpC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;SACnC;KACF;;;;;;IAED,OAAO,CAAC,KAAW,EAAE,KAAW;QAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE;YAC9C,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3D,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC/D,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC/C;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9C;QAED,OAAO,KAAK,CAAC,CAAC;KACf;;;;;;IAED,qBAAqB,CAAC,OAAiB,EAAE,IAAY;QACnD,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;SACtC;QAED,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;SACxC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;SACvC;KACF;;;;IAED,WAAW;QACT,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC/D,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACnE,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE;YACjE,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;KACF;;;;;;IAED,UAAU,CAAC,IAAU,EAAE,MAAc;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7D;;;;;;IAGD,QAAQ,CAAC,UAAe;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACxD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC;YAEnC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;KACd;;;;;;;IAGD,gBAAgB,CAAC,IAAU,EAAE,MAAc;;;cAEnC,UAAU,GAAQ,EAAE;QAC1B,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;QACF,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpD,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1D,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAErE,OAAO,UAAU,CAAC;KACnB;;;;;;;IAGD,KAAK,CAAC,GAAU,EAAE,IAAY;;;cAEtB,MAAM,GAAU,EAAE;QACxB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SAClC;QAED,OAAO,MAAM,CAAC;KACf;;;;;;;;;;;IAQD,WAAW,CAAC,IAAU;;cACd,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE7B,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,KAAK,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAC7B,CAAC;KACH;;;;;;IAED,MAAM,CAAC,IAAU,EAAE,QAAQ,GAAG,IAAI;QAChC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC1C;SACF;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAC5C,CAAC;aACH;SACF;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;;;;IAED,IAAI,CAAC,SAAiB;;;YAEhB,YAAiB;QACrB,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YACjC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE;YACnC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE;YAClC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9B;QAED,IAAI,YAAY,EAAE;;kBACV,IAAI,GACR,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;;kBACjE,KAAK,GACT,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAE3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7C;KACF;;;;;IAED,UAAU,CAAC,UAAkB;;cACrB,SAAS,GAAG,UAAU,IAAI,CAAC;QAEjC,IACE,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC;aACvD,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,EAC1D;YACA,OAAO;SACR;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS,CACpD,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;;;;;IAES,qBAAqB,CAAC,IAAU;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,EAAE,CAAC;SACX;;;cAEK,iBAAiB,GAKnB,IAAI,CAAC,WAAW,CAAC,IAAI;;;;QAAC,CAAC,WAAgB;YACzC,QACE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;gBAC7C,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,EACxC;SACH,GAAE,IAAI,CAAC;QAER,OAAO,iBAAiB,KAAK,SAAS,GAAG,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC;KACvE;;;;;;;IAES,mBAAmB,CAC3B,aAA2C,EAC3C,KAAW;QAEX,IAAI,aAAa,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE;YACtD,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1D,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC1D;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC9D,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5D;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC5D,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3D;QAED,OAAO,SAAS,CAAC;KAClB;;;;;;IAES,UAAU,CAAC,IAAU;;YACzB,cAAc,GAAG,KAAK;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO;;;;YACvB,CAAC,YAA0C;gBACzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;oBACtD,cAAc,GAAG,IAAI,CAAC;iBACvB;aACF,EACF,CAAC;SACH;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,cAAc;gBACZ,cAAc;oBACd,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAChD;QAED,QACE,cAAc;aACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACrD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EACtD;KACH;;;YArXF,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE;;;;;GAKT;aACF;;;qBAEE,KAAK;6BACL,KAAK;0BACL,KAAK;wBACL,KAAK;sBAEL,KAAK;sBACL,KAAK;sBACL,KAAK;sBACL,KAAK;wBACL,KAAK;wBACL,KAAK;0BACL,KAAK;yBACL,KAAK;8BACL,KAAK;6BACL,KAAK;+BACL,KAAK;+BACL,KAAK;kCACL,KAAK;0BACL,KAAK;4BACL,KAAK;2BACL,KAAK;2BACL,KAAK;0BACL,KAAK;uBACL,KAAK;4BAEL,MAAM;qBACN,MAAM;+BACN,MAAM;yBAwBN,KAAK;;;;IAnDN,0CAAwB;;IACxB,kDAAgC;;IAChC,+CAA6B;;IAC7B,6CAA2B;;IAE3B,2CAAuB;;IACvB,2CAAuB;;IACvB,2CAAyB;;IACzB,2CAAyB;;IACzB,6CAA4B;;IAC5B,6CAA2B;;IAC3B,+CAA6B;;IAC7B,8CAA4B;;IAC5B,mDAAiC;;IACjC,kDAAgC;;IAChC,oDAAkC;;IAClC,oDAAmC;;IACnC,uDAAsC;;IACtC,+CAAoE;;IACpE,iDAA+B;;IAC/B,gDAA8B;;IAC9B,gDAAsD;;IACtD,+CAA+B;;IAC/B,4CAAwB;;IAExB,iDAAgF;;IAChF,0CAAqE;;IACrE,oDAAmF;;IAGnF,2CAAkB;;IAElB,6CAAoB;;IAEpB,4CAAmB;;IAEnB,4CAAiB;;;;;IAEjB,yCAAqD;;;;;IACrD,iDAA6D;;;;;IAC7D,+CAA4B;;;;;IAC5B,gDAA6B;;;;;IAC7B,gDAA+B;;;;;IAE/B,yDAA0C;;;;;IAC1C,qDAAsC;;;;;IACtC,2DAA4C;;;;;IAC5C,uDAAwC;;;;;IACxC,0DAA2C;;;;;IAC3C,sDAAuC;;;;;;;ACzEzC,MAGa,gBAAgB;IAD7B;QAEE,WAAM,GAAG,IAAI,CAAC;QACd,mBAAc,GAAG,KAAK,CAAC;QACvB,gBAAW,GAAG,CAAC,CAAC;QAChB,cAAS,GAAG,EAAE,CAAC;QACf,YAAO,GAAG,KAAK,CAAC;QAChB,YAAO,GAAG,MAAM,CAAC;QACjB,cAAS,GAAG,IAAI,CAAC;QACjB,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,MAAM,CAAC;QACrB,eAAU,GAAG,MAAM,CAAC;QACpB,oBAAe,GAAG,IAAI,CAAC;QACvB,mBAAc,GAAG,WAAW,CAAC;QAC7B,qBAAgB,GAAG,MAAM,CAAC;QAC1B,qBAAgB,GAAG,KAAK,CAAC;QACzB,kBAAa,GAAG,CAAC,CAAC;QAClB,iBAAY,GAAG,CAAC,CAAC;QACjB,wBAAmB,GAAG,KAAK,CAAC;KAC7B;;;YAnBA,UAAU;;;;IAET,kCAAc;;IACd,0CAAuB;;IACvB,uCAAgB;;IAChB,qCAAe;;IACf,mCAAgB;;IAChB,mCAAiB;;IACjB,qCAAiB;;IACjB,qCAAiB;;IACjB,uCAAqB;;IACrB,sCAAoB;;IACpB,2CAAuB;;IACvB,0CAA6B;;IAC7B,4CAA0B;;IAC1B,4CAAyB;;IACzB,yCAAkB;;IAClB,wCAAiB;;IACjB,+CAA4B;;;;;;;ACpB9B;AAaA,MAAa,iCAAiC,GAAa;IACzD,OAAO,EAAE,iBAAiB;;IAE1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,mBAAmB,EAAC;IAClD,KAAK,EAAE,IAAI;CACZ;;AAwCD;AACA,MAAa,mBAAmB;;;;IA8E9B,YAAY,MAAwB;;;;QA5E3B,mBAAc,GAAG,KAAK,CAAC;;;;QAYvB,cAAS,GAAG,IAAI,CAAC;QA2C1B,kBAAa,GAAuB,IAAI,YAAY,CAAO,SAAS,CAAC,CAAC;;;;QAItE,qBAAgB,GAAuB,IAAI,YAAY,CACrD,SAAS,CACV,CAAC;;QAMF,aAAQ,GAAQ,QAAQ,CAAC,SAAS,CAAC;;QAEnC,cAAS,GAAQ,QAAQ,CAAC,SAAS,CAAC;QAI1B,SAAI,GAAS,IAAI,IAAI,EAAE,CAAC;QAIhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;;;;IAlCD,IACI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;KACtC;;;;;IAED,IAAI,UAAU,CAAC,KAAW;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;;;;IA6BD,gBAAgB;QACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;;;;;IAED,QAAQ,CAAC,KAAW;QAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;;;;;IAED,eAAe,CAAC,KAAW;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;;IAED,kBAAkB,CAAC,KAAW;QAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;;;;;;IAGD,UAAU,CAAC,KAAU;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YAC3D,OAAO;SACR;QACD,IAAI,KAAK,IAAI,KAAK,YAAY,IAAI,EAAE;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEtC,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;KACpD;;;;;IAED,gBAAgB,CAAC,EAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;;;;;IAED,iBAAiB,CAAC,EAAc;QAC9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;;YA/JF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCP;gBACH,SAAS,EAAE,CAAC,iCAAiC,CAAC;aAC/C;;;;YA9CQ,gBAAgB;;;6BAkDtB,KAAK;uBAEL,KAAK;sBAEL,KAAK;sBAEL,KAAK;sBAEL,KAAK;sBAEL,KAAK;wBAEL,KAAK;wBAEL,KAAK;0BAEL,KAAK;yBAEL,KAAK;8BAEL,KAAK;6BAEL,KAAK;+BAEL,KAAK;0BAEL,KAAK;wBAEL,KAAK;+BAEL,KAAK;kCAEL,KAAK;4BAEL,KAAK;2BAEL,KAAK;0BAEL,KAAK;2BAEL,KAAK;0BAEL,KAAK;yBAGL,KAAK;4BASL,MAAM;+BAIN,MAAM;0BAKN,SAAS,SAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;;;;;IA/DrD,6CAAgC;;;;;IAEhC,uCAAwB;;;;;IAExB,sCAAuB;;;;;IAEvB,sCAAuB;;;;;IAEvB,sCAAyB;;;;;IAEzB,sCAAyB;;;;;IAEzB,wCAA0B;;;;;IAE1B,wCAA2B;;;;;IAE3B,0CAA6B;;;;;IAE7B,yCAA4B;;;;;IAE5B,8CAAiC;;;;;IAEjC,6CAAgC;;;;;IAEhC,+CAAkC;;;;;IAElC,0CAA6B;;;;;IAE7B,wCAA2B;;;;;IAE3B,+CAAmC;;;;;IAEnC,kDAAsC;;;;;IAEtC,4CAA+B;;;;;IAE/B,2CAA8B;;;;;IAE9B,0CAAoE;;;;;IAEpE,2CAAsD;;;;;IAEtD,0CAA+B;;IAY/B,4CACsE;;;;;IAGtE,+CAGE;;IAEF,0CACsC;;IAGtC,uCAAmC;;IAEnC,wCAAoC;;IAEpC,qCAAyB;;;;;IAEzB,mCAAkC;;;;;IAClC,0CAA4B;;;;;;;MChDjB,kBAAkB;;;;IAO7B,YAAY,UAAoC;QANhD,WAAM,GAAU,EAAE,CAAC;QAEnB,SAAI,GAAU,EAAE,CAAC;QACjB,gBAAW,GAAa,EAAE,CAAC;QAIzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;;;;IAED,IAAI,KAAK;QACP,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;;;;;;;;IAMD,QAAQ;;cACA,IAAI,GAAG,IAAI;QAEjB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAExC,IAAI,CAAC,UAAU,CAAC,qBAAqB;;;QAAC;;kBAC9B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;kBACpC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;kBAClC,eAAe,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;kBAC1C,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,MAAM,EAAE;;kBACxD,6BAA6B,GACjC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU;;kBACzC,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAErD,IAAI,6BAA6B,GAAG,CAAC,EAAE;gBACrC,SAAS,CAAC,OAAO,CAAC,CAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC;aACvD;;;kBAGK,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;;kBAC5C,IAAI,GAAU,EAAE;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;;sBACrB,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnE,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;gBACtD,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;gBAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;aACvB;YAED,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CACnC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EACZ,IAAI,CAAC,eAAe,CACrB,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC7D;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;;sBAChB,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC;;sBAC9C,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;gBACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE;oBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAClE,CAAC;iBACH;aACF;SACF,GAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,UAAU,CAAC,iBAAiB;;;;;QAAC,UAChC,KAAW,EACX,KAAW;;kBAEL,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;;kBACrE,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3E,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;SACpC,GAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;;;;;;;IAES,QAAQ,CAAC,SAAe,EAAE,CAAS;;cACrC,KAAK,GAAW,IAAI,KAAK,CAAC,CAAC,CAAC;;YAC9B,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;;YACvC,CAAC,GAAG,CAAC;;YACL,IAAU;QACd,OAAO,CAAC,GAAG,CAAC,EAAE;YACZ,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAClB,OAAO,GAAG,IAAI,IAAI,CAChB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CACnB,CAAC;SACH;QACD,OAAO,KAAK,CAAC;KACd;;;;;;IAES,oBAAoB,CAAC,IAAU;;cACjC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;QAE1C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;cACjE,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE;;QAEhC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACvE;KACH;;;YAlMF,SAAS,SAAC;gBACT,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiET;yBAEC;;;;;;;;;GASD;aAEF;;;;YAlFQ,wBAAwB;;;;IAoF/B,oCAAmB;;IACnB,mCAAc;;IACd,kCAAiB;;IACjB,yCAA2B;;IAC3B,wCAAqC;;;;;;;MCvC1B,oBAAoB;;;;IAM/B,YAAY,UAAoC;QAJhD,SAAI,GAAU,EAAE,CAAC;QAKf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;;;;IAED,IAAI,KAAK;QACP,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;;;;IAED,QAAQ;;cACA,IAAI,GAAG,IAAI;QAEjB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC,qBAAqB;;;QAAC;;kBAC9B,MAAM,GAAU,IAAI,KAAK,CAAC,EAAE,CAAC;;kBAC7B,IAAI,GAAW,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;gBAC9C,IAAU;YAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1D,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;aACzC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SAC/D,GAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,UAAU,CAAC,iBAAiB;;;;;QAAC,UAChC,KAAW,EACX,KAAW;;kBAEL,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;;kBACpD,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1D,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;SACpC,GAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;;;YA3FF,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCT;yBAEC;;;;GAID;aAEF;;;;YA/CQ,wBAAwB;;;;IAiD/B,qCAAc;;IACd,oCAAiB;;IACjB,0CAAqC;;IACrC,uCAAgB;;;;;;;MCHL,mBAAmB;;;;IAK9B,YAAY,UAAoC;QAFhD,SAAI,GAAU,EAAE,CAAC;QAGf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;;;;IAED,IAAI,KAAK;QACP,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;;;;IAED,QAAQ;;cACA,IAAI,GAAG,IAAI;QAEjB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAEhE,IAAI,CAAC,UAAU,CAAC,qBAAqB;;;QAAC;;kBAC9B,KAAK,GAAU,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;;gBAC1C,IAAU;;kBACR,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAEjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACjE,KAAK,CACN,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SAC7D,GAAE,MAAM,CAAC,CAAC;QAEX,IAAI,CAAC,UAAU,CAAC,iBAAiB;;;;;QAAC,UAChC,KAAW,EACX,KAAW;YAEX,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;SAClD,GAAE,MAAM,CAAC,CAAC;QAEX,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;;;;;;IAES,eAAe,CAAC,IAAY;;QAEpC,QACE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EACtE;KACH;;;YAlGF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCT;yBAEC;;;;GAID;aAEF;;;;YAhDQ,wBAAwB;;;;IAkD/B,yCAAqC;;IACrC,oCAAc;;IACd,mCAAiB;;;;;;;ACzDnB,MA6Ba,gBAAgB;;;;IAC3B,OAAO,OAAO;QACZ,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;KACtE;;;YArBF,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;gBACpC,YAAY,EAAE;oBACZ,mBAAmB;oBACnB,wBAAwB;oBACxB,kBAAkB;oBAClB,oBAAoB;oBACpB,mBAAmB;iBACpB;gBACD,OAAO,EAAE;oBACP,mBAAmB;oBACnB,wBAAwB;oBACxB,kBAAkB;oBAClB,oBAAoB;oBACpB,mBAAmB;iBACpB;gBACD,eAAe,EAAE,CAAC,mBAAmB,CAAC;aACvC;;;;;;;;;;;;;;;"}
|