@coreui/angular-pro 4.4.12 → 4.5.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 +2 -2
- package/{esm2020 → esm2022}/lib/accordion/accordion/accordion.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
- package/esm2022/lib/accordion/accordion.module.mjs +36 -0
- package/{esm2020 → esm2022}/lib/accordion/accordion.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/alert/alert-heading.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/alert/alert-link.directive.mjs +4 -4
- package/esm2022/lib/alert/alert.component.mjs +181 -0
- package/esm2022/lib/alert/alert.module.mjs +30 -0
- package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +4 -4
- package/esm2022/lib/avatar/avatar.module.mjs +20 -0
- package/{esm2020 → esm2022}/lib/backdrop/backdrop.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/badge/badge.component.mjs +4 -4
- package/esm2022/lib/badge/badge.module.mjs +20 -0
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +4 -4
- package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +52 -0
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +34 -0
- package/{esm2020 → esm2022}/lib/button/button-close.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/button.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/button.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/button-group/button-group/button-group.component.mjs +4 -4
- package/esm2022/lib/button-group/button-group.module.mjs +17 -0
- package/{esm2020 → esm2022}/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar/calendar-class-view.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar/calendar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-day.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-month.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
- package/esm2022/lib/calendar/calendar.module.mjs +54 -0
- package/{esm2020 → esm2022}/lib/calendar/calendar.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/callout/callout.component.mjs +4 -4
- package/esm2022/lib/callout/callout.module.mjs +16 -0
- package/{esm2020 → esm2022}/lib/card/card-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-header-actions.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-img.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-link.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-subtitle.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-text.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card-title.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/card/card.component.mjs +4 -4
- package/esm2022/lib/card/card.module.mjs +75 -0
- package/{esm2020 → esm2022}/lib/carousel/carousel/carousel.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-control/carousel-control.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel-state.mjs +4 -4
- package/{esm2020 → esm2022}/lib/carousel/carousel.config.mjs +4 -4
- package/esm2022/lib/carousel/carousel.module.mjs +52 -0
- package/{esm2020 → esm2022}/lib/carousel/carousel.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/collapse/collapse.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/collapse/collapse.module.mjs +5 -5
- package/esm2022/lib/date-picker/date-picker.component.mjs +93 -0
- package/{esm2020 → esm2022}/lib/date-picker/date-picker.module.mjs +5 -5
- package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +675 -0
- package/{esm2020 → esm2022}/lib/date-range-picker/date-range-picker.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/dropdown/dropdown/dropdown.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown.module.mjs +56 -0
- package/{esm2020 → esm2022}/lib/dropdown/dropdown.service.mjs +4 -4
- package/esm2022/lib/element-cover/element-cover.component.mjs +68 -0
- package/esm2022/lib/element-cover/element-cover.module.mjs +16 -0
- package/{esm2020 → esm2022}/lib/footer/footer.component.mjs +4 -4
- package/esm2022/lib/footer/footer.module.mjs +16 -0
- package/{esm2020 → esm2022}/lib/form/form/form.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-check/form-check-input.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-check/form-check-label.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-check/form-check.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-control/form-control.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-feedback/form-feedback.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-floating/form-floating.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-label/form-label.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-select/form-select.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/form-text/form-text.directive.mjs +4 -4
- package/esm2022/lib/form/form.module.mjs +75 -0
- package/{esm2020 → esm2022}/lib/form/input-group/input-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/grid/col.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/grid/col.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/grid/container.component.mjs +4 -4
- package/esm2022/lib/grid/grid.module.mjs +45 -0
- package/{esm2020 → esm2022}/lib/grid/gutter.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/grid/row.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/grid/row.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header/header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header-brand/header-brand.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header-divider/header-divider.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header-nav/header-nav.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header-text/header-text.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
- package/esm2022/lib/header/header.module.mjs +45 -0
- package/{esm2020 → esm2022}/lib/image/img.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/image/img.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/list-group/list-group-item.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/list-group/list-group.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/list-group/list-group.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/loading-button/loading-button.component.mjs +4 -4
- package/esm2022/lib/loading-button/loading-button.module.mjs +16 -0
- package/{esm2020 → esm2022}/lib/modal/modal/modal.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/modal/modal-body/modal-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-content/modal-content.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-header/modal-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modal/modal-title/modal-title.directive.mjs +4 -4
- package/esm2022/lib/modal/modal.module.mjs +57 -0
- package/{esm2020 → esm2022}/lib/modal/modal.service.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +69 -0
- package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +1066 -0
- package/{esm2020 → esm2022}/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +334 -0
- package/{esm2020 → esm2022}/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select.module.mjs +37 -0
- package/esm2022/lib/multi-select/multi-select.service.mjs +38 -0
- package/{esm2020 → esm2022}/lib/nav/nav-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/nav/nav-link.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/nav/nav.component.mjs +4 -4
- package/esm2022/lib/nav/nav.module.mjs +30 -0
- package/{esm2020 → esm2022}/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navbar/navbar.component.mjs +4 -4
- package/esm2022/lib/navbar/navbar.module.mjs +40 -0
- package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +321 -0
- package/{esm2020 → esm2022}/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
- package/esm2022/lib/offcanvas/offcanvas.module.mjs +49 -0
- package/{esm2020 → esm2022}/lib/offcanvas/offcanvas.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pagination/page-item/page-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pagination/page-item/page-item.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pagination/page-link/page-link.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pagination/pagination/pagination.component.mjs +4 -4
- package/esm2022/lib/pagination/pagination.module.mjs +35 -0
- package/{esm2020 → esm2022}/lib/placeholder/placeholder-animation.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/placeholder/placeholder.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/placeholder/placeholder.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/popover/popover/popover.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/popover/popover.directive.mjs +4 -4
- package/esm2022/lib/popover/popover.module.mjs +25 -0
- package/{esm2020 → esm2022}/lib/progress/progress-bar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/progress/progress.component.mjs +4 -4
- package/esm2022/lib/progress/progress.module.mjs +25 -0
- package/{esm2020 → esm2022}/lib/services/class-toggle.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/intersection.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/listeners.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/html-attr.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/shared.module.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/template-id.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar/sidebar.component.mjs +46 -42
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-header/sidebar-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +9 -9
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +230 -0
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar.module.mjs +83 -0
- package/{esm2020 → esm2022}/lib/sidebar/sidebar.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/smart-pagination/smart-pagination.component.mjs +4 -4
- package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +16 -0
- package/{esm2020 → esm2022}/lib/smart-table/smart-table/smart-table.component.mjs +4 -4
- package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +28 -0
- package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +78 -0
- package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/smart-table/smart-table-head/smart-table-head.component.mjs +4 -4
- package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +52 -0
- package/esm2022/lib/smart-table/smart-table.module.mjs +17 -0
- package/{esm2020 → esm2022}/lib/spinner/spinner.component.mjs +4 -4
- package/esm2022/lib/spinner/spinner.module.mjs +20 -0
- package/{esm2020 → esm2022}/lib/table/table-active.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/table-color.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/table.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/table.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/tabs/tab-content/tab-content.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tabs/tab-content-ref.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tabs/tab-pane/tab-pane.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/tabs/tab.service.mjs +4 -4
- package/esm2022/lib/tabs/tabs.module.mjs +36 -0
- package/{esm2020 → esm2022}/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +7 -7
- package/{esm2020 → esm2022}/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +7 -7
- package/esm2022/lib/time-picker/time-picker.component.mjs +511 -0
- package/{esm2020 → esm2022}/lib/time-picker/time-picker.module.mjs +21 -21
- package/esm2022/lib/toast/toast/toast.component.mjs +238 -0
- package/{esm2020 → esm2022}/lib/toast/toast-body/toast-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/toast/toast-close.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/toast/toast-header/toast-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/toast/toast.module.mjs +15 -18
- package/{esm2020 → esm2022}/lib/toast/toaster/toaster-host.directive.mjs +4 -4
- package/esm2022/lib/toast/toaster/toaster.component.mjs +130 -0
- package/{esm2020 → esm2022}/lib/toast/toaster/toaster.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/lib/tooltip/tooltip.module.mjs +25 -0
- package/{esm2020 → esm2022}/lib/utilities/align.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utilities/bg-color.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utilities/border.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utilities/rounded.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utilities/text-color.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/utilities/utilities.module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/widget/widget-stat-a/widget-stat-a.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/widget/widget-stat-c/widget-stat-c.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/widget/widget-stat-d/widget-stat-d.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/widget/widget-stat-e/widget-stat-e.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/widget/widget-stat-f/widget-stat-f.component.mjs +4 -4
- package/esm2022/lib/widget/widget.module.mjs +45 -0
- package/{fesm2020 → fesm2022}/coreui-angular-pro.mjs +1416 -1460
- package/fesm2022/coreui-angular-pro.mjs.map +1 -0
- package/lib/accordion/accordion/accordion.component.d.ts +1 -1
- package/lib/accordion/accordion-button/accordion-button.directive.d.ts +1 -1
- package/lib/accordion/accordion-item/accordion-item.component.d.ts +1 -1
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/badge/badge.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +1 -1
- package/lib/button/button-close.directive.d.ts +1 -1
- package/lib/button/button.directive.d.ts +1 -1
- package/lib/button-group/button-group/button-group.component.d.ts +1 -1
- package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +1 -1
- package/lib/calendar/calendar/calendar.component.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-day.directive.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-month.component.d.ts +1 -1
- package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +1 -1
- package/lib/callout/callout.component.d.ts +1 -1
- package/lib/card/card-img.directive.d.ts +1 -1
- package/lib/card/card.component.d.ts +1 -1
- package/lib/carousel/carousel/carousel.component.d.ts +1 -1
- package/lib/carousel/carousel-control/carousel-control.component.d.ts +1 -1
- package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -1
- package/lib/collapse/collapse.directive.d.ts +1 -1
- package/lib/date-picker/date-picker.component.d.ts +1 -1
- package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/lib/dropdown/dropdown/dropdown.component.d.ts +2 -2
- package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +1 -1
- package/lib/element-cover/element-cover.component.d.ts +1 -1
- package/lib/footer/footer.component.d.ts +1 -1
- package/lib/form/form/form.directive.d.ts +1 -1
- package/lib/form/form-check/form-check-input.directive.d.ts +1 -1
- package/lib/form/form-check/form-check.component.d.ts +1 -1
- package/lib/form/form-control/form-control.directive.d.ts +1 -1
- package/lib/form/form-feedback/form-feedback.component.d.ts +1 -1
- package/lib/form/form-floating/form-floating.directive.d.ts +1 -1
- package/lib/form/form-label/form-label.directive.d.ts +1 -1
- package/lib/form/form-select/form-select.directive.d.ts +1 -1
- package/lib/form/input-group/input-group.component.d.ts +1 -1
- package/lib/grid/col.directive.d.ts +1 -1
- package/lib/grid/container.component.d.ts +1 -1
- package/lib/grid/gutter.directive.d.ts +1 -1
- package/lib/grid/row.directive.d.ts +1 -1
- package/lib/header/header/header.component.d.ts +1 -1
- package/lib/header/header-brand/header-brand.component.d.ts +1 -1
- package/lib/header/header-nav/header-nav.component.d.ts +1 -1
- package/lib/header/header-toggler/header-toggler.directive.d.ts +1 -1
- package/lib/image/img.directive.d.ts +1 -1
- package/lib/list-group/list-group-item.directive.d.ts +1 -1
- package/lib/list-group/list-group.directive.d.ts +1 -1
- package/lib/loading-button/loading-button.component.d.ts +1 -1
- package/lib/modal/modal/modal.component.d.ts +1 -1
- package/lib/modal/modal-dialog/modal-dialog.component.d.ts +1 -1
- package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +1 -1
- package/lib/multi-select/multi-select/multi-select-search.directive.d.ts +1 -1
- package/lib/multi-select/multi-select/multi-select.component.d.ts +1 -1
- package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +1 -1
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +1 -1
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
- package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +1 -1
- package/lib/nav/nav-link.directive.d.ts +1 -1
- package/lib/nav/nav.component.d.ts +1 -1
- package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +1 -1
- package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +1 -1
- package/lib/navbar/navbar.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +1 -1
- package/lib/pagination/page-item/page-item.directive.d.ts +1 -1
- package/lib/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/placeholder/placeholder-animation.directive.d.ts +1 -1
- package/lib/placeholder/placeholder.directive.d.ts +1 -1
- package/lib/popover/popover/popover.component.d.ts +1 -1
- package/lib/popover/popover.directive.d.ts +1 -1
- package/lib/progress/progress-bar.component.d.ts +1 -1
- package/lib/progress/progress.component.d.ts +1 -1
- package/lib/shared/html-attr.directive.d.ts +1 -1
- package/lib/shared/template-id.directive.d.ts +1 -1
- package/lib/sidebar/sidebar/sidebar.component.d.ts +1 -1
- package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +2 -2
- package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +2 -2
- package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +1 -1
- package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +1 -1
- package/lib/smart-pagination/smart-pagination.component.d.ts +1 -1
- package/lib/smart-table/smart-table/smart-table.component.d.ts +1 -1
- package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +1 -1
- package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +1 -1
- package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +1 -1
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -1
- package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +1 -1
- package/lib/spinner/spinner.component.d.ts +1 -1
- package/lib/table/table-active.directive.d.ts +1 -1
- package/lib/table/table-color.directive.d.ts +1 -1
- package/lib/table/table.directive.d.ts +1 -1
- package/lib/tabs/tab-content/tab-content.component.d.ts +1 -1
- package/lib/tabs/tab-content-ref.directive.d.ts +1 -1
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +2 -2
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +2 -2
- package/lib/time-picker/time-picker.component.d.ts +1 -1
- package/lib/toast/toast/toast.component.d.ts +1 -1
- package/lib/toast/toast-close.directive.d.ts +1 -1
- package/lib/toast/toast-header/toast-header.component.d.ts +1 -1
- package/lib/toast/toaster/toaster.component.d.ts +1 -1
- package/lib/tooltip/tooltip/tooltip.component.d.ts +1 -1
- package/lib/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/utilities/align.directive.d.ts +1 -1
- package/lib/utilities/bg-color.directive.d.ts +1 -1
- package/lib/utilities/border.directive.d.ts +1 -1
- package/lib/utilities/rounded.directive.d.ts +1 -1
- package/lib/utilities/text-color.directive.d.ts +1 -1
- package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
- package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +1 -1
- package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +1 -1
- package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +1 -1
- package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
- package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
- package/package.json +9 -15
- package/esm2020/lib/accordion/accordion.module.mjs +0 -37
- package/esm2020/lib/alert/alert.component.mjs +0 -181
- package/esm2020/lib/alert/alert.module.mjs +0 -30
- package/esm2020/lib/avatar/avatar.module.mjs +0 -20
- package/esm2020/lib/badge/badge.module.mjs +0 -20
- package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +0 -53
- package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2020/lib/button-group/button-group.module.mjs +0 -17
- package/esm2020/lib/calendar/calendar.module.mjs +0 -56
- package/esm2020/lib/callout/callout.module.mjs +0 -16
- package/esm2020/lib/card/card.module.mjs +0 -81
- package/esm2020/lib/carousel/carousel.module.mjs +0 -57
- package/esm2020/lib/date-picker/date-picker.component.mjs +0 -93
- package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +0 -676
- package/esm2020/lib/dropdown/dropdown.module.mjs +0 -56
- package/esm2020/lib/element-cover/element-cover.component.mjs +0 -71
- package/esm2020/lib/element-cover/element-cover.module.mjs +0 -16
- package/esm2020/lib/footer/footer.module.mjs +0 -16
- package/esm2020/lib/form/form.module.mjs +0 -77
- package/esm2020/lib/grid/grid.module.mjs +0 -47
- package/esm2020/lib/header/header.module.mjs +0 -49
- package/esm2020/lib/loading-button/loading-button.module.mjs +0 -16
- package/esm2020/lib/modal/modal.module.mjs +0 -62
- package/esm2020/lib/multi-select/multi-select/multi-select-search.directive.mjs +0 -69
- package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +0 -1065
- package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +0 -326
- package/esm2020/lib/multi-select/multi-select.module.mjs +0 -40
- package/esm2020/lib/multi-select/multi-select.service.mjs +0 -40
- package/esm2020/lib/nav/nav.module.mjs +0 -31
- package/esm2020/lib/navbar/navbar.module.mjs +0 -42
- package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +0 -319
- package/esm2020/lib/offcanvas/offcanvas.module.mjs +0 -51
- package/esm2020/lib/pagination/pagination.module.mjs +0 -36
- package/esm2020/lib/popover/popover.module.mjs +0 -25
- package/esm2020/lib/progress/progress.module.mjs +0 -26
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +0 -230
- package/esm2020/lib/sidebar/sidebar.module.mjs +0 -92
- package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +0 -16
- package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +0 -30
- package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +0 -79
- package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +0 -45
- package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +0 -54
- package/esm2020/lib/smart-table/smart-table.module.mjs +0 -17
- package/esm2020/lib/spinner/spinner.module.mjs +0 -20
- package/esm2020/lib/tabs/tabs.module.mjs +0 -37
- package/esm2020/lib/time-picker/time-picker.component.mjs +0 -511
- package/esm2020/lib/toast/toast/toast.component.mjs +0 -238
- package/esm2020/lib/toast/toaster/toaster.component.mjs +0 -130
- package/esm2020/lib/tooltip/tooltip.module.mjs +0 -25
- package/esm2020/lib/widget/widget.module.mjs +0 -50
- package/fesm2015/coreui-angular-pro.mjs +0 -16521
- package/fesm2015/coreui-angular-pro.mjs.map +0 -1
- package/fesm2020/coreui-angular-pro.mjs.map +0 -1
- /package/{esm2020 → esm2022}/coreui-angular-pro.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/accordion/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item/breadcrumb-item.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button-group/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/calendar/calendar.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/calendar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/calendar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/callout/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/callout/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/card/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/carousel/carousel-state.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/carousel/carousel.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/carousel/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/carousel/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/collapse/collapse.animations.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/collapse/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/collapse/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/coreui.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/date-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/date-picker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/date-range-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/date-range-picker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/element-cover/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/element-cover/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/footer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/footer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/col.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/container.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/gutter.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/grid/row.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/header/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/header/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/image/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/image/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/list-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/list-group/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/loading-button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/loading-button/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/multi-select/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/multi-select/multi-select.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/multi-select/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/nav/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/nav/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/navbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/navbar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/offcanvas/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/offcanvas/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pagination/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/placeholder/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/placeholder/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/popover/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/popover/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/progress/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/progress/progress-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/progress/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/sidebar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/sidebar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/sidebar/sidebar-nav/sidebar-nav.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-pagination/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-pagination/smart-pagination.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-table/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/smart-table/smart-table.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/spinner/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/table.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tabs/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tabs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/time-picker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/time-picker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/time-picker/time.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/toast/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tooltip/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tooltip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utilities/border.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utilities/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utilities/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utilities/rounded.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/widget/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/widget/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -1,676 +0,0 @@
|
|
|
1
|
-
var _DateRangePickerComponent_closeOnSelect, _DateRangePickerComponent_selectAdjacentDays;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
4
|
-
import { NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
5
|
-
import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
6
|
-
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
7
|
-
import { Breakpoints } from '@angular/cdk/layout';
|
|
8
|
-
import { format as dateFormat } from 'date-fns';
|
|
9
|
-
import { ButtonDirective } from '../../button';
|
|
10
|
-
import { getLocalDateFromString, isDateDisabled } from '../../calendar/calendar.utils';
|
|
11
|
-
import { CalendarComponent } from '../../calendar';
|
|
12
|
-
import { DropdownComponent, DropdownMenuDirective, DropdownToggleDirective } from '../../dropdown';
|
|
13
|
-
import { FormControlDirective, InputGroupComponent, InputGroupTextDirective } from '../../form';
|
|
14
|
-
import { TemplateIdDirective } from '../../shared';
|
|
15
|
-
import { TimePickerComponent } from '../../time-picker';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "@angular/cdk/layout";
|
|
18
|
-
import * as i2 from "@angular/forms";
|
|
19
|
-
/** Must be a valid date string */
|
|
20
|
-
// todo: validation
|
|
21
|
-
// export function invalidDateStringValidator(locale: string): ValidatorFn {
|
|
22
|
-
// return (control: AbstractControl): ValidationErrors | null => {
|
|
23
|
-
// // const validDate = !isNaN(Date.parse(control.value));
|
|
24
|
-
// stringToDateConvert(control.value, locale);
|
|
25
|
-
// const dateShim = cvtDate(control.value, locale);
|
|
26
|
-
// // @ts-ignore
|
|
27
|
-
// // control.setValue(new Date(dateShim.year, dateShim.month, dateShim.day))
|
|
28
|
-
// console.log('dateShim', dateShim, locale);
|
|
29
|
-
// const validDate = isValidDate(control.value);
|
|
30
|
-
// console.log('invalidDateStringValidator', control, control.value, validDate);
|
|
31
|
-
// return validDate ? { invalidDateStringValidator: { value: control.value } } : null;
|
|
32
|
-
// };
|
|
33
|
-
// }
|
|
34
|
-
export class DateRangePickerComponent {
|
|
35
|
-
constructor(breakpointObserver) {
|
|
36
|
-
this.breakpointObserver = breakpointObserver;
|
|
37
|
-
/**
|
|
38
|
-
* Set the format of day name.
|
|
39
|
-
* @default 'numeric'
|
|
40
|
-
* @type DayFormatType
|
|
41
|
-
*/
|
|
42
|
-
this.dayFormat = 'numeric';
|
|
43
|
-
this._calendars = 2;
|
|
44
|
-
this._cleaner = true;
|
|
45
|
-
_DateRangePickerComponent_closeOnSelect.set(this, false);
|
|
46
|
-
this._indicator = true;
|
|
47
|
-
this._inputReadOnly = false;
|
|
48
|
-
this._navYearFirst = false;
|
|
49
|
-
/**
|
|
50
|
-
* Specifies short hints that are visible in start date and end date inputs.
|
|
51
|
-
* type string
|
|
52
|
-
*/
|
|
53
|
-
this.placeholder = ['Start date', 'End date'];
|
|
54
|
-
/**
|
|
55
|
-
* Sets the color context of the cancel button to one of CoreUI’s themed colors.
|
|
56
|
-
* @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string
|
|
57
|
-
* @default 'secondary'
|
|
58
|
-
*/
|
|
59
|
-
this.rangesButtonsColor = 'secondary';
|
|
60
|
-
/**
|
|
61
|
-
* Size the ranges button small or large.
|
|
62
|
-
* @type 'sm' | 'lg' | ''
|
|
63
|
-
*/
|
|
64
|
-
this.rangesButtonsSize = '';
|
|
65
|
-
/**
|
|
66
|
-
* Set the ranges button variant to an outlined button or a ghost button.
|
|
67
|
-
* @type 'outline' | 'ghost' | undefined
|
|
68
|
-
*/
|
|
69
|
-
this.rangesButtonsVariant = 'ghost';
|
|
70
|
-
this._separator = true;
|
|
71
|
-
this._timepicker = false;
|
|
72
|
-
this._visible = false;
|
|
73
|
-
this.calendarDate = new Date();
|
|
74
|
-
this.disabledDates = [];
|
|
75
|
-
this._firstDayOfWeek = 1;
|
|
76
|
-
this.locale = 'default';
|
|
77
|
-
this.maxDate = null;
|
|
78
|
-
this.minDate = null;
|
|
79
|
-
this._navigation = true;
|
|
80
|
-
this._range = true;
|
|
81
|
-
this._disabled = false;
|
|
82
|
-
this._value = {};
|
|
83
|
-
/**
|
|
84
|
-
* Set length or format of day name.
|
|
85
|
-
* @type WeekdayFormatType
|
|
86
|
-
* @default 'short'
|
|
87
|
-
*/
|
|
88
|
-
this.weekdayFormat = 'short';
|
|
89
|
-
/**
|
|
90
|
-
* Optional popper Options object
|
|
91
|
-
* @type Partial<Options>
|
|
92
|
-
*/
|
|
93
|
-
this.popperjsOptions = {
|
|
94
|
-
strategy: 'fixed'
|
|
95
|
-
};
|
|
96
|
-
_DateRangePickerComponent_selectAdjacentDays.set(this, false);
|
|
97
|
-
/**
|
|
98
|
-
* Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.
|
|
99
|
-
* @type boolean
|
|
100
|
-
* @default true
|
|
101
|
-
* @since 4.4.10
|
|
102
|
-
*/
|
|
103
|
-
this.showAdjacentDays = true;
|
|
104
|
-
this.valueChange = new EventEmitter();
|
|
105
|
-
this.calendarCellHover = new EventEmitter();
|
|
106
|
-
this.calendarDateChange = new EventEmitter();
|
|
107
|
-
this.endDateChange = new EventEmitter();
|
|
108
|
-
this.startDateChange = new EventEmitter();
|
|
109
|
-
this.templates = {};
|
|
110
|
-
this.dateChangeSubscriptions = [];
|
|
111
|
-
this.isMobile = true;
|
|
112
|
-
this._startDateValue = this.startDate?.toLocaleDateString(this.locale) ?? '';
|
|
113
|
-
this._endDateValue = this.endDate?.toLocaleDateString(this.locale) ?? '';
|
|
114
|
-
// todo: validation
|
|
115
|
-
this.startDateInput = new FormControl({ value: this.startDateValue, disabled: this.disabled }, [
|
|
116
|
-
Validators.required
|
|
117
|
-
// Validators.minLength(8),
|
|
118
|
-
// Validators.maxLength(10),
|
|
119
|
-
// invalidDateStringValidator(this.locale)
|
|
120
|
-
]);
|
|
121
|
-
this.endDateInput = new FormControl({ value: this.endDateValue, disabled: this.disabled }, [
|
|
122
|
-
Validators.required
|
|
123
|
-
// Validators.minLength(8),
|
|
124
|
-
// Validators.maxLength(10),
|
|
125
|
-
// invalidDateStringValidator(this.locale)
|
|
126
|
-
]);
|
|
127
|
-
this.setInputValue = (elementRef, date) => {
|
|
128
|
-
if (!elementRef) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
elementRef.nativeElement.value = date?.toLocaleDateString(this.locale) ?? '';
|
|
132
|
-
// elementRef.nativeElement.valueAsDate = date;
|
|
133
|
-
return;
|
|
134
|
-
};
|
|
135
|
-
this.onChange = (value) => { };
|
|
136
|
-
this.onTouched = () => { };
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* The number of calendars that render on desktop devices.
|
|
140
|
-
* @type number
|
|
141
|
-
* @default 2
|
|
142
|
-
*/
|
|
143
|
-
set calendars(value) {
|
|
144
|
-
this._calendars = coerceNumberProperty(value);
|
|
145
|
-
}
|
|
146
|
-
get calendars() {
|
|
147
|
-
return this._calendars;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Toggle visibility or set the content of the cleaner button.
|
|
151
|
-
* @type boolean
|
|
152
|
-
* @default true
|
|
153
|
-
*/
|
|
154
|
-
set cleaner(value) {
|
|
155
|
-
this._cleaner = coerceBooleanProperty(value);
|
|
156
|
-
}
|
|
157
|
-
get cleaner() {
|
|
158
|
-
return this._cleaner;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Determine if the dropdown should be closed after value setting.
|
|
162
|
-
* @type boolean
|
|
163
|
-
* @default false
|
|
164
|
-
*/
|
|
165
|
-
set closeOnSelect(value) {
|
|
166
|
-
__classPrivateFieldSet(this, _DateRangePickerComponent_closeOnSelect, coerceBooleanProperty(value), "f");
|
|
167
|
-
}
|
|
168
|
-
get closeOnSelect() {
|
|
169
|
-
return __classPrivateFieldGet(this, _DateRangePickerComponent_closeOnSelect, "f");
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Toggle visibility or set the content of the input indicator.
|
|
173
|
-
* @type boolean
|
|
174
|
-
* @default true
|
|
175
|
-
*/
|
|
176
|
-
set indicator(value) {
|
|
177
|
-
this._indicator = coerceBooleanProperty(value);
|
|
178
|
-
}
|
|
179
|
-
get indicator() {
|
|
180
|
-
return this._indicator;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Toggle the readonly state for the component.
|
|
184
|
-
* @type boolean
|
|
185
|
-
* @default false
|
|
186
|
-
*/
|
|
187
|
-
set inputReadOnly(value) {
|
|
188
|
-
this._inputReadOnly = coerceBooleanProperty(value);
|
|
189
|
-
}
|
|
190
|
-
get inputReadOnly() {
|
|
191
|
-
return this._inputReadOnly || typeof this.format === 'string';
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Reorder year-month navigation, and render year first.
|
|
195
|
-
* @type boolean
|
|
196
|
-
* @default false
|
|
197
|
-
*/
|
|
198
|
-
set navYearFirst(value) {
|
|
199
|
-
this._navYearFirst = coerceBooleanProperty(value);
|
|
200
|
-
}
|
|
201
|
-
get navYearFirst() {
|
|
202
|
-
return this._navYearFirst;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Default icon or character that separates two dates.
|
|
206
|
-
* @type boolean
|
|
207
|
-
* @default true
|
|
208
|
-
*/
|
|
209
|
-
set separator(value) {
|
|
210
|
-
this._separator = coerceBooleanProperty(value);
|
|
211
|
-
}
|
|
212
|
-
get separator() {
|
|
213
|
-
return this._separator;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Provide an additional time selection by adding select boxes to choose time.
|
|
217
|
-
* @type boolean
|
|
218
|
-
* @default false
|
|
219
|
-
*/
|
|
220
|
-
set timepicker(value) {
|
|
221
|
-
this._timepicker = coerceBooleanProperty(value);
|
|
222
|
-
}
|
|
223
|
-
get timepicker() {
|
|
224
|
-
return false;
|
|
225
|
-
// return this._timepicker;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Toggle the visibility of the dropdown date-picker component.
|
|
229
|
-
* @type boolean
|
|
230
|
-
* @default false
|
|
231
|
-
*/
|
|
232
|
-
set visible(value) {
|
|
233
|
-
this._visible = coerceBooleanProperty(value);
|
|
234
|
-
}
|
|
235
|
-
get visible() {
|
|
236
|
-
return this._visible;
|
|
237
|
-
}
|
|
238
|
-
set startDate(value) {
|
|
239
|
-
const prevDate = this._startDate ? new Date(this._startDate) : null;
|
|
240
|
-
this._startDate = value ? new Date(value) : null;
|
|
241
|
-
if (prevDate?.getTime() !== this._startDate?.getTime()) {
|
|
242
|
-
this.startDateValue = this._startDate?.toLocaleDateString(this.locale) ?? '';
|
|
243
|
-
this.startDateChange.emit(this._startDate);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
get startDate() {
|
|
247
|
-
return this._startDate;
|
|
248
|
-
}
|
|
249
|
-
set endDate(value) {
|
|
250
|
-
const prevDate = this._endDate ? new Date(this._endDate ?? 0) : null;
|
|
251
|
-
this._endDate = value ? new Date(value) : null;
|
|
252
|
-
if (prevDate?.getTime() !== this._endDate?.getTime()) {
|
|
253
|
-
this.endDateValue = this._endDate?.toLocaleDateString(this.locale) ?? '';
|
|
254
|
-
this.endDateChange.emit(this._endDate);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
get endDate() {
|
|
258
|
-
return this._endDate;
|
|
259
|
-
}
|
|
260
|
-
set firstDayOfWeek(value) {
|
|
261
|
-
this._firstDayOfWeek = coerceNumberProperty(value);
|
|
262
|
-
}
|
|
263
|
-
get firstDayOfWeek() {
|
|
264
|
-
return this._firstDayOfWeek;
|
|
265
|
-
}
|
|
266
|
-
set navigation(value) {
|
|
267
|
-
this._navigation = coerceBooleanProperty(value);
|
|
268
|
-
}
|
|
269
|
-
get navigation() {
|
|
270
|
-
return this._navigation;
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Allow range selection.
|
|
274
|
-
* @type boolean
|
|
275
|
-
* @default false
|
|
276
|
-
*/
|
|
277
|
-
set range(value) {
|
|
278
|
-
this._range = coerceBooleanProperty(value);
|
|
279
|
-
}
|
|
280
|
-
get range() {
|
|
281
|
-
return this._range;
|
|
282
|
-
}
|
|
283
|
-
set disabled(value) {
|
|
284
|
-
this._disabled = coerceBooleanProperty(value);
|
|
285
|
-
this._disabled ? this.startDateInput.disable() : this.startDateInput.enable();
|
|
286
|
-
this._disabled ? this.endDateInput.disable() : this.endDateInput.enable();
|
|
287
|
-
}
|
|
288
|
-
get disabled() {
|
|
289
|
-
return this._disabled;
|
|
290
|
-
}
|
|
291
|
-
set value(value) {
|
|
292
|
-
const newValue = this.range ? { ...value } : value;
|
|
293
|
-
if (JSON.stringify(this._value) !== JSON.stringify(newValue)) {
|
|
294
|
-
this._value = newValue;
|
|
295
|
-
if (this.range) {
|
|
296
|
-
this.handleStartDateChange(newValue.startDate ?? null);
|
|
297
|
-
this.handleEndDateChange(newValue.endDate ?? null);
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
this.handleStartDateChange(newValue ?? null);
|
|
301
|
-
}
|
|
302
|
-
this.onChange(newValue);
|
|
303
|
-
this.onTouched();
|
|
304
|
-
this.valueChange.emit(this.value);
|
|
305
|
-
if (this.closeOnSelect) {
|
|
306
|
-
const hasValue = this.range ? !!(this.value.startDate && this.value.endDate) : !!this.value;
|
|
307
|
-
this.visible = !hasValue;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
get value() {
|
|
312
|
-
return this._value;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Set whether days in adjacent months shown before or after the current month are selectable. This only applies if the `showAdjacentDays` option is set to true.
|
|
316
|
-
* @type boolean
|
|
317
|
-
* @default false
|
|
318
|
-
* @since 4.4.10
|
|
319
|
-
*/
|
|
320
|
-
set selectAdjacentDays(value) {
|
|
321
|
-
__classPrivateFieldSet(this, _DateRangePickerComponent_selectAdjacentDays, coerceBooleanProperty(value), "f");
|
|
322
|
-
}
|
|
323
|
-
get selectAdjacentDays() {
|
|
324
|
-
return __classPrivateFieldGet(this, _DateRangePickerComponent_selectAdjacentDays, "f");
|
|
325
|
-
}
|
|
326
|
-
subscribeDateChange(subscribe = true) {
|
|
327
|
-
if (subscribe) {
|
|
328
|
-
// todo
|
|
329
|
-
// this.dateChangeSubscriptions.push(this.startDateChange.subscribe(next => {
|
|
330
|
-
// this.startDate = next;
|
|
331
|
-
// this.onChange(next);
|
|
332
|
-
// }));
|
|
333
|
-
// this.dateChangeSubscriptions.push(this.startDateChange.subscribe(next => {
|
|
334
|
-
// this.endDate = next;
|
|
335
|
-
// this.onChange(next);
|
|
336
|
-
// }));
|
|
337
|
-
return;
|
|
338
|
-
}
|
|
339
|
-
this.dateChangeSubscriptions.forEach(subscription => {
|
|
340
|
-
subscription?.unsubscribe();
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
onBlur() {
|
|
344
|
-
this.onTouched();
|
|
345
|
-
}
|
|
346
|
-
set startDateValue(value) {
|
|
347
|
-
this.startDateInput.setValue(value);
|
|
348
|
-
this._startDateValue = value;
|
|
349
|
-
}
|
|
350
|
-
get startDateValue() {
|
|
351
|
-
return this._startDateValue;
|
|
352
|
-
}
|
|
353
|
-
set endDateValue(value) {
|
|
354
|
-
this.endDateInput.setValue(value);
|
|
355
|
-
this._endDateValue = value;
|
|
356
|
-
}
|
|
357
|
-
get endDateValue() {
|
|
358
|
-
return this._endDateValue;
|
|
359
|
-
}
|
|
360
|
-
get startDatePlaceholder() {
|
|
361
|
-
return Array.isArray(this.placeholder) ? this.placeholder[0] : this.placeholder;
|
|
362
|
-
}
|
|
363
|
-
;
|
|
364
|
-
get endDatePlaceholder() {
|
|
365
|
-
return Array.isArray(this.placeholder) ? this.placeholder[1] : this.placeholder;
|
|
366
|
-
}
|
|
367
|
-
;
|
|
368
|
-
set inputStartHoverValue(value) {
|
|
369
|
-
this._inputStartHoverValue = value;
|
|
370
|
-
}
|
|
371
|
-
get inputStartHoverValue() {
|
|
372
|
-
return this._inputStartHoverValue;
|
|
373
|
-
}
|
|
374
|
-
set inputEndHoverValue(value) {
|
|
375
|
-
this._inputEndHoverValue = value;
|
|
376
|
-
}
|
|
377
|
-
get inputEndHoverValue() {
|
|
378
|
-
return this._inputEndHoverValue;
|
|
379
|
-
}
|
|
380
|
-
get datePickerClasses() {
|
|
381
|
-
return {
|
|
382
|
-
'is-valid': this.valid === true,
|
|
383
|
-
'is-invalid': this.valid === false
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
formatDate(date) {
|
|
387
|
-
return this.format
|
|
388
|
-
? dateFormat(date, this.format)
|
|
389
|
-
: this.timepicker
|
|
390
|
-
? date.toLocaleString(this.locale)
|
|
391
|
-
: date.toLocaleDateString(this.locale);
|
|
392
|
-
}
|
|
393
|
-
ngOnInit() {
|
|
394
|
-
this.layoutChanges = this.breakpointObserver.observe([
|
|
395
|
-
Breakpoints.Handset,
|
|
396
|
-
Breakpoints.Tablet
|
|
397
|
-
]).subscribe(result => {
|
|
398
|
-
this.isMobile = result.matches;
|
|
399
|
-
});
|
|
400
|
-
this.customRanges = this.ranges ? Object.entries(this.ranges) : [];
|
|
401
|
-
this.startDateValue = this.startDate?.toLocaleDateString(this.locale) ?? '';
|
|
402
|
-
this.endDateValue = this.endDate?.toLocaleDateString(this.locale) ?? '';
|
|
403
|
-
this.subscribeDateChange();
|
|
404
|
-
}
|
|
405
|
-
ngOnDestroy() {
|
|
406
|
-
this.layoutChanges?.unsubscribe();
|
|
407
|
-
this.subscribeDateChange(false);
|
|
408
|
-
}
|
|
409
|
-
ngAfterViewInit() {
|
|
410
|
-
setTimeout(() => {
|
|
411
|
-
this.contentTemplates.forEach((child) => {
|
|
412
|
-
this.templates[child.id] = child.templateRef;
|
|
413
|
-
});
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
ngOnChanges(changes) {
|
|
417
|
-
if (changes['date']) {
|
|
418
|
-
// for date-picker component
|
|
419
|
-
const date = this.convertValueToDate(changes['date']?.currentValue) ?? null;
|
|
420
|
-
this.handleStartDateChange(date);
|
|
421
|
-
this.calendarDate = date ?? this.calendarDate;
|
|
422
|
-
}
|
|
423
|
-
if (changes['startDate']) {
|
|
424
|
-
const date = this.convertValueToDate(changes['startDate']?.currentValue) ?? null;
|
|
425
|
-
this.handleStartDateChange(date);
|
|
426
|
-
this.calendarDate = date ?? this.calendarDate;
|
|
427
|
-
}
|
|
428
|
-
if (changes['endDate']) {
|
|
429
|
-
const date = this.convertValueToDate(changes['endDate']?.currentValue) ?? null;
|
|
430
|
-
this.handleEndDateChange(date);
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
convertValueToDate(value) {
|
|
434
|
-
if (!value) {
|
|
435
|
-
return null;
|
|
436
|
-
}
|
|
437
|
-
if (typeof value === 'string') {
|
|
438
|
-
return getLocalDateFromString(value, this.locale, this.timepicker);
|
|
439
|
-
}
|
|
440
|
-
return new Date(value) ?? null;
|
|
441
|
-
}
|
|
442
|
-
getCustomRangeKey(customRange) {
|
|
443
|
-
return customRange[0];
|
|
444
|
-
}
|
|
445
|
-
setCustomRange(customRange) {
|
|
446
|
-
const key = this.getCustomRangeKey(customRange);
|
|
447
|
-
this.handleStartDateChange(customRange[1][0]);
|
|
448
|
-
this.handleEndDateChange(customRange[1][1]);
|
|
449
|
-
}
|
|
450
|
-
handleCalendarCellHover($event) {
|
|
451
|
-
this.calendarCellHover.emit($event);
|
|
452
|
-
if (!this.startDate) {
|
|
453
|
-
this.setInputValue(this.startDateElementRef, $event);
|
|
454
|
-
this.inputStartHoverValue = $event;
|
|
455
|
-
this.setInputValue(this.endDateElementRef, null);
|
|
456
|
-
this.inputEndHoverValue = null;
|
|
457
|
-
return;
|
|
458
|
-
}
|
|
459
|
-
if (!this.endDate) {
|
|
460
|
-
this.setInputValue(this.endDateElementRef, $event);
|
|
461
|
-
this.inputEndHoverValue = $event;
|
|
462
|
-
return;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
handleCalendarDateChange($event) {
|
|
466
|
-
if (this.calendarDate.getTime() !== $event.getTime()) {
|
|
467
|
-
this.calendarDateChange.emit($event);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
handleStartDateChange(date) {
|
|
471
|
-
if (date?.getTime() !== this.startDate?.getTime()) {
|
|
472
|
-
this.startDate = date ?? null;
|
|
473
|
-
this.startDateValue = date ? date.toLocaleDateString(this.locale) : '';
|
|
474
|
-
this.inputStartHoverValue = null;
|
|
475
|
-
this.value = this.range ? { startDate: this.startDate, endDate: this.endDate } : this.startDate;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
handleEndDateChange(date) {
|
|
479
|
-
if (date?.getTime() !== this.endDate?.getTime()) {
|
|
480
|
-
if (!this.range) {
|
|
481
|
-
return;
|
|
482
|
-
}
|
|
483
|
-
this.endDate = date ?? null;
|
|
484
|
-
this.endDateValue = date ? date.toLocaleDateString(this.locale) : '';
|
|
485
|
-
this.inputEndHoverValue = null;
|
|
486
|
-
this.value = this.range ? { startDate: this.startDate, endDate: this.endDate } : this.startDate;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
handleClear($event) {
|
|
490
|
-
// this.calendarComponent.clearDates();
|
|
491
|
-
this.handleStartDateChange(null);
|
|
492
|
-
this.handleEndDateChange(null);
|
|
493
|
-
}
|
|
494
|
-
handleStartDateInputChange($event) {
|
|
495
|
-
const date = getLocalDateFromString($event.target?.value, this.locale, this.timepicker);
|
|
496
|
-
if (!date) {
|
|
497
|
-
// this.calendarComponent.clearDates();
|
|
498
|
-
this.handleStartDateChange(null);
|
|
499
|
-
this.handleEndDateChange(null);
|
|
500
|
-
}
|
|
501
|
-
if (date instanceof Date && date.getTime()) {
|
|
502
|
-
if (!(this.forbiddenDate(date) || (this.endDate && this.endDate < date))) {
|
|
503
|
-
this.calendarDate = date;
|
|
504
|
-
this.startDate = date;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
this.handleStartDateChange(this.startDate ?? null);
|
|
508
|
-
}
|
|
509
|
-
handleEndDateInputChange($event) {
|
|
510
|
-
const date = getLocalDateFromString($event.target?.value, this.locale, this.timepicker);
|
|
511
|
-
if (!date) {
|
|
512
|
-
this.endDate = null;
|
|
513
|
-
}
|
|
514
|
-
if (date instanceof Date && date.getTime()) {
|
|
515
|
-
if (!(this.forbiddenDate(date) || (this.startDate && this.startDate > date))) {
|
|
516
|
-
this.calendarDate = date;
|
|
517
|
-
this.endDate = date;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
this.handleEndDateChange(this.endDate ?? null);
|
|
521
|
-
}
|
|
522
|
-
forbiddenDate(date) {
|
|
523
|
-
return isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) || (this.dateFilter ? !this.dateFilter(date) : false);
|
|
524
|
-
}
|
|
525
|
-
registerOnChange(fn) {
|
|
526
|
-
this.onChange = fn;
|
|
527
|
-
}
|
|
528
|
-
registerOnTouched(fn) {
|
|
529
|
-
this.onTouched = fn;
|
|
530
|
-
}
|
|
531
|
-
setDisabledState(isDisabled) {
|
|
532
|
-
this.disabled = isDisabled;
|
|
533
|
-
}
|
|
534
|
-
writeValue(value) {
|
|
535
|
-
if (value !== null) {
|
|
536
|
-
this.value = this.range ? { ...value } : value;
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
handleStartTimeChange(time) {
|
|
540
|
-
this.startDate = time ?? this.startDate;
|
|
541
|
-
}
|
|
542
|
-
handleEndTimeChange(time) {
|
|
543
|
-
if (!this.range) {
|
|
544
|
-
return;
|
|
545
|
-
}
|
|
546
|
-
this.endDate = time ?? this.endDate;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
_DateRangePickerComponent_closeOnSelect = new WeakMap(), _DateRangePickerComponent_selectAdjacentDays = new WeakMap();
|
|
550
|
-
DateRangePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
551
|
-
DateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DateRangePickerComponent, isStandalone: true, selector: "c-date-range-picker", inputs: { dayFormat: "dayFormat", calendars: "calendars", cleaner: "cleaner", closeOnSelect: "closeOnSelect", format: "format", indicator: "indicator", inputReadOnly: "inputReadOnly", navYearFirst: "navYearFirst", placeholder: "placeholder", ranges: "ranges", rangesButtonsColor: "rangesButtonsColor", rangesButtonsSize: "rangesButtonsSize", rangesButtonsVariant: "rangesButtonsVariant", separator: "separator", size: "size", timepicker: "timepicker", valid: "valid", visible: "visible", startDate: "startDate", endDate: "endDate", calendarDate: "calendarDate", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", maxDate: "maxDate", minDate: "minDate", navigation: "navigation", range: "range", dateFilter: "dateFilter", disabled: "disabled", value: "value", weekdayFormat: "weekdayFormat", popperjsOptions: ["popperOptions", "popperjsOptions"], selectAdjacentDays: "selectAdjacentDays", showAdjacentDays: "showAdjacentDays" }, outputs: { valueChange: "valueChange", calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange", endDateChange: "endDateChange", startDateChange: "startDateChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
|
|
552
|
-
{
|
|
553
|
-
provide: NG_VALUE_ACCESSOR,
|
|
554
|
-
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
555
|
-
multi: true
|
|
556
|
-
}
|
|
557
|
-
], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true }], exportAs: ["cDateRangePicker"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\"\n [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid ?? undefined\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\"\n *ngIf=\"cleaner && startDateElementRef.value && !disabled\"\n class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n [selectAdjacentDays]=\"selectAdjacentDays\"\n [showAdjacentDays]=\"showAdjacentDays\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter", "selectAdjacentDays", "showAdjacentDays"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }] });
|
|
558
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
559
|
-
type: Component,
|
|
560
|
-
args: [{ selector: 'c-date-range-picker', exportAs: 'cDateRangePicker', standalone: true, imports: [
|
|
561
|
-
NgClass,
|
|
562
|
-
NgIf,
|
|
563
|
-
NgForOf,
|
|
564
|
-
NgTemplateOutlet,
|
|
565
|
-
ReactiveFormsModule,
|
|
566
|
-
CalendarComponent,
|
|
567
|
-
TimePickerComponent,
|
|
568
|
-
ButtonDirective,
|
|
569
|
-
DropdownComponent,
|
|
570
|
-
DropdownToggleDirective,
|
|
571
|
-
DropdownMenuDirective,
|
|
572
|
-
InputGroupComponent,
|
|
573
|
-
FormControlDirective,
|
|
574
|
-
InputGroupTextDirective
|
|
575
|
-
], providers: [
|
|
576
|
-
{
|
|
577
|
-
provide: NG_VALUE_ACCESSOR,
|
|
578
|
-
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
579
|
-
multi: true
|
|
580
|
-
}
|
|
581
|
-
], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\"\n [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid ?? undefined\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\"\n *ngIf=\"cleaner && startDateElementRef.value && !disabled\"\n class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!isMobile\">\n <div *ngIf=\"ranges\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{getCustomRangeKey(customRange)}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n [selectAdjacentDays]=\"selectAdjacentDays\"\n [showAdjacentDays]=\"showAdjacentDays\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
|
|
582
|
-
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { dayFormat: [{
|
|
583
|
-
type: Input
|
|
584
|
-
}], calendars: [{
|
|
585
|
-
type: Input
|
|
586
|
-
}], cleaner: [{
|
|
587
|
-
type: Input
|
|
588
|
-
}], closeOnSelect: [{
|
|
589
|
-
type: Input
|
|
590
|
-
}], format: [{
|
|
591
|
-
type: Input
|
|
592
|
-
}], indicator: [{
|
|
593
|
-
type: Input
|
|
594
|
-
}], inputReadOnly: [{
|
|
595
|
-
type: Input
|
|
596
|
-
}], navYearFirst: [{
|
|
597
|
-
type: Input
|
|
598
|
-
}], placeholder: [{
|
|
599
|
-
type: Input
|
|
600
|
-
}], ranges: [{
|
|
601
|
-
type: Input
|
|
602
|
-
}], rangesButtonsColor: [{
|
|
603
|
-
type: Input
|
|
604
|
-
}], rangesButtonsSize: [{
|
|
605
|
-
type: Input
|
|
606
|
-
}], rangesButtonsVariant: [{
|
|
607
|
-
type: Input
|
|
608
|
-
}], separator: [{
|
|
609
|
-
type: Input
|
|
610
|
-
}], size: [{
|
|
611
|
-
type: Input
|
|
612
|
-
}], timepicker: [{
|
|
613
|
-
type: Input
|
|
614
|
-
}], valid: [{
|
|
615
|
-
type: Input
|
|
616
|
-
}], visible: [{
|
|
617
|
-
type: Input
|
|
618
|
-
}], startDate: [{
|
|
619
|
-
type: Input
|
|
620
|
-
}], endDate: [{
|
|
621
|
-
type: Input
|
|
622
|
-
}], calendarDate: [{
|
|
623
|
-
type: Input
|
|
624
|
-
}], disabledDates: [{
|
|
625
|
-
type: Input
|
|
626
|
-
}], firstDayOfWeek: [{
|
|
627
|
-
type: Input
|
|
628
|
-
}], locale: [{
|
|
629
|
-
type: Input
|
|
630
|
-
}], maxDate: [{
|
|
631
|
-
type: Input
|
|
632
|
-
}], minDate: [{
|
|
633
|
-
type: Input
|
|
634
|
-
}], navigation: [{
|
|
635
|
-
type: Input
|
|
636
|
-
}], range: [{
|
|
637
|
-
type: Input
|
|
638
|
-
}], dateFilter: [{
|
|
639
|
-
type: Input
|
|
640
|
-
}], disabled: [{
|
|
641
|
-
type: Input
|
|
642
|
-
}], value: [{
|
|
643
|
-
type: Input
|
|
644
|
-
}], weekdayFormat: [{
|
|
645
|
-
type: Input
|
|
646
|
-
}], popperjsOptions: [{
|
|
647
|
-
type: Input,
|
|
648
|
-
args: ['popperOptions']
|
|
649
|
-
}], selectAdjacentDays: [{
|
|
650
|
-
type: Input
|
|
651
|
-
}], showAdjacentDays: [{
|
|
652
|
-
type: Input
|
|
653
|
-
}], valueChange: [{
|
|
654
|
-
type: Output
|
|
655
|
-
}], calendarCellHover: [{
|
|
656
|
-
type: Output
|
|
657
|
-
}], calendarDateChange: [{
|
|
658
|
-
type: Output
|
|
659
|
-
}], endDateChange: [{
|
|
660
|
-
type: Output
|
|
661
|
-
}], startDateChange: [{
|
|
662
|
-
type: Output
|
|
663
|
-
}], startDateElementRef: [{
|
|
664
|
-
type: ViewChild,
|
|
665
|
-
args: ['startDateElementRef']
|
|
666
|
-
}], endDateElementRef: [{
|
|
667
|
-
type: ViewChild,
|
|
668
|
-
args: ['endDateElementRef']
|
|
669
|
-
}], contentTemplates: [{
|
|
670
|
-
type: ContentChildren,
|
|
671
|
-
args: [TemplateIdDirective, { descendants: true }]
|
|
672
|
-
}], onBlur: [{
|
|
673
|
-
type: HostListener,
|
|
674
|
-
args: ['blur']
|
|
675
|
-
}] } });
|
|
676
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUVMLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixD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QUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFHMkIsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUcrQixnQkFBZ0I7c0JBQTVFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQXNCckMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGRhdGVGb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9idXR0b24nO1xuaW1wb3J0IHsgZ2V0TG9jYWxEYXRlRnJvbVN0cmluZywgaXNEYXRlRGlzYWJsZWQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci9jYWxlbmRhci51dGlscyc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi8uLi9jYWxlbmRhci9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgQ29sb3JzIH0gZnJvbSAnLi4vLi4vY29yZXVpLnR5cGVzJztcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50LCBEcm9wZG93bk1lbnVEaXJlY3RpdmUsIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIElucHV0R3JvdXBDb21wb25lbnQsIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZm9ybSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUlkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi90aW1lLXBpY2tlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbGVuZGFyUmFuZ2VzIHtcbiAgW2tleTogc3RyaW5nXTogRGF0ZVtdO1xufVxuXG5leHBvcnQgdHlwZSBUQ3VzdG9tUmFuZ2UgPSBbc3RyaW5nLCBEYXRlW11dXG5cbi8qKiBNdXN0IGJlIGEgdmFsaWQgZGF0ZSBzdHJpbmcgKi9cbi8vIHRvZG86IHZhbGlkYXRpb25cbi8vIGV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcihsb2NhbGU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbi8vICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4vLyAgICAgLy8gY29uc3QgdmFsaWREYXRlID0gIWlzTmFOKERhdGUucGFyc2UoY29udHJvbC52YWx1ZSkpO1xuLy8gICAgIHN0cmluZ1RvRGF0ZUNvbnZlcnQoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCBkYXRlU2hpbSA9IGN2dERhdGUoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICAvLyBAdHMtaWdub3JlXG4vLyAgICAgLy8gY29udHJvbC5zZXRWYWx1ZShuZXcgRGF0ZShkYXRlU2hpbS55ZWFyLCBkYXRlU2hpbS5tb250aCwgZGF0ZVNoaW0uZGF5KSlcbi8vICAgICBjb25zb2xlLmxvZygnZGF0ZVNoaW0nLCBkYXRlU2hpbSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCB2YWxpZERhdGUgPSBpc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKTtcbi8vICAgICBjb25zb2xlLmxvZygnaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3InLCBjb250cm9sLCBjb250cm9sLnZhbHVlLCB2YWxpZERhdGUpO1xuLy8gICAgIHJldHVybiB2YWxpZERhdGUgPyB7IGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yOiB7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0gfSA6IG51bGw7XG4vLyAgIH07XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtZGF0ZS1yYW5nZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBleHBvcnRBczogJ2NEYXRlUmFuZ2VQaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ0lmLFxuICAgIE5nRm9yT2YsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgQnV0dG9uRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duTWVudURpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPblNlbGVjdDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdlllYXJGaXJzdDogQm9vbGVhbklucHV0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7IH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEBkZWZhdWx0ICdudW1lcmljJ1xuICAgKiBAdHlwZSBEYXlGb3JtYXRUeXBlXG4gICAqL1xuICBASW5wdXQoKSBkYXlGb3JtYXQ6IERheUZvcm1hdFR5cGUgPSAnbnVtZXJpYyc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhcnModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NhbGVuZGFycyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjYWxlbmRhcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFycztcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGVuZGFyczogbnVtYmVyID0gMjtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBjbGVhbmVyIGJ1dHRvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xlYW5lcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNsZWFuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFuZXI7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbmVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBkcm9wZG93biBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIHZhbHVlIHNldHRpbmcuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjbG9zZU9uU2VsZWN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jY2xvc2VPblNlbGVjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2xvc2VPblNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VPblNlbGVjdDtcbiAgfVxuXG4gICNjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCBkYXRlIGZvcm1hdC5cbiAgICogV2UgdXNlIGRhdGUtZm5zIHRvIGZvcm1hdCBkYXRlcy4gVmlzaXQgaHR0cHM6Ly9kYXRlLWZucy5vcmcvdjIuMjguMC9kb2NzL2Zvcm1hdCB0byBjaGVjayBhY2NlcHRlZCBwYXR0ZXJucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBpbnB1dCBpbmRpY2F0b3IuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGluZGljYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luZGljYXRvciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgaW5kaWNhdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmRpY2F0b3I7XG4gIH1cblxuICBwcml2YXRlIF9pbmRpY2F0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHJlYWRvbmx5IHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaW5wdXRSZWFkT25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lucHV0UmVhZE9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGlucHV0UmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0UmVhZE9ubHkgfHwgdHlwZW9mIHRoaXMuZm9ybWF0ID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0UmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG5hdlllYXJGaXJzdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hdlllYXJGaXJzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbmF2WWVhckZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzLl9uYXZZZWFyRmlyc3Q7XG4gIH1cblxuICBwcml2YXRlIF9uYXZZZWFyRmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHNob3J0IGhpbnRzIHRoYXQgYXJlIHZpc2libGUgaW4gc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUgaW5wdXRzLlxuICAgKiB0eXBlIHN0cmluZ1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHN0cmluZ1tdID0gWydTdGFydCBkYXRlJywgJ0VuZCBkYXRlJ107XG5cbiAgLyoqXG4gICAqIFByZWRlZmluZWQgZGF0ZSByYW5nZXMgdGhlIHVzZXIgY2FuIHNlbGVjdCBmcm9tLlxuICAgKiBAdHlwZSBJQ2FsZW5kYXJSYW5nZXNcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlcz86IG9iamVjdDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29sb3IgY29udGV4dCBvZiB0aGUgY2FuY2VsIGJ1dHRvbiB0byBvbmUgb2YgQ29yZVVJ4oCZcyB0aGVtZWQgY29sb3JzLlxuICAgKiBAdHlwZSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ2RhcmsnIHwgJ2xpZ2h0JyB8IHN0cmluZ1xuICAgKiBAZGVmYXVsdCAnc2Vjb25kYXJ5J1xuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzQnV0dG9uc0NvbG9yPzogQ29sb3JzID0gJ3NlY29uZGFyeSc7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIHJhbmdlcyBidXR0b24gc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgJydcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNTaXplOiAnc20nIHwgJ2xnJyB8ICcnID0gJyc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmFuZ2VzIGJ1dHRvbiB2YXJpYW50IHRvIGFuIG91dGxpbmVkIGJ1dHRvbiBvciBhIGdob3N0IGJ1dHRvbi5cbiAgICogQHR5cGUgJ291dGxpbmUnIHwgJ2dob3N0JyB8IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzQnV0dG9uc1ZhcmlhbnQ/OiAnb3V0bGluZScgfCAnZ2hvc3QnID0gJ2dob3N0JztcblxuICAvKipcbiAgICogRGVmYXVsdCBpY29uIG9yIGNoYXJhY3RlciB0aGF0IHNlcGFyYXRlcyB0d28gZGF0ZXMuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNlcGFyYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2VwYXJhdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIF9zZXBhcmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGFkZGl0aW9uYWwgdGltZSBzZWxlY3Rpb24gYnkgYWRkaW5nIHNlbGVjdCBib3hlcyB0byBjaG9vc2UgdGltZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHRpbWVwaWNrZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl90aW1lcGlja2VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB0aW1lcGlja2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gdGhpcy5fdGltZXBpY2tlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3RpbWVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc3VhbCB2YWxpZGF0aW9uIGZlZWRiYWNrLlxuICAgKiBAdHlwZSBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGRyb3Bkb3duIGRhdGUtcGlja2VyIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzdGFydERhdGUodmFsdWUpIHtcbiAgICBjb25zdCBwcmV2RGF0ZSA9IHRoaXMuX3N0YXJ0RGF0ZSA/IG5ldyBEYXRlKHRoaXMuX3N0YXJ0RGF0ZSkgOiBudWxsO1xuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICBpZiAocHJldkRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5fc3RhcnREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlVmFsdWUgPSB0aGlzLl9zdGFydERhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgPz8gJyc7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5lbWl0KHRoaXMuX3N0YXJ0RGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhcnREYXRlPzogRGF0ZSB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IGVuZERhdGUodmFsdWUpIHtcbiAgICBjb25zdCBwcmV2RGF0ZSA9IHRoaXMuX2VuZERhdGUgPyBuZXcgRGF0ZSh0aGlzLl9lbmREYXRlID8/IDApIDogbnVsbDtcbiAgICB0aGlzLl9lbmREYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xuICAgIGlmIChwcmV2RGF0ZT8uZ2V0VGltZSgpICE9PSB0aGlzLl9lbmREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5fZW5kRGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcbiAgICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2VuZERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBlbmREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9lbmREYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW5kRGF0ZT86IERhdGUgfCBudWxsO1xuXG4gIEBJbnB1dCgpIGNhbGVuZGFyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZXM6IERhdGVbXSB8IERhdGVbXVtdID0gW107XG5cbiAgQElucHV0KClcbiAgc2V0IGZpcnN0RGF5T2ZXZWVrKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9maXJzdERheU9mV2VlayA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBmaXJzdERheU9mV2VlaygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XG4gIH1cblxuICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcblxuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IG5hdmlnYXRpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHJhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBkYXRlRmlsdGVyPzogRGF0ZUZpbHRlclR5cGU7XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5zdGFydERhdGVJbnB1dC5kaXNhYmxlKCkgOiB0aGlzLnN0YXJ0RGF0ZUlucHV0LmVuYWJsZSgpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5lbmREYXRlSW5wdXQuZGlzYWJsZSgpIDogdGhpcy5lbmREYXRlSW5wdXQuZW5hYmxlKCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yYW5nZSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl92YWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG5ld1ZhbHVlLnN0YXJ0RGF0ZSA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG5ld1ZhbHVlLmVuZERhdGUgPz8gbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShuZXdWYWx1ZSA/PyBudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgY29uc3QgaGFzVmFsdWUgPSB0aGlzLnJhbmdlID8gISEodGhpcy52YWx1ZS5zdGFydERhdGUgJiYgdGhpcy52YWx1ZS5lbmREYXRlKSA6ICEhdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gIWhhc1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogYW55ID0ge307XG5cbiAgLyoqXG4gICAqIFNldCBsZW5ndGggb3IgZm9ybWF0IG9mIGRheSBuYW1lLlxuICAgKiBAdHlwZSBXZWVrZGF5Rm9ybWF0VHlwZVxuICAgKiBAZGVmYXVsdCAnc2hvcnQnXG4gICAqL1xuICBASW5wdXQoKSB3ZWVrZGF5Rm9ybWF0OiBXZWVrZGF5Rm9ybWF0VHlwZSA9ICdzaG9ydCc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBvcHBlciBPcHRpb25zIG9iamVjdFxuICAgKiBAdHlwZSBQYXJ0aWFsPE9wdGlvbnM+XG4gICAqL1xuICBASW5wdXQoJ3BvcHBlck9wdGlvbnMnKSBwb3BwZXJqc09wdGlvbnM6IFBhcnRpYWw8T3B0aW9ucz4gPSB7XG4gICAgc3RyYXRlZ3k6ICdmaXhlZCdcbiAgfTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgZGF5cyBpbiBhZGphY2VudCBtb250aHMgc2hvd24gYmVmb3JlIG9yIGFmdGVyIHRoZSBjdXJyZW50IG1vbnRoIGFyZSBzZWxlY3RhYmxlLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgYHNob3dBZGphY2VudERheXNgIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc2luY2UgNC40LjEwXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2VsZWN0QWRqYWNlbnREYXlzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jc2VsZWN0QWRqYWNlbnREYXlzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RBZGphY2VudERheXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3NlbGVjdEFkamFjZW50RGF5cztcbiAgfVxuXG4gICNzZWxlY3RBZGphY2VudERheXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgdG8gZGlzcGxheSBkYXRlcyBpbiBhZGphY2VudCBtb250aHMgKG5vbi1zZWxlY3RhYmxlKSBhdCB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgY3VycmVudCBtb250aC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzaW5jZSA0LjQuMTBcbiAgICovXG4gIEBJbnB1dCgpIHNob3dBZGphY2VudERheXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXSB8IHVuZGVmaW5lZD4oKTtcblxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgLy8gQFZpZXdDaGlsZChDYWxlbmRhckNvbXBvbmVudCkgY2FsZW5kYXJDb21wb25lbnQhOiBDYWxlbmRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlRWxlbWVudFJlZicpIHN0YXJ0RGF0ZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdlbmREYXRlRWxlbWVudFJlZicpIGVuZERhdGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZURhdGVDaGFuZ2Uoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgIC8vIHRvZG9cbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlID0gbmV4dDtcbiAgICAgIC8vICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vIH0pKTtcbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgIHRoaXMub25DaGFuZ2UobmV4dCk7XG4gICAgICAvLyB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlID0gdHJ1ZTtcbiAgcHVibGljIGN1c3RvbVJhbmdlcyE6IFRDdXN0b21SYW5nZVtdO1xuXG4gIHNldCBzdGFydERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdGFydERhdGVJbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fc3RhcnREYXRlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdGFydERhdGVWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGVWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0RGF0ZVZhbHVlOiBzdHJpbmcgPSB0aGlzLnN0YXJ0RGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcblxuICBzZXQgZW5kRGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVuZERhdGVJbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fZW5kRGF0ZVZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZW5kRGF0ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGVWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBfZW5kRGF0ZVZhbHVlOiBzdHJpbmcgPSB0aGlzLmVuZERhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgPz8gJyc7XG5cbiAgcHVibGljIGdldCBzdGFydERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucGxhY2Vob2xkZXIpID8gdGhpcy5wbGFjZWhvbGRlclswXSA6IHRoaXMucGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgcHVibGljIGdldCBlbmREYXRlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnBsYWNlaG9sZGVyKSA/IHRoaXMucGxhY2Vob2xkZXJbMV0gOiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIHByaXZhdGUgbGF5b3V0Q2hhbmdlcyE6IFN1YnNjcmlwdGlvbjtcblxuICAvLyB0b2RvOiB2YWxpZGF0aW9uXG4gIHN0YXJ0RGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlVmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgLy8gVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXG4gICAgLy8gVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLFxuICAgIC8vIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKHRoaXMubG9jYWxlKVxuICBdKTtcbiAgZW5kRGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuZW5kRGF0ZVZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgIC8vIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxuICAgIC8vIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSxcbiAgICAvLyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcih0aGlzLmxvY2FsZSlcbiAgXSk7XG4gIGRhdGVSYW5nZUdyb3VwITogRm9ybUdyb3VwO1xuXG4gIHNldCBpbnB1dFN0YXJ0SG92ZXJWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2lucHV0U3RhcnRIb3ZlclZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaW5wdXRTdGFydEhvdmVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhcnRIb3ZlclZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRTdGFydEhvdmVyVmFsdWUhOiBEYXRlIHwgbnVsbDtcblxuICBzZXQgaW5wdXRFbmRIb3ZlclZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5faW5wdXRFbmRIb3ZlclZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaW5wdXRFbmRIb3ZlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dEVuZEhvdmVyVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dEVuZEhvdmVyVmFsdWUhOiBEYXRlIHwgbnVsbDtcblxuICBnZXQgZGF0ZVBpY2tlckNsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdpcy12YWxpZCc6IHRoaXMudmFsaWQgPT09IHRydWUsXG4gICAgICAnaXMtaW52YWxpZCc6IHRoaXMudmFsaWQgPT09IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFxuICAgICAgICAgICA/IGRhdGVGb3JtYXQoZGF0ZSwgdGhpcy5mb3JtYXQpXG4gICAgICAgICAgIDogdGhpcy50aW1lcGlja2VyXG4gICAgICAgICAgICAgPyBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKVxuICAgICAgICAgICAgIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbXG4gICAgICBCcmVha3BvaW50cy5IYW5kc2V0LFxuICAgICAgQnJlYWtwb2ludHMuVGFibGV0XG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21SYW5nZXMgPSB0aGlzLnJhbmdlcyA/IE9iamVjdC5lbnRyaWVzKHRoaXMucmFuZ2VzKSA6IFtdO1xuXG4gICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuc3RhcnREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5lbmREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZShmYWxzZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuZm9yRWFjaCgoY2hpbGQ6IFRlbXBsYXRlSWREaXJlY3RpdmUpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNbY2hpbGQuaWRdID0gY2hpbGQudGVtcGxhdGVSZWY7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0ZSddKSB7XG4gICAgICAvLyBmb3IgZGF0ZS1waWNrZXIgY29tcG9uZW50XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snZGF0ZSddPy5jdXJyZW50VmFsdWUpID8/IG51bGw7XG4gICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZGF0ZSA/PyB0aGlzLmNhbGVuZGFyRGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3N0YXJ0RGF0ZSddKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snc3RhcnREYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlID8/IHRoaXMuY2FsZW5kYXJEYXRlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZW5kRGF0ZSddKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5jb252ZXJ0VmFsdWVUb0RhdGUoY2hhbmdlc1snZW5kRGF0ZSddPy5jdXJyZW50VmFsdWUpID8/IG51bGw7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFZhbHVlVG9EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGdldExvY2FsRGF0ZUZyb21TdHJpbmcodmFsdWUsIHRoaXMubG9jYWxlLCB0aGlzLnRpbWVwaWNrZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpID8/IG51bGw7XG4gIH1cblxuICBnZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgcmV0dXJuIGN1c3RvbVJhbmdlWzBdO1xuICB9XG5cbiAgc2V0Q3VzdG9tUmFuZ2UoY3VzdG9tUmFuZ2U6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q3VzdG9tUmFuZ2VLZXkoY3VzdG9tUmFuZ2UpO1xuICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGN1c3RvbVJhbmdlWzFdWzBdKTtcbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMV0pO1xuICB9XG5cbiAgaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50OiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuY2FsZW5kYXJDZWxsSG92ZXIuZW1pdCgkZXZlbnQpO1xuICAgIGlmICghdGhpcy5zdGFydERhdGUpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLnN0YXJ0RGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlID0gJGV2ZW50O1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYsIG51bGwpO1xuICAgICAgdGhpcy5pbnB1dEVuZEhvdmVyVmFsdWUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9ICRldmVudDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gJGV2ZW50LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuc3RhcnREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZSA/PyBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IGRhdGUgPyBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgOiAnJztcbiAgICAgIHRoaXMuaW5wdXRTdGFydEhvdmVyVmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UgPyB7IHN0YXJ0RGF0ZTogdGhpcy5zdGFydERhdGUsIGVuZERhdGU6IHRoaXMuZW5kRGF0ZSB9IDogdGhpcy5zdGFydERhdGU7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuZW5kRGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZSA/PyBudWxsO1xuICAgICAgdGhpcy5lbmREYXRlVmFsdWUgPSBkYXRlID8gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpIDogJyc7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogdGhpcy5lbmREYXRlIH0gOiB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGVhcigkZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gdGhpcy5jYWxlbmRhckNvbXBvbmVudC5jbGVhckRhdGVzKCk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICAvLyB0aGlzLmNhbGVuZGFyQ29tcG9uZW50LmNsZWFyRGF0ZXMoKTtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5lbmREYXRlICYmIHRoaXMuZW5kRGF0ZSA8IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UodGhpcy5zdGFydERhdGUgPz8gbnVsbCk7XG4gIH1cblxuICBoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5zdGFydERhdGUgPiBkYXRlKSkpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UodGhpcy5lbmREYXRlID8/IG51bGwpO1xuICB9XG5cbiAgZm9yYmlkZGVuRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSA9IChlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmICghZWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBkYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIC8vIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZUFzRGF0ZSA9IGRhdGU7XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIG9uQ2hhbmdlOiBhbnkgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UgPyB7IC4uLnZhbHVlIH0gOiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdGFydFRpbWVDaGFuZ2UodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc3RhcnREYXRlID0gdGltZSA/PyB0aGlzLnN0YXJ0RGF0ZTtcbiAgfVxuXG4gIGhhbmRsZUVuZFRpbWVDaGFuZ2UodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVuZERhdGUgPSB0aW1lID8/IHRoaXMuZW5kRGF0ZTtcbiAgfVxufVxuIiwiPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBjbGFzcz1cImRhdGUtcGlja2VyIHBpY2tlclwiIFtuZ0NsYXNzXT1cImRhdGVQaWNrZXJDbGFzc2VzXCJcbiAgICAgICAgICAgIFsodmlzaWJsZSldPVwidmlzaWJsZVwiIFtwb3BwZXJPcHRpb25zXT1cInBvcHBlcmpzT3B0aW9uc1wiPlxuICA8Yy1pbnB1dC1ncm91cCBbY2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgPz8gZHJvcGRvd24udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgIGNEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cFwiXG4gID5cbiAgICA8aW5wdXQgKGNoYW5nZSk9XCJoYW5kbGVTdGFydERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN0YXJ0RGF0ZUlucHV0XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyOiAhIWlucHV0U3RhcnRIb3ZlclZhbHVlfVwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAjc3RhcnREYXRlRWxlbWVudFJlZlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICAgICAgICAgW3ZhbGlkXT1cInJhbmdlID8gdW5kZWZpbmVkIDogdmFsaWRcIlxuICAgID5cbiAgICA8c3BhbiAqbmdJZj1cInJhbmdlICYmIHNlcGFyYXRvciAhPT0gZmFsc2VcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItYXJyb3ctaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8aW5wdXQgKGNoYW5nZSk9XCJoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICpuZ0lmPVwicmFuZ2VcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kRGF0ZUlucHV0XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyOiAhIWlucHV0RW5kSG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW5kRGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICNlbmREYXRlRWxlbWVudFJlZlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkID8/IHVuZGVmaW5lZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgKm5nSWY9XCJjbGVhbmVyICYmIHN0YXJ0RGF0ZUVsZW1lbnRSZWYudmFsdWUgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gZGF0ZS1waWNrZXItY2xlYW5lci1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cblxuICA8L2MtaW5wdXQtZ3JvdXA+XG4gIDxkaXYgY0Ryb3Bkb3duTWVudT5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItYm9keVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFpc01vYmlsZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmFuZ2VzXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cInJhbmdlc0J1dHRvbnNWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICB7e2dldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlKX19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxjLWNhbGVuZGFyXG4gICAgICAgIChjYWxlbmRhckNlbGxIb3Zlcik9XCJoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChlbmREYXRlQ2hhbmdlKT1cImhhbmRsZUVuZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbY2FsZW5kYXJEYXRlXT1cImNhbGVuZGFyRGF0ZVwiXG4gICAgICAgIFtjYWxlbmRhcnNdPVwiaXNNb2JpbGUgPyAxIDogY2FsZW5kYXJzXCJcbiAgICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlclwiXG4gICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICBbZW5kRGF0ZV09XCJlbmREYXRlXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb25cIlxuICAgICAgICBbcmFuZ2VdPVwicmFuZ2VcIlxuICAgICAgICBbc3RhcnREYXRlXT1cInN0YXJ0RGF0ZVwiXG4gICAgICAgIFtuYXZZZWFyRmlyc3RdPVwibmF2WWVhckZpcnN0XCJcbiAgICAgICAgW2RheUZvcm1hdF09XCJkYXlGb3JtYXRcIlxuICAgICAgICBbd2Vla2RheUZvcm1hdF09XCJ3ZWVrZGF5Rm9ybWF0XCJcbiAgICAgICAgW3NlbGVjdEFkamFjZW50RGF5c109XCJzZWxlY3RBZGphY2VudERheXNcIlxuICAgICAgICBbc2hvd0FkamFjZW50RGF5c109XCJzaG93QWRqYWNlbnREYXlzXCJcbiAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1jYWxlbmRhcnNcIlxuICAgICAgPjwvYy1jYWxlbmRhcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmYWxzZSAmJiB0aW1lcGlja2VyXCIgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgICAgICA8IS0tIHRvZG8tLT5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdGFydERhdGVcIlxuICAgICAgICAgIFt0aW1lXT1cInN0YXJ0RGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJlbmREYXRlID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYy10aW1lLXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXJcIiBjbGFzcz1cInBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXM/LmRhdGVQaWNrZXJGb290ZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRyb3Bkb3dufVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9jLWRyb3Bkb3duPlxuIl19
|