@mintplayer/ng-bootstrap 15.16.2 → 15.17.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/README.md +7 -7
- package/_bootstrap.scss +63 -63
- package/accordion/index.d.ts +1 -1
- package/accordion/src/accordion/accordion.component.d.ts +10 -10
- package/accordion/src/accordion-tab/accordion-tab.component.d.ts +17 -17
- package/accordion/src/accordion-tab-header/accordion-tab-header.component.d.ts +9 -9
- package/accordion/src/accordion.module.d.ts +10 -10
- package/accordion/src/index.d.ts +4 -4
- package/alert/index.d.ts +1 -1
- package/alert/src/alert/alert.component.d.ts +15 -15
- package/alert/src/alert-close/alert-close.component.d.ts +9 -9
- package/alert/src/alert.module.d.ts +9 -9
- package/alert/src/index.d.ts +3 -3
- package/badge/index.d.ts +1 -1
- package/badge/src/badge.component.d.ts +15 -15
- package/badge/src/badge.module.d.ts +8 -8
- package/badge/src/index.d.ts +2 -2
- package/breadcrumb/index.d.ts +1 -1
- package/breadcrumb/src/breadcrumb/breadcrumb.component.d.ts +8 -8
- package/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.d.ts +9 -9
- package/breadcrumb/src/breadcrumb.module.d.ts +9 -9
- package/breadcrumb/src/index.d.ts +3 -3
- package/button-group/index.d.ts +1 -1
- package/button-group/src/button-group/button-group.component.d.ts +8 -8
- package/button-group/src/button-group.module.d.ts +8 -8
- package/button-group/src/index.d.ts +2 -2
- package/button-type/index.d.ts +1 -1
- package/button-type/src/button-type/button-type.directive.d.ts +9 -9
- package/button-type/src/button-type/button-type.module.d.ts +8 -8
- package/button-type/src/index.d.ts +2 -2
- package/calendar/index.d.ts +1 -1
- package/calendar/src/calendar.component.d.ts +26 -26
- package/calendar/src/calendar.module.d.ts +11 -11
- package/calendar/src/index.d.ts +2 -2
- package/calendar-month/index.d.ts +1 -1
- package/calendar-month/src/index.d.ts +3 -3
- package/calendar-month/src/interfaces/date-day-of-month.d.ts +5 -5
- package/calendar-month/src/interfaces/first-and-last-date.d.ts +4 -4
- package/calendar-month/src/interfaces/index.d.ts +4 -4
- package/calendar-month/src/interfaces/week.d.ts +5 -5
- package/calendar-month/src/interfaces/weekday.d.ts +4 -4
- package/calendar-month/src/pipes/index.d.ts +2 -2
- package/calendar-month/src/pipes/month-name/index.d.ts +2 -2
- package/calendar-month/src/pipes/month-name/month-name.module.d.ts +8 -8
- package/calendar-month/src/pipes/month-name/month-name.pipe.d.ts +7 -7
- package/calendar-month/src/pipes/weekday-name/index.d.ts +2 -2
- package/calendar-month/src/pipes/weekday-name/weekday-name.module.d.ts +8 -8
- package/calendar-month/src/pipes/weekday-name/weekday-name.pipe.d.ts +7 -7
- package/calendar-month/src/service/calendar-month.service.d.ts +18 -18
- package/card/index.d.ts +1 -1
- package/card/src/card/card.component.d.ts +5 -5
- package/card/src/card-header/card-header.component.d.ts +5 -5
- package/card/src/card.module.d.ts +9 -9
- package/card/src/index.d.ts +3 -3
- package/carousel/index.d.ts +1 -1
- package/carousel/src/carousel/carousel.component.d.ts +25 -26
- package/carousel/src/carousel-image/carousel-image.directive.d.ts +10 -9
- package/carousel/src/carousel.module.d.ts +11 -10
- package/carousel/src/index.d.ts +3 -3
- package/close/index.d.ts +1 -1
- package/close/src/close.component.d.ts +10 -10
- package/close/src/close.module.d.ts +8 -8
- package/close/src/index.d.ts +2 -2
- package/code-snippet/index.d.ts +1 -1
- package/code-snippet/src/code-snippet.component.d.ts +14 -14
- package/code-snippet/src/code-snippet.module.d.ts +11 -11
- package/code-snippet/src/index.d.ts +2 -2
- package/context-menu/index.d.ts +1 -1
- package/context-menu/src/context-menu.directive.d.ts +18 -18
- package/context-menu/src/context-menu.module.d.ts +10 -10
- package/context-menu/src/index.d.ts +2 -2
- package/copy/index.d.ts +1 -1
- package/copy/src/copy.directive.d.ts +11 -11
- package/copy/src/copy.module.d.ts +8 -8
- package/copy/src/index.d.ts +2 -2
- package/datatable/index.d.ts +1 -1
- package/datatable/src/datatable/datatable.component.d.ts +19 -19
- package/datatable/src/datatable-column/datatable-column-metadata.d.ts +4 -4
- package/datatable/src/datatable-column/datatable-column.directive.d.ts +10 -10
- package/datatable/src/datatable-column/index.d.ts +2 -2
- package/datatable/src/datatable-settings.d.ts +15 -15
- package/datatable/src/datatable.module.d.ts +13 -13
- package/datatable/src/index.d.ts +5 -5
- package/datatable/src/row-template/row-template.directive.d.ts +9 -9
- package/datepicker/index.d.ts +1 -1
- package/datepicker/src/datepicker.component.d.ts +16 -16
- package/datepicker/src/datepicker.module.d.ts +12 -12
- package/datepicker/src/index.d.ts +2 -2
- package/dropdown/index.d.ts +1 -1
- package/dropdown/src/dropdown/dropdown.directive.d.ts +23 -23
- package/dropdown/src/dropdown-menu/dropdown-menu.directive.d.ts +23 -23
- package/dropdown/src/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -11
- package/dropdown/src/dropdown.module.d.ts +13 -13
- package/dropdown/src/index.d.ts +4 -4
- package/dropdown-divider/index.d.ts +1 -0
- package/dropdown-divider/src/dropdown-divider.directive.d.ts +6 -0
- package/dropdown-divider/src/dropdown-divider.module.d.ts +8 -0
- package/dropdown-divider/src/index.d.ts +2 -0
- package/dropdown-menu/index.d.ts +1 -1
- package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +7 -7
- package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +14 -14
- package/dropdown-menu/src/dropdown-menu.module.d.ts +10 -9
- package/dropdown-menu/src/index.d.ts +3 -3
- package/enhanced-paste/index.d.ts +1 -1
- package/enhanced-paste/src/directive/enhanced-paste.directive.d.ts +14 -14
- package/enhanced-paste/src/enhanced-paste.module.d.ts +8 -8
- package/enhanced-paste/src/index.d.ts +3 -3
- package/enhanced-paste/src/interfaces/number-overflow.d.ts +5 -5
- package/enum/index.d.ts +1 -1
- package/enum/src/index.d.ts +2 -2
- package/enum/src/interfaces/enum-item.d.ts +4 -4
- package/enum/src/interfaces/index.d.ts +1 -1
- package/enum/src/service/enum.service.d.ts +9 -9
- package/esm2020/accordion/index.mjs +1 -1
- package/esm2020/accordion/mintplayer-ng-bootstrap-accordion.mjs +4 -4
- package/esm2020/accordion/src/accordion/accordion.component.mjs +21 -21
- package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +63 -63
- package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +20 -20
- package/esm2020/accordion/src/accordion.module.mjs +34 -34
- package/esm2020/accordion/src/index.mjs +5 -5
- package/esm2020/alert/index.mjs +2 -2
- package/esm2020/alert/mintplayer-ng-bootstrap-alert.mjs +4 -4
- package/esm2020/alert/src/alert/alert.component.mjs +41 -41
- package/esm2020/alert/src/alert-close/alert-close.component.mjs +20 -20
- package/esm2020/alert/src/alert.module.mjs +27 -27
- package/esm2020/alert/src/index.mjs +4 -4
- package/esm2020/badge/index.mjs +2 -2
- package/esm2020/badge/mintplayer-ng-bootstrap-badge.mjs +4 -4
- package/esm2020/badge/src/badge.component.mjs +30 -30
- package/esm2020/badge/src/badge.module.mjs +18 -18
- package/esm2020/badge/src/index.mjs +3 -3
- package/esm2020/breadcrumb/index.mjs +2 -2
- package/esm2020/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +4 -4
- package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +13 -13
- package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +18 -18
- package/esm2020/breadcrumb/src/breadcrumb.module.mjs +19 -19
- package/esm2020/breadcrumb/src/index.mjs +4 -4
- package/esm2020/button-group/index.mjs +2 -2
- package/esm2020/button-group/mintplayer-ng-bootstrap-button-group.mjs +4 -4
- package/esm2020/button-group/src/button-group/button-group.component.mjs +13 -13
- package/esm2020/button-group/src/button-group.module.mjs +18 -18
- package/esm2020/button-group/src/index.mjs +3 -3
- package/esm2020/button-type/index.mjs +2 -2
- package/esm2020/button-type/mintplayer-ng-bootstrap-button-type.mjs +4 -4
- package/esm2020/button-type/src/button-type/button-type.directive.mjs +30 -30
- package/esm2020/button-type/src/button-type/button-type.module.mjs +24 -24
- package/esm2020/button-type/src/index.mjs +3 -3
- package/esm2020/calendar/index.mjs +2 -2
- package/esm2020/calendar/mintplayer-ng-bootstrap-calendar.mjs +4 -4
- package/esm2020/calendar/src/calendar.component.mjs +105 -105
- package/esm2020/calendar/src/calendar.module.mjs +39 -39
- package/esm2020/calendar/src/index.mjs +3 -3
- package/esm2020/calendar-month/index.mjs +2 -2
- package/esm2020/calendar-month/mintplayer-ng-bootstrap-calendar-month.mjs +4 -4
- package/esm2020/calendar-month/src/index.mjs +4 -4
- package/esm2020/calendar-month/src/interfaces/date-day-of-month.mjs +2 -2
- package/esm2020/calendar-month/src/interfaces/first-and-last-date.mjs +2 -2
- package/esm2020/calendar-month/src/interfaces/index.mjs +5 -5
- package/esm2020/calendar-month/src/interfaces/week.mjs +2 -2
- package/esm2020/calendar-month/src/interfaces/weekday.mjs +2 -2
- package/esm2020/calendar-month/src/pipes/index.mjs +3 -3
- package/esm2020/calendar-month/src/pipes/month-name/index.mjs +3 -3
- package/esm2020/calendar-month/src/pipes/month-name/month-name.module.mjs +24 -24
- package/esm2020/calendar-month/src/pipes/month-name/month-name.pipe.mjs +21 -21
- package/esm2020/calendar-month/src/pipes/weekday-name/index.mjs +3 -3
- package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +24 -24
- package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +16 -16
- package/esm2020/calendar-month/src/service/calendar-month.service.mjs +94 -94
- package/esm2020/card/index.mjs +2 -2
- package/esm2020/card/mintplayer-ng-bootstrap-card.mjs +4 -4
- package/esm2020/card/src/card/card.component.mjs +11 -11
- package/esm2020/card/src/card-header/card-header.component.mjs +11 -11
- package/esm2020/card/src/card.module.mjs +27 -27
- package/esm2020/card/src/index.mjs +4 -4
- package/esm2020/carousel/index.mjs +2 -2
- package/esm2020/carousel/mintplayer-ng-bootstrap-carousel.mjs +4 -4
- package/esm2020/carousel/src/carousel/carousel.component.mjs +107 -109
- package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +21 -17
- package/esm2020/carousel/src/carousel.module.mjs +37 -33
- package/esm2020/carousel/src/index.mjs +4 -4
- package/esm2020/close/index.mjs +2 -2
- package/esm2020/close/mintplayer-ng-bootstrap-close.mjs +4 -4
- package/esm2020/close/src/close.component.mjs +21 -21
- package/esm2020/close/src/close.module.mjs +18 -18
- package/esm2020/close/src/index.mjs +3 -3
- package/esm2020/code-snippet/index.mjs +2 -2
- package/esm2020/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +4 -4
- package/esm2020/code-snippet/src/code-snippet.component.mjs +34 -34
- package/esm2020/code-snippet/src/code-snippet.module.mjs +36 -36
- package/esm2020/code-snippet/src/index.mjs +3 -3
- package/esm2020/context-menu/index.mjs +2 -2
- package/esm2020/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +4 -4
- package/esm2020/context-menu/src/context-menu.directive.mjs +84 -84
- package/esm2020/context-menu/src/context-menu.module.mjs +34 -34
- package/esm2020/context-menu/src/index.mjs +3 -3
- package/esm2020/copy/index.mjs +2 -2
- package/esm2020/copy/mintplayer-ng-bootstrap-copy.mjs +4 -4
- package/esm2020/copy/src/copy.directive.mjs +45 -45
- package/esm2020/copy/src/copy.module.mjs +24 -24
- package/esm2020/copy/src/index.mjs +3 -3
- package/esm2020/datatable/index.mjs +2 -2
- package/esm2020/datatable/mintplayer-ng-bootstrap-datatable.mjs +4 -4
- package/esm2020/datatable/src/datatable/datatable.component.mjs +57 -57
- package/esm2020/datatable/src/datatable-column/datatable-column-metadata.mjs +2 -2
- package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +19 -19
- package/esm2020/datatable/src/datatable-column/index.mjs +3 -3
- package/esm2020/datatable/src/datatable-settings.mjs +37 -37
- package/esm2020/datatable/src/datatable.module.mjs +46 -46
- package/esm2020/datatable/src/index.mjs +6 -6
- package/esm2020/datatable/src/row-template/row-template.directive.mjs +19 -19
- package/esm2020/datepicker/index.mjs +2 -2
- package/esm2020/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +4 -4
- package/esm2020/datepicker/src/datepicker.component.mjs +49 -49
- package/esm2020/datepicker/src/datepicker.module.mjs +40 -40
- package/esm2020/datepicker/src/index.mjs +3 -3
- package/esm2020/dropdown/index.mjs +2 -2
- package/esm2020/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +4 -4
- package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +68 -68
- package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +114 -114
- package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +31 -31
- package/esm2020/dropdown/src/dropdown.module.mjs +43 -43
- package/esm2020/dropdown/src/index.mjs +5 -5
- package/esm2020/dropdown-divider/index.mjs +2 -0
- package/esm2020/dropdown-divider/mintplayer-ng-bootstrap-dropdown-divider.mjs +5 -0
- package/esm2020/dropdown-divider/src/dropdown-divider.directive.mjs +19 -0
- package/esm2020/dropdown-divider/src/dropdown-divider.module.mjs +18 -0
- package/esm2020/dropdown-divider/src/index.mjs +3 -0
- package/esm2020/dropdown-menu/index.mjs +2 -2
- package/esm2020/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +4 -4
- package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +19 -19
- package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +42 -42
- package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +26 -19
- package/esm2020/dropdown-menu/src/index.mjs +4 -4
- package/esm2020/enhanced-paste/index.mjs +2 -2
- package/esm2020/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +4 -4
- package/esm2020/enhanced-paste/src/directive/enhanced-paste.directive.mjs +58 -58
- package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +24 -24
- package/esm2020/enhanced-paste/src/index.mjs +4 -4
- package/esm2020/enhanced-paste/src/interfaces/number-overflow.mjs +2 -2
- package/esm2020/enum/index.mjs +2 -2
- package/esm2020/enum/mintplayer-ng-bootstrap-enum.mjs +4 -4
- package/esm2020/enum/src/index.mjs +3 -3
- package/esm2020/enum/src/interfaces/enum-item.mjs +2 -2
- package/esm2020/enum/src/interfaces/index.mjs +1 -1
- package/esm2020/enum/src/service/enum.service.mjs +31 -31
- package/esm2020/file-upload/index.mjs +2 -2
- package/esm2020/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +4 -4
- package/esm2020/file-upload/src/component/file-upload.component.mjs +86 -86
- package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +18 -18
- package/esm2020/file-upload/src/file-upload.mjs +2 -2
- package/esm2020/file-upload/src/file-upload.module.mjs +50 -50
- package/esm2020/file-upload/src/index.mjs +6 -6
- package/esm2020/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +23 -23
- package/esm2020/file-upload/src/pipes/index.mjs +1 -1
- package/esm2020/floating-labels/index.mjs +2 -2
- package/esm2020/floating-labels/mintplayer-ng-bootstrap-floating-labels.mjs +4 -4
- package/esm2020/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +20 -20
- package/esm2020/floating-labels/src/floating-labels/floating-labels.module.mjs +18 -18
- package/esm2020/floating-labels/src/index.mjs +3 -3
- package/esm2020/for/index.mjs +2 -2
- package/esm2020/for/mintplayer-ng-bootstrap-for.mjs +4 -4
- package/esm2020/for/src/for.directive.mjs +38 -38
- package/esm2020/for/src/for.module.mjs +24 -24
- package/esm2020/for/src/index.mjs +3 -3
- package/esm2020/form/index.mjs +2 -2
- package/esm2020/form/mintplayer-ng-bootstrap-form.mjs +4 -4
- package/esm2020/form/src/form/form.component.mjs +20 -20
- package/esm2020/form/src/form-control/form-control.directive.mjs +19 -19
- package/esm2020/form/src/form-group/form-group.directive.mjs +19 -19
- package/esm2020/form/src/form.module.mjs +20 -20
- package/esm2020/form/src/index.mjs +5 -5
- package/esm2020/grid/index.mjs +2 -2
- package/esm2020/grid/mintplayer-ng-bootstrap-grid.mjs +4 -4
- package/esm2020/grid/src/component/grid.component.mjs +32 -32
- package/esm2020/grid/src/directives/col-form-label/col-form-label.directive.mjs +19 -19
- package/esm2020/grid/src/directives/column/column.directive.mjs +56 -56
- package/esm2020/grid/src/directives/index.mjs +4 -4
- package/esm2020/grid/src/directives/row/row.directive.mjs +19 -19
- package/esm2020/grid/src/grid.module.mjs +21 -21
- package/esm2020/grid/src/index.mjs +5 -5
- package/esm2020/grid/src/interfaces/column-definition.mjs +2 -2
- package/esm2020/grid/src/interfaces/index.mjs +1 -1
- package/esm2020/has-overlay/index.mjs +1 -1
- package/esm2020/has-overlay/mintplayer-ng-bootstrap-has-overlay.mjs +4 -4
- package/esm2020/has-overlay/src/has-overlay/has-overlay.component.mjs +11 -11
- package/esm2020/has-overlay/src/has-overlay/has-overlay.module.mjs +18 -18
- package/esm2020/has-overlay/src/index.mjs +3 -3
- package/esm2020/icon/index.mjs +3 -3
- package/esm2020/icon/mintplayer-ng-bootstrap-icon.mjs +4 -4
- package/esm2020/icon/src/icon.component.mjs +34 -34
- package/esm2020/icon/src/icon.module.mjs +18 -18
- package/esm2020/index.mjs +5 -5
- package/esm2020/input-group/index.mjs +1 -1
- package/esm2020/input-group/mintplayer-ng-bootstrap-input-group.mjs +4 -4
- package/esm2020/input-group/src/index.mjs +3 -3
- package/esm2020/input-group/src/input-group/input-group.component.mjs +11 -11
- package/esm2020/input-group/src/input-group.module.mjs +18 -18
- package/esm2020/lazy-loading/index.mjs +1 -1
- package/esm2020/lazy-loading/mintplayer-ng-bootstrap-lazy-loading.mjs +4 -4
- package/esm2020/lazy-loading/src/index.mjs +3 -3
- package/esm2020/lazy-loading/src/lazy-load/lazy-load.directive.mjs +32 -32
- package/esm2020/lazy-loading/src/lazy-loading.module.mjs +24 -24
- package/esm2020/lib/enums/color.enum.mjs +15 -15
- package/esm2020/lib/enums/index.mjs +1 -1
- package/esm2020/lib/pipes/font-color/font-color.module.mjs +24 -24
- package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +26 -26
- package/esm2020/lib/pipes/font-color/index.mjs +3 -3
- package/esm2020/lib/pipes/in-list/in-list.module.mjs +24 -24
- package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +16 -16
- package/esm2020/lib/pipes/in-list/index.mjs +3 -3
- package/esm2020/lib/pipes/index.mjs +4 -4
- package/esm2020/lib/pipes/uc-first/index.mjs +3 -3
- package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +24 -24
- package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +16 -16
- package/esm2020/lib/providers/development.provider.mjs +8 -8
- package/esm2020/lib/providers/index.mjs +1 -1
- package/esm2020/lib/types/breakpoint.mjs +1 -1
- package/esm2020/lib/types/index.mjs +5 -5
- package/esm2020/lib/types/position.mjs +1 -1
- package/esm2020/lib/types/size.mjs +1 -1
- package/esm2020/lib/types/view-state.type.mjs +1 -1
- package/esm2020/list-group/index.mjs +2 -2
- package/esm2020/list-group/mintplayer-ng-bootstrap-list-group.mjs +4 -4
- package/esm2020/list-group/src/index.mjs +4 -4
- package/esm2020/list-group/src/list-group/list-group.component.mjs +19 -19
- package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +15 -15
- package/esm2020/list-group/src/list-group.module.mjs +27 -27
- package/esm2020/markdown/index.mjs +6 -6
- package/esm2020/markdown/mintplayer-ng-bootstrap-markdown.mjs +4 -4
- package/esm2020/markdown/src/bold/bold.pipe.mjs +30 -30
- package/esm2020/markdown/src/italic/italic.pipe.mjs +30 -30
- package/esm2020/markdown/src/markdown.module.mjs +39 -39
- package/esm2020/markdown/src/strikethrough/strikethrough.pipe.mjs +30 -30
- package/esm2020/markdown/src/underline/underline.pipe.mjs +30 -30
- package/esm2020/mintplayer-ng-bootstrap.mjs +4 -4
- package/esm2020/modal/index.mjs +2 -2
- package/esm2020/modal/mintplayer-ng-bootstrap-modal.mjs +4 -4
- package/esm2020/modal/src/components/index.mjs +3 -3
- package/esm2020/modal/src/components/modal/modal.component.mjs +21 -21
- package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +83 -83
- package/esm2020/modal/src/directives/index.mjs +6 -6
- package/esm2020/modal/src/directives/modal/modal.directive.mjs +18 -18
- package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +19 -19
- package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +24 -24
- package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +19 -19
- package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +19 -19
- package/esm2020/modal/src/index.mjs +4 -4
- package/esm2020/modal/src/modal.module.mjs +75 -75
- package/esm2020/modal/src/providers/modal-content.provider.mjs +3 -3
- package/esm2020/modal/src/providers/portal-factory.provider.mjs +3 -3
- package/esm2020/multiselect/index.mjs +2 -2
- package/esm2020/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +4 -4
- package/esm2020/multiselect/src/component/multiselect.component.mjs +40 -40
- package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +18 -18
- package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +18 -18
- package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +18 -18
- package/esm2020/multiselect/src/directives/index.mjs +4 -4
- package/esm2020/multiselect/src/index.mjs +4 -4
- package/esm2020/multiselect/src/multiselect.module.mjs +63 -63
- package/esm2020/navbar/index.mjs +2 -2
- package/esm2020/navbar/mintplayer-ng-bootstrap-navbar.mjs +4 -4
- package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +38 -38
- package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +18 -18
- package/esm2020/navbar/src/index.mjs +13 -13
- package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +34 -34
- package/esm2020/navbar/src/navbar/navbar.component.mjs +141 -141
- package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +20 -20
- package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +72 -72
- package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +143 -144
- package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +104 -104
- package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +69 -69
- package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +47 -47
- package/esm2020/navbar/src/navbar.module.mjs +91 -85
- package/esm2020/navigation-lock/index.mjs +2 -2
- package/esm2020/navigation-lock/mintplayer-ng-bootstrap-navigation-lock.mjs +4 -4
- package/esm2020/navigation-lock/src/directive/navigation-lock.directive.mjs +94 -94
- package/esm2020/navigation-lock/src/guard/navigation-lock.guard.mjs +22 -22
- package/esm2020/navigation-lock/src/index.mjs +5 -5
- package/esm2020/navigation-lock/src/interface/has-navigation-lock.mjs +2 -2
- package/esm2020/navigation-lock/src/navigation-lock.module.mjs +28 -28
- package/esm2020/no-noscript/index.mjs +2 -2
- package/esm2020/no-noscript/mintplayer-ng-bootstrap-no-noscript.mjs +4 -4
- package/esm2020/no-noscript/src/index.mjs +3 -3
- package/esm2020/no-noscript/src/no-noscript/no-noscript.directive.mjs +27 -27
- package/esm2020/no-noscript/src/no-noscript.module.mjs +18 -18
- package/esm2020/offcanvas/index.mjs +2 -2
- package/esm2020/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +4 -4
- package/esm2020/offcanvas/src/components/index.mjs +5 -5
- package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +111 -111
- package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +18 -18
- package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +14 -14
- package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +143 -143
- package/esm2020/offcanvas/src/directives/index.mjs +4 -4
- package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +24 -24
- package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +18 -18
- package/esm2020/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +71 -71
- package/esm2020/offcanvas/src/index.mjs +4 -4
- package/esm2020/offcanvas/src/offcanvas.module.mjs +75 -75
- package/esm2020/offcanvas/src/providers/offcanvas-content.provider.mjs +3 -3
- package/esm2020/offcanvas/src/providers/portal-factory.provider.mjs +3 -3
- package/esm2020/ordinal-number/index.mjs +2 -2
- package/esm2020/ordinal-number/mintplayer-ng-bootstrap-ordinal-number.mjs +4 -4
- package/esm2020/ordinal-number/src/index.mjs +3 -3
- package/esm2020/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +29 -29
- package/esm2020/ordinal-number/src/ordinal-number.module.mjs +24 -24
- package/esm2020/pagination/index.mjs +2 -2
- package/esm2020/pagination/mintplayer-ng-bootstrap-pagination.mjs +4 -4
- package/esm2020/pagination/src/component/index.mjs +1 -1
- package/esm2020/pagination/src/component/pagination/pagination.component.mjs +198 -198
- package/esm2020/pagination/src/index.mjs +5 -5
- package/esm2020/pagination/src/interfaces/index.mjs +1 -1
- package/esm2020/pagination/src/interfaces/page-with-selection.mjs +2 -2
- package/esm2020/pagination/src/pagination.module.mjs +24 -24
- package/esm2020/pagination/src/types/index.mjs +1 -1
- package/esm2020/pagination/src/types/page-number.type.mjs +1 -1
- package/esm2020/placeholder/index.mjs +2 -2
- package/esm2020/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +4 -4
- package/esm2020/placeholder/src/index.mjs +4 -4
- package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +26 -26
- package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +46 -46
- package/esm2020/placeholder/src/placeholder.module.mjs +19 -19
- package/esm2020/popover/index.mjs +2 -2
- package/esm2020/popover/mintplayer-ng-bootstrap-popover.mjs +4 -4
- package/esm2020/popover/src/component/popover.component.mjs +57 -57
- package/esm2020/popover/src/directives/index.mjs +4 -4
- package/esm2020/popover/src/directives/popover/popover.directive.mjs +132 -132
- package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +19 -19
- package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +19 -19
- package/esm2020/popover/src/index.mjs +4 -4
- package/esm2020/popover/src/popover.module.mjs +36 -36
- package/esm2020/popover/src/providers/popover-content.provider.mjs +3 -3
- package/esm2020/popover/src/providers/portal-factory.provider.mjs +3 -3
- package/esm2020/progress-bar/index.mjs +2 -2
- package/esm2020/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +4 -4
- package/esm2020/progress-bar/src/index.mjs +4 -4
- package/esm2020/progress-bar/src/progress/progress.component.mjs +31 -31
- package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +121 -121
- package/esm2020/progress-bar/src/progress-bar.module.mjs +29 -29
- package/esm2020/range/index.mjs +2 -2
- package/esm2020/range/mintplayer-ng-bootstrap-range.mjs +4 -4
- package/esm2020/range/src/component/range.component.mjs +25 -25
- package/esm2020/range/src/index.mjs +4 -4
- package/esm2020/range/src/range.module.mjs +19 -19
- package/esm2020/range/src/value-accessor/range-value-accessor.mjs +62 -62
- package/esm2020/rating/index.mjs +2 -2
- package/esm2020/rating/mintplayer-ng-bootstrap-rating.mjs +4 -4
- package/esm2020/rating/src/component/rating.component.mjs +72 -72
- package/esm2020/rating/src/index.mjs +3 -3
- package/esm2020/rating/src/rating.module.mjs +24 -24
- package/esm2020/scheduler/index.mjs +2 -2
- package/esm2020/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +4 -4
- package/esm2020/scheduler/src/components/index.mjs +3 -3
- package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +85 -85
- package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +538 -538
- package/esm2020/scheduler/src/constants/available-scales.mjs +12 -12
- package/esm2020/scheduler/src/constants/index.mjs +1 -1
- package/esm2020/scheduler/src/enums/drag-operation.mjs +8 -8
- package/esm2020/scheduler/src/enums/index.mjs +1 -1
- package/esm2020/scheduler/src/enums/scheduler-mode.mjs +6 -6
- package/esm2020/scheduler/src/index.mjs +6 -6
- package/esm2020/scheduler/src/interfaces/drag-operation.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/index.mjs +6 -6
- package/esm2020/scheduler/src/interfaces/preview-event.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/resource-group.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/resource-or-group.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/resource.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/scheduler-event-part.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/scheduler-event-with-parts.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/scheduler-event.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/scheduler-schale.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/time-slot.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/timeline-options.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/timeline-track.mjs +2 -2
- package/esm2020/scheduler/src/interfaces/week-options.mjs +2 -2
- package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +16 -16
- package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +20 -20
- package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +20 -20
- package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +22 -22
- package/esm2020/scheduler/src/scheduler.module.mjs +45 -45
- package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +65 -65
- package/esm2020/scrollspy/index.mjs +2 -2
- package/esm2020/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +4 -4
- package/esm2020/scrollspy/src/component/scrollspy.component.mjs +90 -90
- package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +16 -16
- package/esm2020/scrollspy/src/index.mjs +5 -5
- package/esm2020/scrollspy/src/scrollspy.module.mjs +29 -29
- package/esm2020/scrollspy/src/services/index.mjs +1 -1
- package/esm2020/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +31 -31
- package/esm2020/select/index.mjs +2 -2
- package/esm2020/select/mintplayer-ng-bootstrap-select.mjs +4 -4
- package/esm2020/select/src/component/select.component.mjs +85 -85
- package/esm2020/select/src/index.mjs +5 -5
- package/esm2020/select/src/select.module.mjs +31 -31
- package/esm2020/select/src/types/index.mjs +1 -1
- package/esm2020/select/src/types/select-size.mjs +1 -1
- package/esm2020/select/src/value-accessors/index.mjs +1 -1
- package/esm2020/select/src/value-accessors/select-value-accessor.mjs +167 -167
- package/esm2020/select2/index.mjs +2 -2
- package/esm2020/select2/mintplayer-ng-bootstrap-select2.mjs +4 -4
- package/esm2020/select2/src/component/select2.component.mjs +85 -85
- package/esm2020/select2/src/directive/item-template.directive.mjs +19 -19
- package/esm2020/select2/src/index.mjs +4 -4
- package/esm2020/select2/src/select2.module.mjs +49 -49
- package/esm2020/snackbar/index.mjs +2 -2
- package/esm2020/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +4 -4
- package/esm2020/snackbar/src/component/snackbar.component.mjs +36 -36
- package/esm2020/snackbar/src/directives/index.mjs +1 -1
- package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +27 -27
- package/esm2020/snackbar/src/index.mjs +6 -6
- package/esm2020/snackbar/src/interfaces/index.mjs +1 -1
- package/esm2020/snackbar/src/interfaces/snackbar-animation-meta.mjs +2 -2
- package/esm2020/snackbar/src/providers/snackbar-content.provider.mjs +3 -3
- package/esm2020/snackbar/src/service/snackbar.service.mjs +45 -45
- package/esm2020/snackbar/src/snackbar.module.mjs +43 -43
- package/esm2020/spinner/index.mjs +2 -2
- package/esm2020/spinner/mintplayer-ng-bootstrap-spinner.mjs +4 -4
- package/esm2020/spinner/src/index.mjs +3 -3
- package/esm2020/spinner/src/spinner.component.mjs +43 -43
- package/esm2020/spinner/src/spinner.module.mjs +18 -18
- package/esm2020/tab-control/index.mjs +2 -2
- package/esm2020/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +4 -4
- package/esm2020/tab-control/src/index.mjs +4 -4
- package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +36 -36
- package/esm2020/tab-control/src/tab-control.module.mjs +29 -29
- package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +23 -23
- package/esm2020/table/index.mjs +2 -2
- package/esm2020/table/mintplayer-ng-bootstrap-table.mjs +4 -4
- package/esm2020/table/src/component/table.component.mjs +47 -47
- package/esm2020/table/src/index.mjs +3 -3
- package/esm2020/table/src/table.module.mjs +18 -18
- package/esm2020/timepicker/index.mjs +2 -2
- package/esm2020/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +4 -4
- package/esm2020/timepicker/src/index.mjs +3 -3
- package/esm2020/timepicker/src/timepicker.component.mjs +117 -117
- package/esm2020/timepicker/src/timepicker.module.mjs +60 -60
- package/esm2020/toast/index.mjs +2 -2
- package/esm2020/toast/mintplayer-ng-bootstrap-toast.mjs +4 -4
- package/esm2020/toast/src/components/index.mjs +5 -5
- package/esm2020/toast/src/components/toast/toast.component.mjs +16 -16
- package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +20 -20
- package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +23 -23
- package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +17 -17
- package/esm2020/toast/src/directives/index.mjs +1 -1
- package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +32 -32
- package/esm2020/toast/src/index.mjs +6 -6
- package/esm2020/toast/src/pipes/add-properties.pipe.mjs +17 -17
- package/esm2020/toast/src/providers/portal-factory.provider.mjs +3 -3
- package/esm2020/toast/src/services/index.mjs +1 -1
- package/esm2020/toast/src/services/toast/toast.service.mjs +56 -56
- package/esm2020/toast/src/toast.module.mjs +77 -77
- package/esm2020/toggle-button/index.mjs +2 -2
- package/esm2020/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +4 -4
- package/esm2020/toggle-button/src/component/toggle-button.component.mjs +158 -158
- package/esm2020/toggle-button/src/directives/index.mjs +1 -1
- package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +19 -19
- package/esm2020/toggle-button/src/index.mjs +6 -6
- package/esm2020/toggle-button/src/toggle-button.module.mjs +34 -34
- package/esm2020/toggle-button/src/types/check-style.mjs +2 -2
- package/esm2020/toggle-button/src/types/index.mjs +2 -2
- package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +108 -108
- package/esm2020/tooltip/index.mjs +2 -2
- package/esm2020/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +4 -4
- package/esm2020/tooltip/src/component/tooltip.component.mjs +38 -38
- package/esm2020/tooltip/src/directive/tooltip.directive.mjs +109 -109
- package/esm2020/tooltip/src/index.mjs +4 -4
- package/esm2020/tooltip/src/providers/tooltip-content.provider.mjs +3 -3
- package/esm2020/tooltip/src/tooltip.module.mjs +35 -35
- package/esm2020/typeahead/index.mjs +2 -2
- package/esm2020/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +4 -4
- package/esm2020/typeahead/src/index.mjs +3 -3
- package/esm2020/typeahead/src/typeahead.component.mjs +82 -82
- package/esm2020/typeahead/src/typeahead.module.mjs +48 -48
- package/esm2020/user-agent/index.mjs +2 -2
- package/esm2020/user-agent/mintplayer-ng-bootstrap-user-agent.mjs +4 -4
- package/esm2020/user-agent/src/index.mjs +4 -4
- package/esm2020/user-agent/src/user-agent/user-agent.directive.mjs +57 -57
- package/esm2020/user-agent/src/user-agent/user-agent.module.mjs +24 -24
- package/esm2020/user-agent/src/user-agent.type.mjs +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +113 -113
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +70 -70
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +37 -37
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +37 -37
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +23 -23
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs +45 -45
- package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs +160 -160
- package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +127 -127
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs +36 -36
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +151 -146
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs +31 -31
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +55 -55
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +107 -107
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +63 -63
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +145 -145
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +71 -71
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +74 -67
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +225 -225
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +72 -72
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-enum.mjs +29 -29
- package/fesm2015/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +147 -147
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs +30 -30
- package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs +54 -54
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-form.mjs +60 -60
- package/fesm2015/mintplayer-ng-bootstrap-form.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +121 -121
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs +21 -21
- package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-icon.mjs +41 -41
- package/fesm2015/mintplayer-ng-bootstrap-icon.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs +21 -21
- package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs +48 -48
- package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +47 -47
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs +128 -128
- package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +227 -227
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +115 -115
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +691 -686
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs +130 -130
- package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs +38 -38
- package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +417 -417
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs +43 -43
- package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +212 -212
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +74 -74
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +231 -231
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +165 -165
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs +89 -89
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +86 -86
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +777 -777
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +147 -147
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs +267 -267
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +126 -126
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +121 -121
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +50 -50
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +70 -70
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs +55 -55
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +149 -149
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +205 -205
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +294 -294
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +161 -161
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +108 -108
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs +74 -74
- package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap.mjs +120 -120
- package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +113 -113
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +70 -70
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +37 -37
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +37 -37
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +23 -23
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs +45 -45
- package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs +157 -157
- package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +127 -127
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs +36 -36
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +149 -144
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs +31 -31
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +55 -55
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +105 -105
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +60 -60
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +145 -145
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +71 -71
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +72 -65
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +220 -220
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +72 -72
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-enum.mjs +29 -29
- package/fesm2020/mintplayer-ng-bootstrap-enum.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +147 -147
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs +28 -28
- package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs +54 -54
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-form.mjs +60 -60
- package/fesm2020/mintplayer-ng-bootstrap-form.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +121 -121
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs +21 -21
- package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-icon.mjs +41 -41
- package/fesm2020/mintplayer-ng-bootstrap-icon.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs +21 -21
- package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs +48 -48
- package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +47 -47
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs +128 -128
- package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +223 -223
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +115 -115
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +680 -675
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs +128 -128
- package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs +36 -36
- package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +413 -413
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs +43 -43
- package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +212 -212
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +74 -74
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +226 -226
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +165 -165
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs +89 -89
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +86 -86
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +777 -777
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +142 -142
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs +265 -265
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +126 -126
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +118 -118
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +50 -50
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +70 -70
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs +55 -55
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +149 -149
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +203 -203
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +294 -294
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +157 -157
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +108 -108
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs +72 -72
- package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap.mjs +120 -120
- package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
- package/file-upload/index.d.ts +1 -1
- package/file-upload/src/component/file-upload.component.d.ts +21 -21
- package/file-upload/src/directive/file-upload-template.directive.d.ts +8 -8
- package/file-upload/src/file-upload.d.ts +4 -4
- package/file-upload/src/file-upload.module.d.ts +14 -14
- package/file-upload/src/index.d.ts +5 -5
- package/file-upload/src/pipes/format-bytes/format-bytes.pipe.d.ts +7 -7
- package/file-upload/src/pipes/index.d.ts +1 -1
- package/floating-labels/index.d.ts +1 -1
- package/floating-labels/src/floating-labels/floating-label/floating-label.component.d.ts +7 -7
- package/floating-labels/src/floating-labels/floating-labels.module.d.ts +8 -8
- package/floating-labels/src/index.d.ts +2 -2
- package/for/index.d.ts +1 -1
- package/for/src/for.directive.d.ts +8 -8
- package/for/src/for.module.d.ts +8 -8
- package/for/src/index.d.ts +2 -2
- package/form/index.d.ts +1 -1
- package/form/src/form/form.component.d.ts +8 -8
- package/form/src/form-control/form-control.directive.d.ts +6 -6
- package/form/src/form-group/form-group.directive.d.ts +6 -6
- package/form/src/form.module.d.ts +10 -10
- package/form/src/index.d.ts +4 -4
- package/grid/index.d.ts +1 -1
- package/grid/src/component/grid.component.d.ts +12 -12
- package/grid/src/directives/col-form-label/col-form-label.directive.d.ts +6 -6
- package/grid/src/directives/column/column.directive.d.ts +13 -13
- package/grid/src/directives/index.d.ts +3 -3
- package/grid/src/directives/row/row.directive.d.ts +6 -6
- package/grid/src/grid.module.d.ts +11 -11
- package/grid/src/index.d.ts +4 -4
- package/grid/src/interfaces/column-definition.d.ts +9 -9
- package/grid/src/interfaces/index.d.ts +1 -1
- package/has-overlay/index.d.ts +1 -1
- package/has-overlay/src/has-overlay/has-overlay.component.d.ts +5 -5
- package/has-overlay/src/has-overlay/has-overlay.module.d.ts +8 -8
- package/has-overlay/src/index.d.ts +2 -2
- package/icon/index.d.ts +2 -2
- package/icon/src/icon.component.d.ts +12 -12
- package/icon/src/icon.module.d.ts +8 -8
- package/index.d.ts +4 -4
- package/input-group/index.d.ts +1 -1
- package/input-group/src/index.d.ts +2 -2
- package/input-group/src/input-group/input-group.component.d.ts +5 -5
- package/input-group/src/input-group.module.d.ts +8 -8
- package/lazy-loading/index.d.ts +1 -1
- package/lazy-loading/src/index.d.ts +2 -2
- package/lazy-loading/src/lazy-load/lazy-load.directive.d.ts +13 -13
- package/lazy-loading/src/lazy-loading.module.d.ts +8 -8
- package/lib/enums/color.enum.d.ts +13 -13
- package/lib/enums/index.d.ts +1 -1
- package/lib/pipes/font-color/font-color.module.d.ts +8 -8
- package/lib/pipes/font-color/font-color.pipe.d.ts +7 -7
- package/lib/pipes/font-color/index.d.ts +2 -2
- package/lib/pipes/in-list/in-list.module.d.ts +8 -8
- package/lib/pipes/in-list/in-list.pipe.d.ts +7 -7
- package/lib/pipes/in-list/index.d.ts +2 -2
- package/lib/pipes/index.d.ts +3 -3
- package/lib/pipes/uc-first/index.d.ts +2 -2
- package/lib/pipes/uc-first/uc-first.module.d.ts +8 -8
- package/lib/pipes/uc-first/uc-first.pipe.d.ts +7 -7
- package/lib/providers/development.provider.d.ts +7 -7
- package/lib/providers/index.d.ts +1 -1
- package/lib/types/breakpoint.d.ts +1 -1
- package/lib/types/index.d.ts +4 -4
- package/lib/types/position.d.ts +1 -1
- package/lib/types/size.d.ts +1 -1
- package/lib/types/view-state.type.d.ts +1 -1
- package/list-group/index.d.ts +1 -1
- package/list-group/src/index.d.ts +3 -3
- package/list-group/src/list-group/list-group.component.d.ts +10 -10
- package/list-group/src/list-group-item/list-group-item.component.d.ts +8 -8
- package/list-group/src/list-group.module.d.ts +9 -9
- package/markdown/index.d.ts +5 -5
- package/markdown/src/bold/bold.pipe.d.ts +10 -10
- package/markdown/src/italic/italic.pipe.d.ts +10 -10
- package/markdown/src/markdown.module.d.ts +11 -11
- package/markdown/src/strikethrough/strikethrough.pipe.d.ts +10 -10
- package/markdown/src/underline/underline.pipe.d.ts +10 -10
- package/modal/index.d.ts +1 -1
- package/modal/src/components/index.d.ts +2 -2
- package/modal/src/components/modal/modal.component.d.ts +9 -9
- package/modal/src/components/modal-host/modal-host.component.d.ts +27 -27
- package/modal/src/directives/index.d.ts +5 -5
- package/modal/src/directives/modal/modal.directive.d.ts +8 -8
- package/modal/src/directives/modal-body/modal-body.directive.d.ts +6 -6
- package/modal/src/directives/modal-close/modal-close.directive.d.ts +9 -9
- package/modal/src/directives/modal-footer/modal-footer.directive.d.ts +6 -6
- package/modal/src/directives/modal-header/modal-header.directive.d.ts +6 -6
- package/modal/src/index.d.ts +3 -3
- package/modal/src/modal.module.d.ts +16 -16
- package/modal/src/providers/modal-content.provider.d.ts +2 -2
- package/modal/src/providers/portal-factory.provider.d.ts +3 -3
- package/multiselect/index.d.ts +1 -1
- package/multiselect/src/component/multiselect.component.d.ts +15 -15
- package/multiselect/src/directives/button-template/button-template.directive.d.ts +8 -8
- package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +8 -8
- package/multiselect/src/directives/header-template/header-template.directive.d.ts +8 -8
- package/multiselect/src/directives/index.d.ts +3 -3
- package/multiselect/src/index.d.ts +3 -3
- package/multiselect/src/multiselect.module.d.ts +17 -17
- package/navbar/index.d.ts +1 -1
- package/navbar/src/dropdown-toggle/dropdown-toggle.directive.d.ts +13 -13
- package/navbar/src/expand-button/expand-button.directive.d.ts +8 -8
- package/navbar/src/index.d.ts +11 -11
- package/navbar/src/nav-link/nav-link.directive.d.ts +10 -10
- package/navbar/src/navbar/navbar.component.d.ts +32 -32
- package/navbar/src/navbar-brand/navbar-brand.component.d.ts +7 -7
- package/navbar/src/navbar-content/navbar-content.directive.d.ts +18 -18
- package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +33 -33
- package/navbar/src/navbar-item/navbar-item.component.d.ts +19 -19
- package/navbar/src/navbar-nav/navbar-nav.component.d.ts +19 -19
- package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +13 -13
- package/navbar/src/navbar.module.d.ts +22 -21
- package/navigation-lock/index.d.ts +1 -1
- package/navigation-lock/src/directive/navigation-lock.directive.d.ts +34 -34
- package/navigation-lock/src/guard/navigation-lock.guard.d.ts +8 -8
- package/navigation-lock/src/index.d.ts +4 -4
- package/navigation-lock/src/interface/has-navigation-lock.d.ts +15 -15
- package/navigation-lock/src/navigation-lock.module.d.ts +9 -9
- package/no-noscript/index.d.ts +1 -1
- package/no-noscript/src/index.d.ts +2 -2
- package/no-noscript/src/no-noscript/no-noscript.directive.d.ts +8 -8
- package/no-noscript/src/no-noscript.module.d.ts +8 -8
- package/offcanvas/index.d.ts +1 -1
- package/offcanvas/src/components/index.d.ts +4 -4
- package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +33 -33
- package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +9 -9
- package/offcanvas/src/components/offcanvas-header/offcanvas-header.component.d.ts +8 -8
- package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +36 -36
- package/offcanvas/src/directives/index.d.ts +3 -3
- package/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.d.ts +9 -9
- package/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.d.ts +8 -8
- package/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.d.ts +16 -16
- package/offcanvas/src/index.d.ts +3 -3
- package/offcanvas/src/offcanvas.module.d.ts +16 -16
- package/offcanvas/src/providers/offcanvas-content.provider.d.ts +2 -2
- package/offcanvas/src/providers/portal-factory.provider.d.ts +3 -3
- package/ordinal-number/index.d.ts +1 -1
- package/ordinal-number/src/index.d.ts +2 -2
- package/ordinal-number/src/ordinal-number/ordinal-number.pipe.d.ts +10 -10
- package/ordinal-number/src/ordinal-number.module.d.ts +8 -8
- package/package.json +12 -3
- package/pagination/index.d.ts +1 -1
- package/pagination/src/component/index.d.ts +1 -1
- package/pagination/src/component/pagination/pagination.component.d.ts +49 -49
- package/pagination/src/index.d.ts +4 -4
- package/pagination/src/interfaces/index.d.ts +1 -1
- package/pagination/src/interfaces/page-with-selection.d.ts +5 -5
- package/pagination/src/pagination.module.d.ts +8 -8
- package/pagination/src/types/index.d.ts +1 -1
- package/pagination/src/types/page-number.type.d.ts +1 -1
- package/placeholder/index.d.ts +1 -1
- package/placeholder/src/index.d.ts +3 -3
- package/placeholder/src/placeholder/placeholder.component.d.ts +11 -11
- package/placeholder/src/placeholder-field/placeholder-field.directive.d.ts +16 -16
- package/placeholder/src/placeholder.module.d.ts +9 -9
- package/popover/index.d.ts +1 -1
- package/popover/src/component/popover.component.d.ts +19 -19
- package/popover/src/directives/index.d.ts +3 -3
- package/popover/src/directives/popover/popover.directive.d.ts +28 -28
- package/popover/src/directives/popover-body/popover-body.directive.d.ts +6 -6
- package/popover/src/directives/popover-header/popover-header.directive.d.ts +6 -6
- package/popover/src/index.d.ts +3 -3
- package/popover/src/popover.module.d.ts +13 -13
- package/popover/src/providers/popover-content.provider.d.ts +2 -2
- package/popover/src/providers/portal-factory.provider.d.ts +3 -3
- package/progress-bar/index.d.ts +1 -1
- package/progress-bar/src/index.d.ts +3 -3
- package/progress-bar/src/progress/progress.component.d.ts +8 -8
- package/progress-bar/src/progress-bar/progress-bar.component.d.ts +31 -31
- package/progress-bar/src/progress-bar.module.d.ts +9 -9
- package/range/index.d.ts +1 -1
- package/range/src/component/range.component.d.ts +11 -11
- package/range/src/index.d.ts +3 -3
- package/range/src/range.module.d.ts +9 -9
- package/range/src/value-accessor/range-value-accessor.d.ts +20 -20
- package/rating/index.d.ts +1 -1
- package/rating/src/component/rating.component.d.ts +22 -22
- package/rating/src/index.d.ts +2 -2
- package/rating/src/rating.module.d.ts +8 -8
- package/scheduler/index.d.ts +1 -1
- package/scheduler/src/components/index.d.ts +2 -2
- package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +26 -26
- package/scheduler/src/components/scheduler/scheduler.component.d.ts +86 -86
- package/scheduler/src/constants/available-scales.d.ts +2 -2
- package/scheduler/src/constants/index.d.ts +1 -1
- package/scheduler/src/enums/drag-operation.d.ts +6 -6
- package/scheduler/src/enums/index.d.ts +1 -1
- package/scheduler/src/enums/scheduler-mode.d.ts +4 -4
- package/scheduler/src/index.d.ts +5 -5
- package/scheduler/src/interfaces/drag-operation.d.ts +7 -7
- package/scheduler/src/interfaces/index.d.ts +5 -5
- package/scheduler/src/interfaces/preview-event.d.ts +4 -4
- package/scheduler/src/interfaces/resource-group.d.ts +5 -5
- package/scheduler/src/interfaces/resource-or-group.d.ts +6 -6
- package/scheduler/src/interfaces/resource.d.ts +5 -5
- package/scheduler/src/interfaces/scheduler-event-part.d.ts +6 -6
- package/scheduler/src/interfaces/scheduler-event-with-parts.d.ts +6 -6
- package/scheduler/src/interfaces/scheduler-event.d.ts +6 -6
- package/scheduler/src/interfaces/scheduler-schale.d.ts +5 -5
- package/scheduler/src/interfaces/scheduler-stamp-with-slots.d.ts +6 -6
- package/scheduler/src/interfaces/time-slot.d.ts +4 -4
- package/scheduler/src/interfaces/timeline-options.d.ts +3 -3
- package/scheduler/src/interfaces/timeline-track.d.ts +5 -5
- package/scheduler/src/interfaces/week-options.d.ts +3 -3
- package/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.d.ts +9 -9
- package/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.d.ts +9 -9
- package/scheduler/src/pipes/date-offset/date-offset.pipe.d.ts +8 -8
- package/scheduler/src/pipes/day-of-week/day-of-week.pipe.d.ts +9 -9
- package/scheduler/src/scheduler.module.d.ts +14 -14
- package/scheduler/src/services/timeline/timeline.service.d.ts +14 -14
- package/scrollspy/index.d.ts +1 -1
- package/scrollspy/src/component/scrollspy.component.d.ts +25 -25
- package/scrollspy/src/directives/scrollspy.directive.d.ts +8 -8
- package/scrollspy/src/index.d.ts +4 -4
- package/scrollspy/src/scrollspy.module.d.ts +9 -9
- package/scrollspy/src/services/index.d.ts +1 -1
- package/scrollspy/src/services/scroll-offset/scroll-offset.service.d.ts +9 -9
- package/select/index.d.ts +1 -1
- package/select/src/component/select.component.d.ts +26 -26
- package/select/src/index.d.ts +4 -4
- package/select/src/select.module.d.ts +9 -9
- package/select/src/types/index.d.ts +1 -1
- package/select/src/types/select-size.d.ts +1 -1
- package/select/src/value-accessors/index.d.ts +1 -1
- package/select/src/value-accessors/select-value-accessor.d.ts +44 -44
- package/select2/index.d.ts +1 -1
- package/select2/src/component/select2.component.d.ts +25 -25
- package/select2/src/directive/item-template.directive.d.ts +9 -9
- package/select2/src/index.d.ts +3 -3
- package/select2/src/select2.module.d.ts +14 -14
- package/snackbar/index.d.ts +1 -1
- package/snackbar/src/component/snackbar.component.d.ts +15 -15
- package/snackbar/src/directives/index.d.ts +1 -1
- package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +11 -11
- package/snackbar/src/index.d.ts +5 -5
- package/snackbar/src/interfaces/index.d.ts +1 -1
- package/snackbar/src/interfaces/snackbar-animation-meta.d.ts +7 -7
- package/snackbar/src/providers/snackbar-content.provider.d.ts +2 -2
- package/snackbar/src/service/snackbar.service.d.ts +13 -13
- package/snackbar/src/snackbar.module.d.ts +11 -11
- package/spinner/index.d.ts +1 -1
- package/spinner/src/index.d.ts +2 -2
- package/spinner/src/spinner.component.d.ts +19 -19
- package/spinner/src/spinner.module.d.ts +8 -8
- package/src/assets/ic-upload-file.svg +7 -7
- package/src/styles/custom.scss +4 -4
- package/src/styles/ngx-highlight-themes/solarized-dark.scss +89 -89
- package/src/styles/utilities/cursor.scss +9 -9
- package/src/styles/utilities/overflow.scss +9 -9
- package/src/styles/utilities/white-space.scss +9 -9
- package/tab-control/index.d.ts +1 -1
- package/tab-control/src/index.d.ts +3 -3
- package/tab-control/src/tab-control/tab-control.component.d.ts +12 -12
- package/tab-control/src/tab-control.module.d.ts +9 -9
- package/tab-control/src/tab-page/tab-page.component.d.ts +11 -11
- package/table/index.d.ts +1 -1
- package/table/src/component/table.component.d.ts +15 -15
- package/table/src/index.d.ts +2 -2
- package/table/src/table.module.d.ts +8 -8
- package/timepicker/index.d.ts +1 -1
- package/timepicker/src/index.d.ts +2 -2
- package/timepicker/src/timepicker.component.d.ts +27 -27
- package/timepicker/src/timepicker.module.d.ts +17 -17
- package/toast/index.d.ts +1 -1
- package/toast/src/components/index.d.ts +4 -4
- package/toast/src/components/toast/toast.component.d.ts +6 -6
- package/toast/src/components/toast-body/toast-body.component.d.ts +6 -6
- package/toast/src/components/toast-container/toast-container.component.d.ts +9 -9
- package/toast/src/components/toast-header/toast-header.component.d.ts +6 -6
- package/toast/src/directives/index.d.ts +1 -1
- package/toast/src/directives/toast-close/toast-close.directive.d.ts +12 -12
- package/toast/src/index.d.ts +5 -5
- package/toast/src/pipes/add-properties.pipe.d.ts +7 -7
- package/toast/src/providers/portal-factory.provider.d.ts +3 -3
- package/toast/src/services/index.d.ts +1 -1
- package/toast/src/services/toast/toast.service.d.ts +22 -22
- package/toast/src/toast.module.d.ts +15 -15
- package/toggle-button/index.d.ts +1 -1
- package/toggle-button/src/component/toggle-button.component.d.ts +37 -37
- package/toggle-button/src/directives/index.d.ts +1 -1
- package/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.d.ts +9 -9
- package/toggle-button/src/index.d.ts +5 -5
- package/toggle-button/src/toggle-button.module.d.ts +10 -10
- package/toggle-button/src/types/check-style.d.ts +1 -1
- package/toggle-button/src/types/index.d.ts +1 -1
- package/toggle-button/src/value-accessor/toggle-button-value-accessor.d.ts +20 -20
- package/tooltip/index.d.ts +1 -1
- package/tooltip/src/component/tooltip.component.d.ts +15 -15
- package/tooltip/src/directive/tooltip.directive.d.ts +20 -20
- package/tooltip/src/index.d.ts +2 -2
- package/tooltip/src/providers/tooltip-content.provider.d.ts +2 -2
- package/tooltip/src/tooltip.module.d.ts +11 -11
- package/typeahead/index.d.ts +1 -1
- package/typeahead/src/index.d.ts +2 -2
- package/typeahead/src/typeahead.component.d.ts +26 -26
- package/typeahead/src/typeahead.module.d.ts +14 -14
- package/user-agent/index.d.ts +1 -1
- package/user-agent/src/index.d.ts +3 -3
- package/user-agent/src/user-agent/user-agent.directive.d.ts +14 -14
- package/user-agent/src/user-agent/user-agent.module.d.ts +8 -8
- package/user-agent/src/user-agent.type.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-scheduler.mjs","sources":["../esm2020/scheduler/src/enums/scheduler-mode.mjs","../esm2020/scheduler/src/enums/drag-operation.mjs","../esm2020/scheduler/src/services/timeline/timeline.service.mjs","../esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs","../esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs","../esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs","../esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs","../esm2020/scheduler/src/components/scheduler/scheduler.component.mjs","../esm2020/scheduler/src/constants/available-scales.mjs","../esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs","../esm2020/scheduler/src/scheduler.module.mjs","../esm2020/scheduler/mintplayer-ng-bootstrap-scheduler.mjs"],"sourcesContent":["export var ESchedulerMode;\n(function (ESchedulerMode) {\n ESchedulerMode[ESchedulerMode[\"week\"] = 0] = \"week\";\n ESchedulerMode[ESchedulerMode[\"timeline\"] = 1] = \"timeline\";\n})(ESchedulerMode || (ESchedulerMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NjaGVkdWxlci9zcmMvZW51bXMvc2NoZWR1bGVyLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQ0osMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVTY2hlZHVsZXJNb2RlIHtcbiAgICB3ZWVrLFxuICAgIHRpbWVsaW5lXG59Il19","export var EDragOperation;\n(function (EDragOperation) {\n EDragOperation[EDragOperation[\"none\"] = 0] = \"none\";\n EDragOperation[EDragOperation[\"createEvent\"] = 1] = \"createEvent\";\n EDragOperation[EDragOperation[\"resizeEvent\"] = 2] = \"resizeEvent\";\n EDragOperation[EDragOperation[\"moveEvent\"] = 3] = \"moveEvent\";\n})(EDragOperation || (EDragOperation = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1vcGVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NjaGVkdWxlci9zcmMvZW51bXMvZHJhZy1vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQ0osaUVBQVcsQ0FBQTtJQUNYLGlFQUFXLENBQUE7SUFDWCw2REFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRURyYWdPcGVyYXRpb24ge1xuICAgIG5vbmUsXG4gICAgY3JlYXRlRXZlbnQsXG4gICAgcmVzaXplRXZlbnQsXG4gICAgbW92ZUV2ZW50LFxufSJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BsTimelineService {\n splitInParts(event) {\n let startTime = event.start;\n const result = [];\n const eventOrNull = 'color' in event ? event : null;\n while (!this.dateEquals(startTime, event.end)) {\n const end = new Date(startTime.getFullYear(), startTime.getMonth(), startTime.getDate() + 1, 0, 0, 0);\n result.push({ start: startTime, end: end, event: eventOrNull });\n startTime = end;\n }\n if (startTime != event.end) {\n result.push({ start: startTime, end: event.end, event: eventOrNull });\n }\n return { event: event, parts: result };\n }\n dateEquals(date1, date2) {\n return (date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate());\n }\n getTimeline(events) {\n const timestamps = this.getTimestamps(events);\n const tracks = [];\n timestamps.forEach((timestamp, tIndex) => {\n const starting = events.filter((e) => e.start === timestamp);\n // const ending = events.filter((e) => e.end === timestamp);\n starting.forEach((startedEvent, eIndex) => {\n const freeTracks = tracks.filter(t => this.trackIsFreeAt(t, startedEvent));\n if (freeTracks.length === 0) {\n tracks.push({ index: tracks.length, events: [startedEvent] });\n }\n else {\n freeTracks[0].events.push(startedEvent);\n }\n });\n });\n return tracks;\n }\n getTimestamps(events) {\n const allTimestamps = events.map(e => [e.start, e.end])\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\n return allTimestamps\n .filter((t, i) => allTimestamps.indexOf(t) === i)\n .sort((t1, t2) => t1 - t2);\n }\n trackIsFreeAt(track, event) {\n if (track.events.every((ev) => (ev.end <= event.start) || (event.end <= ev.start))) {\n return true;\n }\n else {\n return false;\n }\n }\n}\nBsTimelineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsTimelineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsTimelineService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsTimelineService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9zZXJ2aWNlcy90aW1lbGluZS90aW1lbGluZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFFckIsWUFBWSxDQUFDLEtBQW9DO1FBQ3RELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUIsTUFBTSxNQUFNLEdBQXlCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDaEUsU0FBUyxHQUFHLEdBQUcsQ0FBQztTQUNqQjtRQUNELElBQUksU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFF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aUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJldmlld0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcmV2aWV3LWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXdpdGgtcGFydHMnO1xuaW1wb3J0IHsgVGltZWxpbmVUcmFjayB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZWxpbmUtdHJhY2snO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCc1RpbWVsaW5lU2VydmljZSB7XG5cbiAgcHVibGljIHNwbGl0SW5QYXJ0cyhldmVudDogU2NoZWR1bGVyRXZlbnQgfCBQcmV2aWV3RXZlbnQpIHtcbiAgICBsZXQgc3RhcnRUaW1lID0gZXZlbnQuc3RhcnQ7XG4gICAgY29uc3QgcmVzdWx0OiBTY2hlZHVsZXJFdmVudFBhcnRbXSA9IFtdO1xuICAgIGNvbnN0IGV2ZW50T3JOdWxsID0gJ2NvbG9yJyBpbiBldmVudCA/IGV2ZW50IDogbnVsbDtcbiAgICB3aGlsZSAoIXRoaXMuZGF0ZUVxdWFscyhzdGFydFRpbWUsIGV2ZW50LmVuZCkpIHtcbiAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHN0YXJ0VGltZS5nZXRGdWxsWWVhcigpLCBzdGFydFRpbWUuZ2V0TW9udGgoKSwgc3RhcnRUaW1lLmdldERhdGUoKSArIDEsIDAsIDAsIDApO1xuICAgICAgcmVzdWx0LnB1c2goeyBzdGFydDogc3RhcnRUaW1lLCBlbmQ6IGVuZCwgZXZlbnQ6IGV2ZW50T3JOdWxsIH0pO1xuICAgICAgc3RhcnRUaW1lID0gZW5kO1xuICAgIH1cbiAgICBpZiAoc3RhcnRUaW1lICE9IGV2ZW50LmVuZCkge1xuICAgICAgcmVzdWx0LnB1c2goeyBzdGFydDogc3RhcnRUaW1lLCBlbmQ6IGV2ZW50LmVuZCwgZXZlbnQ6IGV2ZW50T3JOdWxsIH0pO1xuICAgIH1cblxuICAgIHJldHVybiA8U2NoZWR1bGVyRXZlbnRXaXRoUGFydHM+eyBldmVudDogZXZlbnQsIHBhcnRzOiByZXN1bHQgfTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBkYXRlRXF1YWxzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICBkYXRlMS5nZXRGdWxsWWVhcigpID09PSBkYXRlMi5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXRlMS5nZXRNb250aCgpID09PSBkYXRlMi5nZXRNb250aCgpICYmXG4gICAgICBkYXRlMS5nZXREYXRlKCkgPT09IGRhdGUyLmdldERhdGUoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZWxpbmUoZXZlbnRzOiBTY2hlZHVsZXJFdmVudFtdKSB7XG4gICAgY29uc3QgdGltZXN0YW1wcyA9IHRoaXMuZ2V0VGltZXN0YW1wcyhldmVudHMpO1xuICAgIGNvbnN0IHRyYWNrczogVGltZWxpbmVUcmFja1tdID0gW107XG5cbiAgICB0aW1lc3RhbXBzLmZvckVhY2goKHRpbWVzdGFtcCwgdEluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdGFydGluZyA9IGV2ZW50cy5maWx0ZXIoKGUpID0+IGUuc3RhcnQgPT09IHRpbWVzdGFtcCk7XG4gICAgICAvLyBjb25zdCBlbmRpbmcgPSBldmVudHMuZmlsdGVyKChlKSA9PiBlLmVuZCA9PT0gdGltZXN0YW1wKTtcblxuICAgICAgc3RhcnRpbmcuZm9yRWFjaCgoc3RhcnRlZEV2ZW50LCBlSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZnJlZVRyYWNrcyA9IHRyYWNrcy5maWx0ZXIodCA9PiB0aGlzLnRyYWNrSXNGcmVlQXQodCwgc3RhcnRlZEV2ZW50KSk7XG4gICAgICAgIGlmIChmcmVlVHJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRyYWNrcy5wdXNoKHsgaW5kZXg6IHRyYWNrcy5sZW5ndGgsIGV2ZW50czogW3N0YXJ0ZWRFdmVudF0gfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnJlZVRyYWNrc1swXS5ldmVudHMucHVzaChzdGFydGVkRXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cmFja3M7XG4gIH1cblxuICBwcml2YXRlIGdldFRpbWVzdGFtcHMoZXZlbnRzOiBTY2hlZHVsZXJFdmVudFtdKSB7XG4gICAgY29uc3QgYWxsVGltZXN0YW1wcyA9IGV2ZW50cy5tYXAoZSA9PiBbZS5zdGFydCwgZS5lbmRdKVxuICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG4gICAgXG4gICAgcmV0dXJuIGFsbFRpbWVzdGFtcHNcbiAgICAgIC5maWx0ZXIoKHQsIGkpID0+IGFsbFRpbWVzdGFtcHMuaW5kZXhPZih0KSA9PT0gaSlcbiAgICAgIC5zb3J0KCh0MSwgdDIpID0+IDxhbnk+dDEgLSA8YW55PnQyKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tJc0ZyZWVBdCh0cmFjazogVGltZWxpbmVUcmFjaywgZXZlbnQ6IFNjaGVkdWxlckV2ZW50KSB7XG4gICAgaWYgKHRyYWNrLmV2ZW50cy5ldmVyeSgoZXYpID0+IChldi5lbmQgPD0gZXZlbnQuc3RhcnQpIHx8IChldmVudC5lbmQgPD0gZXYuc3RhcnQpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxufVxuIl19","import { Component, Input } from '@angular/core';\nimport { BehaviorSubject, filter, map, Subject, take } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@mintplayer/ng-bootstrap/icon\";\nexport class ResourceGroupPresenterComponent {\n constructor() {\n this.level = 0;\n this.resourceOrGroup$ = new BehaviorSubject(null);\n this.timeSlots$ = new BehaviorSubject([]);\n this.isExpanded$ = new BehaviorSubject(false);\n this.destroyed$ = new Subject();\n this.data$ = this.resourceOrGroup$\n .pipe(map((resourceOrGroup) => {\n if (!resourceOrGroup) {\n return null;\n }\n else if ('children' in resourceOrGroup) {\n return {\n resource: null,\n resourceGroup: resourceOrGroup\n };\n }\n else {\n return {\n resource: resourceOrGroup,\n resourceGroup: null\n };\n }\n }))\n .pipe(filter((resourceOrGroup) => !!resourceOrGroup))\n .pipe(map((resourceOrGroup) => resourceOrGroup));\n this.colSpan$ = this.timeSlots$\n .pipe(map(timeSlots => timeSlots\n .map(timeslot => timeslot.slots.length)\n .reduce((sum, current) => sum + current, 0)));\n }\n //#region resourceOrGroup\n get resourceOrGroup() {\n return this.resourceOrGroup$.value;\n }\n set resourceGroup(value) {\n this.resourceOrGroup$.next(value);\n }\n //#endregion\n //#region timeSlots\n get timeSlots() {\n return this.timeSlots$.value;\n }\n set timeSlots(value) {\n this.timeSlots$.next(value);\n }\n //#endregion\n //#region isExpanded\n get isExpanded() {\n return this.isExpanded$.value;\n }\n set isExpanded(value) {\n this.isExpanded$.next(value);\n }\n //#endregion\n toggleExpanded() {\n this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {\n this.isExpanded$.next(!isExpanded);\n });\n }\n ngOnDestroy() {\n this.destroyed$.next(true);\n }\n}\nResourceGroupPresenterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nResourceGroupPresenterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.1.0\", type: ResourceGroupPresenterComponent, selector: \"bs-resource-group-presenter\", inputs: { level: \"level\", resourceGroup: \"resourceGroup\", timeSlots: \"timeSlots\", isExpanded: \"isExpanded\" }, ngImport: i0, template: \"<ng-container *ngIf=\\\"(data$ | async) as data\\\">\\n\\n <!-- Data is a resource group -->\\n <ng-container *ngIf=\\\"data.resourceGroup\\\">\\n <!-- Header -->\\n <tr class=\\\"p-0 cursor-pointer\\\" *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\" [title]=\\\"data.resourceGroup.description\\\">\\n <ng-container *ngIf=\\\"(colSpan$ | async) as colspan\\\">\\n <td class=\\\"p-2 cursor-pointer\\\" [colSpan]=\\\"colspan + 1\\\" (click)=\\\"toggleExpanded()\\\">\\n <span class=\\\"p-2 align-middle position-sticky\\\">\\n <bs-icon [icon]=\\\"'chevron-down'\\\" [style.padding-left.px]=\\\"level * 20\\\" *ngIf=\\\"isExpanded$ | async\\\"></bs-icon>\\n <bs-icon [icon]=\\\"'chevron-right'\\\" [style.padding-left.px]=\\\"level * 20\\\" *ngIf=\\\"(isExpanded$ | async) === false\\\"></bs-icon>\\n {{ data.resourceGroup.description }}\\n </span>\\n </td>\\n </ng-container>\\n </tr>\\n\\n <!-- Subgroups or resources -->\\n <ng-container *ngIf=\\\"isExpanded$ | async\\\">\\n <ng-container *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\">\\n <ng-container *ngFor=\\\"let child of data.resourceGroup.children\\\">\\n <bs-resource-group-presenter [resourceGroup]=\\\"child\\\" [timeSlots]=\\\"timeSlots\\\" [level]=\\\"level + 1\\\"></bs-resource-group-presenter>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n\\n <!-- Data is a resource -->\\n <tr *ngIf=\\\"data.resource\\\" class=\\\"p-0 bordered\\\" [title]=\\\"data.resource.description\\\">\\n <td class=\\\"p-0 bg-white\\\">\\n <div class=\\\"p-2\\\">{{ data.resource.description }}</div>\\n </td>\\n <ng-container *ngFor=\\\"let slots of (timeSlots$ | async)\\\">\\n <td class=\\\"bg-white border-1\\\" *ngFor=\\\"let slot of slots.slots\\\">\\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\\n </td>\\n </ng-container>\\n </tr>\\n</ng-container>\", styles: [\":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i2.BsIconComponent, selector: \"bs-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: ResourceGroupPresenterComponent, selector: \"bs-resource-group-presenter\", inputs: [\"level\", \"resourceGroup\", \"timeSlots\", \"isExpanded\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-resource-group-presenter', template: \"<ng-container *ngIf=\\\"(data$ | async) as data\\\">\\n\\n <!-- Data is a resource group -->\\n <ng-container *ngIf=\\\"data.resourceGroup\\\">\\n <!-- Header -->\\n <tr class=\\\"p-0 cursor-pointer\\\" *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\" [title]=\\\"data.resourceGroup.description\\\">\\n <ng-container *ngIf=\\\"(colSpan$ | async) as colspan\\\">\\n <td class=\\\"p-2 cursor-pointer\\\" [colSpan]=\\\"colspan + 1\\\" (click)=\\\"toggleExpanded()\\\">\\n <span class=\\\"p-2 align-middle position-sticky\\\">\\n <bs-icon [icon]=\\\"'chevron-down'\\\" [style.padding-left.px]=\\\"level * 20\\\" *ngIf=\\\"isExpanded$ | async\\\"></bs-icon>\\n <bs-icon [icon]=\\\"'chevron-right'\\\" [style.padding-left.px]=\\\"level * 20\\\" *ngIf=\\\"(isExpanded$ | async) === false\\\"></bs-icon>\\n {{ data.resourceGroup.description }}\\n </span>\\n </td>\\n </ng-container>\\n </tr>\\n\\n <!-- Subgroups or resources -->\\n <ng-container *ngIf=\\\"isExpanded$ | async\\\">\\n <ng-container *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\">\\n <ng-container *ngFor=\\\"let child of data.resourceGroup.children\\\">\\n <bs-resource-group-presenter [resourceGroup]=\\\"child\\\" [timeSlots]=\\\"timeSlots\\\" [level]=\\\"level + 1\\\"></bs-resource-group-presenter>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n\\n <!-- Data is a resource -->\\n <tr *ngIf=\\\"data.resource\\\" class=\\\"p-0 bordered\\\" [title]=\\\"data.resource.description\\\">\\n <td class=\\\"p-0 bg-white\\\">\\n <div class=\\\"p-2\\\">{{ data.resource.description }}</div>\\n </td>\\n <ng-container *ngFor=\\\"let slots of (timeSlots$ | async)\\\">\\n <td class=\\\"bg-white border-1\\\" *ngFor=\\\"let slot of slots.slots\\\">\\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\\n </td>\\n </ng-container>\\n </tr>\\n</ng-container>\", styles: [\":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\\n\"] }]\n }], ctorParameters: function () { return []; }, propDecorators: { level: [{\n type: Input\n }], resourceGroup: [{\n type: Input\n }], timeSlots: [{\n type: Input\n }], isExpanded: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3Jlc291cmNlLWdyb3VwLXByZXNlbnRlci9yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyL3Jlc291cmNlLWdyb3VwLXByZXNlbnRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBYSxNQUFNLE1BQU0sQ0FBQzs7OztBQVkxRixNQUFNLE9BQU8sK0JBQStCO0lBRTFDO1FBMkJTLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQWtDLElBQUksQ0FBQyxDQUFDO1FBQzlFLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsRUFBRSxDQUFDLENBQUM7UUFDaEUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUdsRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQWhDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCO2FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNLElBQUksVUFBVSxJQUFJLGVBQWUsRUFBRTtnQkFDeEMsT0FBd0I7b0JBQ3RCLFFBQVEsRUFBRSxJQUFJO29CQUNkLGFBQWEsRUFBRSxlQUFlO2lCQUMvQixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBd0I7b0JBQ3RCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixhQUFhLEVBQUUsSUFBSTtpQkFDcEIsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQWtCLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVTthQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUzthQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUN0QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUM1QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBVUQseUJBQXlCO0lBQ3pCLElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNELElBQW9CLGFBQWEsQ0FBQyxLQUFzQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFZO0lBRVosbUJBQW1CO0lBQ25CLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFvQixTQUFTLENBQUMsS0FBZ0M7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFlBQVk7SUFFWixvQkFBb0I7SUFDcEIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQW9CLFVBQVUsQ0FBQyxLQUFjO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxZQUFZO0lBRVosY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7OzRIQXhFVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixpTENiNUMsc2dFQXNDZSxnZUR6QkYsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBTjNDLFNBQVM7K0JBQ0UsNkJBQTZCOzBFQWtDOUIsS0FBSztzQkFBYixLQUFLO2dCQVljLGFBQWE7c0JBQWhDLEtBQUs7Z0JBU2MsU0FBUztzQkFBNUIsS0FBSztnQkFTYyxVQUFVO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc291cmNlLCBSZXNvdXJjZUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZU9yR3JvdXAgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlLW9yLWdyb3VwJztcbmltcG9ydCB7IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItc3RhbXAtd2l0aC1zbG90cyc7XG5pbXBvcnQgeyBUaW1lU2xvdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZS1zbG90JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc291cmNlLWdyb3VwLXByZXNlbnRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc291cmNlLWdyb3VwLXByZXNlbnRlci5jb21wb25lbnQuc2NzcyddLFxuICBcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VHcm91cFByZXNlbnRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRhdGEkID0gdGhpcy5yZXNvdXJjZU9yR3JvdXAkXG4gICAgICAucGlwZShtYXAoKHJlc291cmNlT3JHcm91cCkgPT4ge1xuICAgICAgICBpZiAoIXJlc291cmNlT3JHcm91cCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCdjaGlsZHJlbicgaW4gcmVzb3VyY2VPckdyb3VwKSB7XG4gICAgICAgICAgcmV0dXJuIDxSZXNvdXJjZU9yR3JvdXA+e1xuICAgICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgICAgICByZXNvdXJjZUdyb3VwOiByZXNvdXJjZU9yR3JvdXBcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiA8UmVzb3VyY2VPckdyb3VwPntcbiAgICAgICAgICAgIHJlc291cmNlOiByZXNvdXJjZU9yR3JvdXAsXG4gICAgICAgICAgICByZXNvdXJjZUdyb3VwOiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSkpXG4gICAgICAucGlwZShmaWx0ZXIoKHJlc291cmNlT3JHcm91cCkgPT4gISFyZXNvdXJjZU9yR3JvdXApKVxuICAgICAgLnBpcGUobWFwKChyZXNvdXJjZU9yR3JvdXApID0+IDxSZXNvdXJjZU9yR3JvdXA+cmVzb3VyY2VPckdyb3VwKSk7XG5cbiAgICB0aGlzLmNvbFNwYW4kID0gdGhpcy50aW1lU2xvdHMkXG4gICAgICAucGlwZShtYXAodGltZVNsb3RzID0+IHRpbWVTbG90c1xuICAgICAgICAubWFwKHRpbWVzbG90ID0+IHRpbWVzbG90LnNsb3RzLmxlbmd0aClcbiAgICAgICAgLnJlZHVjZSgoc3VtLCBjdXJyZW50KSA9PiBzdW0gKyBjdXJyZW50LCAwKVxuICAgICAgKSk7XG4gIH1cblxuICBASW5wdXQoKSBsZXZlbCA9IDA7XG4gIHJlc291cmNlT3JHcm91cCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlc291cmNlIHwgUmVzb3VyY2VHcm91cCB8IG51bGw+KG51bGwpO1xuICB0aW1lU2xvdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdPihbXSk7XG4gIGlzRXhwYW5kZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGRhdGEkOiBPYnNlcnZhYmxlPFJlc291cmNlT3JHcm91cD47XG4gIGNvbFNwYW4kOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8vI3JlZ2lvbiByZXNvdXJjZU9yR3JvdXBcbiAgcHVibGljIGdldCByZXNvdXJjZU9yR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VPckdyb3VwJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHJlc291cmNlR3JvdXAodmFsdWU6IFJlc291cmNlIHwgUmVzb3VyY2VHcm91cCB8IG51bGwpIHtcbiAgICB0aGlzLnJlc291cmNlT3JHcm91cCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIHRpbWVTbG90c1xuICBwdWJsaWMgZ2V0IHRpbWVTbG90cygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lU2xvdHMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZVNsb3RzKHZhbHVlOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgdGhpcy50aW1lU2xvdHMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBpc0V4cGFuZGVkXG4gIHB1YmxpYyBnZXQgaXNFeHBhbmRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkJC52YWx1ZTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGlzRXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHRvZ2dsZUV4cGFuZGVkKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGlzRXhwYW5kZWQpID0+IHtcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCQubmV4dCghaXNFeHBhbmRlZCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCh0cnVlKTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGRhdGEkIHwgYXN5bmMpIGFzIGRhdGFcIj5cblxuICAgIDwhLS0gRGF0YSBpcyBhIHJlc291cmNlIGdyb3VwIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnJlc291cmNlR3JvdXBcIj5cbiAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgIDx0ciBjbGFzcz1cInAtMCBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwiKHRpbWVTbG90cyQgfCBhc3luYykgYXMgdGltZVNsb3RzXCIgW3RpdGxlXT1cImRhdGEucmVzb3VyY2VHcm91cC5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb2xTcGFuJCB8IGFzeW5jKSBhcyBjb2xzcGFuXCI+XG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0yIGN1cnNvci1wb2ludGVyXCIgW2NvbFNwYW5dPVwiY29sc3BhbiArIDFcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtMiBhbGlnbi1taWRkbGUgcG9zaXRpb24tc3RpY2t5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1kb3duJ1wiIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwibGV2ZWwgKiAyMFwiICpuZ0lmPVwiaXNFeHBhbmRlZCQgfCBhc3luY1wiPjwvYnMtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwibGV2ZWwgKiAyMFwiICpuZ0lmPVwiKGlzRXhwYW5kZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiPjwvYnMtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEucmVzb3VyY2VHcm91cC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDwhLS0gU3ViZ3JvdXBzIG9yIHJlc291cmNlcyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRXhwYW5kZWQkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBkYXRhLnJlc291cmNlR3JvdXAuY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlciBbcmVzb3VyY2VHcm91cF09XCJjaGlsZFwiIFt0aW1lU2xvdHNdPVwidGltZVNsb3RzXCIgW2xldmVsXT1cImxldmVsICsgMVwiPjwvYnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEYXRhIGlzIGEgcmVzb3VyY2UgLS0+XG4gICAgPHRyICpuZ0lmPVwiZGF0YS5yZXNvdXJjZVwiIGNsYXNzPVwicC0wIGJvcmRlcmVkXCIgW3RpdGxlXT1cImRhdGEucmVzb3VyY2UuZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPHRkIGNsYXNzPVwicC0wIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCI+e3sgZGF0YS5yZXNvdXJjZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzbG90cyBvZiAodGltZVNsb3RzJCB8IGFzeW5jKVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiYmctd2hpdGUgYm9yZGVyLTFcIiAqbmdGb3I9XCJsZXQgc2xvdCBvZiBzbG90cy5zbG90c1wiPlxuICAgICAgICAgICAgICAgIDwhLS0ge3sgc2xvdC5zdGFydCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fSAtLT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdHI+XG48L25nLWNvbnRhaW5lcj4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BsSecondsTimespanPipe {\n transform(value) {\n return (value.end.getTime() - value.start.getTime()) / 1000;\n }\n}\nBsSecondsTimespanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nBsSecondsTimespanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTimespanPipe, name: \"bsSecondsTimespan\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'bsSecondsTimespan'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtc2Vjb25kcy10aW1lc3Bhbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL3BpcGVzL2JzLXNlY29uZHMtdGltZXNwYW4ucGlwZS9icy1zZWNvbmRzLXRpbWVzcGFuLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsU0FBUyxDQUFDLEtBQTBDO1FBQ2xELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDOUQsQ0FBQzs7a0hBSlUscUJBQXFCO2dIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2JzU2Vjb25kc1RpbWVzcGFuJ1xufSlcbmV4cG9ydCBjbGFzcyBCc1NlY29uZHNUaW1lc3BhblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0odmFsdWU6IFNjaGVkdWxlckV2ZW50UGFydCB8IFNjaGVkdWxlckV2ZW50KSB7XG4gICAgcmV0dXJuICh2YWx1ZS5lbmQuZ2V0VGltZSgpIC0gdmFsdWUuc3RhcnQuZ2V0VGltZSgpKSAvIDEwMDA7XG4gIH1cblxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BsSecondsTodayOffsetPipe {\n transform(value) {\n const today = new Date(value.start);\n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n return (value.start.getTime() - today.getTime()) / 1000;\n }\n}\nBsSecondsTodayOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nBsSecondsTodayOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTodayOffsetPipe, name: \"bsSecondsTodayOffset\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'bsSecondsTodayOffset'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtc2Vjb25kcy10b2RheS1vZmZzZXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9waXBlcy9icy1zZWNvbmRzLXRvZGF5LW9mZnNldC9icy1zZWNvbmRzLXRvZGF5LW9mZnNldC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFNBQVMsQ0FBQyxLQUEwQztRQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMxRCxDQUFDOztxSEFQVSx3QkFBd0I7bUhBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxzQkFBc0I7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFBhcnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudC1wYXJ0JztcblxuQFBpcGUoe1xuICBuYW1lOiAnYnNTZWNvbmRzVG9kYXlPZmZzZXQnXG59KVxuZXhwb3J0IGNsYXNzIEJzU2Vjb25kc1RvZGF5T2Zmc2V0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogU2NoZWR1bGVyRXZlbnRQYXJ0IHwgU2NoZWR1bGVyRXZlbnQpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKHZhbHVlLnN0YXJ0KTtcbiAgICB0b2RheS5zZXRIb3VycygwKTsgdG9kYXkuc2V0TWludXRlcygwKTsgdG9kYXkuc2V0U2Vjb25kcygwKTtcblxuICAgIHJldHVybiAodmFsdWUuc3RhcnQuZ2V0VGltZSgpIC0gdG9kYXkuZ2V0VGltZSgpKSAvIDEwMDA7XG4gIH1cblxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class DayOfWeekPipe {\n transform(value) {\n const dayOfWeek = value.start.getDay();\n if (dayOfWeek === 0) {\n return 7;\n }\n else {\n return dayOfWeek;\n }\n }\n}\nDayOfWeekPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nDayOfWeekPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.1.0\", ngImport: i0, type: DayOfWeekPipe, name: \"dayOfWeek\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: DayOfWeekPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dayOfWeek'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LW9mLXdlZWsucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9waXBlcy9kYXktb2Ytd2Vlay9kYXktb2Ytd2Vlay5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU9wRCxNQUFNLE9BQU8sYUFBYTtJQUV4QixTQUFTLENBQUMsS0FBMEM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QyxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUM7U0FDVjthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDOzswR0FUVSxhQUFhO3dHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFIekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50UGFydCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXBhcnQnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdkYXlPZldlZWsnXG59KVxuZXhwb3J0IGNsYXNzIERheU9mV2Vla1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0odmFsdWU6IFNjaGVkdWxlckV2ZW50UGFydCB8IFNjaGVkdWxlckV2ZW50KSB7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gdmFsdWUuc3RhcnQuZ2V0RGF5KCk7XG4gICAgaWYgKGRheU9mV2VlayA9PT0gMCkge1xuICAgICAgcmV0dXJuIDc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkYXlPZldlZWs7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==","import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';\nimport { BehaviorSubject, combineLatest, filter, map, Subject, take, takeUntil } from 'rxjs';\nimport { BsCalendarMonthService } from '@mintplayer/ng-bootstrap/calendar-month';\nimport { ESchedulerMode } from '../../enums/scheduler-mode';\nimport { EDragOperation } from '../../enums/drag-operation';\nimport { BsTimelineService } from '../../services/timeline/timeline.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@mintplayer/ng-bootstrap/calendar-month\";\nimport * as i2 from \"../../services/timeline/timeline.service\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@mintplayer/ng-bootstrap/icon\";\nimport * as i5 from \"../resource-group-presenter/resource-group-presenter.component\";\nimport * as i6 from \"../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe\";\nimport * as i7 from \"../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe\";\nimport * as i8 from \"../../pipes/day-of-week/day-of-week.pipe\";\nexport class BsSchedulerComponent {\n constructor(calendarMonthService, timelineService) {\n this.calendarMonthService = calendarMonthService;\n this.timelineService = timelineService;\n this.resources$ = new BehaviorSubject([]);\n this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });\n this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });\n this.previewEvent$ = new BehaviorSubject(null);\n this.timeSlotDuration$ = new BehaviorSubject(1800);\n this.timeSlots$ = new BehaviorSubject([]);\n this.mouseState$ = new BehaviorSubject(false);\n this.hoveredTimeSlot$ = new BehaviorSubject(null);\n this.hoveredEvent$ = new BehaviorSubject(null);\n this.destroyed$ = new Subject();\n //#region Mode\n this.modes = ESchedulerMode;\n this.mode$ = new BehaviorSubject(ESchedulerMode.week);\n this.modeChange = new EventEmitter();\n //#endregion\n // //#region Scale\n // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);\n // @Output() public scaleChange = new EventEmitter<SchedulerScale>();\n // public get scale() {\n // return this.scale$.value;\n // }\n // @Input() public set scale(value: SchedulerScale) {\n // this.scale$.next(value);\n // }\n // //#endregion\n //#region WeekOptions\n this.weekOptionsChange = new EventEmitter();\n //#endregion\n //#region TimelineOptions\n this.timelineOptionsChange = new EventEmitter();\n //#endregion\n //#region maxInnerHeight\n this.maxInnerHeight = null;\n this.operation = null;\n this.dragStartTimeslot = null;\n const monday = this.calendarMonthService.getMondayBefore(new Date());\n this.currentWeekOrMonth$ = new BehaviorSubject(monday);\n this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])\n .pipe(map(([currentDay, mode]) => {\n currentDay.setHours(0);\n currentDay.setMinutes(0);\n currentDay.setSeconds(0);\n currentDay.setMilliseconds(0);\n switch (mode) {\n case ESchedulerMode.week: {\n return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));\n }\n case ESchedulerMode.timeline: {\n const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);\n const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();\n return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));\n }\n }\n }));\n this.daysOfWeekWithTimestamps$ = this.shownDays$\n .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));\n this.events$ = this.resources$\n .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))\n .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))\n .pipe(map(resources => resources.map(res => res.events)))\n .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));\n // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])\n this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));\n this.eventPartsForThisWeek$ = combineLatest([\n this.daysOfWeekWithTimestamps$,\n this.eventParts$\n .pipe(map(eventParts => eventParts.map(evp => evp.parts)))\n .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))\n ])\n .pipe(map(([startAndEnd, eventParts]) => {\n return eventParts.filter(eventPart => {\n return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));\n });\n }));\n this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {\n if (event) {\n return this.timelineService.splitInParts(event);\n }\n else {\n return null;\n }\n }));\n this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])\n .pipe(map(([startAndEnd, previewEventParts]) => {\n if (previewEventParts) {\n return previewEventParts.parts.filter(eventPart => {\n return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));\n });\n }\n else {\n return [];\n }\n }));\n this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$\n .pipe(map(eventParts => {\n // We'll only use the events for this week\n const events = eventParts.map(ep => ep.event)\n .filter((e, i, list) => list.indexOf(e) === i)\n .filter((e) => !!e)\n .map((e) => e);\n const timeline = this.timelineService.getTimeline(events);\n const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))\n .reduce((flat, toFlatten) => flat.concat(toFlatten), [])\n .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\n return {\n total: timeline.length,\n parts: result\n };\n }));\n combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])\n .pipe(filter(([mode, shownDays, duration]) => mode !== null))\n .pipe(map(([mode, shownDays, duration]) => {\n switch (mode) {\n case ESchedulerMode.week: {\n const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);\n return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {\n const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);\n return {\n slots: shownDays.map((day) => {\n const start = new Date(day);\n start.setHours(timeslotForMonday.start.getHours());\n start.setMinutes(timeslotForMonday.start.getMinutes());\n start.setSeconds(timeslotForMonday.start.getSeconds());\n start.setMilliseconds(timeslotForMonday.start.getMilliseconds());\n const end = new Date(day);\n end.setHours(timeslotForMonday.end.getHours());\n end.setMinutes(timeslotForMonday.end.getMinutes());\n end.setSeconds(timeslotForMonday.end.getSeconds());\n end.setMilliseconds(timeslotForMonday.end.getMilliseconds());\n end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());\n return { start, end };\n }),\n stamp: timeslotForMonday.start\n };\n });\n }\n case ESchedulerMode.timeline: {\n const totalTimeslots = (24 * 60 * 60) / duration;\n return shownDays.map((day) => {\n return {\n slots: Array.from(Array(totalTimeslots).keys())\n .map((index) => {\n return this.createTimeslot(day, index, duration);\n }),\n stamp: day\n };\n });\n }\n default: {\n throw 'Unknown value for Mode: ' + mode;\n }\n }\n }))\n .subscribe((timeslots) => {\n // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.\n this.timeSlots$.next(timeslots);\n });\n this.weekOptions$\n .pipe(takeUntil(this.destroyed$))\n .subscribe((weekOptions) => {\n this.weekOptionsChange.emit(weekOptions);\n });\n this.timelineOptions$\n .pipe(takeUntil(this.destroyed$))\n .subscribe((timelineOptions) => {\n this.timelineOptionsChange.emit(timelineOptions);\n });\n // combineLatest([this.mode$, this.scale$])\n // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))\n }\n createTimeslot(date, index, duration) {\n const timeSlotStart = new Date(date);\n timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);\n const timeSlotEnd = new Date(timeSlotStart);\n timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);\n return { start: timeSlotStart, end: timeSlotEnd };\n }\n getResourcesForGroup(resourceOrGroup) {\n if ('children' in resourceOrGroup) {\n return resourceOrGroup.children\n .map((child) => this.getResourcesForGroup(child))\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\n }\n else {\n return [resourceOrGroup];\n }\n }\n get mode() {\n return this.mode$.value;\n }\n set mode(value) {\n this.mode$.next(value);\n }\n get weekOptions() {\n return this.weekOptions$.value;\n }\n set weekOptions(value) {\n this.weekOptions$.next(value);\n }\n get timelineOptions() {\n return this.timelineOptions$.value;\n }\n set timelineOptions(value) {\n this.timelineOptions$.next(value);\n }\n //#endregion\n //#region Resources\n get resources() {\n return this.resources$.value;\n }\n set resources(value) {\n this.resources$.next(value);\n }\n //#endregion\n addDays(date, days) {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n }\n onPreviousWeekOrMonth() {\n this.onChangeWeekOrMonth(false);\n }\n onNextWeekOrMonth() {\n this.onChangeWeekOrMonth(true);\n }\n onChangeWeekOrMonth(next) {\n combineLatest([this.currentWeekOrMonth$, this.mode$])\n .pipe(map(([currentWeekOrMonth, mode]) => {\n switch (mode) {\n case ESchedulerMode.week: {\n return this.addDays(currentWeekOrMonth, (next ? 7 : -7));\n }\n case ESchedulerMode.timeline: {\n return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);\n }\n }\n }), take(1))\n .subscribe((w) => this.currentWeekOrMonth$.next(w));\n }\n onHoverEvent(ev) {\n this.hoveredEvent$.next(ev);\n }\n onLeaveEvent(ev) {\n this.hoveredEvent$.next(null);\n }\n onCreateEvent(ev, slot) {\n ev.preventDefault();\n this.mouseState$.next(true);\n this.dragStartTimeslot = slot;\n this.operation = {\n operation: EDragOperation.createEvent,\n event: {\n start: slot.start,\n end: slot.end,\n color: '#F00',\n description: 'Test event',\n },\n meta: null,\n };\n this.previewEvent$.next({ start: slot.start, end: slot.end });\n }\n randomColor() {\n const brightness = 128;\n return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);\n }\n randomChannel(brightness) {\n const r = 255 - brightness;\n const n = 0 | ((Math.random() * r) + brightness);\n const s = n.toString(16);\n return (s.length == 1) ? '0' + s : s;\n }\n onStartDragEvent(eventPart, ev) {\n ev.preventDefault();\n this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {\n if (eventPart.event) {\n this.dragStartTimeslot = hoveredTimeSlot;\n this.operation = {\n operation: EDragOperation.moveEvent,\n event: eventPart.event,\n meta: null,\n };\n this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });\n }\n });\n }\n onStartResizeEvent(event, position) {\n if (event) {\n switch (position) {\n case 'top':\n {\n this.operation = {\n operation: EDragOperation.resizeEvent,\n event: event,\n meta: { position },\n };\n this.previewEvent$.next({ start: event.start, end: event.end });\n }\n break;\n case 'bottom':\n {\n this.operation = {\n operation: EDragOperation.resizeEvent,\n event: event,\n meta: { position },\n };\n this.previewEvent$.next({ start: event.start, end: event.end });\n }\n break;\n }\n }\n }\n //#region hoveredTimeslot$\n getHoveredTimeslot(ev, timeSlots) {\n const hoveredSlots = this.timeSlotElements.filter((el) => {\n const rct = el.nativeElement.getBoundingClientRect();\n if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {\n return true;\n }\n else {\n return false;\n }\n });\n if (!hoveredSlots || hoveredSlots.length === 0) {\n return null;\n }\n const slotElement = hoveredSlots[0].nativeElement;\n const strRow = slotElement.getAttribute('data-row');\n if (!strRow) {\n return null;\n }\n const row = parseInt(strRow);\n const strColumn = slotElement.getAttribute('data-column');\n if (!strColumn) {\n return null;\n }\n const column = parseInt(strColumn);\n const slot = timeSlots[row].slots[column];\n return slot;\n }\n onMousemove(ev) {\n this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {\n const hovered = this.getHoveredTimeslot(ev, timeSlots);\n this.hoveredTimeSlot$.next(hovered);\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.createEvent:\n {\n if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {\n if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {\n // 1 slot\n }\n else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {\n // Drag down\n this.previewEvent$\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\n .pipe(map((ev) => {\n if (ev && this.dragStartTimeslot) {\n ev.start = this.dragStartTimeslot.start;\n ev.end = hovered.end;\n }\n return ev;\n }))\n .pipe(take(1))\n .subscribe((ev) => this.previewEvent$.next(ev));\n }\n else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {\n // Drag up\n this.previewEvent$\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\n .pipe(map((ev) => {\n if (ev && this.dragStartTimeslot) {\n ev.start = hovered.start;\n ev.end = this.dragStartTimeslot.end;\n }\n return ev;\n }))\n .pipe(take(1))\n .subscribe((ev) => this.previewEvent$.next(ev));\n }\n }\n }\n break;\n case EDragOperation.moveEvent:\n {\n if (hovered && this.dragStartTimeslot) {\n this.previewEvent$\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\n .pipe(map((ev) => {\n if (ev && this.dragStartTimeslot) {\n const result = {\n start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),\n end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())\n };\n this.dragStartTimeslot = hovered;\n return result;\n }\n else {\n return ev;\n }\n }))\n .pipe(take(1))\n .subscribe(ev => this.previewEvent$.next(ev));\n }\n }\n break;\n case EDragOperation.resizeEvent:\n {\n if (hovered) {\n this.previewEvent$\n .pipe(filter((ev) => !!ev))\n .pipe(map((ev) => {\n if (ev && this.operation && this.operation.event) {\n if (this.operation.meta.position === 'top') {\n ev.start = hovered.start;\n ev.end = this.operation.event.end;\n }\n else if (this.operation.meta.position === 'bottom') {\n ev.start = this.operation.event.start;\n ev.end = hovered.end;\n }\n }\n return ev;\n }))\n .pipe(take(1))\n .subscribe((ev) => this.previewEvent$.next(ev));\n }\n }\n break;\n }\n }\n });\n }\n //#endregion\n onMouseUp(ev) {\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.createEvent:\n {\n combineLatest([this.previewEvent$])\n .pipe(take(1))\n .subscribe(([previewEvent]) => {\n if (previewEvent) {\n this.operation = null;\n this.dragStartTimeslot = null;\n this.resources$.next([\n ...this.resources$.value,\n {\n description: 'New resource group',\n events: [{\n start: previewEvent.start,\n end: previewEvent.end,\n color: this.randomColor(),\n description: 'New event'\n }]\n }\n ]);\n this.previewEvent$.next(null);\n }\n });\n }\n break;\n case EDragOperation.moveEvent:\n case EDragOperation.resizeEvent:\n {\n this.previewEvent$\n .pipe(filter((ev) => !!ev))\n .pipe(take(1))\n .subscribe((previewEvent) => {\n if (this.operation && this.operation.event && previewEvent) {\n this.operation.event.start = previewEvent.start;\n this.operation.event.end = previewEvent.end;\n this.operation = null;\n this.dragStartTimeslot = null;\n this.resources$.next(this.resources$.value);\n this.previewEvent$.next(null);\n }\n });\n }\n break;\n }\n }\n }\n ngOnDestroy() {\n this.destroyed$.next(true);\n }\n}\nBsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: i2.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });\nBsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.1.0\", type: BsSchedulerComponent, selector: \"bs-scheduler\", inputs: { mode: \"mode\", weekOptions: \"weekOptions\", timelineOptions: \"timelineOptions\", maxInnerHeight: \"maxInnerHeight\", resources: \"resources\" }, outputs: { modeChange: \"modeChange\", weekOptionsChange: \"weekOptionsChange\", timelineOptionsChange: \"timelineOptionsChange\" }, host: { listeners: { \"document:mousemove\": \"onMousemove($event)\", \"document:mouseup\": \"onMouseUp($event)\" } }, viewQueries: [{ propertyName: \"timeSlotElements\", predicate: [\"slot\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\\\" [style.max-height.px]=\\\"null\\\"\\n *ngIf=\\\"(mode$ | async) === modes.week\\\">\\n <div class=\\\"calendar-head\\\">\\n <div class=\\\"w-100 d-flex flex-row\\\">\\n <div class=\\\"d-flex calendar-left justify-content-between\\\">\\n <button class=\\\"btn btn-default flex-start\\\" (click)=\\\"onPreviousWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-left'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n <button class=\\\"btn btn-default flex-end\\\" (click)=\\\"onNextWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-right'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n </div>\\n <div class=\\\"flex-grow-1 calendar-head-cell\\\" *ngFor=\\\"let day of (shownDays$ | async)\\\">\\n <span class=\\\"d-block col-form-label text-center text-nowrap\\\">\\n <span>{{ day | date: 'dd-MM' }}</span><span class=\\\"d-none d-lg-inline-block\\\">-{{ day | date: 'yyyy' }}</span>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"calendar-body\\\" [style.height.px]=\\\"maxInnerHeight\\\">\\n <div class=\\\"position-relative\\\" *ngIf=\\\"(timeSlots$ | async) as row\\\">\\n <ng-container *ngIf=\\\"(weekOptions$ | async) as weekOptions\\\">\\n <!-- Timeslots -->\\n <div *ngFor=\\\"let timeslots of row; let i = index\\\" class=\\\"d-flex flex-row p-0 timeslot\\\" [style.height.px]=\\\"weekOptions.unitHeight\\\">\\n <div class=\\\"calendar-cell calendar-left align-top px-2 py-0\\\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\\n <div class=\\\"calendar-cell flex-grow-1\\\" *ngFor=\\\"let slot of timeslots.slots; let j = index\\\" #slot (mousedown)=\\\"onCreateEvent($event, slot)\\\" [attr.data-row]=\\\"i\\\" [attr.data-column]=\\\"j\\\"></div>\\n </div>\\n\\n <!-- Events -->\\n <ng-container *ngIf=\\\"(timeSlotDuration$ | async) as timeSlotDuration\\\">\\n <ng-container *ngIf=\\\"(timelinedEventPartsForThisWeek$ | async) as partData\\\">\\n <div *ngFor=\\\"let eventPart of partData.parts\\\" class=\\\"event p-0\\\"\\n [style.top.px]=\\\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.height.px]=\\\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.left]=\\\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\\\">\\n <div class=\\\"event-inner\\\" [class.hover]=\\\"(hoveredEvent$ | async) === eventPart.part.event\\\"\\n [style.width]=\\\"'calc(100% / ' + partData.total + ')'\\\"\\n [style.height.px]=\\\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.margin-left]=\\\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\\\">\\n\\n <div class=\\\"event-resize top\\\"\\n *ngIf=\\\"eventPart.part.start === eventPart.part.event?.start\\\"\\n (mousedown)=\\\"onStartResizeEvent(eventPart.part.event, 'top')\\\"></div>\\n <div class=\\\"event-border\\\"></div>\\n <div class=\\\"event-wrapper\\\" *ngIf=\\\"eventPart.part.event\\\"\\n (mousedown)=\\\"onStartDragEvent(eventPart.part, $event)\\\"\\n (mouseenter)=\\\"onHoverEvent(eventPart.part.event)\\\"\\n (mouseleave)=\\\"onLeaveEvent(eventPart.part.event)\\\">\\n <div class=\\\"event-bg\\\" [style.background-color]=\\\"eventPart.part.event.color\\\"></div>\\n <div class=\\\"event-label\\\">{{ eventPart.part.event.description }}</div>\\n </div>\\n <div class=\\\"event-resize bottom\\\"\\n *ngIf=\\\"eventPart.part.end === eventPart.part.event?.end\\\"\\n (mousedown)=\\\"onStartResizeEvent(eventPart.part.event, 'bottom')\\\"></div>\\n </div>\\n </div>\\n </ng-container>\\n <ng-container *ngIf=\\\"(previewEventPartsForThisWeek$ | async) as previewPartData\\\">\\n <div *ngFor=\\\"let eventPart of previewPartData\\\" class=\\\"event preview p-0\\\"\\n [style.top.px]=\\\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.height.px]=\\\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.left]=\\\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\\\">\\n <div class=\\\"event-inner w-100\\\"\\n [style.height.px]=\\\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\">\\n </div>\\n </div>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\\\" *ngIf=\\\"(mode$ | async) === modes.timeline\\\">\\n <div class=\\\"calendar-head d-flex\\\">\\n <button class=\\\"btn flex-start\\\" (click)=\\\"onPreviousWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-left'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n <div class=\\\"flex-grow-1 h3 py-2 mb-0 text-center\\\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\\n <button class=\\\"btn flex-start\\\" (click)=\\\"onNextWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-right'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n </div>\\n \\n <div class=\\\"calendar-body table-responsive overflow-x-auto\\\">\\n <table class=\\\"table mb-0\\\">\\n <ng-container *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\">\\n <tr>\\n <td></td>\\n <td *ngFor=\\\"let day of timeSlots\\\" [attr.colspan]=\\\"day.slots.length\\\" class=\\\"text-center px-2\\\">\\n <span class=\\\"position-sticky day-label\\\">{{ day.stamp | date: 'd EE' }}</span>\\n </td>\\n </tr>\\n <tr>\\n <td></td>\\n <ng-container *ngIf=\\\"(timelineOptions$ | async) as timelineOptions\\\">\\n <ng-container *ngFor=\\\"let day of timeSlots\\\">\\n <td *ngFor=\\\"let slot of day.slots\\\">\\n <span class=\\\"d-block p-0 text-center\\\" [style.width.px]=\\\"timelineOptions.unitWidth\\\">\\n {{ slot.start | date: 'HH:mm' }}\\n </span>\\n </td>\\n </ng-container>\\n </ng-container>\\n </tr>\\n <bs-resource-group-presenter *ngFor=\\\"let group of (resources$ | async)\\\" [resourceGroup]=\\\"group\\\" [timeSlots]=\\\"timeSlots\\\"></bs-resource-group-presenter>\\n </ng-container>\\n </table>\\n </div>\\n</div>\", styles: [\":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.BsIconComponent, selector: \"bs-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.ResourceGroupPresenterComponent, selector: \"bs-resource-group-presenter\", inputs: [\"level\", \"resourceGroup\", \"timeSlots\", \"isExpanded\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.DatePipe, name: \"date\" }, { kind: \"pipe\", type: i6.BsSecondsTimespanPipe, name: \"bsSecondsTimespan\" }, { kind: \"pipe\", type: i7.BsSecondsTodayOffsetPipe, name: \"bsSecondsTodayOffset\" }, { kind: \"pipe\", type: i8.DayOfWeekPipe, name: \"dayOfWeek\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'bs-scheduler', template: \"<div class=\\\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\\\" [style.max-height.px]=\\\"null\\\"\\n *ngIf=\\\"(mode$ | async) === modes.week\\\">\\n <div class=\\\"calendar-head\\\">\\n <div class=\\\"w-100 d-flex flex-row\\\">\\n <div class=\\\"d-flex calendar-left justify-content-between\\\">\\n <button class=\\\"btn btn-default flex-start\\\" (click)=\\\"onPreviousWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-left'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n <button class=\\\"btn btn-default flex-end\\\" (click)=\\\"onNextWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-right'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n </div>\\n <div class=\\\"flex-grow-1 calendar-head-cell\\\" *ngFor=\\\"let day of (shownDays$ | async)\\\">\\n <span class=\\\"d-block col-form-label text-center text-nowrap\\\">\\n <span>{{ day | date: 'dd-MM' }}</span><span class=\\\"d-none d-lg-inline-block\\\">-{{ day | date: 'yyyy' }}</span>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"calendar-body\\\" [style.height.px]=\\\"maxInnerHeight\\\">\\n <div class=\\\"position-relative\\\" *ngIf=\\\"(timeSlots$ | async) as row\\\">\\n <ng-container *ngIf=\\\"(weekOptions$ | async) as weekOptions\\\">\\n <!-- Timeslots -->\\n <div *ngFor=\\\"let timeslots of row; let i = index\\\" class=\\\"d-flex flex-row p-0 timeslot\\\" [style.height.px]=\\\"weekOptions.unitHeight\\\">\\n <div class=\\\"calendar-cell calendar-left align-top px-2 py-0\\\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\\n <div class=\\\"calendar-cell flex-grow-1\\\" *ngFor=\\\"let slot of timeslots.slots; let j = index\\\" #slot (mousedown)=\\\"onCreateEvent($event, slot)\\\" [attr.data-row]=\\\"i\\\" [attr.data-column]=\\\"j\\\"></div>\\n </div>\\n\\n <!-- Events -->\\n <ng-container *ngIf=\\\"(timeSlotDuration$ | async) as timeSlotDuration\\\">\\n <ng-container *ngIf=\\\"(timelinedEventPartsForThisWeek$ | async) as partData\\\">\\n <div *ngFor=\\\"let eventPart of partData.parts\\\" class=\\\"event p-0\\\"\\n [style.top.px]=\\\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.height.px]=\\\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.left]=\\\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\\\">\\n <div class=\\\"event-inner\\\" [class.hover]=\\\"(hoveredEvent$ | async) === eventPart.part.event\\\"\\n [style.width]=\\\"'calc(100% / ' + partData.total + ')'\\\"\\n [style.height.px]=\\\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.margin-left]=\\\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\\\">\\n\\n <div class=\\\"event-resize top\\\"\\n *ngIf=\\\"eventPart.part.start === eventPart.part.event?.start\\\"\\n (mousedown)=\\\"onStartResizeEvent(eventPart.part.event, 'top')\\\"></div>\\n <div class=\\\"event-border\\\"></div>\\n <div class=\\\"event-wrapper\\\" *ngIf=\\\"eventPart.part.event\\\"\\n (mousedown)=\\\"onStartDragEvent(eventPart.part, $event)\\\"\\n (mouseenter)=\\\"onHoverEvent(eventPart.part.event)\\\"\\n (mouseleave)=\\\"onLeaveEvent(eventPart.part.event)\\\">\\n <div class=\\\"event-bg\\\" [style.background-color]=\\\"eventPart.part.event.color\\\"></div>\\n <div class=\\\"event-label\\\">{{ eventPart.part.event.description }}</div>\\n </div>\\n <div class=\\\"event-resize bottom\\\"\\n *ngIf=\\\"eventPart.part.end === eventPart.part.event?.end\\\"\\n (mousedown)=\\\"onStartResizeEvent(eventPart.part.event, 'bottom')\\\"></div>\\n </div>\\n </div>\\n </ng-container>\\n <ng-container *ngIf=\\\"(previewEventPartsForThisWeek$ | async) as previewPartData\\\">\\n <div *ngFor=\\\"let eventPart of previewPartData\\\" class=\\\"event preview p-0\\\"\\n [style.top.px]=\\\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.height.px]=\\\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\"\\n [style.left]=\\\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\\\">\\n <div class=\\\"event-inner w-100\\\"\\n [style.height.px]=\\\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\\\">\\n </div>\\n </div>\\n </ng-container>\\n </ng-container>\\n </ng-container>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\\\" *ngIf=\\\"(mode$ | async) === modes.timeline\\\">\\n <div class=\\\"calendar-head d-flex\\\">\\n <button class=\\\"btn flex-start\\\" (click)=\\\"onPreviousWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-left'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n <div class=\\\"flex-grow-1 h3 py-2 mb-0 text-center\\\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\\n <button class=\\\"btn flex-start\\\" (click)=\\\"onNextWeekOrMonth()\\\">\\n <bs-icon [icon]=\\\"'chevron-right'\\\" class=\\\"px-0\\\"></bs-icon>\\n </button>\\n </div>\\n \\n <div class=\\\"calendar-body table-responsive overflow-x-auto\\\">\\n <table class=\\\"table mb-0\\\">\\n <ng-container *ngIf=\\\"(timeSlots$ | async) as timeSlots\\\">\\n <tr>\\n <td></td>\\n <td *ngFor=\\\"let day of timeSlots\\\" [attr.colspan]=\\\"day.slots.length\\\" class=\\\"text-center px-2\\\">\\n <span class=\\\"position-sticky day-label\\\">{{ day.stamp | date: 'd EE' }}</span>\\n </td>\\n </tr>\\n <tr>\\n <td></td>\\n <ng-container *ngIf=\\\"(timelineOptions$ | async) as timelineOptions\\\">\\n <ng-container *ngFor=\\\"let day of timeSlots\\\">\\n <td *ngFor=\\\"let slot of day.slots\\\">\\n <span class=\\\"d-block p-0 text-center\\\" [style.width.px]=\\\"timelineOptions.unitWidth\\\">\\n {{ slot.start | date: 'HH:mm' }}\\n </span>\\n </td>\\n </ng-container>\\n </ng-container>\\n </tr>\\n <bs-resource-group-presenter *ngFor=\\\"let group of (resources$ | async)\\\" [resourceGroup]=\\\"group\\\" [timeSlots]=\\\"timeSlots\\\"></bs-resource-group-presenter>\\n </ng-container>\\n </table>\\n </div>\\n</div>\", styles: [\":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: i2.BsTimelineService }]; }, propDecorators: { timeSlotElements: [{\n type: ViewChildren,\n args: ['slot']\n }], modeChange: [{\n type: Output\n }], mode: [{\n type: Input\n }], weekOptionsChange: [{\n type: Output\n }], weekOptions: [{\n type: Input\n }], timelineOptionsChange: [{\n type: Output\n }], timelineOptions: [{\n type: Input\n }], maxInnerHeight: [{\n type: Input\n }], resources: [{\n type: Input\n }], onMousemove: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }], onMouseUp: [{\n type: HostListener,\n args: ['document:mouseup', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLG9CQUE0QyxFQUFVLGVBQWtDO1FBQXhGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE2SjVHLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFLbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBTy9ELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsRUFBRSxDQUFDLENBQUM7UUFDaEUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFDOUQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDakUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUF1QjNCLGNBQWM7UUFDZCxVQUFLLEdBQUcsY0FBYyxDQUFDO1FBQ3ZCLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBaUIsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQU9qRSxZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLG9FQUFvRTtRQUNwRSxxRUFBcUU7UUFDckUsdUJBQXVCO1FBQ3ZCLDhCQUE4QjtRQUM5QixJQUFJO1FBQ0oscURBQXFEO1FBQ3JELDZCQUE2QjtRQUM3QixJQUFJO1FBQ0osZUFBZTtRQUNmLHFCQUFxQjtRQUNKLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFPckUsWUFBWTtRQUNaLHlCQUF5QjtRQUNSLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBTzdFLFlBQVk7UUFDWix3QkFBd0I7UUFDUixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFnRHJELGNBQVMsR0FBeUIsSUFBSSxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFvQixJQUFJLENBQUM7UUFoU3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBTyxNQUFNLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDL0IsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUU7Z0JBQ0QsS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMvRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNwRjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsVUFBVTthQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVTthQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDckcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpHLDBFQUEwRTtRQUM1RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDNUUsQ0FBQztRQUVGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUM7WUFDMUMsSUFBSSxDQUFDLHlCQUF5QjtZQUM5QixJQUFJLENBQUMsV0FBVztpQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3RyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQy9DLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUNoRDtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDMUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLGlCQUFpQixFQUFFO2dCQUNyQixPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2hELE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM3RyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxzQkFBc0I7YUFDL0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQiwwQ0FBMEM7WUFDMUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFpQixDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDOUYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ3ZELEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNyRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTNELE9BQU87Z0JBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUN0QixLQUFLLEVBQUUsTUFBTTthQUNkLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRU4sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQzthQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO29CQUM5RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQzdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUU3RSxPQUFnQzs0QkFDOUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQ0FDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQzVCLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0NBQ25ELEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ3ZELEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0NBQ3ZELEtBQUssQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7Z0NBRWpFLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUMxQixHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dDQUMvQyxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dDQUNuRCxHQUFHLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dDQUNuRCxHQUFHLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2dDQUM3RCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0NBRWpHLE9BQWlCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDOzRCQUNsQyxDQUFDLENBQUM7NEJBQ0YsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUs7eUJBQy9CLENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzVCLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7b0JBQ2pELE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUMzQixPQUFnQzs0QkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lDQUM1QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQ0FDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzs0QkFDbkQsQ0FBQyxDQUFDOzRCQUNKLEtBQUssRUFBRSxHQUFHO3lCQUNYLENBQUE7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ1AsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUM7aUJBQ3pDO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQzthQUNGLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3ZCLCtHQUErRztZQUMvRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZO2FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFFTCwyQ0FBMkM7UUFDM0MsdUVBQXVFO0lBRXpFLENBQUM7SUEwQkQsY0FBYyxDQUFDLElBQVUsRUFBRSxLQUFhLEVBQUUsUUFBZ0I7UUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFFLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRTlELE9BQWlCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVELG9CQUFvQixDQUFDLGVBQXlDO1FBQzVELElBQUksVUFBVSxJQUFJLGVBQWUsRUFBRTtZQUNqQyxPQUFPLGVBQWUsQ0FBQyxRQUFRO2lCQUM1QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQU1ELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQW9CLElBQUksQ0FBQyxLQUFxQjtRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBY0QsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELElBQW9CLFdBQVcsQ0FBQyxLQUFrQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBb0IsZUFBZSxDQUFDLEtBQXNCO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUlELFlBQVk7SUFDWixtQkFBbUI7SUFDbkIsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQW9CLFNBQVMsQ0FBQyxLQUFtQztRQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsWUFBWTtJQUVKLE9BQU8sQ0FBQyxJQUFVLEVBQUUsSUFBWTtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFhO1FBQ3ZDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDMUQ7Z0JBQ0QsS0FBSyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdkc7YUFDRjtRQUNILENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxZQUFZLENBQUMsRUFBeUI7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUF5QjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsYUFBYSxDQUFDLEVBQWMsRUFBRSxJQUFjO1FBQzFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixTQUFTLEVBQUUsY0FBYyxDQUFDLFdBQVc7WUFDckMsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLFdBQVcsRUFBRSxZQUFZO2FBQzFCO1lBQ0QsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdkIsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUNELGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUMsVUFBVSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBNkIsRUFBRSxFQUFjO1FBQzVELEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ2hFLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRztvQkFDZixTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVM7b0JBQ25DLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztvQkFDdEIsSUFBSSxFQUFFLElBQUk7aUJBQ1gsQ0FBQztnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3JGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBNEIsRUFBRSxRQUEwQjtRQUN6RSxJQUFJLEtBQUssRUFBRTtZQUNULFFBQVEsUUFBUSxFQUFFO2dCQUNoQixLQUFLLEtBQUs7b0JBQUU7d0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRzs0QkFDZixTQUFTLEVBQUUsY0FBYyxDQUFDLFdBQVc7NEJBQ3JDLEtBQUssRUFBRSxLQUFLOzRCQUNaLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRTt5QkFDbkIsQ0FBQTt3QkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztxQkFDakU7b0JBQUMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQUU7d0JBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRzs0QkFDZixTQUFTLEVBQUUsY0FBYyxDQUFDLFdBQVc7NEJBQ3JDLEtBQUssRUFBRSxLQUFLOzRCQUNaLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRTt5QkFDbkIsQ0FBQTt3QkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztxQkFDakU7b0JBQUMsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsMEJBQTBCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWMsRUFBRSxTQUFvQztRQUM3RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3JELElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNsRixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDOUMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFbEQsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBR0QsV0FBVyxDQUFDLEVBQWM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXBDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtvQkFDaEMsS0FBSyxjQUFjLENBQUMsV0FBVzt3QkFBRTs0QkFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtnQ0FDOUgsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUU7b0NBQ3RFLFNBQVM7aUNBQ1Y7cUNBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUU7b0NBQzNFLFlBQVk7b0NBQ1osSUFBSSxDQUFDLGFBQWE7eUNBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7eUNBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3Q0FDZixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7NENBQ2hDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQzs0Q0FDeEMsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO3lDQUN0Qjt3Q0FDRCxPQUFPLEVBQUUsQ0FBQztvQ0FDWixDQUFDLENBQUMsQ0FBQzt5Q0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lDQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQ0FDbkQ7cUNBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUU7b0NBQzNFLFVBQVU7b0NBQ1YsSUFBSSxDQUFDLGFBQWE7eUNBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7eUNBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3Q0FDZixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7NENBQ2hDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzs0Q0FDekIsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO3lDQUNyQzt3Q0FDRCxPQUFPLEVBQUUsQ0FBQztvQ0FDWixDQUFDLENBQUMsQ0FBQzt5Q0FDRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lDQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQ0FDbkQ7NkJBQ0Y7eUJBQ0Y7d0JBQUMsTUFBTTtvQkFDUixLQUFLLGNBQWMsQ0FBQyxTQUFTO3dCQUFFOzRCQUM3QixJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0NBQ3JDLElBQUksQ0FBQyxhQUFhO3FDQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3FDQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7b0NBQ2YsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO3dDQUNoQyxNQUFNLE1BQU0sR0FBa0I7NENBQzVCLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0Q0FDdEcsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO3lDQUNuRyxDQUFDO3dDQUVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7d0NBRWpDLE9BQU8sTUFBTSxDQUFDO3FDQUNmO3lDQUFNO3dDQUNMLE9BQU8sRUFBRSxDQUFDO3FDQUNYO2dDQUNILENBQUMsQ0FBQyxDQUFDO3FDQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUNBQ2IsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs2QkFDakQ7eUJBQ0Y7d0JBQUMsTUFBTTtvQkFDUixLQUFLLGNBQWMsQ0FBQyxXQUFXO3dCQUFFOzRCQUMvQixJQUFJLE9BQU8sRUFBRTtnQ0FDWCxJQUFJLENBQUMsYUFBYTtxQ0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7cUNBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQ0FDZixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO3dDQUNoRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7NENBQzFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQzs0Q0FDekIsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7eUNBQ25DOzZDQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTs0Q0FDcEQsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7NENBQ3RDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQzt5Q0FDdEI7cUNBQ0Y7b0NBQ0QsT0FBTyxFQUFFLENBQUM7Z0NBQ1osQ0FBQyxDQUFDLENBQUM7cUNBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQ0FDYixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NkJBQ25EO3lCQUNGO3dCQUFDLE1BQU07aUJBQ1Q7YUFDRjtRQUVILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVk7SUFHWixTQUFTLENBQUMsRUFBYztRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDaEMsS0FBSyxjQUFjLENBQUMsV0FBVztvQkFBRTt3QkFDL0IsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDOzZCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxZQUFZLEVBQUU7Z0NBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dDQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQ0FDbkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7b0NBQ2Q7d0NBQ1IsV0FBVyxFQUFFLG9CQUFvQjt3Q0FDakMsTUFBTSxFQUFFLENBQUM7Z0RBQ1AsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLO2dEQUN6QixHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUc7Z0RBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO2dEQUN6QixXQUFXLEVBQUUsV0FBVzs2Q0FDekIsQ0FBQztxQ0FDSDtpQ0FDRixDQUFDLENBQUM7Z0NBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQy9CO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNOO29CQUFDLE1BQU07Z0JBQ1IsS0FBSyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUM5QixLQUFLLGNBQWMsQ0FBQyxXQUFXO29CQUFFO3dCQUMvQixJQUFJLENBQUMsYUFBYTs2QkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2IsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7NEJBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxZQUFZLEVBQUU7Z0NBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2dDQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztnQ0FDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0NBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0NBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUMvQjt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFBQyxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7aUhBamhCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtaEJDdkJqQyw2ME9BNEdNOzJGRHJGTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsY0FBYzs2SUF3TEYsZ0JBQWdCO3NCQUFyQyxZQUFZO3VCQUFDLE1BQU07Z0JBd0JILFVBQVU7c0JBQTFCLE1BQU07Z0JBSWEsSUFBSTtzQkFBdkIsS0FBSztnQkFlVyxpQkFBaUI7c0JBQWpDLE1BQU07Z0JBSWEsV0FBVztzQkFBOUIsS0FBSztnQkFLVyxxQkFBcUI7c0JBQXJDLE1BQU07Z0JBSWEsZUFBZTtzQkFBbEMsS0FBSztnQkFLVSxjQUFjO3NCQUE3QixLQUFLO2dCQU1jLFNBQVM7c0JBQTVCLEtBQUs7Z0JBZ0pOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyRjlDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNDYWxlbmRhck1vbnRoU2VydmljZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9jYWxlbmRhci1tb250aCc7XG5pbXBvcnQgeyBFU2NoZWR1bGVyTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL3NjaGVkdWxlci1tb2RlJztcbmltcG9ydCB7IEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgUHJldmlld0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcmV2aWV3LWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXdpdGgtcGFydHMnO1xuaW1wb3J0IHsgVGltZVNsb3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWUtc2xvdCc7XG5pbXBvcnQgeyBCc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVsaW5lL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UtZ3JvdXAnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlJztcbmltcG9ydCB7IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItc3RhbXAtd2l0aC1zbG90cyc7XG5pbXBvcnQgeyBXZWVrT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2Vlay1vcHRpb25zJztcbmltcG9ydCB7IFRpbWVsaW5lT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZWxpbmUtb3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2hlZHVsZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFyTW9udGhTZXJ2aWNlOiBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogQnNUaW1lbGluZVNlcnZpY2UpIHtcbiAgICBjb25zdCBtb25kYXkgPSB0aGlzLmNhbGVuZGFyTW9udGhTZXJ2aWNlLmdldE1vbmRheUJlZm9yZShuZXcgRGF0ZSgpKTtcbiAgICB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG1vbmRheSk7XG5cbiAgICB0aGlzLnNob3duRGF5cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudERheSwgbW9kZV0pID0+IHtcbiAgICAgICAgY3VycmVudERheS5zZXRIb3VycygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaW51dGVzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldFNlY29uZHMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KDcpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoY3VycmVudERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGRheXNPZk1vbnRoID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCkgKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheShkYXlzT2ZNb250aCkua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhmaXJzdERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkID0gdGhpcy5zaG93bkRheXMkXG4gICAgICAucGlwZShtYXAoKHNob3duRGF5cykgPT4gKHsgc3RhcnQ6IHNob3duRGF5c1swXS5nZXRUaW1lKCksIGVuZDogc2hvd25EYXlzW3Nob3duRGF5cy5sZW5ndGggLSAxXS5nZXRUaW1lKCkgKyAyNCAqIDYwICogNjAgKiAxMDAwIH0pKSk7XG4gICAgXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5yZXNvdXJjZXMkXG4gICAgICAucGlwZShtYXAoKHJlc291cmNlc09yR3JvdXBzKSA9PiByZXNvdXJjZXNPckdyb3Vwcy5tYXAocmVzT3JHcm91cCA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKHJlc09yR3JvdXApKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkUmVzb3VyY2VzID0+IGphZ2dlZFJlc291cmNlcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIC5waXBlKG1hcChyZXNvdXJjZXMgPT4gcmVzb3VyY2VzLm1hcChyZXMgPT4gcmVzLmV2ZW50cykpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZEV2ZW50cyA9PiBqYWdnZWRFdmVudHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpO1xuXG4gICAgICAvLyBncm91cHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbi5jaGlsZHJlbiksIFtdKVxuICAgIHRoaXMuZXZlbnRQYXJ0cyQgPSB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgIG1hcCgoZXZlbnRzKSA9PiAgZXZlbnRzLm1hcCgoZXYpID0+IHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldikpKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCxcbiAgICAgIHRoaXMuZXZlbnRQYXJ0cyRcbiAgICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4gZXZlbnRQYXJ0cy5tYXAoZXZwID0+IGV2cC5wYXJ0cykpKVxuICAgICAgICAucGlwZShtYXAoamFnZ2VkUGFydHMgPT4gIGphZ2dlZFBhcnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBldmVudFBhcnRzXSkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnRQYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pKTtcblxuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHMkID0gdGhpcy5wcmV2aWV3RXZlbnQkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXZlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLCB0aGlzLnByZXZpZXdFdmVudFBhcnRzJF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgcHJldmlld0V2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIGlmIChwcmV2aWV3RXZlbnRQYXJ0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2aWV3RXZlbnRQYXJ0cy5wYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayRcbiAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IHtcbiAgICAgICAgLy8gV2UnbGwgb25seSB1c2UgdGhlIGV2ZW50cyBmb3IgdGhpcyB3ZWVrXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IGV2ZW50UGFydHMubWFwKGVwID0+IGVwLmV2ZW50KVxuICAgICAgICAgIC5maWx0ZXIoKGUsIGksIGxpc3QpID0+IGxpc3QuaW5kZXhPZihlKSA9PT0gaSlcbiAgICAgICAgICAuZmlsdGVyKChlKSA9PiAhIWUpXG4gICAgICAgICAgLm1hcCgoZSkgPT4gPFNjaGVkdWxlckV2ZW50PmUpO1xuICAgICAgICBjb25zdCB0aW1lbGluZSA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLmdldFRpbWVsaW5lKGV2ZW50cyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGltZWxpbmUubWFwKHRyYWNrID0+IHRyYWNrLmV2ZW50cy5tYXAoZXYgPT4gKHsgZXZlbnQ6IGV2LCBpbmRleDogdHJhY2suaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pXG4gICAgICAgICAgLm1hcCgoZXZpKSA9PiBldmVudFBhcnRzLmZpbHRlcihwID0+IHAuZXZlbnQgPT09IGV2aS5ldmVudCkubWFwKHAgPT4gKHsgcGFydDogcCwgaW5kZXg6IGV2aS5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b3RhbDogdGltZWxpbmUubGVuZ3RoLFxuICAgICAgICAgIHBhcnRzOiByZXN1bHRcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kZSQsIHRoaXMuc2hvd25EYXlzJCwgdGhpcy50aW1lU2xvdER1cmF0aW9uJF0pXG4gICAgICAucGlwZShmaWx0ZXIoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4gbW9kZSAhPT0gbnVsbCkpXG4gICAgICAucGlwZShtYXAoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTbG90c1BlckRheSA9IE1hdGguZmxvb3IoKDYwICogNjAgKiAyNCkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSh0aW1lU2xvdHNQZXJEYXkpLmtleXMoKSkubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lc2xvdEZvck1vbmRheSA9IHRoaXMuY3JlYXRlVGltZXNsb3Qoc2hvd25EYXlzWzBdLCBpbmRleCwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldERhdGUoZW5kLmdldERhdGUoKSArIHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXREYXRlKCkgLSB0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXREYXRlKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQsIGVuZCB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiB0aW1lc2xvdEZvck1vbmRheS5zdGFydFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZXNsb3RzID0gKDI0ICogNjAgKiA2MCkgLyBkdXJhdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IEFycmF5LmZyb20oQXJyYXkodG90YWxUaW1lc2xvdHMpLmtleXMoKSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRpbWVzbG90KGRheSwgaW5kZXgsIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiBkYXlcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyAnVW5rbm93biB2YWx1ZSBmb3IgTW9kZTogJyArIG1vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpbWVzbG90cykgPT4ge1xuICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UncmUgbm90IHVzaW5nIGFuIG9ic2VydmFibGUgaGVyZSwgYnV0IHBlcnNpc3QgdGhlIHRpbWVzbG90cyBpbiBhIEJlaGF2aW9yU3ViamVjdC5cbiAgICAgICAgdGhpcy50aW1lU2xvdHMkLm5leHQodGltZXNsb3RzKTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgdGhpcy53ZWVrT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgod2Vla09wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy53ZWVrT3B0aW9uc0NoYW5nZS5lbWl0KHdlZWtPcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lbGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50aW1lbGluZU9wdGlvbnNDaGFuZ2UuZW1pdCh0aW1lbGluZU9wdGlvbnMpO1xuICAgICAgfSk7XG5cbiAgICAvLyBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNjYWxlJF0pXG4gICAgLy8gICAucGlwZShmaWx0ZXIoKFttb2RlLCBzY2FsZV0pID0+IG1vZGUgPT09IEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lKSlcblxuICB9XG5cbiAgcmVzb3VyY2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFJlc291cmNlIHwgUmVzb3VyY2VHcm91cClbXT4oW10pO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50W10+O1xuICBldmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0c1tdPjtcbiAgZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIHRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8eyB0b3RhbDogbnVtYmVyLCBwYXJ0czogeyBwYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGluZGV4OiBudW1iZXJ9W10gfT47XG4gIHdlZWtPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2Vla09wdGlvbnM+KHsgdW5pdEhlaWdodDogMzAgfSk7XG4gIHRpbWVsaW5lT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVsaW5lT3B0aW9ucz4oeyB1bml0V2lkdGg6IDUwIH0pO1xuICBcbiAgcHJldmlld0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJldmlld0V2ZW50IHwgbnVsbD4obnVsbCk7XG4gIHByZXZpZXdFdmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB8IG51bGw+O1xuICBwcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIFxuICBjdXJyZW50V2Vla09yTW9udGgkOiBCZWhhdmlvclN1YmplY3Q8RGF0ZT47XG4gIHNob3duRGF5cyQ6IE9ic2VydmFibGU8RGF0ZVtdPjtcbiAgZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJDogT2JzZXJ2YWJsZTx7c3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXJ9PjtcbiAgdGltZVNsb3REdXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMTgwMCk7XG4gIHRpbWVTbG90cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10+KFtdKTtcbiAgbW91c2VTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaG92ZXJlZFRpbWVTbG90JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZVNsb3QgfCBudWxsPihudWxsKTtcbiAgaG92ZXJlZEV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyRXZlbnQgfCBudWxsPihudWxsKTtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdy0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgd2Vlay1zY2hlZHVsZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm51bGxcIlxuICAgICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy53ZWVrXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjYWxlbmRhci1sZWZ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgZmxleC1lbmRcIiAoY2xpY2spPVwib25OZXh0V2Vla09yTW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBjYWxlbmRhci1oZWFkLWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIChzaG93bkRheXMkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtzdHlsZS5oZWlnaHQucHhdPVwibWF4SW5uZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyByb3dcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIod2Vla09wdGlvbnMkIHwgYXN5bmMpIGFzIHdlZWtPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lc2xvdHMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGltZXNsb3RzIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHAtMCB0aW1lc2xvdFwiIFtzdHlsZS5oZWlnaHQucHhdPVwid2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBjYWxlbmRhci1sZWZ0IGFsaWduLXRvcCBweC0yIHB5LTBcIj57eyB0aW1lc2xvdHMuc2xvdHNbMF0uc3RhcnQgfCBkYXRlOiAnSEg6bW06c3MnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyBsZXQgaiA9IGluZGV4XCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdER1cmF0aW9uJCB8IGFzeW5jKSBhcyB0aW1lU2xvdER1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHBhcnREYXRhLnBhcnRzXCIgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXJcIiBbY2xhc3MuaG92ZXJdPVwiKGhvdmVyZWRFdmVudCQgfCBhc3luYykgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnICogJyArIGV2ZW50UGFydC5pbmRleCArICcpJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ3RvcCcpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1ib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXdyYXBwZXJcIiAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydERyYWdFdmVudChldmVudFBhcnQucGFydCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1iZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImV2ZW50UGFydC5wYXJ0LmV2ZW50LmNvbG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtbGFiZWxcIj57eyBldmVudFBhcnQucGFydC5ldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5lbmQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICdib3R0b20nKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHByZXZpZXdQYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHByZXZpZXdQYXJ0RGF0YVwiIGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy50aW1lbGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkIGQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IHRhYmxlLXJlc3BvbnNpdmUgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIiBbYXR0ci5jb2xzcGFuXT1cImRheS5zbG90cy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tc3RpY2t5IGRheS1sYWJlbFwiPnt7IGRheS5zdGFtcCB8IGRhdGU6ICdkIEVFJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVPcHRpb25zJCB8IGFzeW5jKSBhcyB0aW1lbGluZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHNsb3Qgb2YgZGF5LnNsb3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBwLTAgdGV4dC1jZW50ZXJcIiBbc3R5bGUud2lkdGgucHhdPVwidGltZWxpbmVPcHRpb25zLnVuaXRXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2xvdC5zdGFydCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8YnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyICpuZ0Zvcj1cImxldCBncm91cCBvZiAocmVzb3VyY2VzJCB8IGFzeW5jKVwiIFtyZXNvdXJjZUdyb3VwXT1cImdyb3VwXCIgW3RpbWVTbG90c109XCJ0aW1lU2xvdHNcIj48L2JzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19","export const availableScales = [\n { time: 60, pixels: 60, markerSize: 900 },\n { time: 120, pixels: 60, markerSize: 900 },\n { time: 300, pixels: 60, markerSize: 900 },\n { time: 900, pixels: 60, markerSize: 900 },\n { time: 3600, pixels: 60, markerSize: 21600 },\n { time: 7200, pixels: 60, markerSize: 21600 },\n { time: 10800, pixels: 60, markerSize: 21600 },\n { time: 21600, pixels: 60, markerSize: 21600 },\n { time: 86400, pixels: 60, markerSize: 604800 }, // 6000s / 60px = 100 s/px\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhaWxhYmxlLXNjYWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb25zdGFudHMvYXZhaWxhYmxlLXNjYWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXFCO0lBQzdDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBTSxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7SUFDN0MsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRTtJQUM3QyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUssTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO0lBQzdDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBSyxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7SUFFN0MsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFJLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtJQUMvQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUksTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO0lBQy9DLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7SUFDL0MsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtJQUUvQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQU8sNEJBQTRCO0NBQ3RGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlZHVsZXJTY2FsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1zY2hhbGVcIjtcblxuZXhwb3J0IGNvbnN0IGF2YWlsYWJsZVNjYWxlczogU2NoZWR1bGVyU2NhbGVbXSA9IFtcbiAgICB7IHRpbWU6IDYwLCAgICAgcGl4ZWxzOiA2MCwgbWFya2VyU2l6ZTogOTAwIH0sICAgICAgICAvLyA2MHMgLyA2MHB4ICAgICA9IDEgcy9weCAgICA9IDEgIG1pbiAvIDYwIHB4XG4gICAgeyB0aW1lOiAxMjAsICAgIHBpeGVsczogNjAsIG1hcmtlclNpemU6IDkwMCB9LCAgICAgICAgLy8gMTIwcyAvIDYwcHggICAgPSAyIHMvcHggICAgPSAyICBtaW4gLyA2MCBweFxuICAgIHsgdGltZTogMzAwLCAgICBwaXhlbHM6IDYwLCBtYXJrZXJTaXplOiA5MDAgfSwgICAgICAgIC8vIDE4MHMgLyA2MHB4ICAgID0gMyBzL3B4ICAgID0gNSAgbWluIC8gNjAgcHhcbiAgICB7IHRpbWU6IDkwMCwgICAgcGl4ZWxzOiA2MCwgbWFya2VyU2l6ZTogOTAwIH0sICAgICAgICAvLyAzNjBzIC8gNjBweCAgICA9IDYgcy9weCAgICA9IDE1IG1pbiAvIDYwIHB4XG5cbiAgICB7IHRpbWU6IDM2MDAsICAgcGl4ZWxzOiA2MCwgbWFya2VyU2l6ZTogMjE2MDAgfSwgICAgICAgLy8gNjAwcyAvIDYwcHggICAgPSAxMCBzL3B4ICAgPSAxICAgIHUgLyA2MCBweFxuICAgIHsgdGltZTogNzIwMCwgICBwaXhlbHM6IDYwLCBtYXJrZXJTaXplOiAyMTYwMCB9LCAgICAgICAvLyAxMjAwcyAvIDYwcHggICA9IDIwIHMvcHhcbiAgICB7IHRpbWU6IDEwODAwLCAgcGl4ZWxzOiA2MCwgbWFya2VyU2l6ZTogMjE2MDAgfSwgICAgICAgLy8gMTgwMHMgLyA2MHB4ICAgPSAzMCBzL3B4XG4gICAgeyB0aW1lOiAyMTYwMCwgIHBpeGVsczogNjAsIG1hcmtlclNpemU6IDIxNjAwIH0sICAgICAgIC8vIDM2MDBzIC8gNjBweCAgID0gNjAgcy9weFxuXG4gICAgeyB0aW1lOiA4NjQwMCwgIHBpeGVsczogNjAsIG1hcmtlclNpemU6IDYwNDgwMCB9LCAgICAgIC8vIDYwMDBzIC8gNjBweCAgID0gMTAwIHMvcHhcbl0iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class DateOffsetPipe {\n transform(value) {\n const today = new Date(value.start);\n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n return (value.start.getTime() - today.getTime()) / 1000;\n }\n}\nDateOffsetPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nDateOffsetPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"15.1.0\", ngImport: i0, type: DateOffsetPipe, name: \"dateOffset\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: DateOffsetPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateOffset'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1vZmZzZXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9waXBlcy9kYXRlLW9mZnNldC9kYXRlLW9mZnNldC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sY0FBYztJQUV6QixTQUFTLENBQUMsS0FBeUI7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDMUQsQ0FBQzs7MkdBUFUsY0FBYzt5R0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBSDFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFlBQVk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2RhdGVPZmZzZXQnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVPZmZzZXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBTY2hlZHVsZXJFdmVudFBhcnQpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKHZhbHVlLnN0YXJ0KTtcbiAgICB0b2RheS5zZXRIb3VycygwKTsgdG9kYXkuc2V0TWludXRlcygwKTsgdG9kYXkuc2V0U2Vjb25kcygwKTtcblxuICAgIHJldHVybiAodmFsdWUuc3RhcnQuZ2V0VGltZSgpIC0gdG9kYXkuZ2V0VGltZSgpKSAvIDEwMDA7XG4gIH1cblxufVxuIl19","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BsIconModule } from '@mintplayer/ng-bootstrap/icon';\nimport { BsSecondsTimespanPipe } from './pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe';\nimport { BsSecondsTodayOffsetPipe } from './pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe';\nimport { DateOffsetPipe } from './pipes/date-offset/date-offset.pipe';\nimport { DayOfWeekPipe } from './pipes/day-of-week/day-of-week.pipe';\nimport { BsSchedulerComponent } from './components/scheduler/scheduler.component';\nimport { ResourceGroupPresenterComponent } from './components/resource-group-presenter/resource-group-presenter.component';\nimport * as i0 from \"@angular/core\";\nexport class BsSchedulerModule {\n}\nBsSchedulerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBsSchedulerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,\n BsSecondsTimespanPipe,\n BsSecondsTodayOffsetPipe,\n DateOffsetPipe,\n DayOfWeekPipe,\n ResourceGroupPresenterComponent], imports: [CommonModule,\n BsIconModule], exports: [BsSchedulerComponent,\n ResourceGroupPresenterComponent] });\nBsSchedulerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule,\n BsIconModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.1.0\", ngImport: i0, type: BsSchedulerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n BsSchedulerComponent,\n BsSecondsTimespanPipe,\n BsSecondsTodayOffsetPipe,\n DateOffsetPipe,\n DayOfWeekPipe,\n ResourceGroupPresenterComponent\n ],\n imports: [\n CommonModule,\n BsIconModule,\n ],\n exports: [\n BsSchedulerComponent,\n ResourceGroupPresenterComponent\n ]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9zY2hlZHVsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDOztBQW9CM0gsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQWhCMUIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsY0FBYztRQUNkLGFBQWE7UUFDYiwrQkFBK0IsYUFHL0IsWUFBWTtRQUNaLFlBQVksYUFHWixvQkFBb0I7UUFDcEIsK0JBQStCOytHQUd0QixpQkFBaUIsWUFSMUIsWUFBWTtRQUNaLFlBQVk7MkZBT0gsaUJBQWlCO2tCQWxCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLCtCQUErQjtxQkFDaEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQiwrQkFBK0I7cUJBQ2hDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCc0ljb25Nb2R1bGUgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvaWNvbic7XG5pbXBvcnQgeyBCc1NlY29uZHNUaW1lc3BhblBpcGUgfSBmcm9tICcuL3BpcGVzL2JzLXNlY29uZHMtdGltZXNwYW4ucGlwZS9icy1zZWNvbmRzLXRpbWVzcGFuLnBpcGUnO1xuaW1wb3J0IHsgQnNTZWNvbmRzVG9kYXlPZmZzZXRQaXBlIH0gZnJvbSAnLi9waXBlcy9icy1zZWNvbmRzLXRvZGF5LW9mZnNldC9icy1zZWNvbmRzLXRvZGF5LW9mZnNldC5waXBlJztcbmltcG9ydCB7IERhdGVPZmZzZXRQaXBlIH0gZnJvbSAnLi9waXBlcy9kYXRlLW9mZnNldC9kYXRlLW9mZnNldC5waXBlJztcbmltcG9ydCB7IERheU9mV2Vla1BpcGUgfSBmcm9tICcuL3BpcGVzL2RheS1vZi13ZWVrL2RheS1vZi13ZWVrLnBpcGUnO1xuaW1wb3J0IHsgQnNTY2hlZHVsZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cFByZXNlbnRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yZXNvdXJjZS1ncm91cC1wcmVzZW50ZXIvcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJzU2NoZWR1bGVyQ29tcG9uZW50LFxuICAgIEJzU2Vjb25kc1RpbWVzcGFuUGlwZSxcbiAgICBCc1NlY29uZHNUb2RheU9mZnNldFBpcGUsXG4gICAgRGF0ZU9mZnNldFBpcGUsXG4gICAgRGF5T2ZXZWVrUGlwZSxcbiAgICBSZXNvdXJjZUdyb3VwUHJlc2VudGVyQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQnNJY29uTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnNTY2hlZHVsZXJDb21wb25lbnQsXG4gICAgUmVzb3VyY2VHcm91cFByZXNlbnRlckNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEJzU2NoZWR1bGVyTW9kdWxlIHsgfVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWludHBsYXllci1uZy1ib290c3RyYXAtc2NoZWR1bGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvbWludHBsYXllci1uZy1ib290c3RyYXAtc2NoZWR1bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2.BsTimelineService","i4","i5.ResourceGroupPresenterComponent","i6.BsSecondsTimespanPipe","i7.BsSecondsTodayOffsetPipe","i8.DayOfWeekPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-scheduler.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scheduler/src/enums/scheduler-mode.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/enums/drag-operation.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/services/timeline/timeline.service.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.html","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/pipes/day-of-week/day-of-week.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.html","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/constants/available-scales.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/pipes/date-offset/date-offset.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/scheduler.module.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/mintplayer-ng-bootstrap-scheduler.ts"],"sourcesContent":["export enum ESchedulerMode {\r\n week,\r\n timeline\r\n}","export enum EDragOperation {\r\n none,\r\n createEvent,\r\n resizeEvent,\r\n moveEvent,\r\n}","import { Injectable } from '@angular/core';\r\nimport { PreviewEvent } from '../../interfaces/preview-event';\r\nimport { SchedulerEvent } from '../../interfaces/scheduler-event';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\nimport { SchedulerEventWithParts } from '../../interfaces/scheduler-event-with-parts';\r\nimport { TimelineTrack } from '../../interfaces/timeline-track';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BsTimelineService {\r\n\r\n public splitInParts(event: SchedulerEvent | PreviewEvent) {\r\n let startTime = event.start;\r\n const result: SchedulerEventPart[] = [];\r\n const eventOrNull = 'color' in event ? event : null;\r\n while (!this.dateEquals(startTime, event.end)) {\r\n const end = new Date(startTime.getFullYear(), startTime.getMonth(), startTime.getDate() + 1, 0, 0, 0);\r\n result.push({ start: startTime, end: end, event: eventOrNull });\r\n startTime = end;\r\n }\r\n if (startTime != event.end) {\r\n result.push({ start: startTime, end: event.end, event: eventOrNull });\r\n }\r\n\r\n return <SchedulerEventWithParts>{ event: event, parts: result };\r\n }\r\n \r\n private dateEquals(date1: Date, date2: Date) {\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n );\r\n }\r\n\r\n public getTimeline(events: SchedulerEvent[]) {\r\n const timestamps = this.getTimestamps(events);\r\n const tracks: TimelineTrack[] = [];\r\n\r\n timestamps.forEach((timestamp, tIndex) => {\r\n const starting = events.filter((e) => e.start === timestamp);\r\n // const ending = events.filter((e) => e.end === timestamp);\r\n\r\n starting.forEach((startedEvent, eIndex) => {\r\n const freeTracks = tracks.filter(t => this.trackIsFreeAt(t, startedEvent));\r\n if (freeTracks.length === 0) {\r\n tracks.push({ index: tracks.length, events: [startedEvent] });\r\n } else {\r\n freeTracks[0].events.push(startedEvent);\r\n }\r\n });\r\n });\r\n\r\n return tracks;\r\n }\r\n\r\n private getTimestamps(events: SchedulerEvent[]) {\r\n const allTimestamps = events.map(e => [e.start, e.end])\r\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\r\n \r\n return allTimestamps\r\n .filter((t, i) => allTimestamps.indexOf(t) === i)\r\n .sort((t1, t2) => <any>t1 - <any>t2);\r\n }\r\n\r\n private trackIsFreeAt(track: TimelineTrack, event: SchedulerEvent) {\r\n if (track.events.every((ev) => (ev.end <= event.start) || (event.end <= ev.start))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, filter, map, Observable, Subject, take, takeUntil } from 'rxjs';\r\nimport { Resource, ResourceGroup } from '../../interfaces';\r\nimport { ResourceOrGroup } from '../../interfaces/resource-or-group';\r\nimport { SchedulerStampWithSlots } from '../../interfaces/scheduler-stamp-with-slots';\r\nimport { TimeSlot } from '../../interfaces/time-slot';\r\n\r\n@Component({\r\n selector: 'bs-resource-group-presenter',\r\n templateUrl: './resource-group-presenter.component.html',\r\n styleUrls: ['./resource-group-presenter.component.scss'],\r\n \r\n})\r\nexport class ResourceGroupPresenterComponent implements OnDestroy {\r\n \r\n constructor() {\r\n this.data$ = this.resourceOrGroup$\r\n .pipe(map((resourceOrGroup) => {\r\n if (!resourceOrGroup) {\r\n return null;\r\n } else if ('children' in resourceOrGroup) {\r\n return <ResourceOrGroup>{\r\n resource: null,\r\n resourceGroup: resourceOrGroup\r\n };\r\n } else {\r\n return <ResourceOrGroup>{\r\n resource: resourceOrGroup,\r\n resourceGroup: null\r\n };\r\n }\r\n }))\r\n .pipe(filter((resourceOrGroup) => !!resourceOrGroup))\r\n .pipe(map((resourceOrGroup) => <ResourceOrGroup>resourceOrGroup));\r\n\r\n this.colSpan$ = this.timeSlots$\r\n .pipe(map(timeSlots => timeSlots\r\n .map(timeslot => timeslot.slots.length)\r\n .reduce((sum, current) => sum + current, 0)\r\n ));\r\n }\r\n\r\n @Input() level = 0;\r\n resourceOrGroup$ = new BehaviorSubject<Resource | ResourceGroup | null>(null);\r\n timeSlots$ = new BehaviorSubject<SchedulerStampWithSlots[]>([]);\r\n isExpanded$ = new BehaviorSubject<boolean>(false);\r\n data$: Observable<ResourceOrGroup>;\r\n colSpan$: Observable<number>;\r\n destroyed$ = new Subject();\r\n\r\n //#region resourceOrGroup\r\n public get resourceOrGroup() {\r\n return this.resourceOrGroup$.value;\r\n }\r\n @Input() public set resourceGroup(value: Resource | ResourceGroup | null) {\r\n this.resourceOrGroup$.next(value);\r\n }\r\n //#endregion\r\n\r\n //#region timeSlots\r\n public get timeSlots() {\r\n return this.timeSlots$.value;\r\n }\r\n @Input() public set timeSlots(value: SchedulerStampWithSlots[]) {\r\n this.timeSlots$.next(value);\r\n }\r\n //#endregion\r\n\r\n //#region isExpanded\r\n public get isExpanded() {\r\n return this.isExpanded$.value;\r\n }\r\n @Input() public set isExpanded(value: boolean) {\r\n this.isExpanded$.next(value);\r\n }\r\n //#endregion\r\n\r\n toggleExpanded() {\r\n this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {\r\n this.isExpanded$.next(!isExpanded);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"(data$ | async) as data\">\r\n\r\n <!-- Data is a resource group -->\r\n <ng-container *ngIf=\"data.resourceGroup\">\r\n <!-- Header -->\r\n <tr class=\"p-0 cursor-pointer\" *ngIf=\"(timeSlots$ | async) as timeSlots\" [title]=\"data.resourceGroup.description\">\r\n <ng-container *ngIf=\"(colSpan$ | async) as colspan\">\r\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\r\n <span class=\"p-2 align-middle position-sticky\">\r\n <bs-icon [icon]=\"'chevron-down'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"isExpanded$ | async\"></bs-icon>\r\n <bs-icon [icon]=\"'chevron-right'\" [style.padding-left.px]=\"level * 20\" *ngIf=\"(isExpanded$ | async) === false\"></bs-icon>\r\n {{ data.resourceGroup.description }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n\r\n <!-- Subgroups or resources -->\r\n <ng-container *ngIf=\"isExpanded$ | async\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <ng-container *ngFor=\"let child of data.resourceGroup.children\">\r\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- Data is a resource -->\r\n <tr *ngIf=\"data.resource\" class=\"p-0 bordered\" [title]=\"data.resource.description\">\r\n <td class=\"p-0 bg-white\">\r\n <div class=\"p-2\">{{ data.resource.description }}</div>\r\n </td>\r\n <ng-container *ngFor=\"let slots of (timeSlots$ | async)\">\r\n <td class=\"bg-white border-1\" *ngFor=\"let slot of slots.slots\">\r\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SchedulerEvent } from '../../interfaces/scheduler-event';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\n\r\n@Pipe({\r\n name: 'bsSecondsTimespan'\r\n})\r\nexport class BsSecondsTimespanPipe implements PipeTransform {\r\n\r\n transform(value: SchedulerEventPart | SchedulerEvent) {\r\n return (value.end.getTime() - value.start.getTime()) / 1000;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SchedulerEvent } from '../../interfaces/scheduler-event';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\n\r\n@Pipe({\r\n name: 'bsSecondsTodayOffset'\r\n})\r\nexport class BsSecondsTodayOffsetPipe implements PipeTransform {\r\n\r\n transform(value: SchedulerEventPart | SchedulerEvent) {\r\n const today = new Date(value.start);\r\n today.setHours(0); today.setMinutes(0); today.setSeconds(0);\r\n\r\n return (value.start.getTime() - today.getTime()) / 1000;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SchedulerEvent } from '../../interfaces/scheduler-event';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\n\r\n@Pipe({\r\n name: 'dayOfWeek'\r\n})\r\nexport class DayOfWeekPipe implements PipeTransform {\r\n\r\n transform(value: SchedulerEventPart | SchedulerEvent) {\r\n const dayOfWeek = value.start.getDay();\r\n if (dayOfWeek === 0) {\r\n return 7;\r\n } else {\r\n return dayOfWeek;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest, filter, map, Observable, Subject, take, takeUntil } from 'rxjs';\r\nimport { BsCalendarMonthService } from '@mintplayer/ng-bootstrap/calendar-month';\r\nimport { ESchedulerMode } from '../../enums/scheduler-mode';\r\nimport { EDragOperation } from '../../enums/drag-operation';\r\nimport { DragOperation } from '../../interfaces/drag-operation';\r\nimport { PreviewEvent } from '../../interfaces/preview-event';\r\nimport { SchedulerEvent } from '../../interfaces/scheduler-event';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\nimport { SchedulerEventWithParts } from '../../interfaces/scheduler-event-with-parts';\r\nimport { TimeSlot } from '../../interfaces/time-slot';\r\nimport { BsTimelineService } from '../../services/timeline/timeline.service';\r\nimport { ResourceGroup } from '../../interfaces/resource-group';\r\nimport { Resource } from '../../interfaces/resource';\r\nimport { SchedulerStampWithSlots } from '../../interfaces/scheduler-stamp-with-slots';\r\nimport { WeekOptions } from '../../interfaces/week-options';\r\nimport { TimelineOptions } from '../../interfaces/timeline-options';\r\n\r\n@Component({\r\n selector: 'bs-scheduler',\r\n templateUrl: './scheduler.component.html',\r\n styleUrls: ['./scheduler.component.scss'],\r\n})\r\nexport class BsSchedulerComponent implements OnDestroy {\r\n constructor(private calendarMonthService: BsCalendarMonthService, private timelineService: BsTimelineService) {\r\n const monday = this.calendarMonthService.getMondayBefore(new Date());\r\n this.currentWeekOrMonth$ = new BehaviorSubject<Date>(monday);\r\n\r\n this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])\r\n .pipe(map(([currentDay, mode]) => {\r\n currentDay.setHours(0);\r\n currentDay.setMinutes(0);\r\n currentDay.setSeconds(0);\r\n currentDay.setMilliseconds(0);\r\n switch (mode) {\r\n case ESchedulerMode.week: {\r\n return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));\r\n }\r\n case ESchedulerMode.timeline: {\r\n const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);\r\n const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();\r\n return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));\r\n }\r\n }\r\n })\r\n );\r\n\r\n this.daysOfWeekWithTimestamps$ = this.shownDays$\r\n .pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));\r\n \r\n this.events$ = this.resources$\r\n .pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))\r\n .pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))\r\n .pipe(map(resources => resources.map(res => res.events)))\r\n .pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));\r\n\r\n // groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])\r\n this.eventParts$ = this.events$.pipe(\r\n map((events) => events.map((ev) => this.timelineService.splitInParts(ev)))\r\n );\r\n\r\n this.eventPartsForThisWeek$ = combineLatest([\r\n this.daysOfWeekWithTimestamps$,\r\n this.eventParts$\r\n .pipe(map(eventParts => eventParts.map(evp => evp.parts)))\r\n .pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))\r\n ])\r\n .pipe(map(([startAndEnd, eventParts]) => {\r\n return eventParts.filter(eventPart => {\r\n return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));\r\n });\r\n }));\r\n\r\n this.previewEventParts$ = this.previewEvent$.pipe(\r\n map((event) => {\r\n if (event) {\r\n return this.timelineService.splitInParts(event)\r\n } else {\r\n return null;\r\n }\r\n })\r\n );\r\n this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])\r\n .pipe(map(([startAndEnd, previewEventParts]) => {\r\n if (previewEventParts) {\r\n return previewEventParts.parts.filter(eventPart => {\r\n return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));\r\n });\r\n } else {\r\n return [];\r\n }\r\n }));\r\n\r\n this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$\r\n .pipe(map(eventParts => {\r\n // We'll only use the events for this week\r\n const events = eventParts.map(ep => ep.event)\r\n .filter((e, i, list) => list.indexOf(e) === i)\r\n .filter((e) => !!e)\r\n .map((e) => <SchedulerEvent>e);\r\n const timeline = this.timelineService.getTimeline(events);\r\n\r\n const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))\r\n .reduce((flat, toFlatten) => flat.concat(toFlatten), [])\r\n .map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))\r\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\r\n\r\n return {\r\n total: timeline.length,\r\n parts: result\r\n };\r\n }));\r\n\r\n combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])\r\n .pipe(filter(([mode, shownDays, duration]) => mode !== null))\r\n .pipe(map(([mode, shownDays, duration]) => {\r\n switch (mode) {\r\n case ESchedulerMode.week: {\r\n const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);\r\n return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {\r\n const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);\r\n\r\n return <SchedulerStampWithSlots>{\r\n slots: shownDays.map((day) => {\r\n const start = new Date(day);\r\n start.setHours(timeslotForMonday.start.getHours());\r\n start.setMinutes(timeslotForMonday.start.getMinutes());\r\n start.setSeconds(timeslotForMonday.start.getSeconds());\r\n start.setMilliseconds(timeslotForMonday.start.getMilliseconds());\r\n \r\n const end = new Date(day);\r\n end.setHours(timeslotForMonday.end.getHours());\r\n end.setMinutes(timeslotForMonday.end.getMinutes());\r\n end.setSeconds(timeslotForMonday.end.getSeconds());\r\n end.setMilliseconds(timeslotForMonday.end.getMilliseconds());\r\n end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());\r\n \r\n return <TimeSlot>{ start, end };\r\n }),\r\n stamp: timeslotForMonday.start\r\n };\r\n });\r\n }\r\n case ESchedulerMode.timeline: {\r\n const totalTimeslots = (24 * 60 * 60) / duration;\r\n return shownDays.map((day) => {\r\n return <SchedulerStampWithSlots>{\r\n slots: Array.from(Array(totalTimeslots).keys())\r\n .map((index) => {\r\n return this.createTimeslot(day, index, duration);\r\n }),\r\n stamp: day\r\n } \r\n });\r\n }\r\n default: {\r\n throw 'Unknown value for Mode: ' + mode;\r\n }\r\n }\r\n }))\r\n .subscribe((timeslots) => {\r\n // For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.\r\n this.timeSlots$.next(timeslots);\r\n });\r\n \r\n this.weekOptions$\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((weekOptions) => {\r\n this.weekOptionsChange.emit(weekOptions);\r\n });\r\n this.timelineOptions$\r\n .pipe(takeUntil(this.destroyed$))\r\n .subscribe((timelineOptions) => {\r\n this.timelineOptionsChange.emit(timelineOptions);\r\n });\r\n\r\n // combineLatest([this.mode$, this.scale$])\r\n // .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))\r\n\r\n }\r\n\r\n resources$ = new BehaviorSubject<(Resource | ResourceGroup)[]>([]);\r\n events$: Observable<SchedulerEvent[]>;\r\n eventParts$: Observable<SchedulerEventWithParts[]>;\r\n eventPartsForThisWeek$: Observable<SchedulerEventPart[]>;\r\n timelinedEventPartsForThisWeek$: Observable<{ total: number, parts: { part: SchedulerEventPart, index: number}[] }>;\r\n weekOptions$ = new BehaviorSubject<WeekOptions>({ unitHeight: 30 });\r\n timelineOptions$ = new BehaviorSubject<TimelineOptions>({ unitWidth: 50 });\r\n \r\n previewEvent$ = new BehaviorSubject<PreviewEvent | null>(null);\r\n previewEventParts$: Observable<SchedulerEventWithParts | null>;\r\n previewEventPartsForThisWeek$: Observable<SchedulerEventPart[]>;\r\n \r\n currentWeekOrMonth$: BehaviorSubject<Date>;\r\n shownDays$: Observable<Date[]>;\r\n daysOfWeekWithTimestamps$: Observable<{start: number, end: number}>;\r\n timeSlotDuration$ = new BehaviorSubject<number>(1800);\r\n timeSlots$ = new BehaviorSubject<SchedulerStampWithSlots[]>([]);\r\n mouseState$ = new BehaviorSubject<boolean>(false);\r\n hoveredTimeSlot$ = new BehaviorSubject<TimeSlot | null>(null);\r\n hoveredEvent$ = new BehaviorSubject<SchedulerEvent | null>(null);\r\n destroyed$ = new Subject();\r\n\r\n @ViewChildren('slot') timeSlotElements!: QueryList<ElementRef<HTMLDivElement>>;\r\n\r\n createTimeslot(date: Date, index: number, duration: number) {\r\n const timeSlotStart = new Date(date);\r\n timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);\r\n const timeSlotEnd = new Date(timeSlotStart);\r\n timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);\r\n\r\n return <TimeSlot>{ start: timeSlotStart, end: timeSlotEnd };\r\n }\r\n\r\n getResourcesForGroup(resourceOrGroup: Resource | ResourceGroup) : Resource[] {\r\n if ('children' in resourceOrGroup) {\r\n return resourceOrGroup.children\r\n .map((child) => this.getResourcesForGroup(child))\r\n .reduce((flat, toFlatten) => flat.concat(toFlatten), []);\r\n } else {\r\n return [resourceOrGroup];\r\n }\r\n }\r\n\r\n //#region Mode\r\n modes = ESchedulerMode;\r\n mode$ = new BehaviorSubject<ESchedulerMode>(ESchedulerMode.week);\r\n @Output() public modeChange = new EventEmitter<ESchedulerMode>();\r\n public get mode() {\r\n return this.mode$.value;\r\n }\r\n @Input() public set mode(value: ESchedulerMode) {\r\n this.mode$.next(value);\r\n }\r\n //#endregion\r\n // //#region Scale\r\n // scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);\r\n // @Output() public scaleChange = new EventEmitter<SchedulerScale>();\r\n // public get scale() {\r\n // return this.scale$.value;\r\n // }\r\n // @Input() public set scale(value: SchedulerScale) {\r\n // this.scale$.next(value);\r\n // }\r\n // //#endregion\r\n //#region WeekOptions\r\n @Output() public weekOptionsChange = new EventEmitter<WeekOptions>();\r\n public get weekOptions() {\r\n return this.weekOptions$.value;\r\n }\r\n @Input() public set weekOptions(value: WeekOptions) {\r\n this.weekOptions$.next(value);\r\n }\r\n //#endregion\r\n //#region TimelineOptions\r\n @Output() public timelineOptionsChange = new EventEmitter<TimelineOptions>();\r\n public get timelineOptions() {\r\n return this.timelineOptions$.value;\r\n }\r\n @Input() public set timelineOptions(value: TimelineOptions) {\r\n this.timelineOptions$.next(value);\r\n }\r\n //#endregion\r\n //#region maxInnerHeight\r\n @Input() public maxInnerHeight: number | null = null;\r\n //#endregion\r\n //#region Resources\r\n public get resources() {\r\n return this.resources$.value;\r\n }\r\n @Input() public set resources(value: (Resource | ResourceGroup)[]) {\r\n this.resources$.next(value);\r\n }\r\n //#endregion\r\n\r\n private addDays(date: Date, days: number) {\r\n const result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n\r\n onPreviousWeekOrMonth() {\r\n this.onChangeWeekOrMonth(false);\r\n }\r\n\r\n onNextWeekOrMonth() {\r\n this.onChangeWeekOrMonth(true);\r\n }\r\n\r\n private onChangeWeekOrMonth(next: boolean) {\r\n combineLatest([this.currentWeekOrMonth$, this.mode$])\r\n .pipe(map(([currentWeekOrMonth, mode]) => {\r\n switch (mode) {\r\n case ESchedulerMode.week: {\r\n return this.addDays(currentWeekOrMonth, (next ? 7 : -7));\r\n }\r\n case ESchedulerMode.timeline: {\r\n return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);\r\n }\r\n }\r\n }), take(1))\r\n .subscribe((w) => this.currentWeekOrMonth$.next(w));\r\n }\r\n\r\n onHoverEvent(ev: SchedulerEvent | null) {\r\n this.hoveredEvent$.next(ev);\r\n }\r\n\r\n onLeaveEvent(ev: SchedulerEvent | null) {\r\n this.hoveredEvent$.next(null);\r\n }\r\n\r\n operation: DragOperation | null = null;\r\n dragStartTimeslot: TimeSlot | null = null;\r\n onCreateEvent(ev: MouseEvent, slot: TimeSlot) {\r\n ev.preventDefault();\r\n this.mouseState$.next(true);\r\n this.dragStartTimeslot = slot;\r\n this.operation = {\r\n operation: EDragOperation.createEvent,\r\n event: {\r\n start: slot.start,\r\n end: slot.end,\r\n color: '#F00',\r\n description: 'Test event',\r\n },\r\n meta: null,\r\n };\r\n this.previewEvent$.next({ start: slot.start, end: slot.end });\r\n }\r\n\r\n randomColor() {\r\n const brightness = 128;\r\n return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);\r\n }\r\n randomChannel(brightness: number){\r\n const r = 255-brightness;\r\n const n = 0|((Math.random() * r) + brightness);\r\n const s = n.toString(16);\r\n return (s.length==1) ? '0'+s : s;\r\n }\r\n\r\n onStartDragEvent(eventPart: SchedulerEventPart, ev: MouseEvent) {\r\n ev.preventDefault();\r\n this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {\r\n if (eventPart.event) {\r\n this.dragStartTimeslot = hoveredTimeSlot;\r\n this.operation = {\r\n operation: EDragOperation.moveEvent,\r\n event: eventPart.event,\r\n meta: null,\r\n };\r\n this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });\r\n }\r\n });\r\n }\r\n\r\n onStartResizeEvent(event: SchedulerEvent | null, position: 'top' | 'bottom') {\r\n if (event) {\r\n switch (position) {\r\n case 'top': {\r\n this.operation = {\r\n operation: EDragOperation.resizeEvent,\r\n event: event,\r\n meta: { position },\r\n }\r\n this.previewEvent$.next({ start: event.start, end: event.end });\r\n } break;\r\n case 'bottom': {\r\n this.operation = {\r\n operation: EDragOperation.resizeEvent,\r\n event: event,\r\n meta: { position },\r\n }\r\n this.previewEvent$.next({ start: event.start, end: event.end });\r\n } break;\r\n }\r\n }\r\n }\r\n\r\n //#region hoveredTimeslot$\r\n private getHoveredTimeslot(ev: MouseEvent, timeSlots: SchedulerStampWithSlots[]) {\r\n const hoveredSlots = this.timeSlotElements.filter((el) => {\r\n const rct = el.nativeElement.getBoundingClientRect();\r\n if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n\r\n if (!hoveredSlots || hoveredSlots.length === 0) {\r\n return null;\r\n }\r\n\r\n const slotElement = hoveredSlots[0].nativeElement;\r\n\r\n const strRow = slotElement.getAttribute('data-row');\r\n if (!strRow) {\r\n return null;\r\n }\r\n const row = parseInt(strRow);\r\n\r\n const strColumn = slotElement.getAttribute('data-column');\r\n if (!strColumn) {\r\n return null;\r\n }\r\n const column = parseInt(strColumn);\r\n\r\n const slot = timeSlots[row].slots[column];\r\n return slot;\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMousemove(ev: MouseEvent) {\r\n this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {\r\n const hovered = this.getHoveredTimeslot(ev, timeSlots);\r\n this.hoveredTimeSlot$.next(hovered);\r\n\r\n if (this.operation) {\r\n switch (this.operation.operation) {\r\n case EDragOperation.createEvent: {\r\n if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {\r\n if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {\r\n // 1 slot\r\n } else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {\r\n // Drag down\r\n this.previewEvent$\r\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\r\n .pipe(map((ev) => {\r\n if (ev && this.dragStartTimeslot) {\r\n ev.start = this.dragStartTimeslot.start;\r\n ev.end = hovered.end;\r\n }\r\n return ev;\r\n }))\r\n .pipe(take(1))\r\n .subscribe((ev) => this.previewEvent$.next(ev));\r\n } else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {\r\n // Drag up\r\n this.previewEvent$\r\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\r\n .pipe(map((ev) => {\r\n if (ev && this.dragStartTimeslot) {\r\n ev.start = hovered.start;\r\n ev.end = this.dragStartTimeslot.end;\r\n }\r\n return ev;\r\n }))\r\n .pipe(take(1))\r\n .subscribe((ev) => this.previewEvent$.next(ev));\r\n }\r\n }\r\n } break;\r\n case EDragOperation.moveEvent: {\r\n if (hovered && this.dragStartTimeslot) {\r\n this.previewEvent$\r\n .pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))\r\n .pipe(map((ev) => {\r\n if (ev && this.dragStartTimeslot) {\r\n const result = <PreviewEvent>{\r\n start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),\r\n end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())\r\n };\r\n \r\n this.dragStartTimeslot = hovered;\r\n\r\n return result;\r\n } else {\r\n return ev;\r\n }\r\n }))\r\n .pipe(take(1))\r\n .subscribe(ev => this.previewEvent$.next(ev));\r\n }\r\n } break;\r\n case EDragOperation.resizeEvent: {\r\n if (hovered) {\r\n this.previewEvent$\r\n .pipe(filter((ev) => !!ev))\r\n .pipe(map((ev) => {\r\n if (ev && this.operation && this.operation.event) {\r\n if (this.operation.meta.position === 'top') {\r\n ev.start = hovered.start;\r\n ev.end = this.operation.event.end;\r\n } else if (this.operation.meta.position === 'bottom') {\r\n ev.start = this.operation.event.start;\r\n ev.end = hovered.end;\r\n }\r\n }\r\n return ev;\r\n }))\r\n .pipe(take(1))\r\n .subscribe((ev) => this.previewEvent$.next(ev));\r\n }\r\n } break;\r\n }\r\n }\r\n\r\n });\r\n }\r\n //#endregion\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp(ev: MouseEvent) {\r\n if (this.operation) {\r\n switch (this.operation.operation) {\r\n case EDragOperation.createEvent: {\r\n combineLatest([this.previewEvent$])\r\n .pipe(take(1))\r\n .subscribe(([previewEvent]) => {\r\n if (previewEvent) {\r\n this.operation = null;\r\n this.dragStartTimeslot = null;\r\n this.resources$.next([\r\n ...this.resources$.value,\r\n <Resource>{\r\n description: 'New resource group',\r\n events: [{\r\n start: previewEvent.start,\r\n end: previewEvent.end,\r\n color: this.randomColor(),\r\n description: 'New event'\r\n }]\r\n }\r\n ]);\r\n this.previewEvent$.next(null);\r\n }\r\n });\r\n } break;\r\n case EDragOperation.moveEvent:\r\n case EDragOperation.resizeEvent: {\r\n this.previewEvent$\r\n .pipe(filter((ev) => !!ev))\r\n .pipe(take(1))\r\n .subscribe((previewEvent) => {\r\n if (this.operation && this.operation.event && previewEvent) {\r\n this.operation.event.start = previewEvent.start;\r\n this.operation.event.end = previewEvent.end;\r\n this.operation = null;\r\n this.dragStartTimeslot = null;\r\n this.resources$.next(this.resources$.value);\r\n this.previewEvent$.next(null);\r\n }\r\n });\r\n } break;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n }\r\n}\r\n","<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\r\n *ngIf=\"(mode$ | async) === modes.week\">\r\n <div class=\"calendar-head\">\r\n <div class=\"w-100 d-flex flex-row\">\r\n <div class=\"d-flex calendar-left justify-content-between\">\r\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\r\n <span class=\"d-block col-form-label text-center text-nowrap\">\r\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\r\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\r\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\r\n <!-- Timeslots -->\r\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\r\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\r\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\r\n </div>\r\n\r\n <!-- Events -->\r\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\r\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\r\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\r\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\r\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\r\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\r\n\r\n <div class=\"event-resize top\"\r\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\r\n <div class=\"event-border\"></div>\r\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\r\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\r\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\r\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\r\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\r\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\r\n </div>\r\n <div class=\"event-resize bottom\"\r\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\r\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\r\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\r\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\r\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\r\n <div class=\"event-inner w-100\"\r\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\r\n <div class=\"calendar-head d-flex\">\r\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\r\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\r\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"calendar-body table-responsive overflow-x-auto\">\r\n <table class=\"table mb-0\">\r\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\r\n <tr>\r\n <td></td>\r\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\r\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td></td>\r\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\r\n <ng-container *ngFor=\"let day of timeSlots\">\r\n <td *ngFor=\"let slot of day.slots\">\r\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\r\n {{ slot.start | date: 'HH:mm' }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>","import { SchedulerScale } from \"../interfaces/scheduler-schale\";\r\n\r\nexport const availableScales: SchedulerScale[] = [\r\n { time: 60, pixels: 60, markerSize: 900 }, // 60s / 60px = 1 s/px = 1 min / 60 px\r\n { time: 120, pixels: 60, markerSize: 900 }, // 120s / 60px = 2 s/px = 2 min / 60 px\r\n { time: 300, pixels: 60, markerSize: 900 }, // 180s / 60px = 3 s/px = 5 min / 60 px\r\n { time: 900, pixels: 60, markerSize: 900 }, // 360s / 60px = 6 s/px = 15 min / 60 px\r\n\r\n { time: 3600, pixels: 60, markerSize: 21600 }, // 600s / 60px = 10 s/px = 1 u / 60 px\r\n { time: 7200, pixels: 60, markerSize: 21600 }, // 1200s / 60px = 20 s/px\r\n { time: 10800, pixels: 60, markerSize: 21600 }, // 1800s / 60px = 30 s/px\r\n { time: 21600, pixels: 60, markerSize: 21600 }, // 3600s / 60px = 60 s/px\r\n\r\n { time: 86400, pixels: 60, markerSize: 604800 }, // 6000s / 60px = 100 s/px\r\n]","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SchedulerEventPart } from '../../interfaces/scheduler-event-part';\r\n\r\n@Pipe({\r\n name: 'dateOffset'\r\n})\r\nexport class DateOffsetPipe implements PipeTransform {\r\n\r\n transform(value: SchedulerEventPart) {\r\n const today = new Date(value.start);\r\n today.setHours(0); today.setMinutes(0); today.setSeconds(0);\r\n\r\n return (value.start.getTime() - today.getTime()) / 1000;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BsIconModule } from '@mintplayer/ng-bootstrap/icon';\r\nimport { BsSecondsTimespanPipe } from './pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe';\r\nimport { BsSecondsTodayOffsetPipe } from './pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe';\r\nimport { DateOffsetPipe } from './pipes/date-offset/date-offset.pipe';\r\nimport { DayOfWeekPipe } from './pipes/day-of-week/day-of-week.pipe';\r\nimport { BsSchedulerComponent } from './components/scheduler/scheduler.component';\r\nimport { ResourceGroupPresenterComponent } from './components/resource-group-presenter/resource-group-presenter.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n BsSchedulerComponent,\r\n BsSecondsTimespanPipe,\r\n BsSecondsTodayOffsetPipe,\r\n DateOffsetPipe,\r\n DayOfWeekPipe,\r\n ResourceGroupPresenterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BsIconModule,\r\n ],\r\n exports: [\r\n BsSchedulerComponent,\r\n ResourceGroupPresenterComponent\r\n ]\r\n})\r\nexport class BsSchedulerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.BsTimelineService","i4","i5.ResourceGroupPresenterComponent","i6.BsSecondsTimespanPipe","i7.BsSecondsTodayOffsetPipe","i8.DayOfWeekPipe"],"mappings":"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"}
|