{"ast":null,"code":"import _get from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/get\";\nimport _getPrototypeOf from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/createSuper\";\nimport _createForOfIteratorHelper from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport _slicedToArray from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/slicedToArray\";\nimport _taggedTemplateLiteral from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral\";\nimport _createClass from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"C:/Users/kgamal/Downloads/HijriGregorianDatepicker-master/HijriGregorianDatepicker-master/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\n\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36;\n\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, TemplateRef, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, ElementRef, NgZone, ChangeDetectorRef, Optional, Host, NgModule, ChangeDetectionStrategy, Renderer2, forwardRef, Inject, PLATFORM_ID, LOCALE_ID, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, Injector, ApplicationRef, RendererFactory2, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) {}\n\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var panel_r3 = ctx.$implicit;\n    ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n  }\n}\n\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) {}\n\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) {}\n\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n    ɵngcc0.ɵɵelementStart(1, \"div\", 9);\n    ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n    ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef) || null);\n  }\n}\n\nvar _c0 = function _c0(a0, a1) {\n  return {\n    $implicit: a0,\n    opened: a1\n  };\n};\n\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\");\n    ɵngcc0.ɵɵelementStart(1, \"div\", 5);\n    ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 3, \"div\", 7);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var panel_r5 = ctx.$implicit;\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n\n    var _r0 = ɵngcc0.ɵɵreference(1);\n\n    ɵngcc0.ɵɵclassMap(\"card \" + (panel_r5.cardClass || \"\"));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n    ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(8, _c0, panel_r5, panel_r5.isOpen));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen || panel_r5.transitionRunning);\n  }\n}\n\nfunction NgbAlert_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r2 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r2);\n      var ctx_r1 = ɵngcc0.ɵɵnextContext();\n      return ctx_r1.close();\n    });\n    ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n    ɵngcc0.ɵɵtext(2, \"\\xD7\");\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nvar _c3 = [\"*\"];\n\nfunction NgbCarousel_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r6 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_li_1_Template_li_click_0_listener() {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r6);\n      var slide_r4 = restoredCtx.$implicit;\n      var ctx_r5 = ɵngcc0.ɵɵnextContext();\n      ctx_r5.focus();\n      return ctx_r5.select(slide_r4.id, ctx_r5.NgbSlideEventSource.INDICATOR);\n    });\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var slide_r4 = ctx.$implicit;\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"active\", slide_r4.id === ctx_r0.activeId);\n    ɵngcc0.ɵɵattribute(\"aria-labelledby\", \"slide-\" + slide_r4.id)(\"aria-controls\", \"slide-\" + slide_r4.id)(\"aria-selected\", slide_r4.id === ctx_r0.activeId);\n  }\n}\n\nfunction NgbCarousel_div_3_ng_template_3_Template(rf, ctx) {}\n\nfunction NgbCarousel_div_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n    ɵngcc0.ɵɵelementStart(1, \"span\", 8);\n    ɵngcc0.ɵɵi18n(2, 9);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 10);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var slide_r7 = ctx.$implicit;\n    var i_r8 = ctx.index;\n    var c_r9 = ctx.count;\n    ɵngcc0.ɵɵproperty(\"id\", \"slide-\" + slide_r7.id);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵi18nExp(i_r8 + 1)(c_r9);\n    ɵngcc0.ɵɵi18nApply(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r7.tplRef);\n  }\n}\n\nfunction NgbCarousel_a_4_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r12 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"a\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r12);\n      var ctx_r11 = ɵngcc0.ɵɵnextContext();\n      return ctx_r11.arrowLeft();\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 12);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n    ɵngcc0.ɵɵi18n(3, 13);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbCarousel_a_5_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r14 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_5_Template_a_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r14);\n      var ctx_r13 = ɵngcc0.ɵɵnextContext();\n      return ctx_r13.arrowRight();\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 15);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n    ɵngcc0.ɵɵi18n(3, 16);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nvar _c10 = [\"defaultDayTemplate\"];\nvar _c11 = [\"content\"];\n\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 7);\n  }\n\n  if (rf & 2) {\n    var date_r8 = ctx.date;\n    var currentMonth_r9 = ctx.currentMonth;\n    var selected_r10 = ctx.selected;\n    var disabled_r11 = ctx.disabled;\n    var focused_r12 = ctx.focused;\n    ɵngcc0.ɵɵproperty(\"date\", date_r8)(\"currentMonth\", currentMonth_r9)(\"selected\", selected_r10)(\"disabled\", disabled_r11)(\"focused\", focused_r12);\n  }\n}\n\nfunction NgbDatepicker_ng_template_2_div_0_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r16.i18n.getMonthLabel(month_r14.firstDate), \" \");\n  }\n}\n\nfunction NgbDatepicker_ng_template_2_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n    ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_div_0_div_1_Template, 2, 1, \"div\", 10);\n    ɵngcc0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var month_r14 = ctx.$implicit;\n    var ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.navigation === \"none\" || ctx_r13.displayMonths > 1 && ctx_r13.navigation === \"select\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"month\", month_r14.firstDate);\n  }\n}\n\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_2_div_0_Template, 3, 2, \"div\", 8);\n  }\n\n  if (rf & 2) {\n    var ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.model.months);\n  }\n}\n\nfunction NgbDatepicker_ngb_datepicker_navigation_5_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r19 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 13);\n    ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r19);\n      var ctx_r18 = ɵngcc0.ɵɵnextContext();\n      return ctx_r18.onNavigateEvent($event);\n    })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_select_0_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r19);\n      var ctx_r20 = ɵngcc0.ɵɵnextContext();\n      return ctx_r20.onNavigateDateSelect($event);\n    });\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"date\", ctx_r4.model.firstDate)(\"months\", ctx_r4.model.months)(\"disabled\", ctx_r4.model.disabled)(\"showSelect\", ctx_r4.model.navigation === \"select\")(\"prevDisabled\", ctx_r4.model.prevDisabled)(\"nextDisabled\", ctx_r4.model.nextDisabled)(\"selectBoxes\", ctx_r4.model.selectBoxes);\n  }\n}\n\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) {}\n\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) {}\n\nfunction NgbDatepickerMonth_div_0_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r2.i18n.getWeekLabel());\n  }\n}\n\nfunction NgbDatepickerMonth_div_0_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var weekday_r4 = ctx.$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(weekday_r4);\n  }\n}\n\nfunction NgbDatepickerMonth_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n    ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_div_0_div_1_Template, 2, 1, \"div\", 3);\n    ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_div_0_div_2_Template, 2, 1, \"div\", 4);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datepicker.showWeekNumbers);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.viewModel.weekdays);\n  }\n}\n\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n    var ctx_r7 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n  }\n}\n\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) {}\n\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n  }\n\n  if (rf & 2) {\n    var day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n  }\n}\n\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r15 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonth_ng_template_1_div_0_div_2_Template_div_click_0_listener($event) {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r15);\n      var day_r10 = restoredCtx.$implicit;\n      var ctx_r14 = ɵngcc0.ɵɵnextContext(3);\n      ctx_r14.doSelect(day_r10);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var day_r10 = ctx.$implicit;\n    ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n    ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n    ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n  }\n}\n\nfunction NgbDatepickerMonth_ng_template_1_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n    ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n    ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r6 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.datepicker.showWeekNumbers);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n  }\n}\n\nfunction NgbDatepickerMonth_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n  }\n\n  if (rf & 2) {\n    var week_r5 = ctx.$implicit;\n    ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n  }\n}\n\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r3 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r3);\n      var ctx_r2 = ɵngcc0.ɵɵnextContext();\n      return ctx_r2.select.emit($event);\n    });\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n  }\n}\n\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 0);\n  }\n}\n\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 0);\n  }\n}\n\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n    ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n  }\n\n  if (rf & 2) {\n    var month_r5 = ctx.$implicit;\n    var i_r6 = ctx.index;\n    var ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.i18n.getMonthLabel(month_r5.firstDate), \" \");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n  }\n}\n\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 3, \"ng-template\", 8);\n  }\n\n  if (rf & 2) {\n    var ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n  }\n}\n\nvar _c20 = [\"ngbDatepickerDayView\", \"\"];\nvar _c21 = [\"month\"];\nvar _c22 = [\"year\"];\n\nfunction NgbDatepickerNavigationSelect_option_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var m_r4 = ctx.$implicit;\n    var ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"value\", m_r4);\n    ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.i18n.getMonthFullName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getMonthShortName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n  }\n}\n\nfunction NgbDatepickerNavigationSelect_option_5_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var y_r5 = ctx.$implicit;\n    var ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"value\", y_r5);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r3.i18n.getYearNumerals(y_r5));\n  }\n}\n\nvar _c31 = [\"dialog\"];\nvar _c32 = [\"ngbNavOutlet\", \"\"];\n\nfunction NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template(rf, ctx) {}\n\nvar _c33 = function _c33(a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction NgbNavOutlet_ng_template_0_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n    ɵngcc0.ɵɵtemplate(1, NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"nav\", ctx_r2.nav)(\"role\", ctx_r2.paneRole);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef) || null)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(5, _c33, item_r1.active || ctx_r2.isPanelTransitioning(item_r1)));\n  }\n}\n\nfunction NgbNavOutlet_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_div_0_Template, 2, 7, \"div\", 1);\n  }\n\n  if (rf & 2) {\n    var item_r1 = ctx.$implicit;\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.isPanelInDom() || ctx_r0.isPanelTransitioning(item_r1));\n  }\n}\n\nfunction NgbPagination_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n    ɵngcc0.ɵɵi18n(1, 10);\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbPagination_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n    ɵngcc0.ɵɵi18n(1, 11);\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbPagination_ng_template_4_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n    ɵngcc0.ɵɵi18n(1, 12);\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbPagination_ng_template_6_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n    ɵngcc0.ɵɵi18n(1, 13);\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbPagination_ng_template_8_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtext(0, \"...\");\n  }\n}\n\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n    ɵngcc0.ɵɵtext(1, \"(current)\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbPagination_ng_template_10_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtext(0);\n    ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 14);\n  }\n\n  if (rf & 2) {\n    var page_r19 = ctx.$implicit;\n    var currentPage_r20 = ctx.currentPage;\n    ɵngcc0.ɵɵtextInterpolate1(\" \", page_r19, \" \");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", page_r19 === currentPage_r20);\n  }\n}\n\nfunction NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template(rf, ctx) {}\n\nvar _c42 = function _c42(a1) {\n  return {\n    disabled: true,\n    currentPage: a1\n  };\n};\n\nfunction NgbPagination_ng_template_12_li_0_a_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"a\", 20);\n    ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var page_r22 = ɵngcc0.ɵɵnextContext(2).$implicit;\n    var ctx_r27 = ɵngcc0.ɵɵnextContext();\n\n    var _r8 = ɵngcc0.ɵɵreference(9);\n\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c42, page_r22));\n  }\n}\n\nfunction NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template(rf, ctx) {}\n\nvar _c43 = function _c43(a0, a1, a2) {\n  return {\n    disabled: a0,\n    $implicit: a1,\n    currentPage: a2\n  };\n};\n\nfunction NgbPagination_ng_template_12_li_0_a_2_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r34 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_ng_template_12_li_0_a_2_Template_a_click_0_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r34);\n      var pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n      var ctx_r32 = ɵngcc0.ɵɵnextContext(2);\n      ctx_r32.selectPage(pageNumber_r26);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r35 = ɵngcc0.ɵɵnextContext();\n    var disabled_r24 = ctx_r35.disabled;\n    var page_r22 = ctx_r35.$implicit;\n    var ctx_r28 = ɵngcc0.ɵɵnextContext();\n\n    var _r10 = ɵngcc0.ɵɵreference(11);\n\n    ɵngcc0.ɵɵattribute(\"tabindex\", disabled_r24 ? \"-1\" : null)(\"aria-disabled\", disabled_r24 ? \"true\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c43, disabled_r24, pageNumber_r26, page_r22));\n  }\n}\n\nfunction NgbPagination_ng_template_12_li_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n    ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_Template, 2, 4, \"a\", 18);\n    ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_12_li_0_a_2_Template, 2, 8, \"a\", 19);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var pageNumber_r26 = ctx.$implicit;\n    var ctx_r37 = ɵngcc0.ɵɵnextContext();\n    var page_r22 = ctx_r37.$implicit;\n    var disabled_r24 = ctx_r37.disabled;\n    var ctx_r25 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === page_r22)(\"disabled\", ctx_r25.isEllipsis(pageNumber_r26) || disabled_r24);\n    ɵngcc0.ɵɵattribute(\"aria-current\", pageNumber_r26 === page_r22 ? \"page\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r25.isEllipsis(pageNumber_r26));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r25.isEllipsis(pageNumber_r26));\n  }\n}\n\nfunction NgbPagination_ng_template_12_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_12_li_0_Template, 3, 7, \"li\", 16);\n  }\n\n  if (rf & 2) {\n    var pages_r23 = ctx.pages;\n    ɵngcc0.ɵɵproperty(\"ngForOf\", pages_r23);\n  }\n}\n\nfunction NgbPagination_li_15_ng_template_2_Template(rf, ctx) {}\n\nvar _c46 = function _c46(a0, a1) {\n  return {\n    disabled: a0,\n    currentPage: a1\n  };\n};\n\nfunction NgbPagination_li_15_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r40 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n    ɵngcc0.ɵɵelementStart(1, \"a\", 22);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_Template_a_click_1_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r40);\n      var ctx_r39 = ɵngcc0.ɵɵnextContext();\n      ctx_r39.selectPage(1);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r14 = ɵngcc0.ɵɵnextContext();\n\n    var _r0 = ɵngcc0.ɵɵreference(1);\n\n    ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r14.previousDisabled());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r14.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r14.previousDisabled() ? \"true\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r14.tplFirst == null ? null : ctx_r14.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r14.previousDisabled(), ctx_r14.page));\n  }\n}\n\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) {}\n\nvar _c49 = function _c49(a0) {\n  return {\n    disabled: a0\n  };\n};\n\nfunction NgbPagination_li_16_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r43 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n    ɵngcc0.ɵɵelementStart(1, \"a\", 23);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r43);\n      var ctx_r42 = ɵngcc0.ɵɵnextContext();\n      ctx_r42.selectPage(ctx_r42.page - 1);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r15 = ɵngcc0.ɵɵnextContext();\n\n    var _r2 = ɵngcc0.ɵɵreference(3);\n\n    ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.previousDisabled());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r15.previousDisabled() ? \"true\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplPrevious == null ? null : ctx_r15.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(6, _c49, ctx_r15.previousDisabled()));\n  }\n}\n\nfunction NgbPagination_ng_template_17_Template(rf, ctx) {}\n\nfunction NgbPagination_li_18_ng_template_2_Template(rf, ctx) {}\n\nfunction NgbPagination_li_18_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r46 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n    ɵngcc0.ɵɵelementStart(1, \"a\", 24);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_18_Template_a_click_1_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r46);\n      var ctx_r45 = ɵngcc0.ɵɵnextContext();\n      ctx_r45.selectPage(ctx_r45.page + 1);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(2, NgbPagination_li_18_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r17 = ɵngcc0.ɵɵnextContext();\n\n    var _r4 = ɵngcc0.ɵɵreference(5);\n\n    ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r17.nextDisabled());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r17.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r17.nextDisabled() ? \"true\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r17.tplNext == null ? null : ctx_r17.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r17.nextDisabled(), ctx_r17.page));\n  }\n}\n\nfunction NgbPagination_li_19_ng_template_2_Template(rf, ctx) {}\n\nfunction NgbPagination_li_19_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r49 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n    ɵngcc0.ɵɵelementStart(1, \"a\", 25);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_19_Template_a_click_1_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r49);\n      var ctx_r48 = ɵngcc0.ɵɵnextContext();\n      ctx_r48.selectPage(ctx_r48.pageCount);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵtemplate(2, NgbPagination_li_19_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r18 = ɵngcc0.ɵɵnextContext();\n\n    var _r6 = ɵngcc0.ɵɵreference(7);\n\n    ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r18.nextDisabled());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r18.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r18.nextDisabled() ? \"true\" : null);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r18.tplLast == null ? null : ctx_r18.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r18.nextDisabled(), ctx_r18.page));\n  }\n}\n\nvar _c54 = function _c54(a0, a1, a2) {\n  return {\n    $implicit: a0,\n    pages: a1,\n    disabled: a2\n  };\n};\n\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtext(0);\n  }\n\n  if (rf & 2) {\n    var ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n  }\n}\n\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) {}\n\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n    ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n    ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var _r1 = ɵngcc0.ɵɵreference(2);\n\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(3);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n  }\n}\n\nfunction NgbProgressbar_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\");\n    ɵngcc0.ɵɵi18n(1, 2);\n    ɵngcc0.ɵɵpipe(2, \"percent\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵi18nExp(ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r0.getValue() / ctx_r0.max));\n    ɵngcc0.ɵɵi18nApply(1);\n  }\n}\n\nfunction NgbRating_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtext(0);\n  }\n\n  if (rf & 2) {\n    var fill_r3 = ctx.fill;\n    ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n  }\n}\n\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) {}\n\nfunction NgbRating_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r7 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n    ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r7);\n      var index_r4 = restoredCtx.index;\n      var ctx_r6 = ɵngcc0.ɵɵnextContext();\n      return ctx_r6.enter(index_r4 + 1);\n    })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r7);\n      var index_r4 = restoredCtx.index;\n      var ctx_r8 = ɵngcc0.ɵɵnextContext();\n      return ctx_r8.handleClick(index_r4 + 1);\n    });\n    ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var index_r4 = ctx.index;\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n\n    var _r0 = ɵngcc0.ɵɵreference(1);\n\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.isInteractive() ? \"pointer\" : \"default\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n  }\n}\n\nfunction NgbTimepicker_button_3_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r9 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r9);\n      var ctx_r8 = ɵngcc0.ɵɵnextContext();\n      return ctx_r8.changeHour(ctx_r8.hourStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 12);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 14);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n  }\n}\n\nfunction NgbTimepicker_button_5_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r11 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r11);\n      var ctx_r10 = ɵngcc0.ɵɵnextContext();\n      return ctx_r10.changeHour(-ctx_r10.hourStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 15);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 16);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n  }\n}\n\nfunction NgbTimepicker_button_9_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r13 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r13);\n      var ctx_r12 = ɵngcc0.ɵɵnextContext();\n      return ctx_r12.changeMinute(ctx_r12.minuteStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 12);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 17);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n  }\n}\n\nfunction NgbTimepicker_button_11_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r15 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r15);\n      var ctx_r14 = ɵngcc0.ɵɵnextContext();\n      return ctx_r14.changeMinute(-ctx_r14.minuteStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 15);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 18);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n  }\n}\n\nfunction NgbTimepicker_div_12_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n    ɵngcc0.ɵɵtext(1, \":\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n}\n\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r19 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r19);\n      var ctx_r18 = ɵngcc0.ɵɵnextContext(2);\n      return ctx_r18.changeSecond(ctx_r18.secondStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 12);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 21);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n  }\n}\n\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r21 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() {\n      ɵngcc0.ɵɵrestoreView(_r21);\n      var ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n      return ctx_r20.changeSecond(-ctx_r20.secondStep);\n    });\n    ɵngcc0.ɵɵelement(1, \"span\", 15);\n    ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n    ɵngcc0.ɵɵi18n(3, 22);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n  }\n}\n\nfunction NgbTimepicker_div_13_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r23 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n    ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n    ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n    ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r23);\n      var ctx_r22 = ɵngcc0.ɵɵnextContext();\n      return ctx_r22.updateSecond($event.target.value);\n    })(\"blur\", function NgbTimepicker_div_13_Template_input_blur_2_listener() {\n      ɵngcc0.ɵɵrestoreView(_r23);\n      var ctx_r24 = ɵngcc0.ɵɵnextContext();\n      return ctx_r24.handleBlur();\n    })(\"input\", function NgbTimepicker_div_13_Template_input_input_2_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r23);\n      var ctx_r25 = ɵngcc0.ɵɵnextContext();\n      return ctx_r25.formatInput($event.target);\n    })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r23);\n      var ctx_r26 = ɵngcc0.ɵɵnextContext();\n      ctx_r26.changeSecond(ctx_r26.secondStep);\n      return $event.preventDefault();\n    })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r23);\n      var ctx_r27 = ɵngcc0.ɵɵnextContext();\n      ctx_r27.changeSecond(-ctx_r27.secondStep);\n      return $event.preventDefault();\n    });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r5 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n    ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n  }\n}\n\nfunction NgbTimepicker_div_14_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 5);\n  }\n}\n\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementContainerStart(0);\n    ɵngcc0.ɵɵi18n(1, 27);\n    ɵngcc0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵi18nExp(ctx_r28.i18n.getAfternoonPeriod());\n    ɵngcc0.ɵɵi18nApply(1);\n  }\n}\n\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵi18n(0, 28);\n  }\n\n  if (rf & 2) {\n    var ctx_r30 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵi18nExp(ctx_r30.i18n.getMorningPeriod());\n    ɵngcc0.ɵɵi18nApply(0);\n  }\n}\n\nfunction NgbTimepicker_div_15_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r32 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"div\", 23);\n    ɵngcc0.ɵɵelementStart(1, \"button\", 24);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() {\n      ɵngcc0.ɵɵrestoreView(_r32);\n      var ctx_r31 = ɵngcc0.ɵɵnextContext();\n      return ctx_r31.toggleMeridian();\n    });\n    ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 1, \"ng-container\", 25);\n    ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 1, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var _r29 = ɵngcc0.ɵɵreference(4);\n\n    var ctx_r7 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n    ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.model && ctx_r7.model.hour >= 12)(\"ngIfElse\", _r29);\n  }\n}\n\nfunction NgbToast_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"strong\", 3);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r1.header);\n  }\n}\n\nfunction NgbToast_ng_template_2_ng_template_1_Template(rf, ctx) {}\n\nfunction NgbToast_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r5 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n    ɵngcc0.ɵɵtemplate(1, NgbToast_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n    ɵngcc0.ɵɵelementStart(2, \"button\", 6);\n    ɵngcc0.ɵɵlistener(\"click\", function NgbToast_ng_template_2_Template_button_click_2_listener() {\n      ɵngcc0.ɵɵrestoreView(_r5);\n      var ctx_r4 = ɵngcc0.ɵɵnextContext();\n      return ctx_r4.hide();\n    });\n    ɵngcc0.ɵɵelementStart(3, \"span\", 7);\n    ɵngcc0.ɵɵtext(4, \"\\xD7\");\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n\n    var _r0 = ɵngcc0.ɵɵreference(1);\n\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.contentHeaderTpl || _r0);\n  }\n}\n\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\");\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    var ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(part_r1);\n  }\n}\n\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtext(0);\n  }\n\n  if (rf & 2) {\n    var part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵtextInterpolate(part_r1);\n  }\n}\n\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n    ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n  }\n\n  if (rf & 2) {\n    var isOdd_r2 = ctx.odd;\n\n    var _r4 = ɵngcc0.ɵɵreference(2);\n\n    ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n  }\n}\n\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n  }\n\n  if (rf & 2) {\n    var result_r3 = ctx.result;\n    var term_r4 = ctx.term;\n    var formatter_r5 = ctx.formatter;\n    ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n  }\n}\n\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) {}\n\nvar _c87 = function _c87(a0, a1, a2) {\n  return {\n    result: a0,\n    term: a1,\n    formatter: a2\n  };\n};\n\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) {\n  if (rf & 1) {\n    var _r10 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n    ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r10);\n      var idx_r7 = restoredCtx.index;\n      var ctx_r9 = ɵngcc0.ɵɵnextContext();\n      return ctx_r9.markActive(idx_r7);\n    })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() {\n      var restoredCtx = ɵngcc0.ɵɵrestoreView(_r10);\n      var result_r6 = restoredCtx.$implicit;\n      var ctx_r11 = ɵngcc0.ɵɵnextContext();\n      return ctx_r11.select(result_r6);\n    });\n    ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    var result_r6 = ctx.$implicit;\n    var idx_r7 = ctx.index;\n    var ctx_r2 = ɵngcc0.ɵɵnextContext();\n\n    var _r0 = ɵngcc0.ɵɵreference(1);\n\n    ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n    ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c87, result_r6, ctx_r2.term, ctx_r2.formatter));\n  }\n}\n\nfunction toInteger(value) {\n  return parseInt(\"\".concat(value), 10);\n}\n\nfunction toString(value) {\n  return value !== undefined && value !== null ? \"\".concat(value) : '';\n}\n\nfunction getValueInRange(value, max) {\n  var min = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  return Math.max(Math.min(value, max), min);\n}\n\nfunction isString(value) {\n  return typeof value === 'string';\n}\n\nfunction isNumber(value) {\n  return !isNaN(toInteger(value));\n}\n\nfunction isInteger(value) {\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null;\n}\n\nfunction padNumber(value) {\n  if (isNumber(value)) {\n    return \"0\".concat(value).slice(-2);\n  } else {\n    return '';\n  }\n}\n\nfunction regExpEscape(text) {\n  return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction hasClassName(element, className) {\n  return element && element.className && element.className.split && element.className.split(/\\s+/).indexOf(className) >= 0;\n}\n\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n  // Polyfill for ie10+\n  if (!Element.prototype.matches) {\n    // IE uses the non-standard name: msMatchesSelector\n    Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n  }\n\n  Element.prototype.closest = function (s) {\n    var el = this;\n\n    if (!document.documentElement.contains(el)) {\n      return null;\n    }\n\n    do {\n      if (el.matches(s)) {\n        return el;\n      }\n\n      el = el.parentElement || el.parentNode;\n    } while (el !== null && el.nodeType === 1);\n\n    return null;\n  };\n}\n\nfunction closest(element, selector) {\n  if (!selector) {\n    return null;\n  }\n  /*\n   * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n   * not support `Element.prototype.closest`. To emulate the correct behaviour\n   * we return null when the method is missing.\n   *\n   * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n   * will return the document element whilst in Edge null will be returned. This\n   * compromise was deemed good enough.\n   */\n\n\n  if (typeof element.closest === 'undefined') {\n    return null;\n  }\n\n  return element.closest(selector);\n}\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\n\n\nfunction reflow(element) {\n  return (element || document.body).getBoundingClientRect();\n}\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\n\n\nfunction runInZone(zone) {\n  return function (source) {\n    return new Observable(function (observer) {\n      var onNext = function onNext(value) {\n        return zone.run(function () {\n          return observer.next(value);\n        });\n      };\n\n      var onError = function onError(e) {\n        return zone.run(function () {\n          return observer.error(e);\n        });\n      };\n\n      var onComplete = function onComplete() {\n        return zone.run(function () {\n          return observer.complete();\n        });\n      };\n\n      return source.subscribe(onNext, onError, onComplete);\n    });\n  };\n}\n\nfunction removeAccents(str) {\n  return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nvar environment = {\n  animation: true,\n  transitionTimerDelayMs: 5\n};\n\nvar NgbConfig = /*@__PURE__*/function () {\n  var NgbConfig = /*#__PURE__*/_createClass(function NgbConfig() {\n    _classCallCheck(this, NgbConfig);\n\n    this.animation = environment.animation;\n  });\n\n  NgbConfig.ɵfac = function NgbConfig_Factory(t) {\n    return new (t || NgbConfig)();\n  };\n\n  NgbConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbConfig_Factory() {\n      return new NgbConfig();\n    },\n    token: NgbConfig,\n    providedIn: \"root\"\n  });\n  return NgbConfig;\n}();\n\nvar NgbAccordionConfig = /*@__PURE__*/function () {\n  var NgbAccordionConfig = /*#__PURE__*/function () {\n    function NgbAccordionConfig(_ngbConfig) {\n      _classCallCheck(this, NgbAccordionConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.closeOthers = false;\n    }\n\n    _createClass(NgbAccordionConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbAccordionConfig;\n  }();\n\n  NgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) {\n    return new (t || NgbAccordionConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbAccordionConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbAccordionConfig_Factory() {\n      return new NgbAccordionConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbAccordionConfig,\n    providedIn: \"root\"\n  });\n  return NgbAccordionConfig;\n}();\n\nfunction getTransitionDurationMs(element) {\n  var _window$getComputedSt = window.getComputedStyle(element),\n      transitionDelay = _window$getComputedSt.transitionDelay,\n      transitionDuration = _window$getComputedSt.transitionDuration;\n\n  var transitionDelaySec = parseFloat(transitionDelay);\n  var transitionDurationSec = parseFloat(transitionDuration);\n  return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\nvar noopFn = function noopFn() {};\n\nvar ɵ0$5 = noopFn;\nvar transitionTimerDelayMs = environment.transitionTimerDelayMs;\nvar runningTransitions = new Map();\n\nvar ngbRunTransition = function ngbRunTransition(zone, element, startFn, options) {\n  // Getting initial context from options\n  var context = options.context || {}; // Checking if there are already running transitions on the given element.\n\n  var running = runningTransitions.get(element);\n\n  if (running) {\n    switch (options.runningTransition) {\n      // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n      // We're not emitting any values, but simply completing the observable (EMPTY).\n      case 'continue':\n        return EMPTY;\n      // If there is one running and we want for it to 'stop', we have to complete the running one.\n      // We're simply completing the running one and not emitting any values and merging newly provided context\n      // with the one coming from currently running transition.\n\n      case 'stop':\n        zone.run(function () {\n          return running.transition$.complete();\n        });\n        context = Object.assign(running.context, context);\n        runningTransitions.delete(element);\n    }\n  } // Running the start function\n\n\n  var endFn = startFn(element, options.animation, context) || noopFn; // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n  // If animations are disabled, we have to emit a value and complete the observable\n  // In this case we have to call the end function, but can finish immediately by emitting a value,\n  // completing the observable and executing end functions synchronously.\n\n  if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n    zone.run(function () {\n      return endFn();\n    });\n    return of(undefined).pipe(runInZone(zone));\n  } // Starting a new transition\n\n\n  var transition$ = new Subject();\n  var finishTransition$ = new Subject();\n  var stop$ = transition$.pipe(endWith(true));\n  runningTransitions.set(element, {\n    transition$: transition$,\n    complete: function complete() {\n      finishTransition$.next();\n      finishTransition$.complete();\n    },\n    context: context\n  });\n  var transitionDurationMs = getTransitionDurationMs(element); // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n  // because 'transitionend' event might not be fired in some browsers, if the transitioning\n  // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n  // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n  // 2. We need to filter transition end events, because they might bubble from shorter transitions\n  // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n\n  zone.runOutsideAngular(function () {\n    var transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(function (_ref) {\n      var target = _ref.target;\n      return target === element;\n    }));\n    var timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n    race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(function () {\n      runningTransitions.delete(element);\n      zone.run(function () {\n        endFn();\n        transition$.next();\n        transition$.complete();\n      });\n    });\n  });\n  return transition$.asObservable();\n};\n\nvar ngbCompleteTransition = function ngbCompleteTransition(element) {\n  var _a;\n\n  (_a = runningTransitions.get(element)) === null || _a === void 0 ? void 0 : _a.complete();\n};\n\nfunction measureCollapsingElementHeightPx(element) {\n  // SSR fix for without injecting the PlatformId\n  if (typeof navigator === 'undefined') {\n    return '0px';\n  }\n\n  var classList = element.classList;\n  var hasShownClass = classList.contains('show');\n\n  if (!hasShownClass) {\n    classList.add('show');\n  }\n\n  element.style.height = '';\n  var height = element.getBoundingClientRect().height + 'px';\n\n  if (!hasShownClass) {\n    classList.remove('show');\n  }\n\n  return height;\n}\n\nvar ngbCollapsingTransition = function ngbCollapsingTransition(element, animation, context) {\n  var direction = context.direction,\n      maxHeight = context.maxHeight;\n  var classList = element.classList;\n\n  function setInitialClasses() {\n    classList.add('collapse');\n\n    if (direction === 'show') {\n      classList.add('show');\n    } else {\n      classList.remove('show');\n    }\n  } // without animations we just need to set initial classes\n\n\n  if (!animation) {\n    setInitialClasses();\n    return;\n  } // No maxHeight -> running the transition for the first time\n\n\n  if (!maxHeight) {\n    maxHeight = measureCollapsingElementHeightPx(element);\n    context.maxHeight = maxHeight; // Fix the height before starting the animation\n\n    element.style.height = direction !== 'show' ? maxHeight : '0px';\n    classList.remove('collapse');\n    classList.remove('collapsing');\n    classList.remove('show');\n    reflow(element); // Start the animation\n\n    classList.add('collapsing');\n  } // Start or revert the animation\n\n\n  element.style.height = direction === 'show' ? maxHeight : '0px';\n  return function () {\n    setInitialClasses();\n    classList.remove('collapsing');\n    element.style.height = '';\n  };\n};\n\nvar nextId$4 = 0;\n\nvar NgbPanelHeader = /*@__PURE__*/function () {\n  var NgbPanelHeader = /*#__PURE__*/_createClass(function NgbPanelHeader(templateRef) {\n    _classCallCheck(this, NgbPanelHeader);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) {\n    return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPanelHeader.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPanelHeader,\n    selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]]\n  });\n  return NgbPanelHeader;\n}();\n\nvar NgbPanelTitle = /*@__PURE__*/function () {\n  var NgbPanelTitle = /*#__PURE__*/_createClass(function NgbPanelTitle(templateRef) {\n    _classCallCheck(this, NgbPanelTitle);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) {\n    return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPanelTitle.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPanelTitle,\n    selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]]\n  });\n  return NgbPanelTitle;\n}();\n\nvar NgbPanelContent = /*@__PURE__*/function () {\n  var NgbPanelContent = /*#__PURE__*/_createClass(function NgbPanelContent(templateRef) {\n    _classCallCheck(this, NgbPanelContent);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) {\n    return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPanelContent.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPanelContent,\n    selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]]\n  });\n  return NgbPanelContent;\n}();\n\nvar NgbPanel = /*@__PURE__*/function () {\n  var NgbPanel = /*#__PURE__*/function () {\n    function NgbPanel() {\n      _classCallCheck(this, NgbPanel);\n\n      /**\n       *  If `true`, the panel is disabled an can't be toggled.\n       */\n      this.disabled = false;\n      /**\n       *  An optional id for the panel that must be unique on the page.\n       *\n       *  If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n       */\n\n      this.id = \"ngb-panel-\".concat(nextId$4++);\n      this.isOpen = false;\n      /* A flag to specified that the transition panel classes have been initialized */\n\n      this.initClassDone = false;\n      /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\n\n      this.transitionRunning = false;\n      /**\n       * An event emitted when the panel is shown, after the transition. It has no payload.\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the panel is hidden, after the transition. It has no payload.\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter();\n    }\n\n    _createClass(NgbPanel, [{\n      key: \"ngAfterContentChecked\",\n      value: function ngAfterContentChecked() {\n        // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n        // only @ContentChildren allows us to specify the {descendants: false} option.\n        // Without {descendants: false} we are hitting bugs described in:\n        // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n        this.titleTpl = this.titleTpls.first;\n        this.headerTpl = this.headerTpls.first;\n        this.contentTpl = this.contentTpls.first;\n      }\n    }]);\n\n    return NgbPanel;\n  }();\n\n  NgbPanel.ɵfac = function NgbPanel_Factory(t) {\n    return new (t || NgbPanel)();\n  };\n\n  NgbPanel.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPanel,\n    selectors: [[\"ngb-panel\"]],\n    contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 4);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 4);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 4);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n      }\n    },\n    inputs: {\n      disabled: \"disabled\",\n      id: \"id\",\n      title: \"title\",\n      type: \"type\",\n      cardClass: \"cardClass\"\n    },\n    outputs: {\n      shown: \"shown\",\n      hidden: \"hidden\"\n    }\n  });\n  return NgbPanel;\n}();\n\nvar NgbAccordion = /*@__PURE__*/function () {\n  var NgbAccordion = /*#__PURE__*/function () {\n    function NgbAccordion(config, _element, _ngZone, _changeDetector) {\n      _classCallCheck(this, NgbAccordion);\n\n      this._element = _element;\n      this._ngZone = _ngZone;\n      this._changeDetector = _changeDetector;\n      /**\n       * An array or comma separated strings of panel ids that should be opened **initially**.\n       *\n       * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n       * the `(panelChange)` event.\n       */\n\n      this.activeIds = [];\n      /**\n       * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n       */\n\n      this.destroyOnHide = true;\n      /**\n       * Event emitted right before the panel toggle happens.\n       *\n       * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n       */\n\n      this.panelChange = new EventEmitter();\n      /**\n       * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n       * The payload is the panel id.\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter();\n      this.animation = config.animation;\n      this.type = config.type;\n      this.closeOtherPanels = config.closeOthers;\n    }\n    /**\n     * Checks if a panel with a given id is expanded.\n     */\n\n\n    _createClass(NgbAccordion, [{\n      key: \"isExpanded\",\n      value: function isExpanded(panelId) {\n        return this.activeIds.indexOf(panelId) > -1;\n      }\n      /**\n       * Expands a panel with a given id.\n       *\n       * Has no effect if the panel is already expanded or disabled.\n       */\n\n    }, {\n      key: \"expand\",\n      value: function expand(panelId) {\n        this._changeOpenState(this._findPanelById(panelId), true);\n      }\n      /**\n       * Expands all panels, if `[closeOthers]` is `false`.\n       *\n       * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n       */\n\n    }, {\n      key: \"expandAll\",\n      value: function expandAll() {\n        var _this = this;\n\n        if (this.closeOtherPanels) {\n          if (this.activeIds.length === 0 && this.panels.length) {\n            this._changeOpenState(this.panels.first, true);\n          }\n        } else {\n          this.panels.forEach(function (panel) {\n            return _this._changeOpenState(panel, true);\n          });\n        }\n      }\n      /**\n       * Collapses a panel with the given id.\n       *\n       * Has no effect if the panel is already collapsed or disabled.\n       */\n\n    }, {\n      key: \"collapse\",\n      value: function collapse(panelId) {\n        this._changeOpenState(this._findPanelById(panelId), false);\n      }\n      /**\n       * Collapses all opened panels.\n       */\n\n    }, {\n      key: \"collapseAll\",\n      value: function collapseAll() {\n        var _this2 = this;\n\n        this.panels.forEach(function (panel) {\n          _this2._changeOpenState(panel, false);\n        });\n      }\n      /**\n       * Toggles a panel with the given id.\n       *\n       * Has no effect if the panel is disabled.\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle(panelId) {\n        var panel = this._findPanelById(panelId);\n\n        if (panel) {\n          this._changeOpenState(panel, !panel.isOpen);\n        }\n      }\n    }, {\n      key: \"ngAfterContentChecked\",\n      value: function ngAfterContentChecked() {\n        var _this3 = this;\n\n        // active id updates\n        if (isString(this.activeIds)) {\n          this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n        } // update panels open states\n\n\n        this.panels.forEach(function (panel) {\n          panel.isOpen = !panel.disabled && _this3.activeIds.indexOf(panel.id) > -1;\n        }); // closeOthers updates\n\n        if (this.activeIds.length > 1 && this.closeOtherPanels) {\n          this._closeOthers(this.activeIds[0], false);\n\n          this._updateActiveIds();\n        } // Setup the initial classes here\n\n\n        this._ngZone.onStable.pipe(take(1)).subscribe(function () {\n          _this3.panels.forEach(function (panel) {\n            var panelElement = _this3._getPanelElement(panel.id);\n\n            if (panelElement) {\n              if (!panel.initClassDone) {\n                panel.initClassDone = true;\n                ngbRunTransition(_this3._ngZone, panelElement, ngbCollapsingTransition, {\n                  animation: false,\n                  runningTransition: 'continue',\n                  context: {\n                    direction: panel.isOpen ? 'show' : 'hide'\n                  }\n                });\n              }\n            } else {\n              // Classes must be initialized next time it will be in the dom\n              panel.initClassDone = false;\n            }\n          });\n        });\n      }\n    }, {\n      key: \"_changeOpenState\",\n      value: function _changeOpenState(panel, nextState) {\n        if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\n          var defaultPrevented = false;\n          this.panelChange.emit({\n            panelId: panel.id,\n            nextState: nextState,\n            preventDefault: function preventDefault() {\n              defaultPrevented = true;\n            }\n          });\n\n          if (!defaultPrevented) {\n            panel.isOpen = nextState;\n            panel.transitionRunning = true;\n\n            if (nextState && this.closeOtherPanels) {\n              this._closeOthers(panel.id);\n            }\n\n            this._updateActiveIds();\n\n            this._runTransitions(this.animation);\n          }\n        }\n      }\n    }, {\n      key: \"_closeOthers\",\n      value: function _closeOthers(panelId) {\n        var enableTransition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        this.panels.forEach(function (panel) {\n          if (panel.id !== panelId && panel.isOpen) {\n            panel.isOpen = false;\n            panel.transitionRunning = enableTransition;\n          }\n        });\n      }\n    }, {\n      key: \"_findPanelById\",\n      value: function _findPanelById(panelId) {\n        return this.panels.find(function (p) {\n          return p.id === panelId;\n        }) || null;\n      }\n    }, {\n      key: \"_updateActiveIds\",\n      value: function _updateActiveIds() {\n        this.activeIds = this.panels.filter(function (panel) {\n          return panel.isOpen && !panel.disabled;\n        }).map(function (panel) {\n          return panel.id;\n        });\n      }\n    }, {\n      key: \"_runTransitions\",\n      value: function _runTransitions(animation) {\n        var _this4 = this;\n\n        // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\n        // before starting the animation\n        this._changeDetector.detectChanges();\n\n        this.panels.forEach(function (panel) {\n          // When panel.transitionRunning is true, the transition needs to be started OR reversed,\n          // The direction (show or hide) is choosen by each panel.isOpen state\n          if (panel.transitionRunning) {\n            var panelElement = _this4._getPanelElement(panel.id);\n\n            ngbRunTransition(_this4._ngZone, panelElement, ngbCollapsingTransition, {\n              animation: animation,\n              runningTransition: 'stop',\n              context: {\n                direction: panel.isOpen ? 'show' : 'hide'\n              }\n            }).subscribe(function () {\n              panel.transitionRunning = false;\n              var id = panel.id;\n\n              if (panel.isOpen) {\n                panel.shown.emit();\n\n                _this4.shown.emit(id);\n              } else {\n                panel.hidden.emit();\n\n                _this4.hidden.emit(id);\n              }\n            });\n          }\n        });\n      }\n    }, {\n      key: \"_getPanelElement\",\n      value: function _getPanelElement(panelId) {\n        return this._element.nativeElement.querySelector('#' + panelId);\n      }\n    }]);\n\n    return NgbAccordion;\n  }();\n\n  NgbAccordion.ɵfac = function NgbAccordion_Factory(t) {\n    return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n  };\n\n  NgbAccordion.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbAccordion,\n    selectors: [[\"ngb-accordion\"]],\n    contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 4);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n      }\n    },\n    hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"],\n    hostVars: 1,\n    hostBindings: function NgbAccordion_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n      }\n    },\n    inputs: {\n      activeIds: \"activeIds\",\n      destroyOnHide: \"destroyOnHide\",\n      animation: \"animation\",\n      type: \"type\",\n      closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"]\n    },\n    outputs: {\n      panelChange: \"panelChange\",\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbAccordion\"],\n    decls: 3,\n    vars: 1,\n    consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", 3, \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"], [1, \"card-body\"]],\n    template: function NgbAccordion_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 11, \"ng-template\", 2);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n      }\n    },\n    directives: function directives() {\n      return [NgbPanelHeader, ɵngcc1.NgForOf, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf];\n    },\n    encapsulation: 2\n  });\n  return NgbAccordion;\n}();\n\nvar NgbPanelToggle = /*@__PURE__*/function () {\n  var NgbPanelToggle = /*#__PURE__*/function () {\n    function NgbPanelToggle(accordion, panel) {\n      _classCallCheck(this, NgbPanelToggle);\n\n      this.accordion = accordion;\n      this.panel = panel;\n    }\n\n    _createClass(NgbPanelToggle, [{\n      key: \"ngbPanelToggle\",\n      set: function set(panel) {\n        if (panel) {\n          this.panel = panel;\n        }\n      }\n    }]);\n\n    return NgbPanelToggle;\n  }();\n\n  NgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) {\n    return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(NgbAccordion), ɵngcc0.ɵɵdirectiveInject(NgbPanel, 9));\n  };\n\n  NgbPanelToggle.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPanelToggle,\n    selectors: [[\"button\", \"ngbPanelToggle\", \"\"]],\n    hostAttrs: [\"type\", \"button\"],\n    hostVars: 5,\n    hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() {\n          return ctx.accordion.toggle(ctx.panel.id);\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n        ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n        ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n      }\n    },\n    inputs: {\n      ngbPanelToggle: \"ngbPanelToggle\"\n    }\n  });\n  return NgbPanelToggle;\n}();\n\nvar NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\n\nvar NgbAccordionModule = /*@__PURE__*/function () {\n  var NgbAccordionModule = /*#__PURE__*/_createClass(function NgbAccordionModule() {\n    _classCallCheck(this, NgbAccordionModule);\n  });\n\n  NgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) {\n    return new (t || NgbAccordionModule)();\n  };\n\n  NgbAccordionModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbAccordionModule\n  });\n  NgbAccordionModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbAccordionModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, {\n    declarations: function declarations() {\n      return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\n    }\n  });\n})();\n\nvar NgbAlertConfig = /*@__PURE__*/function () {\n  var NgbAlertConfig = /*#__PURE__*/function () {\n    function NgbAlertConfig(_ngbConfig) {\n      _classCallCheck(this, NgbAlertConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.dismissible = true;\n      this.type = 'warning';\n    }\n\n    _createClass(NgbAlertConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbAlertConfig;\n  }();\n\n  NgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) {\n    return new (t || NgbAlertConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbAlertConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbAlertConfig_Factory() {\n      return new NgbAlertConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbAlertConfig,\n    providedIn: \"root\"\n  });\n  return NgbAlertConfig;\n}();\n\nvar ngbAlertFadingTransition = function ngbAlertFadingTransition(_ref2) {\n  var classList = _ref2.classList;\n  classList.remove('show');\n};\n\nvar NgbAlert = /*@__PURE__*/function () {\n  var NgbAlert = /*#__PURE__*/function () {\n    function NgbAlert(config, _renderer, _element, _zone) {\n      _classCallCheck(this, NgbAlert);\n\n      this._renderer = _renderer;\n      this._element = _element;\n      this._zone = _zone;\n      /**\n       * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n       *\n       * @since 8.0.0\n       */\n\n      this.closed = new EventEmitter();\n      this.dismissible = config.dismissible;\n      this.type = config.type;\n      this.animation = config.animation;\n    }\n    /**\n     * Triggers alert closing programmatically (same as clicking on the close button (×)).\n     *\n     * The returned observable will emit and be completed once the closing transition has finished.\n     * If the animations are turned off this happens synchronously.\n     *\n     * Alternatively you could listen or subscribe to the `(closed)` output\n     *\n     * @since 8.0.0\n     */\n\n\n    _createClass(NgbAlert, [{\n      key: \"close\",\n      value: function close() {\n        var _this5 = this;\n\n        var transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, {\n          animation: this.animation,\n          runningTransition: 'continue'\n        });\n        transition.subscribe(function () {\n          return _this5.closed.emit();\n        });\n        return transition;\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        var typeChange = changes['type'];\n\n        if (typeChange && !typeChange.firstChange) {\n          this._renderer.removeClass(this._element.nativeElement, \"alert-\".concat(typeChange.previousValue));\n\n          this._renderer.addClass(this._element.nativeElement, \"alert-\".concat(typeChange.currentValue));\n        }\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this._renderer.addClass(this._element.nativeElement, \"alert-\".concat(this.type));\n      }\n    }]);\n\n    return NgbAlert;\n  }();\n\n  NgbAlert.ɵfac = function NgbAlert_Factory(t) {\n    return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbAlert.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbAlert,\n    selectors: [[\"ngb-alert\"]],\n    hostAttrs: [\"role\", \"alert\", 1, \"alert\", \"show\"],\n    hostVars: 4,\n    hostBindings: function NgbAlert_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation)(\"alert-dismissible\", ctx.dismissible);\n      }\n    },\n    inputs: {\n      dismissible: \"dismissible\",\n      type: \"type\",\n      animation: \"animation\"\n    },\n    outputs: {\n      closed: \"closed\"\n    },\n    exportAs: [\"ngbAlert\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature],\n    ngContentSelectors: _c3,\n    decls: 2,\n    vars: 1,\n    consts: function consts() {\n      var i18n_1;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n        i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n      } else {\n        i18n_1 = $localize(_templateObject || (_templateObject = _taggedTemplateLiteral([\":@@ngb.alert.close\\u241Ff4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8\\u241F7819314041543176992:Close\"])));\n      }\n\n      return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]];\n    },\n    template: function NgbAlert_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵprojection(0);\n        ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n      }\n    },\n    directives: [ɵngcc1.NgIf],\n    styles: [\"ngb-alert{display:block}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbAlert;\n}();\n\nvar NgbAlertModule = /*@__PURE__*/function () {\n  var NgbAlertModule = /*#__PURE__*/_createClass(function NgbAlertModule() {\n    _classCallCheck(this, NgbAlertModule);\n  });\n\n  NgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) {\n    return new (t || NgbAlertModule)();\n  };\n\n  NgbAlertModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbAlertModule\n  });\n  NgbAlertModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbAlertModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, {\n    declarations: function declarations() {\n      return [NgbAlert];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbAlert];\n    }\n  });\n})();\n\nvar NgbButtonLabel = /*@__PURE__*/function () {\n  var NgbButtonLabel = /*#__PURE__*/_createClass(function NgbButtonLabel() {\n    _classCallCheck(this, NgbButtonLabel);\n  });\n\n  NgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) {\n    return new (t || NgbButtonLabel)();\n  };\n\n  NgbButtonLabel.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbButtonLabel,\n    selectors: [[\"\", \"ngbButtonLabel\", \"\"]],\n    hostVars: 8,\n    hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n      }\n    }\n  });\n  return NgbButtonLabel;\n}();\n\nvar NgbCheckBox = /*@__PURE__*/function () {\n  var NgbCheckBox = /*#__PURE__*/function () {\n    function NgbCheckBox(_label, _cd) {\n      _classCallCheck(this, NgbCheckBox);\n\n      this._label = _label;\n      this._cd = _cd;\n      /**\n       * If `true`, the checkbox button will be disabled\n       */\n\n      this.disabled = false;\n      /**\n       * The form control value when the checkbox is checked.\n       */\n\n      this.valueChecked = true;\n      /**\n       * The form control value when the checkbox is unchecked.\n       */\n\n      this.valueUnChecked = false;\n\n      this.onChange = function (_) {};\n\n      this.onTouched = function () {};\n    }\n\n    _createClass(NgbCheckBox, [{\n      key: \"focused\",\n      set: function set(isFocused) {\n        this._label.focused = isFocused;\n\n        if (!isFocused) {\n          this.onTouched();\n        }\n      }\n    }, {\n      key: \"onInputChange\",\n      value: function onInputChange($event) {\n        var modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n        this.onChange(modelToPropagate);\n        this.onTouched();\n        this.writeValue(modelToPropagate);\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this.onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this.onTouched = fn;\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this.disabled = isDisabled;\n        this._label.disabled = isDisabled;\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this.checked = value === this.valueChecked;\n        this._label.active = this.checked; // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n\n        this._cd.markForCheck();\n      }\n    }]);\n\n    return NgbCheckBox;\n  }();\n\n  NgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) {\n    return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n  };\n\n  NgbCheckBox.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbCheckBox,\n    selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]],\n    hostVars: 2,\n    hostBindings: function NgbCheckBox_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) {\n          return ctx.onInputChange($event);\n        })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() {\n          return ctx.focused = true;\n        })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() {\n          return ctx.focused = false;\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n      }\n    },\n    inputs: {\n      disabled: \"disabled\",\n      valueChecked: \"valueChecked\",\n      valueUnChecked: \"valueUnChecked\"\n    },\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbCheckBox;\n      }),\n      multi: true\n    }])]\n  });\n  return NgbCheckBox;\n}();\n\nvar nextId$3 = 0;\n\nvar NgbRadioGroup = /*@__PURE__*/function () {\n  var NgbRadioGroup = /*#__PURE__*/function () {\n    function NgbRadioGroup() {\n      _classCallCheck(this, NgbRadioGroup);\n\n      this._radios = new Set();\n      this._value = null;\n      /**\n       * Name of the radio group applied to radio input elements.\n       *\n       * Will be applied to all radio input elements inside the group,\n       * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n       *\n       * If not provided, will be generated in the `ngb-radio-xx` format.\n       */\n\n      this.name = \"ngb-radio-\".concat(nextId$3++);\n\n      this.onChange = function (_) {};\n\n      this.onTouched = function () {};\n    }\n\n    _createClass(NgbRadioGroup, [{\n      key: \"disabled\",\n      get: function get() {\n        return this._disabled;\n      },\n      set: function set(isDisabled) {\n        this.setDisabledState(isDisabled);\n      }\n    }, {\n      key: \"onRadioChange\",\n      value: function onRadioChange(radio) {\n        this.writeValue(radio.value);\n        this.onChange(radio.value);\n      }\n    }, {\n      key: \"onRadioValueUpdate\",\n      value: function onRadioValueUpdate() {\n        this._updateRadiosValue();\n      }\n    }, {\n      key: \"register\",\n      value: function register(radio) {\n        this._radios.add(radio);\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this.onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this.onTouched = fn;\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this._disabled = isDisabled;\n\n        this._updateRadiosDisabled();\n      }\n    }, {\n      key: \"unregister\",\n      value: function unregister(radio) {\n        this._radios.delete(radio);\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this._value = value;\n\n        this._updateRadiosValue();\n      }\n    }, {\n      key: \"_updateRadiosValue\",\n      value: function _updateRadiosValue() {\n        var _this6 = this;\n\n        this._radios.forEach(function (radio) {\n          return radio.updateValue(_this6._value);\n        });\n      }\n    }, {\n      key: \"_updateRadiosDisabled\",\n      value: function _updateRadiosDisabled() {\n        this._radios.forEach(function (radio) {\n          return radio.updateDisabled();\n        });\n      }\n    }]);\n\n    return NgbRadioGroup;\n  }();\n\n  NgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) {\n    return new (t || NgbRadioGroup)();\n  };\n\n  NgbRadioGroup.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbRadioGroup,\n    selectors: [[\"\", \"ngbRadioGroup\", \"\"]],\n    hostAttrs: [\"role\", \"radiogroup\"],\n    inputs: {\n      name: \"name\"\n    },\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbRadioGroup;\n      }),\n      multi: true\n    }])]\n  });\n  return NgbRadioGroup;\n}();\n\nvar NgbRadio = /*@__PURE__*/function () {\n  var NgbRadio = /*#__PURE__*/function () {\n    function NgbRadio(_group, _label, _renderer, _element, _cd) {\n      _classCallCheck(this, NgbRadio);\n\n      this._group = _group;\n      this._label = _label;\n      this._renderer = _renderer;\n      this._element = _element;\n      this._cd = _cd;\n      this._value = null;\n\n      this._group.register(this);\n\n      this.updateDisabled();\n    }\n    /**\n     * The form control value when current radio button is checked.\n     */\n\n\n    _createClass(NgbRadio, [{\n      key: \"value\",\n      get: function get() {\n        return this._value;\n      },\n      set: function set(value) {\n        this._value = value;\n        var stringValue = value ? value.toString() : '';\n\n        this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n\n        this._group.onRadioValueUpdate();\n      }\n      /**\n       * If `true`, current radio button will be disabled.\n       */\n\n    }, {\n      key: \"disabled\",\n      get: function get() {\n        return this._group.disabled || this._disabled;\n      },\n      set: function set(isDisabled) {\n        this._disabled = isDisabled !== false;\n        this.updateDisabled();\n      }\n    }, {\n      key: \"focused\",\n      set: function set(isFocused) {\n        if (this._label) {\n          this._label.focused = isFocused;\n        }\n\n        if (!isFocused) {\n          this._group.onTouched();\n        }\n      }\n    }, {\n      key: \"checked\",\n      get: function get() {\n        return this._checked;\n      }\n    }, {\n      key: \"nameAttr\",\n      get: function get() {\n        return this.name || this._group.name;\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._group.unregister(this);\n      }\n    }, {\n      key: \"onChange\",\n      value: function onChange() {\n        this._group.onRadioChange(this);\n      }\n    }, {\n      key: \"updateValue\",\n      value: function updateValue(value) {\n        // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n        if (this.value !== value) {\n          this._cd.markForCheck();\n        }\n\n        this._checked = this.value === value;\n        this._label.active = this._checked;\n      }\n    }, {\n      key: \"updateDisabled\",\n      value: function updateDisabled() {\n        this._label.disabled = this.disabled;\n      }\n    }]);\n\n    return NgbRadio;\n  }();\n\n  NgbRadio.ɵfac = function NgbRadio_Factory(t) {\n    return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n  };\n\n  NgbRadio.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbRadio,\n    selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]],\n    hostVars: 3,\n    hostBindings: function NgbRadio_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() {\n          return ctx.onChange();\n        })(\"focus\", function NgbRadio_focus_HostBindingHandler() {\n          return ctx.focused = true;\n        })(\"blur\", function NgbRadio_blur_HostBindingHandler() {\n          return ctx.focused = false;\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n      }\n    },\n    inputs: {\n      value: \"value\",\n      disabled: \"disabled\",\n      name: \"name\"\n    }\n  });\n  return NgbRadio;\n}();\n\nvar NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\n\nvar NgbButtonsModule = /*@__PURE__*/function () {\n  var NgbButtonsModule = /*#__PURE__*/_createClass(function NgbButtonsModule() {\n    _classCallCheck(this, NgbButtonsModule);\n  });\n\n  NgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) {\n    return new (t || NgbButtonsModule)();\n  };\n\n  NgbButtonsModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbButtonsModule\n  });\n  NgbButtonsModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({});\n  return NgbButtonsModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, {\n    declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio],\n    exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio]\n  });\n})();\n\nvar NgbCarouselConfig = /*@__PURE__*/function () {\n  var NgbCarouselConfig = /*#__PURE__*/function () {\n    function NgbCarouselConfig(_ngbConfig) {\n      _classCallCheck(this, NgbCarouselConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.interval = 5000;\n      this.wrap = true;\n      this.keyboard = true;\n      this.pauseOnHover = true;\n      this.pauseOnFocus = true;\n      this.showNavigationArrows = true;\n      this.showNavigationIndicators = true;\n    }\n\n    _createClass(NgbCarouselConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbCarouselConfig;\n  }();\n\n  NgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) {\n    return new (t || NgbCarouselConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbCarouselConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbCarouselConfig_Factory() {\n      return new NgbCarouselConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbCarouselConfig,\n    providedIn: \"root\"\n  });\n  return NgbCarouselConfig;\n}();\n/**\n * Defines the carousel slide transition direction.\n */\n\n\nvar NgbSlideEventDirection = /*@__PURE__*/function (NgbSlideEventDirection) {\n  NgbSlideEventDirection[\"LEFT\"] = \"left\";\n  NgbSlideEventDirection[\"RIGHT\"] = \"right\";\n  return NgbSlideEventDirection;\n}({});\n\nvar isBeingAnimated = function isBeingAnimated(_ref3) {\n  var classList = _ref3.classList;\n  return classList.contains('carousel-item-left') || classList.contains('carousel-item-right');\n};\n\nvar ɵ0$4 = isBeingAnimated;\n\nvar removeDirectionClasses = function removeDirectionClasses(classList) {\n  classList.remove('carousel-item-left');\n  classList.remove('carousel-item-right');\n};\n\nvar ɵ1$1 = removeDirectionClasses;\n\nvar removeClasses = function removeClasses(classList) {\n  removeDirectionClasses(classList);\n  classList.remove('carousel-item-prev');\n  classList.remove('carousel-item-next');\n};\n\nvar ɵ2$1 = removeClasses;\n\nvar ngbCarouselTransitionIn = function ngbCarouselTransitionIn(element, animation, _ref4) {\n  var direction = _ref4.direction;\n  var classList = element.classList;\n\n  if (!animation) {\n    removeDirectionClasses(classList);\n    removeClasses(classList);\n    classList.add('active');\n    return;\n  }\n\n  if (isBeingAnimated(element)) {\n    // Revert the transition\n    removeDirectionClasses(classList);\n  } else {\n    // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n    classList.add('carousel-item-' + (direction === NgbSlideEventDirection.LEFT ? 'next' : 'prev'));\n    reflow(element);\n    classList.add('carousel-item-' + direction);\n  }\n\n  return function () {\n    removeClasses(classList);\n    classList.add('active');\n  };\n};\n\nvar ngbCarouselTransitionOut = function ngbCarouselTransitionOut(element, animation, _ref5) {\n  var direction = _ref5.direction;\n  var classList = element.classList;\n\n  if (!animation) {\n    removeDirectionClasses(classList);\n    removeClasses(classList);\n    classList.remove('active');\n    return;\n  } //  direction is left or right, depending on the way the slide goes out.\n\n\n  if (isBeingAnimated(element)) {\n    // Revert the transition\n    removeDirectionClasses(classList);\n  } else {\n    classList.add('carousel-item-' + direction);\n  }\n\n  return function () {\n    removeClasses(classList);\n    classList.remove('active');\n  };\n};\n\nvar nextId$2 = 0;\n\nvar NgbSlide = /*@__PURE__*/function () {\n  var NgbSlide = /*#__PURE__*/_createClass(function NgbSlide(tplRef) {\n    _classCallCheck(this, NgbSlide);\n\n    this.tplRef = tplRef;\n    /**\n     * Slide id that must be unique for the entire document.\n     *\n     * If not provided, will be generated in the `ngb-slide-xx` format.\n     */\n\n    this.id = \"ngb-slide-\".concat(nextId$2++);\n    /**\n     * An event emitted when the slide transition is finished\n     *\n     * @since 8.0.0\n     */\n\n    this.slid = new EventEmitter();\n  });\n\n  NgbSlide.ɵfac = function NgbSlide_Factory(t) {\n    return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbSlide.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbSlide,\n    selectors: [[\"ng-template\", \"ngbSlide\", \"\"]],\n    inputs: {\n      id: \"id\"\n    },\n    outputs: {\n      slid: \"slid\"\n    }\n  });\n  return NgbSlide;\n}();\n\nvar NgbCarousel = /*@__PURE__*/function () {\n  var NgbCarousel = /*#__PURE__*/function () {\n    function NgbCarousel(config, _platformId, _ngZone, _cd, _container) {\n      _classCallCheck(this, NgbCarousel);\n\n      this._platformId = _platformId;\n      this._ngZone = _ngZone;\n      this._cd = _cd;\n      this._container = _container;\n      this.NgbSlideEventSource = NgbSlideEventSource;\n      this._destroy$ = new Subject();\n      this._interval$ = new BehaviorSubject(0);\n      this._mouseHover$ = new BehaviorSubject(false);\n      this._focused$ = new BehaviorSubject(false);\n      this._pauseOnHover$ = new BehaviorSubject(false);\n      this._pauseOnFocus$ = new BehaviorSubject(false);\n      this._pause$ = new BehaviorSubject(false);\n      this._wrap$ = new BehaviorSubject(false);\n      /**\n       * An event emitted just before the slide transition starts.\n       *\n       * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n       */\n\n      this.slide = new EventEmitter();\n      /**\n       * An event emitted right after the slide transition is completed.\n       *\n       * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n       *\n       * @since 8.0.0\n       */\n\n      this.slid = new EventEmitter();\n      /*\n       * Keep the ids of the panels currently transitionning\n       * in order to allow only the transition revertion\n       */\n\n      this._transitionIds = null;\n      this.animation = config.animation;\n      this.interval = config.interval;\n      this.wrap = config.wrap;\n      this.keyboard = config.keyboard;\n      this.pauseOnHover = config.pauseOnHover;\n      this.pauseOnFocus = config.pauseOnFocus;\n      this.showNavigationArrows = config.showNavigationArrows;\n      this.showNavigationIndicators = config.showNavigationIndicators;\n    }\n    /**\n     * Time in milliseconds before the next slide is shown.\n     */\n\n\n    _createClass(NgbCarousel, [{\n      key: \"interval\",\n      get: function get() {\n        return this._interval$.value;\n      }\n      /**\n       * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n       */\n      ,\n      set: function set(value) {\n        this._interval$.next(value);\n      }\n    }, {\n      key: \"wrap\",\n      get: function get() {\n        return this._wrap$.value;\n      }\n      /**\n       * If `true`, will pause slide switching when mouse cursor hovers the slide.\n       *\n       * @since 2.2.0\n       */\n      ,\n      set: function set(value) {\n        this._wrap$.next(value);\n      }\n    }, {\n      key: \"pauseOnHover\",\n      get: function get() {\n        return this._pauseOnHover$.value;\n      }\n      /**\n       * If `true`, will pause slide switching when the focus is inside the carousel.\n       */\n      ,\n      set: function set(value) {\n        this._pauseOnHover$.next(value);\n      }\n    }, {\n      key: \"pauseOnFocus\",\n      get: function get() {\n        return this._pauseOnFocus$.value;\n      },\n      set: function set(value) {\n        this._pauseOnFocus$.next(value);\n      }\n    }, {\n      key: \"mouseHover\",\n      get: function get() {\n        return this._mouseHover$.value;\n      },\n      set: function set(value) {\n        this._mouseHover$.next(value);\n      }\n    }, {\n      key: \"focused\",\n      get: function get() {\n        return this._focused$.value;\n      },\n      set: function set(value) {\n        this._focused$.next(value);\n      }\n    }, {\n      key: \"arrowLeft\",\n      value: function arrowLeft() {\n        this.focus();\n        this.prev(NgbSlideEventSource.ARROW_LEFT);\n      }\n    }, {\n      key: \"arrowRight\",\n      value: function arrowRight() {\n        this.focus();\n        this.next(NgbSlideEventSource.ARROW_RIGHT);\n      }\n    }, {\n      key: \"ngAfterContentInit\",\n      value: function ngAfterContentInit() {\n        var _this7 = this;\n\n        // setInterval() doesn't play well with SSR and protractor,\n        // so we should run it in the browser and outside Angular\n        if (isPlatformBrowser(this._platformId)) {\n          this._ngZone.runOutsideAngular(function () {\n            var hasNextSlide$ = combineLatest([_this7.slide.pipe(map(function (slideEvent) {\n              return slideEvent.current;\n            }), startWith(_this7.activeId)), _this7._wrap$, _this7.slides.changes.pipe(startWith(null))]).pipe(map(function (_ref6) {\n              var _ref7 = _slicedToArray(_ref6, 2),\n                  currentSlideId = _ref7[0],\n                  wrap = _ref7[1];\n\n              var slideArr = _this7.slides.toArray();\n\n              var currentSlideIdx = _this7._getSlideIdxById(currentSlideId);\n\n              return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n            }), distinctUntilChanged());\n            combineLatest([_this7._pause$, _this7._pauseOnHover$, _this7._mouseHover$, _this7._pauseOnFocus$, _this7._focused$, _this7._interval$, hasNextSlide$]).pipe(map(function (_ref8) {\n              var _ref9 = _slicedToArray(_ref8, 7),\n                  pause = _ref9[0],\n                  pauseOnHover = _ref9[1],\n                  mouseHover = _ref9[2],\n                  pauseOnFocus = _ref9[3],\n                  focused = _ref9[4],\n                  interval = _ref9[5],\n                  hasNextSlide = _ref9[6];\n\n              return pause || pauseOnHover && mouseHover || pauseOnFocus && focused || !hasNextSlide ? 0 : interval;\n            }), distinctUntilChanged(), switchMap(function (interval) {\n              return interval > 0 ? timer(interval, interval) : NEVER;\n            }), takeUntil(_this7._destroy$)).subscribe(function () {\n              return _this7._ngZone.run(function () {\n                return _this7.next(NgbSlideEventSource.TIMER);\n              });\n            });\n          });\n        }\n\n        this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(function () {\n          var _a;\n\n          (_a = _this7._transitionIds) === null || _a === void 0 ? void 0 : _a.forEach(function (id) {\n            return ngbCompleteTransition(_this7._getSlideElement(id));\n          });\n          _this7._transitionIds = null;\n\n          _this7._cd.markForCheck(); // The following code need to be done asynchronously, after the dom becomes stable,\n          // otherwise all changes will be undone.\n\n\n          _this7._ngZone.onStable.pipe(take(1)).subscribe(function () {\n            var _iterator = _createForOfIteratorHelper(_this7.slides),\n                _step;\n\n            try {\n              for (_iterator.s(); !(_step = _iterator.n()).done;) {\n                var id = _step.value.id;\n\n                var element = _this7._getSlideElement(id);\n\n                if (id === _this7.activeId) {\n                  element.classList.add('active');\n                } else {\n                  element.classList.remove('active');\n                }\n              }\n            } catch (err) {\n              _iterator.e(err);\n            } finally {\n              _iterator.f();\n            }\n          });\n        });\n      }\n    }, {\n      key: \"ngAfterContentChecked\",\n      value: function ngAfterContentChecked() {\n        var activeSlide = this._getSlideById(this.activeId);\n\n        this.activeId = activeSlide ? activeSlide.id : this.slides.length ? this.slides.first.id : '';\n      }\n    }, {\n      key: \"ngAfterViewInit\",\n      value: function ngAfterViewInit() {\n        // Initialize the 'active' class (not managed by the template)\n        if (this.activeId) {\n          var element = this._getSlideElement(this.activeId);\n\n          if (element) {\n            element.classList.add('active');\n          }\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._destroy$.next();\n      }\n      /**\n       * Navigates to a slide with the specified identifier.\n       */\n\n    }, {\n      key: \"select\",\n      value: function select(slideId, source) {\n        this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n      }\n      /**\n       * Navigates to the previous slide.\n       */\n\n    }, {\n      key: \"prev\",\n      value: function prev(source) {\n        this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\n      }\n      /**\n       * Navigates to the next slide.\n       */\n\n    }, {\n      key: \"next\",\n      value: function next(source) {\n        this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\n      }\n      /**\n       * Pauses cycling through the slides.\n       */\n\n    }, {\n      key: \"pause\",\n      value: function pause() {\n        this._pause$.next(true);\n      }\n      /**\n       * Restarts cycling through the slides from left to right.\n       */\n\n    }, {\n      key: \"cycle\",\n      value: function cycle() {\n        this._pause$.next(false);\n      }\n      /**\n       * Set the focus on the carousel.\n       */\n\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        this._container.nativeElement.focus();\n      }\n    }, {\n      key: \"_cycleToSelected\",\n      value: function _cycleToSelected(slideIdx, direction, source) {\n        var _this8 = this;\n\n        var transitionIds = this._transitionIds;\n\n        if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n          // Revert prevented\n          return;\n        }\n\n        var selectedSlide = this._getSlideById(slideIdx);\n\n        if (selectedSlide && selectedSlide.id !== this.activeId) {\n          this._transitionIds = [this.activeId, slideIdx];\n          this.slide.emit({\n            prev: this.activeId,\n            current: selectedSlide.id,\n            direction: direction,\n            paused: this._pause$.value,\n            source: source\n          });\n          var options = {\n            animation: this.animation,\n            runningTransition: 'stop',\n            context: {\n              direction: direction\n            }\n          };\n          var transitions = [];\n\n          var activeSlide = this._getSlideById(this.activeId);\n\n          if (activeSlide) {\n            var activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\n            activeSlideTransition.subscribe(function () {\n              activeSlide.slid.emit({\n                isShown: false,\n                direction: direction,\n                source: source\n              });\n            });\n            transitions.push(activeSlideTransition);\n          }\n\n          var previousId = this.activeId;\n          this.activeId = selectedSlide.id;\n\n          var nextSlide = this._getSlideById(this.activeId);\n\n          var transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\n          transition.subscribe(function () {\n            nextSlide === null || nextSlide === void 0 ? void 0 : nextSlide.slid.emit({\n              isShown: true,\n              direction: direction,\n              source: source\n            });\n          });\n          transitions.push(transition);\n          zip.apply(void 0, transitions).pipe(take(1)).subscribe(function () {\n            _this8._transitionIds = null;\n\n            _this8.slid.emit({\n              prev: previousId,\n              current: selectedSlide.id,\n              direction: direction,\n              paused: _this8._pause$.value,\n              source: source\n            });\n          });\n        } // we get here after the interval fires or any external API call like next(), prev() or select()\n\n\n        this._cd.markForCheck();\n      }\n    }, {\n      key: \"_getSlideEventDirection\",\n      value: function _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n        var currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n\n        var nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n\n        return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n      }\n    }, {\n      key: \"_getSlideById\",\n      value: function _getSlideById(slideId) {\n        return this.slides.find(function (slide) {\n          return slide.id === slideId;\n        }) || null;\n      }\n    }, {\n      key: \"_getSlideIdxById\",\n      value: function _getSlideIdxById(slideId) {\n        var slide = this._getSlideById(slideId);\n\n        return slide != null ? this.slides.toArray().indexOf(slide) : -1;\n      }\n    }, {\n      key: \"_getNextSlide\",\n      value: function _getNextSlide(currentSlideId) {\n        var slideArr = this.slides.toArray();\n\n        var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\n        var isLastSlide = currentSlideIdx === slideArr.length - 1;\n        return isLastSlide ? this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id : slideArr[currentSlideIdx + 1].id;\n      }\n    }, {\n      key: \"_getPrevSlide\",\n      value: function _getPrevSlide(currentSlideId) {\n        var slideArr = this.slides.toArray();\n\n        var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\n        var isFirstSlide = currentSlideIdx === 0;\n        return isFirstSlide ? this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id : slideArr[currentSlideIdx - 1].id;\n      }\n    }, {\n      key: \"_getSlideElement\",\n      value: function _getSlideElement(slideId) {\n        return this._container.nativeElement.querySelector(\"#slide-\".concat(slideId));\n      }\n    }]);\n\n    return NgbCarousel;\n  }();\n\n  NgbCarousel.ɵfac = function NgbCarousel_Factory(t) {\n    return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbCarousel.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbCarousel,\n    selectors: [[\"ngb-carousel\"]],\n    contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n      }\n    },\n    hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"],\n    hostVars: 3,\n    hostBindings: function NgbCarousel_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() {\n          return ctx.keyboard && ctx.arrowLeft();\n        })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() {\n          return ctx.keyboard && ctx.arrowRight();\n        })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() {\n          return ctx.mouseHover = true;\n        })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() {\n          return ctx.mouseHover = false;\n        })(\"focusin\", function NgbCarousel_focusin_HostBindingHandler() {\n          return ctx.focused = true;\n        })(\"focusout\", function NgbCarousel_focusout_HostBindingHandler() {\n          return ctx.focused = false;\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-activedescendant\", \"slide-\" + ctx.activeId);\n        ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n      }\n    },\n    inputs: {\n      animation: \"animation\",\n      interval: \"interval\",\n      wrap: \"wrap\",\n      keyboard: \"keyboard\",\n      pauseOnHover: \"pauseOnHover\",\n      pauseOnFocus: \"pauseOnFocus\",\n      showNavigationArrows: \"showNavigationArrows\",\n      showNavigationIndicators: \"showNavigationIndicators\",\n      activeId: \"activeId\"\n    },\n    outputs: {\n      slide: \"slide\",\n      slid: \"slid\"\n    },\n    exportAs: [\"ngbCarousel\"],\n    decls: 6,\n    vars: 6,\n    consts: function consts() {\n      var i18n_4;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        /**\n         * @desc Currently selected slide number read by screen reader\n         */\n        var MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\" Slide {$interpolation} of {$interpolation_1} \", {\n          \"interpolation\": \"\\uFFFD0\\uFFFD\",\n          \"interpolation_1\": \"\\uFFFD1\\uFFFD\"\n        });\n        i18n_4 = MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5;\n      } else {\n        i18n_4 = $localize(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\":Currently selected slide number read by screen reader@@ngb.carousel.slide-number\\u241Fa65b1b49aa7dd8c4f3004da6a8c2241814dae621\\u241F783273603869937627: Slide \", \":INTERPOLATION: of \", \":INTERPOLATION_1: \"])), \"\\uFFFD0\\uFFFD\", \"\\uFFFD1\\uFFFD\");\n      }\n\n      var i18n_6;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Previous\");\n        i18n_6 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7;\n      } else {\n        i18n_6 = $localize(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\":@@ngb.carousel.previous\\u241F680d5c75b7fd8d37961083608b9fcdc4167b4c43\\u241F4452427314943113135:Previous\"])));\n      }\n\n      var i18n_8;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9 = goog.getMsg(\"Next\");\n        i18n_8 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9;\n      } else {\n        i18n_8 = $localize(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\":@@ngb.carousel.next\\u241Ff732c304c7433e5a83ffcd862c3dce709a0f4982\\u241F3885497195825665706:Next\"])));\n      }\n\n      return [[\"role\", \"tablist\", 1, \"carousel-indicators\"], [\"role\", \"tab\", 3, \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", \"role\", \"tabpanel\", 3, \"id\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"role\", \"tab\", 3, \"click\"], [\"role\", \"tabpanel\", 1, \"carousel-item\", 3, \"id\"], [1, \"sr-only\"], i18n_4, [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], i18n_6, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_8];\n    },\n    template: function NgbCarousel_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ol\", 0);\n        ɵngcc0.ɵɵtemplate(1, NgbCarousel_li_1_Template, 1, 5, \"li\", 1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n        ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_Template, 4, 4, \"div\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n        ɵngcc0.ɵɵtemplate(5, NgbCarousel_a_5_Template, 4, 0, \"a\", 5);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"sr-only\", !ctx.showNavigationIndicators);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbCarousel;\n}();\n\nvar NgbSlideEventSource = /*@__PURE__*/function (NgbSlideEventSource) {\n  NgbSlideEventSource[\"TIMER\"] = \"timer\";\n  NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n  NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n  NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n  return NgbSlideEventSource;\n}({});\n\nvar NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nvar NgbCarouselModule = /*@__PURE__*/function () {\n  var NgbCarouselModule = /*#__PURE__*/_createClass(function NgbCarouselModule() {\n    _classCallCheck(this, NgbCarouselModule);\n  });\n\n  NgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) {\n    return new (t || NgbCarouselModule)();\n  };\n\n  NgbCarouselModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbCarouselModule\n  });\n  NgbCarouselModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbCarouselModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, {\n    declarations: function declarations() {\n      return [NgbCarousel, NgbSlide];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbCarousel, NgbSlide];\n    }\n  });\n})();\n\nvar NgbCollapseConfig = /*@__PURE__*/function () {\n  var NgbCollapseConfig = /*#__PURE__*/function () {\n    function NgbCollapseConfig(_ngbConfig) {\n      _classCallCheck(this, NgbCollapseConfig);\n\n      this._ngbConfig = _ngbConfig;\n    }\n\n    _createClass(NgbCollapseConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbCollapseConfig;\n  }();\n\n  NgbCollapseConfig.ɵfac = function NgbCollapseConfig_Factory(t) {\n    return new (t || NgbCollapseConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbCollapseConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbCollapseConfig_Factory() {\n      return new NgbCollapseConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbCollapseConfig,\n    providedIn: \"root\"\n  });\n  return NgbCollapseConfig;\n}();\n\nvar NgbCollapse = /*@__PURE__*/function () {\n  var NgbCollapse = /*#__PURE__*/function () {\n    function NgbCollapse(_element, config, _zone) {\n      _classCallCheck(this, NgbCollapse);\n\n      this._element = _element;\n      this._zone = _zone;\n      /**\n       * If `true`, will collapse the element or show it otherwise.\n       */\n\n      this.collapsed = false;\n      this.ngbCollapseChange = new EventEmitter();\n      /**\n       * An event emitted when the collapse element is shown, after the transition. It has no payload.\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the collapse element is hidden, after the transition. It has no payload.\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter();\n      this.animation = config.animation;\n    }\n\n    _createClass(NgbCollapse, [{\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this._runTransition(this.collapsed, false);\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(_ref10) {\n        var collapsed = _ref10.collapsed;\n\n        if (!collapsed.firstChange) {\n          this._runTransitionWithEvents(this.collapsed, this.animation);\n        }\n      }\n      /**\n       * Triggers collapsing programmatically.\n       *\n       * If there is a collapsing transition running already, it will be reversed.\n       * If the animations are turned off this happens synchronously.\n       *\n       * @since 8.0.0\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        var open = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.collapsed;\n        this.collapsed = !open;\n        this.ngbCollapseChange.next(this.collapsed);\n\n        this._runTransitionWithEvents(this.collapsed, this.animation);\n      }\n    }, {\n      key: \"_runTransition\",\n      value: function _runTransition(collapsed, animation) {\n        return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, {\n          animation: animation,\n          runningTransition: 'stop',\n          context: {\n            direction: collapsed ? 'hide' : 'show'\n          }\n        });\n      }\n    }, {\n      key: \"_runTransitionWithEvents\",\n      value: function _runTransitionWithEvents(collapsed, animation) {\n        var _this9 = this;\n\n        this._runTransition(collapsed, animation).subscribe(function () {\n          if (collapsed) {\n            _this9.hidden.emit();\n          } else {\n            _this9.shown.emit();\n          }\n        });\n      }\n    }]);\n\n    return NgbCollapse;\n  }();\n\n  NgbCollapse.ɵfac = function NgbCollapse_Factory(t) {\n    return new (t || NgbCollapse)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbCollapseConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbCollapse.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbCollapse,\n    selectors: [[\"\", \"ngbCollapse\", \"\"]],\n    inputs: {\n      collapsed: [\"ngbCollapse\", \"collapsed\"],\n      animation: \"animation\"\n    },\n    outputs: {\n      ngbCollapseChange: \"ngbCollapseChange\",\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbCollapse\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbCollapse;\n}();\n\nvar NgbCollapseModule = /*@__PURE__*/function () {\n  var NgbCollapseModule = /*#__PURE__*/_createClass(function NgbCollapseModule() {\n    _classCallCheck(this, NgbCollapseModule);\n  });\n\n  NgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) {\n    return new (t || NgbCollapseModule)();\n  };\n\n  NgbCollapseModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbCollapseModule\n  });\n  NgbCollapseModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({});\n  return NgbCollapseModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, {\n    declarations: [NgbCollapse],\n    exports: [NgbCollapse]\n  });\n})();\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\n\n\nvar NgbDate = /*#__PURE__*/function () {\n  function NgbDate(year, month, day) {\n    _classCallCheck(this, NgbDate);\n\n    this.year = isInteger(year) ? year : null;\n    this.month = isInteger(month) ? month : null;\n    this.day = isInteger(day) ? day : null;\n  }\n  /**\n   * A **static method** that creates a new date object from the `NgbDateStruct`,\n   *\n   * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n   *\n   * If the `date` is already of `NgbDate` type, the method will return the same object.\n   */\n\n\n  _createClass(NgbDate, [{\n    key: \"equals\",\n    value:\n    /**\n     * Checks if the current date is equal to another date.\n     */\n    function equals(other) {\n      return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n    }\n    /**\n     * Checks if the current date is before another date.\n     */\n\n  }, {\n    key: \"before\",\n    value: function before(other) {\n      if (!other) {\n        return false;\n      }\n\n      if (this.year === other.year) {\n        if (this.month === other.month) {\n          return this.day === other.day ? false : this.day < other.day;\n        } else {\n          return this.month < other.month;\n        }\n      } else {\n        return this.year < other.year;\n      }\n    }\n    /**\n     * Checks if the current date is after another date.\n     */\n\n  }, {\n    key: \"after\",\n    value: function after(other) {\n      if (!other) {\n        return false;\n      }\n\n      if (this.year === other.year) {\n        if (this.month === other.month) {\n          return this.day === other.day ? false : this.day > other.day;\n        } else {\n          return this.month > other.month;\n        }\n      } else {\n        return this.year > other.year;\n      }\n    }\n  }], [{\n    key: \"from\",\n    value: function from(date) {\n      if (date instanceof NgbDate) {\n        return date;\n      }\n\n      return date ? new NgbDate(date.year, date.month, date.day) : null;\n    }\n  }]);\n\n  return NgbDate;\n}();\n\nfunction fromJSDate(jsDate) {\n  return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\n\nfunction toJSDate(date) {\n  var jsDate = new Date(date.year, date.month - 1, date.day, 12); // this is done avoid 30 -> 1930 conversion\n\n  if (!isNaN(jsDate.getTime())) {\n    jsDate.setFullYear(date.year);\n  }\n\n  return jsDate;\n}\n\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n  return new NgbCalendarGregorian();\n}\n\nvar NgbCalendar = /*@__PURE__*/function () {\n  var NgbCalendar = /*#__PURE__*/_createClass(function NgbCalendar() {\n    _classCallCheck(this, NgbCalendar);\n  });\n\n  NgbCalendar.ɵfac = function NgbCalendar_Factory(t) {\n    return new (t || NgbCalendar)();\n  };\n\n  NgbCalendar.ɵprov = i0.ɵɵdefineInjectable({\n    factory: NGB_DATEPICKER_CALENDAR_FACTORY,\n    token: NgbCalendar,\n    providedIn: \"root\"\n  });\n  return NgbCalendar;\n}();\n\nvar NgbCalendarGregorian = /*@__PURE__*/function () {\n  var NgbCalendarGregorian = /*#__PURE__*/function (_NgbCalendar) {\n    _inherits(NgbCalendarGregorian, _NgbCalendar);\n\n    var _super = _createSuper(NgbCalendarGregorian);\n\n    function NgbCalendarGregorian() {\n      _classCallCheck(this, NgbCalendarGregorian);\n\n      return _super.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarGregorian, [{\n      key: \"getDaysPerWeek\",\n      value: function getDaysPerWeek() {\n        return 7;\n      }\n    }, {\n      key: \"getMonths\",\n      value: function getMonths() {\n        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n      }\n    }, {\n      key: \"getWeeksPerMonth\",\n      value: function getWeeksPerMonth() {\n        return 6;\n      }\n    }, {\n      key: \"getNext\",\n      value: function getNext(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        var jsDate = toJSDate(date);\n        var checkMonth = true;\n        var expectedMonth = jsDate.getMonth();\n\n        switch (period) {\n          case 'y':\n            jsDate.setFullYear(jsDate.getFullYear() + number);\n            break;\n\n          case 'm':\n            expectedMonth += number;\n            jsDate.setMonth(expectedMonth);\n            expectedMonth = expectedMonth % 12;\n\n            if (expectedMonth < 0) {\n              expectedMonth = expectedMonth + 12;\n            }\n\n            break;\n\n          case 'd':\n            jsDate.setDate(jsDate.getDate() + number);\n            checkMonth = false;\n            break;\n\n          default:\n            return date;\n        }\n\n        if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n          // this means the destination month has less days than the initial month\n          // let's go back to the end of the previous month:\n          jsDate.setDate(0);\n        }\n\n        return fromJSDate(jsDate);\n      }\n    }, {\n      key: \"getPrev\",\n      value: function getPrev(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        return this.getNext(date, period, -number);\n      }\n    }, {\n      key: \"getWeekday\",\n      value: function getWeekday(date) {\n        var jsDate = toJSDate(date);\n        var day = jsDate.getDay(); // in JS Date Sun=0, in ISO 8601 Sun=7\n\n        return day === 0 ? 7 : day;\n      }\n    }, {\n      key: \"getWeekNumber\",\n      value: function getWeekNumber(week, firstDayOfWeek) {\n        // in JS Date Sun=0, in ISO 8601 Sun=7\n        if (firstDayOfWeek === 7) {\n          firstDayOfWeek = 0;\n        }\n\n        var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n        var date = week[thursdayIndex];\n        var jsDate = toJSDate(date);\n        jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\n        var time = jsDate.getTime();\n        jsDate.setMonth(0); // Compare with Jan 1\n\n        jsDate.setDate(1);\n        return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n      }\n    }, {\n      key: \"getToday\",\n      value: function getToday() {\n        return fromJSDate(new Date());\n      }\n    }, {\n      key: \"isValid\",\n      value: function isValid(date) {\n        if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n          return false;\n        } // year 0 doesn't exist in Gregorian calendar\n\n\n        if (date.year === 0) {\n          return false;\n        }\n\n        var jsDate = toJSDate(date);\n        return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n      }\n    }]);\n\n    return NgbCalendarGregorian;\n  }(NgbCalendar);\n\n  NgbCalendarGregorian.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarGregorian_BaseFactory;\n    return function NgbCalendarGregorian_Factory(t) {\n      return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian);\n    };\n  }();\n\n  NgbCalendarGregorian.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarGregorian,\n    factory: NgbCalendarGregorian.ɵfac\n  });\n  return NgbCalendarGregorian;\n}();\n\nfunction isChangedDate(prev, next) {\n  return !dateComparator(prev, next);\n}\n\nfunction isChangedMonth(prev, next) {\n  return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n\nfunction dateComparator(prev, next) {\n  return !prev && !next || !!prev && !!next && prev.equals(next);\n}\n\nfunction checkMinBeforeMax(minDate, maxDate) {\n  if (maxDate && minDate && maxDate.before(minDate)) {\n    throw new Error(\"'maxDate' \".concat(maxDate, \" should be greater than 'minDate' \").concat(minDate));\n  }\n}\n\nfunction checkDateInRange(date, minDate, maxDate) {\n  if (date && minDate && date.before(minDate)) {\n    return minDate;\n  }\n\n  if (date && maxDate && date.after(maxDate)) {\n    return maxDate;\n  }\n\n  return date || null;\n}\n\nfunction isDateSelectable(date, state) {\n  var minDate = state.minDate,\n      maxDate = state.maxDate,\n      disabled = state.disabled,\n      markDisabled = state.markDisabled; // clang-format off\n\n  return !(date === null || date === undefined || disabled || markDisabled && markDisabled(date, {\n    year: date.year,\n    month: date.month\n  }) || minDate && date.before(minDate) || maxDate && date.after(maxDate)); // clang-format on\n}\n\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n  if (!date) {\n    return [];\n  }\n\n  var months = calendar.getMonths(date.year);\n\n  if (minDate && date.year === minDate.year) {\n    var index = months.findIndex(function (month) {\n      return month === minDate.month;\n    });\n    months = months.slice(index);\n  }\n\n  if (maxDate && date.year === maxDate.year) {\n    var _index = months.findIndex(function (month) {\n      return month === maxDate.month;\n    });\n\n    months = months.slice(0, _index + 1);\n  }\n\n  return months;\n}\n\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n  if (!date) {\n    return [];\n  }\n\n  var start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n  var end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n  var length = end - start + 1;\n  var numbers = Array(length);\n\n  for (var i = 0; i < length; i++) {\n    numbers[i] = start + i;\n  }\n\n  return numbers;\n}\n\nfunction nextMonthDisabled(calendar, date, maxDate) {\n  var nextDate = Object.assign(calendar.getNext(date, 'm'), {\n    day: 1\n  });\n  return maxDate != null && nextDate.after(maxDate);\n}\n\nfunction prevMonthDisabled(calendar, date, minDate) {\n  var prevDate = Object.assign(calendar.getPrev(date, 'm'), {\n    day: 1\n  });\n  return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month || prevDate.year < minDate.year && minDate.month === 1);\n}\n\nfunction buildMonths(calendar, date, state, i18n, force) {\n  var displayMonths = state.displayMonths,\n      months = state.months; // move old months to a temporary array\n\n  var monthsToReuse = months.splice(0, months.length); // generate new first dates, nullify or reuse months\n\n  var firstDates = Array.from({\n    length: displayMonths\n  }, function (_, i) {\n    var firstDate = Object.assign(calendar.getNext(date, 'm', i), {\n      day: 1\n    });\n    months[i] = null;\n\n    if (!force) {\n      var reusedIndex = monthsToReuse.findIndex(function (month) {\n        return month.firstDate.equals(firstDate);\n      }); // move reused month back to months\n\n      if (reusedIndex !== -1) {\n        months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n      }\n    }\n\n    return firstDate;\n  }); // rebuild nullified months\n\n  firstDates.forEach(function (firstDate, i) {\n    if (months[i] === null) {\n      months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n    }\n  });\n  return months;\n}\n\nfunction buildMonth(calendar, date, state, i18n) {\n  var month = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n  var dayTemplateData = state.dayTemplateData,\n      minDate = state.minDate,\n      maxDate = state.maxDate,\n      firstDayOfWeek = state.firstDayOfWeek,\n      markDisabled = state.markDisabled,\n      outsideDays = state.outsideDays,\n      weekdayWidth = state.weekdayWidth,\n      weekdaysVisible = state.weekdaysVisible;\n  var calendarToday = calendar.getToday();\n  month.firstDate = null;\n  month.lastDate = null;\n  month.number = date.month;\n  month.year = date.year;\n  month.weeks = month.weeks || [];\n  month.weekdays = month.weekdays || [];\n  date = getFirstViewDate(calendar, date, firstDayOfWeek); // clearing weekdays, if not visible\n\n  if (!weekdaysVisible) {\n    month.weekdays.length = 0;\n  } // month has weeks\n\n\n  for (var week = 0; week < calendar.getWeeksPerMonth(); week++) {\n    var weekObject = month.weeks[week];\n\n    if (!weekObject) {\n      weekObject = month.weeks[week] = {\n        number: 0,\n        days: [],\n        collapsed: true\n      };\n    }\n\n    var days = weekObject.days; // week has days\n\n    for (var day = 0; day < calendar.getDaysPerWeek(); day++) {\n      if (week === 0 && weekdaysVisible) {\n        month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n      }\n\n      var newDate = new NgbDate(date.year, date.month, date.day);\n      var nextDate = calendar.getNext(newDate);\n      var ariaLabel = i18n.getDayAriaLabel(newDate); // marking date as disabled\n\n      var disabled = !!(minDate && newDate.before(minDate) || maxDate && newDate.after(maxDate));\n\n      if (!disabled && markDisabled) {\n        disabled = markDisabled(newDate, {\n          month: month.number,\n          year: month.year\n        });\n      } // today\n\n\n      var today = newDate.equals(calendarToday); // adding user-provided data to the context\n\n      var contextUserData = dayTemplateData ? dayTemplateData(newDate, {\n        month: month.number,\n        year: month.year\n      }) : undefined; // saving first date of the month\n\n      if (month.firstDate === null && newDate.month === month.number) {\n        month.firstDate = newDate;\n      } // saving last date of the month\n\n\n      if (newDate.month === month.number && nextDate.month !== month.number) {\n        month.lastDate = newDate;\n      }\n\n      var dayObject = days[day];\n\n      if (!dayObject) {\n        dayObject = days[day] = {};\n      }\n\n      dayObject.date = newDate;\n      dayObject.context = Object.assign(dayObject.context || {}, {\n        $implicit: newDate,\n        date: newDate,\n        data: contextUserData,\n        currentMonth: month.number,\n        currentYear: month.year,\n        disabled: disabled,\n        focused: false,\n        selected: false,\n        today: today\n      });\n      dayObject.tabindex = -1;\n      dayObject.ariaLabel = ariaLabel;\n      dayObject.hidden = false;\n      date = nextDate;\n    }\n\n    weekObject.number = calendar.getWeekNumber(days.map(function (day) {\n      return day.date;\n    }), firstDayOfWeek); // marking week as collapsed\n\n    weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number && days[days.length - 1].date.month !== month.number;\n  }\n\n  return month;\n}\n\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n  var daysPerWeek = calendar.getDaysPerWeek();\n  var firstMonthDate = new NgbDate(date.year, date.month, 1);\n  var dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n  return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n  return new NgbDatepickerI18nDefault(locale);\n}\n\nvar NgbDatepickerI18n = /*@__PURE__*/function () {\n  var NgbDatepickerI18n = /*#__PURE__*/function () {\n    function NgbDatepickerI18n() {\n      _classCallCheck(this, NgbDatepickerI18n);\n    }\n\n    _createClass(NgbDatepickerI18n, [{\n      key: \"getMonthLabel\",\n      value:\n      /**\n       * Returns the text label to display above the day view.\n       *\n       * @since 9.1.0\n       */\n      function getMonthLabel(date) {\n        return \"\".concat(this.getMonthFullName(date.month, date.year), \" \").concat(this.getYearNumerals(date.year));\n      }\n      /**\n       * Returns the textual representation of a day that is rendered in a day cell.\n       *\n       * @since 3.0.0\n       */\n\n    }, {\n      key: \"getDayNumerals\",\n      value: function getDayNumerals(date) {\n        return \"\".concat(date.day);\n      }\n      /**\n       * Returns the textual representation of a week number rendered by datepicker.\n       *\n       * @since 3.0.0\n       */\n\n    }, {\n      key: \"getWeekNumerals\",\n      value: function getWeekNumerals(weekNumber) {\n        return \"\".concat(weekNumber);\n      }\n      /**\n       * Returns the textual representation of a year that is rendered in the datepicker year select box.\n       *\n       * @since 3.0.0\n       */\n\n    }, {\n      key: \"getYearNumerals\",\n      value: function getYearNumerals(year) {\n        return \"\".concat(year);\n      }\n      /**\n       * Returns the week label to display in the heading of the month view.\n       *\n       * @since 9.1.0\n       */\n\n    }, {\n      key: \"getWeekLabel\",\n      value: function getWeekLabel() {\n        return '';\n      }\n    }]);\n\n    return NgbDatepickerI18n;\n  }();\n\n  NgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) {\n    return new (t || NgbDatepickerI18n)();\n  };\n\n  NgbDatepickerI18n.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbDatepickerI18n_Factory() {\n      return NGB_DATEPICKER_18N_FACTORY(i0.ɵɵinject(i0.LOCALE_ID));\n    },\n    token: NgbDatepickerI18n,\n    providedIn: \"root\"\n  });\n  return NgbDatepickerI18n;\n}();\n\nvar NgbDatepickerI18nDefault = /*@__PURE__*/function () {\n  var NgbDatepickerI18nDefault = /*#__PURE__*/function (_NgbDatepickerI18n) {\n    _inherits(NgbDatepickerI18nDefault, _NgbDatepickerI18n);\n\n    var _super2 = _createSuper(NgbDatepickerI18nDefault);\n\n    function NgbDatepickerI18nDefault(_locale) {\n      var _this10;\n\n      _classCallCheck(this, NgbDatepickerI18nDefault);\n\n      _this10 = _super2.call(this);\n      _this10._locale = _locale;\n      _this10._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n      _this10._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n      return _this10;\n    }\n\n    _createClass(NgbDatepickerI18nDefault, [{\n      key: \"getWeekdayLabel\",\n      value: function getWeekdayLabel(weekday, width) {\n        var weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\n        var weekdays = weekdaysStartingOnSunday.map(function (day, index) {\n          return weekdaysStartingOnSunday[(index + 1) % 7];\n        });\n        return weekdays[weekday - 1] || '';\n      }\n    }, {\n      key: \"getMonthShortName\",\n      value: function getMonthShortName(month) {\n        return this._monthsShort[month - 1] || '';\n      }\n    }, {\n      key: \"getMonthFullName\",\n      value: function getMonthFullName(month) {\n        return this._monthsFull[month - 1] || '';\n      }\n    }, {\n      key: \"getDayAriaLabel\",\n      value: function getDayAriaLabel(date) {\n        var jsDate = new Date(date.year, date.month - 1, date.day);\n        return formatDate(jsDate, 'fullDate', this._locale);\n      }\n    }]);\n\n    return NgbDatepickerI18nDefault;\n  }(NgbDatepickerI18n);\n\n  NgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) {\n    return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID));\n  };\n\n  NgbDatepickerI18nDefault.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDatepickerI18nDefault,\n    factory: NgbDatepickerI18nDefault.ɵfac\n  });\n  return NgbDatepickerI18nDefault;\n}();\n\nvar NgbDatepickerService = /*@__PURE__*/function () {\n  var NgbDatepickerService = /*#__PURE__*/function () {\n    function NgbDatepickerService(_calendar, _i18n) {\n      var _this11 = this;\n\n      _classCallCheck(this, NgbDatepickerService);\n\n      this._calendar = _calendar;\n      this._i18n = _i18n;\n      this._VALIDATORS = {\n        dayTemplateData: function dayTemplateData(_dayTemplateData) {\n          if (_this11._state.dayTemplateData !== _dayTemplateData) {\n            return {\n              dayTemplateData: _dayTemplateData\n            };\n          }\n        },\n        displayMonths: function displayMonths(_displayMonths) {\n          _displayMonths = toInteger(_displayMonths);\n\n          if (isInteger(_displayMonths) && _displayMonths > 0 && _this11._state.displayMonths !== _displayMonths) {\n            return {\n              displayMonths: _displayMonths\n            };\n          }\n        },\n        disabled: function disabled(_disabled) {\n          if (_this11._state.disabled !== _disabled) {\n            return {\n              disabled: _disabled\n            };\n          }\n        },\n        firstDayOfWeek: function firstDayOfWeek(_firstDayOfWeek) {\n          _firstDayOfWeek = toInteger(_firstDayOfWeek);\n\n          if (isInteger(_firstDayOfWeek) && _firstDayOfWeek >= 0 && _this11._state.firstDayOfWeek !== _firstDayOfWeek) {\n            return {\n              firstDayOfWeek: _firstDayOfWeek\n            };\n          }\n        },\n        focusVisible: function focusVisible(_focusVisible) {\n          if (_this11._state.focusVisible !== _focusVisible && !_this11._state.disabled) {\n            return {\n              focusVisible: _focusVisible\n            };\n          }\n        },\n        markDisabled: function markDisabled(_markDisabled) {\n          if (_this11._state.markDisabled !== _markDisabled) {\n            return {\n              markDisabled: _markDisabled\n            };\n          }\n        },\n        maxDate: function maxDate(date) {\n          var maxDate = _this11.toValidDate(date, null);\n\n          if (isChangedDate(_this11._state.maxDate, maxDate)) {\n            return {\n              maxDate: maxDate\n            };\n          }\n        },\n        minDate: function minDate(date) {\n          var minDate = _this11.toValidDate(date, null);\n\n          if (isChangedDate(_this11._state.minDate, minDate)) {\n            return {\n              minDate: minDate\n            };\n          }\n        },\n        navigation: function navigation(_navigation) {\n          if (_this11._state.navigation !== _navigation) {\n            return {\n              navigation: _navigation\n            };\n          }\n        },\n        outsideDays: function outsideDays(_outsideDays) {\n          if (_this11._state.outsideDays !== _outsideDays) {\n            return {\n              outsideDays: _outsideDays\n            };\n          }\n        },\n        weekdays: function weekdays(_weekdays) {\n          var weekdayWidth = _weekdays === true || _weekdays === false ? TranslationWidth.Short : _weekdays;\n          var weekdaysVisible = _weekdays === true || _weekdays === false ? _weekdays : true;\n\n          if (_this11._state.weekdayWidth !== weekdayWidth || _this11._state.weekdaysVisible !== weekdaysVisible) {\n            return {\n              weekdayWidth: weekdayWidth,\n              weekdaysVisible: weekdaysVisible\n            };\n          }\n        }\n      };\n      this._model$ = new Subject();\n      this._dateSelect$ = new Subject();\n      this._state = {\n        dayTemplateData: null,\n        markDisabled: null,\n        maxDate: null,\n        minDate: null,\n        disabled: false,\n        displayMonths: 1,\n        firstDate: null,\n        firstDayOfWeek: 1,\n        lastDate: null,\n        focusDate: null,\n        focusVisible: false,\n        months: [],\n        navigation: 'select',\n        outsideDays: 'visible',\n        prevDisabled: false,\n        nextDisabled: false,\n        selectedDate: null,\n        selectBoxes: {\n          years: [],\n          months: []\n        },\n        weekdayWidth: TranslationWidth.Short,\n        weekdaysVisible: true\n      };\n    }\n\n    _createClass(NgbDatepickerService, [{\n      key: \"model$\",\n      get: function get() {\n        return this._model$.pipe(filter(function (model) {\n          return model.months.length > 0;\n        }));\n      }\n    }, {\n      key: \"dateSelect$\",\n      get: function get() {\n        return this._dateSelect$.pipe(filter(function (date) {\n          return date !== null;\n        }));\n      }\n    }, {\n      key: \"set\",\n      value: function set(options) {\n        var _this12 = this;\n\n        var patch = Object.keys(options).map(function (key) {\n          return _this12._VALIDATORS[key](options[key]);\n        }).reduce(function (obj, part) {\n          return Object.assign(Object.assign({}, obj), part);\n        }, {});\n\n        if (Object.keys(patch).length > 0) {\n          this._nextState(patch);\n        }\n      }\n    }, {\n      key: \"focus\",\n      value: function focus(date) {\n        var focusedDate = this.toValidDate(date, null);\n\n        if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n          this._nextState({\n            focusDate: date\n          });\n        }\n      }\n    }, {\n      key: \"focusSelect\",\n      value: function focusSelect() {\n        if (isDateSelectable(this._state.focusDate, this._state)) {\n          this.select(this._state.focusDate, {\n            emitEvent: true\n          });\n        }\n      }\n    }, {\n      key: \"open\",\n      value: function open(date) {\n        var firstDate = this.toValidDate(date, this._calendar.getToday());\n\n        if (firstDate != null && !this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\n          this._nextState({\n            firstDate: firstDate\n          });\n        }\n      }\n    }, {\n      key: \"select\",\n      value: function select(date) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var selectedDate = this.toValidDate(date, null);\n\n        if (selectedDate != null && !this._state.disabled) {\n          if (isChangedDate(this._state.selectedDate, selectedDate)) {\n            this._nextState({\n              selectedDate: selectedDate\n            });\n          }\n\n          if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n            this._dateSelect$.next(selectedDate);\n          }\n        }\n      }\n    }, {\n      key: \"toValidDate\",\n      value: function toValidDate(date, defaultValue) {\n        var ngbDate = NgbDate.from(date);\n\n        if (defaultValue === undefined) {\n          defaultValue = this._calendar.getToday();\n        }\n\n        return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n      }\n    }, {\n      key: \"getMonth\",\n      value: function getMonth(struct) {\n        var _iterator2 = _createForOfIteratorHelper(this._state.months),\n            _step2;\n\n        try {\n          for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n            var month = _step2.value;\n\n            if (struct.month === month.number && struct.year === month.year) {\n              return month;\n            }\n          }\n        } catch (err) {\n          _iterator2.e(err);\n        } finally {\n          _iterator2.f();\n        }\n\n        throw new Error(\"month \".concat(struct.month, \" of year \").concat(struct.year, \" not found\"));\n      }\n    }, {\n      key: \"_nextState\",\n      value: function _nextState(patch) {\n        var newState = this._updateState(patch);\n\n        this._patchContexts(newState);\n\n        this._state = newState;\n\n        this._model$.next(this._state);\n      }\n    }, {\n      key: \"_patchContexts\",\n      value: function _patchContexts(state) {\n        var months = state.months,\n            displayMonths = state.displayMonths,\n            selectedDate = state.selectedDate,\n            focusDate = state.focusDate,\n            focusVisible = state.focusVisible,\n            disabled = state.disabled,\n            outsideDays = state.outsideDays;\n        state.months.forEach(function (month) {\n          month.weeks.forEach(function (week) {\n            week.days.forEach(function (day) {\n              // patch focus flag\n              if (focusDate) {\n                day.context.focused = focusDate.equals(day.date) && focusVisible;\n              } // calculating tabindex\n\n\n              day.tabindex = !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1; // override context disabled\n\n              if (disabled === true) {\n                day.context.disabled = true;\n              } // patch selection flag\n\n\n              if (selectedDate !== undefined) {\n                day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n              } // visibility\n\n\n              if (month.number !== day.date.month) {\n                day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' || displayMonths > 1 && day.date.after(months[0].firstDate) && day.date.before(months[displayMonths - 1].lastDate);\n              }\n            });\n          });\n        });\n      }\n    }, {\n      key: \"_updateState\",\n      value: function _updateState(patch) {\n        // patching fields\n        var state = Object.assign({}, this._state, patch);\n        var startDate = state.firstDate; // min/max dates changed\n\n        if ('minDate' in patch || 'maxDate' in patch) {\n          checkMinBeforeMax(state.minDate, state.maxDate);\n          state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n          state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n          startDate = state.focusDate;\n        } // disabled\n\n\n        if ('disabled' in patch) {\n          state.focusVisible = false;\n        } // initial rebuild via 'select()'\n\n\n        if ('selectedDate' in patch && this._state.months.length === 0) {\n          startDate = state.selectedDate;\n        } // terminate early if only focus visibility was changed\n\n\n        if ('focusVisible' in patch) {\n          return state;\n        } // focus date changed\n\n\n        if ('focusDate' in patch) {\n          state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n          startDate = state.focusDate; // nothing to rebuild if only focus changed and it is still visible\n\n          if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) && !state.focusDate.after(state.lastDate)) {\n            return state;\n          }\n        } // first date changed\n\n\n        if ('firstDate' in patch) {\n          state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n          startDate = state.firstDate;\n        } // rebuilding months\n\n\n        if (startDate) {\n          var forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch || 'weekdaysVisible' in patch;\n          var months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild); // updating months and boundary dates\n\n          state.months = months;\n          state.firstDate = months[0].firstDate;\n          state.lastDate = months[months.length - 1].lastDate; // reset selected date if 'markDisabled' returns true\n\n          if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n            state.selectedDate = null;\n          } // adjusting focus after months were built\n\n\n          if ('firstDate' in patch) {\n            if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n              state.focusDate = startDate;\n            }\n          } // adjusting months/years for the select box navigation\n\n\n          var yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n          var monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n\n          if (state.navigation === 'select') {\n            // years ->  boundaries (min/max were changed)\n            if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n              state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n            } // months -> when current year or boundaries change\n\n\n            if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n              state.selectBoxes.months = generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n            }\n          } else {\n            state.selectBoxes = {\n              years: [],\n              months: []\n            };\n          } // updating navigation arrows -> boundaries change (min/max) or month/year changes\n\n\n          if ((state.navigation === 'arrows' || state.navigation === 'select') && (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n            state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n            state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n          }\n        }\n\n        return state;\n      }\n    }]);\n\n    return NgbDatepickerService;\n  }();\n\n  NgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) {\n    return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n));\n  };\n\n  NgbDatepickerService.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDatepickerService,\n    factory: NgbDatepickerService.ɵfac\n  });\n  return NgbDatepickerService;\n}(); // clang-format on\n\n\nvar NavigationEvent = /*@__PURE__*/function (NavigationEvent) {\n  NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n  NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n  return NavigationEvent;\n}({});\n\nvar NgbDatepickerConfig = /*@__PURE__*/function () {\n  var NgbDatepickerConfig = /*#__PURE__*/_createClass(function NgbDatepickerConfig() {\n    _classCallCheck(this, NgbDatepickerConfig);\n\n    this.displayMonths = 1;\n    this.firstDayOfWeek = 1;\n    this.navigation = 'select';\n    this.outsideDays = 'visible';\n    this.showWeekNumbers = false;\n    this.weekdays = TranslationWidth.Short;\n  });\n\n  NgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) {\n    return new (t || NgbDatepickerConfig)();\n  };\n\n  NgbDatepickerConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbDatepickerConfig_Factory() {\n      return new NgbDatepickerConfig();\n    },\n    token: NgbDatepickerConfig,\n    providedIn: \"root\"\n  });\n  return NgbDatepickerConfig;\n}();\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n  return new NgbDateStructAdapter();\n}\n\nvar NgbDateAdapter = /*@__PURE__*/function () {\n  var NgbDateAdapter = /*#__PURE__*/_createClass(function NgbDateAdapter() {\n    _classCallCheck(this, NgbDateAdapter);\n  });\n\n  NgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) {\n    return new (t || NgbDateAdapter)();\n  };\n\n  NgbDateAdapter.ɵprov = i0.ɵɵdefineInjectable({\n    factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY,\n    token: NgbDateAdapter,\n    providedIn: \"root\"\n  });\n  return NgbDateAdapter;\n}();\n\nvar NgbDateStructAdapter = /*@__PURE__*/function () {\n  var NgbDateStructAdapter = /*#__PURE__*/function (_NgbDateAdapter) {\n    _inherits(NgbDateStructAdapter, _NgbDateAdapter);\n\n    var _super3 = _createSuper(NgbDateStructAdapter);\n\n    function NgbDateStructAdapter() {\n      _classCallCheck(this, NgbDateStructAdapter);\n\n      return _super3.apply(this, arguments);\n    }\n\n    _createClass(NgbDateStructAdapter, [{\n      key: \"fromModel\",\n      value:\n      /**\n       * Converts a NgbDateStruct value into NgbDateStruct value\n       */\n      function fromModel(date) {\n        return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? {\n          year: date.year,\n          month: date.month,\n          day: date.day\n        } : null;\n      }\n      /**\n       * Converts a NgbDateStruct value into NgbDateStruct value\n       */\n\n    }, {\n      key: \"toModel\",\n      value: function toModel(date) {\n        return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? {\n          year: date.year,\n          month: date.month,\n          day: date.day\n        } : null;\n      }\n    }]);\n\n    return NgbDateStructAdapter;\n  }(NgbDateAdapter);\n\n  NgbDateStructAdapter.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbDateStructAdapter_BaseFactory;\n    return function NgbDateStructAdapter_Factory(t) {\n      return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter);\n    };\n  }();\n\n  NgbDateStructAdapter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDateStructAdapter,\n    factory: NgbDateStructAdapter.ɵfac\n  });\n  return NgbDateStructAdapter;\n}();\n\nvar NgbDatepickerContent = /*@__PURE__*/function () {\n  var NgbDatepickerContent = /*#__PURE__*/_createClass(function NgbDatepickerContent(templateRef) {\n    _classCallCheck(this, NgbDatepickerContent);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbDatepickerContent.ɵfac = function NgbDatepickerContent_Factory(t) {\n    return new (t || NgbDatepickerContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbDatepickerContent.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDatepickerContent,\n    selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]]\n  });\n  return NgbDatepickerContent;\n}();\n\nvar NgbDatepicker = /*@__PURE__*/function () {\n  var NgbDatepicker = /*#__PURE__*/function () {\n    function NgbDatepicker(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n      var _this13 = this;\n\n      _classCallCheck(this, NgbDatepicker);\n\n      this._service = _service;\n      this._calendar = _calendar;\n      this.i18n = i18n;\n      this._elementRef = _elementRef;\n      this._ngbDateAdapter = _ngbDateAdapter;\n      this._ngZone = _ngZone;\n      this._controlValue = null;\n      this._destroyed$ = new Subject();\n      this._publicState = {};\n      /**\n       * An event emitted right before the navigation happens and displayed month changes.\n       *\n       * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n       */\n\n      this.navigate = new EventEmitter();\n      /**\n       * An event emitted when user selects a date using keyboard or mouse.\n       *\n       * The payload of the event is currently selected `NgbDate`.\n       *\n       * @since 5.2.0\n       */\n\n      this.dateSelect = new EventEmitter();\n\n      this.onChange = function (_) {};\n\n      this.onTouched = function () {};\n\n      ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate', 'maxDate', 'navigation', 'outsideDays', 'showWeekNumbers', 'startDate', 'weekdays'].forEach(function (input) {\n        return _this13[input] = config[input];\n      });\n\n      _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(function (date) {\n        _this13.dateSelect.emit(date);\n      });\n\n      _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(function (model) {\n        var newDate = model.firstDate;\n        var oldDate = _this13.model ? _this13.model.firstDate : null; // update public state\n\n        _this13._publicState = {\n          maxDate: model.maxDate,\n          minDate: model.minDate,\n          firstDate: model.firstDate,\n          lastDate: model.lastDate,\n          focusedDate: model.focusDate,\n          months: model.months.map(function (viewModel) {\n            return viewModel.firstDate;\n          })\n        };\n        var navigationPrevented = false; // emitting navigation event if the first month changes\n\n        if (!newDate.equals(oldDate)) {\n          _this13.navigate.emit({\n            current: oldDate ? {\n              year: oldDate.year,\n              month: oldDate.month\n            } : null,\n            next: {\n              year: newDate.year,\n              month: newDate.month\n            },\n            preventDefault: function preventDefault() {\n              return navigationPrevented = true;\n            }\n          }); // can't prevent the very first navigation\n\n\n          if (navigationPrevented && oldDate !== null) {\n            _this13._service.open(oldDate);\n\n            return;\n          }\n        }\n\n        var newSelectedDate = model.selectedDate;\n        var newFocusedDate = model.focusDate;\n        var oldFocusedDate = _this13.model ? _this13.model.focusDate : null;\n        _this13.model = model; // handling selection change\n\n        if (isChangedDate(newSelectedDate, _this13._controlValue)) {\n          _this13._controlValue = newSelectedDate;\n\n          _this13.onTouched();\n\n          _this13.onChange(_this13._ngbDateAdapter.toModel(newSelectedDate));\n        } // handling focus change\n\n\n        if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n          _this13.focus();\n        }\n\n        cd.markForCheck();\n      });\n    }\n    /**\n     *  Returns the readonly public state of the datepicker\n     *\n     * @since 5.2.0\n     */\n\n\n    _createClass(NgbDatepicker, [{\n      key: \"state\",\n      get: function get() {\n        return this._publicState;\n      }\n      /**\n       *  Returns the calendar service used in the specific datepicker instance.\n       *\n       *  @since 5.3.0\n       */\n\n    }, {\n      key: \"calendar\",\n      get: function get() {\n        return this._calendar;\n      }\n      /**\n       *  Focuses on given date.\n       */\n\n    }, {\n      key: \"focusDate\",\n      value: function focusDate(date) {\n        this._service.focus(NgbDate.from(date));\n      }\n      /**\n       *  Selects focused date.\n       */\n\n    }, {\n      key: \"focusSelect\",\n      value: function focusSelect() {\n        this._service.focusSelect();\n      }\n    }, {\n      key: \"focus\",\n      value: function focus() {\n        var _this14 = this;\n\n        this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n          var elementToFocus = _this14._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n\n          if (elementToFocus) {\n            elementToFocus.focus();\n          }\n        });\n      }\n      /**\n       * Navigates to the provided date.\n       *\n       * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n       * If nothing or invalid date provided calendar will open current month.\n       *\n       * Use the `[startDate]` input as an alternative.\n       */\n\n    }, {\n      key: \"navigateTo\",\n      value: function navigateTo(date) {\n        this._service.open(NgbDate.from(date ? date.day ? date : Object.assign(Object.assign({}, date), {\n          day: 1\n        }) : null));\n      }\n    }, {\n      key: \"ngAfterViewInit\",\n      value: function ngAfterViewInit() {\n        var _this15 = this;\n\n        this._ngZone.runOutsideAngular(function () {\n          var focusIns$ = fromEvent(_this15._contentEl.nativeElement, 'focusin');\n          var focusOuts$ = fromEvent(_this15._contentEl.nativeElement, 'focusout');\n          var nativeElement = _this15._elementRef.nativeElement; // we're changing 'focusVisible' only when entering or leaving months view\n          // and ignoring all focus events where both 'target' and 'related' target are day cells\n\n          merge(focusIns$, focusOuts$).pipe(filter(function (_ref11) {\n            var target = _ref11.target,\n                relatedTarget = _ref11.relatedTarget;\n            return !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') && nativeElement.contains(target) && nativeElement.contains(relatedTarget));\n          }), takeUntil(_this15._destroyed$)).subscribe(function (_ref12) {\n            var type = _ref12.type;\n            return _this15._ngZone.run(function () {\n              return _this15._service.set({\n                focusVisible: type === 'focusin'\n              });\n            });\n          });\n        });\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._destroyed$.next();\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        var _this16 = this;\n\n        if (this.model === undefined) {\n          var inputs = {};\n          ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate', 'outsideDays', 'weekdays'].forEach(function (name) {\n            return inputs[name] = _this16[name];\n          });\n\n          this._service.set(inputs);\n\n          this.navigateTo(this.startDate);\n        }\n\n        if (!this.dayTemplate) {\n          this.dayTemplate = this._defaultDayTemplate;\n        }\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        var _this17 = this;\n\n        var inputs = {};\n        ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate', 'outsideDays', 'weekdays'].filter(function (name) {\n          return name in changes;\n        }).forEach(function (name) {\n          return inputs[name] = _this17[name];\n        });\n\n        this._service.set(inputs);\n\n        if ('startDate' in changes) {\n          var _changes$startDate = changes.startDate,\n              currentValue = _changes$startDate.currentValue,\n              previousValue = _changes$startDate.previousValue;\n\n          if (isChangedMonth(previousValue, currentValue)) {\n            this.navigateTo(this.startDate);\n          }\n        }\n      }\n    }, {\n      key: \"onDateSelect\",\n      value: function onDateSelect(date) {\n        this._service.focus(date);\n\n        this._service.select(date, {\n          emitEvent: true\n        });\n      }\n    }, {\n      key: \"onNavigateDateSelect\",\n      value: function onNavigateDateSelect(date) {\n        this._service.open(date);\n      }\n    }, {\n      key: \"onNavigateEvent\",\n      value: function onNavigateEvent(event) {\n        switch (event) {\n          case NavigationEvent.PREV:\n            this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n\n            break;\n\n          case NavigationEvent.NEXT:\n            this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n\n            break;\n        }\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this.onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this.onTouched = fn;\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(disabled) {\n        this._service.set({\n          disabled: disabled\n        });\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n\n        this._service.select(this._controlValue);\n      }\n    }]);\n\n    return NgbDatepicker;\n  }();\n\n  NgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) {\n    return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbDatepicker.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbDatepicker,\n    selectors: [[\"ngb-datepicker\"]],\n    contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n      }\n    },\n    viewQuery: function NgbDatepicker_Query(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c10, 7);\n        ɵngcc0.ɵɵviewQuery(_c11, 7);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n      }\n    },\n    inputs: {\n      dayTemplate: \"dayTemplate\",\n      dayTemplateData: \"dayTemplateData\",\n      displayMonths: \"displayMonths\",\n      firstDayOfWeek: \"firstDayOfWeek\",\n      footerTemplate: \"footerTemplate\",\n      markDisabled: \"markDisabled\",\n      maxDate: \"maxDate\",\n      minDate: \"minDate\",\n      navigation: \"navigation\",\n      outsideDays: \"outsideDays\",\n      showWeekNumbers: \"showWeekNumbers\",\n      startDate: \"startDate\",\n      weekdays: \"weekdays\"\n    },\n    outputs: {\n      navigate: \"navigate\",\n      dateSelect: \"dateSelect\"\n    },\n    exportAs: [\"ngbDatepicker\"],\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbDatepicker;\n      }),\n      multi: true\n    }, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature],\n    decls: 10,\n    vars: 5,\n    consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-content\"], [\"content\", \"\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [\"class\", \"ngb-dp-month\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name\", 4, \"ngIf\"], [3, \"month\"], [1, \"ngb-dp-month-name\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"]],\n    template: function NgbDatepicker_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbDatepicker_ng_template_2_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵelementStart(4, \"div\", 2);\n        ɵngcc0.ɵɵtemplate(5, NgbDatepicker_ngb_datepicker_navigation_5_Template, 1, 7, \"ngb-datepicker-navigation\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(6, \"div\", 4, 5);\n        ɵngcc0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 6);\n      }\n\n      if (rf & 2) {\n        var _r2 = ɵngcc0.ɵɵreference(3);\n\n        ɵngcc0.ɵɵadvance(5);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.contentTemplate == null ? null : ctx.contentTemplate.templateRef) || _r2);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n      }\n    },\n    directives: function directives() {\n      return [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, NgbDatepickerDayView, ɵngcc1.NgForOf, NgbDatepickerMonth, NgbDatepickerNavigation];\n    },\n    styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbDatepicker;\n}();\n\nvar Key = /*@__PURE__*/function (Key) {\n  Key[Key[\"Tab\"] = 9] = \"Tab\";\n  Key[Key[\"Enter\"] = 13] = \"Enter\";\n  Key[Key[\"Escape\"] = 27] = \"Escape\";\n  Key[Key[\"Space\"] = 32] = \"Space\";\n  Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n  Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n  Key[Key[\"End\"] = 35] = \"End\";\n  Key[Key[\"Home\"] = 36] = \"Home\";\n  Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n  Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n  Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n  Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n  return Key;\n}({});\n\nvar NgbDatepickerKeyboardService = /*@__PURE__*/function () {\n  var NgbDatepickerKeyboardService = /*#__PURE__*/function () {\n    function NgbDatepickerKeyboardService() {\n      _classCallCheck(this, NgbDatepickerKeyboardService);\n    }\n\n    _createClass(NgbDatepickerKeyboardService, [{\n      key: \"processKey\",\n      value:\n      /**\n       * Processes a keyboard event.\n       */\n      function processKey(event, datepicker) {\n        var state = datepicker.state,\n            calendar = datepicker.calendar; // tslint:disable-next-line:deprecation\n\n        switch (event.which) {\n          case Key.PageUp:\n            datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n            break;\n\n          case Key.PageDown:\n            datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n            break;\n\n          case Key.End:\n            datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n            break;\n\n          case Key.Home:\n            datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n            break;\n\n          case Key.ArrowLeft:\n            datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n            break;\n\n          case Key.ArrowUp:\n            datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n            break;\n\n          case Key.ArrowRight:\n            datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n            break;\n\n          case Key.ArrowDown:\n            datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n            break;\n\n          case Key.Enter:\n          case Key.Space:\n            datepicker.focusSelect();\n            break;\n\n          default:\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n      }\n    }]);\n\n    return NgbDatepickerKeyboardService;\n  }();\n\n  NgbDatepickerKeyboardService.ɵfac = function NgbDatepickerKeyboardService_Factory(t) {\n    return new (t || NgbDatepickerKeyboardService)();\n  };\n\n  NgbDatepickerKeyboardService.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbDatepickerKeyboardService_Factory() {\n      return new NgbDatepickerKeyboardService();\n    },\n    token: NgbDatepickerKeyboardService,\n    providedIn: \"root\"\n  });\n  return NgbDatepickerKeyboardService;\n}();\n\nvar NgbDatepickerMonth = /*@__PURE__*/function () {\n  var NgbDatepickerMonth = /*#__PURE__*/function () {\n    function NgbDatepickerMonth(i18n, datepicker, _keyboardService, _service) {\n      _classCallCheck(this, NgbDatepickerMonth);\n\n      this.i18n = i18n;\n      this.datepicker = datepicker;\n      this._keyboardService = _keyboardService;\n      this._service = _service;\n    }\n    /**\n     * The first date of month to be rendered.\n     *\n     * This month must one of the months present in the\n     * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n     */\n\n\n    _createClass(NgbDatepickerMonth, [{\n      key: \"month\",\n      set: function set(month) {\n        this.viewModel = this._service.getMonth(month);\n      }\n    }, {\n      key: \"onKeyDown\",\n      value: function onKeyDown(event) {\n        this._keyboardService.processKey(event, this.datepicker);\n      }\n    }, {\n      key: \"doSelect\",\n      value: function doSelect(day) {\n        if (!day.context.disabled && !day.hidden) {\n          this.datepicker.onDateSelect(day.date);\n        }\n      }\n    }]);\n\n    return NgbDatepickerMonth;\n  }();\n\n  NgbDatepickerMonth.ɵfac = function NgbDatepickerMonth_Factory(t) {\n    return new (t || NgbDatepickerMonth)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepicker), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyboardService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService));\n  };\n\n  NgbDatepickerMonth.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbDatepickerMonth,\n    selectors: [[\"ngb-datepicker-month\"]],\n    hostAttrs: [\"role\", \"grid\"],\n    hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        });\n      }\n    },\n    inputs: {\n      month: \"month\"\n    },\n    decls: 2,\n    vars: 2,\n    consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays\", \"role\", \"row\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek small\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", \"role\", \"columnheader\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\", \"small\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n    template: function NgbDatepickerMonth_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_div_0_Template, 3, 2, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.viewModel.weekdays.length > 0);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.viewModel.weeks);\n      }\n    },\n    directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet],\n    styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"],\n    encapsulation: 2\n  });\n  return NgbDatepickerMonth;\n}();\n\nvar NgbDatepickerNavigation = /*@__PURE__*/function () {\n  var NgbDatepickerNavigation = /*#__PURE__*/function () {\n    function NgbDatepickerNavigation(i18n) {\n      _classCallCheck(this, NgbDatepickerNavigation);\n\n      this.i18n = i18n;\n      this.navigation = NavigationEvent;\n      this.months = [];\n      this.navigate = new EventEmitter();\n      this.select = new EventEmitter();\n    }\n\n    _createClass(NgbDatepickerNavigation, [{\n      key: \"onClickPrev\",\n      value: function onClickPrev(event) {\n        event.currentTarget.focus();\n        this.navigate.emit(this.navigation.PREV);\n      }\n    }, {\n      key: \"onClickNext\",\n      value: function onClickNext(event) {\n        event.currentTarget.focus();\n        this.navigate.emit(this.navigation.NEXT);\n      }\n    }]);\n\n    return NgbDatepickerNavigation;\n  }();\n\n  NgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) {\n    return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n));\n  };\n\n  NgbDatepickerNavigation.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbDatepickerNavigation,\n    selectors: [[\"ngb-datepicker-navigation\"]],\n    inputs: {\n      months: \"months\",\n      date: \"date\",\n      disabled: \"disabled\",\n      showSelect: \"showSelect\",\n      prevDisabled: \"prevDisabled\",\n      nextDisabled: \"nextDisabled\",\n      selectBoxes: \"selectBoxes\"\n    },\n    outputs: {\n      navigate: \"navigate\",\n      select: \"select\"\n    },\n    decls: 8,\n    vars: 4,\n    consts: function consts() {\n      var i18n_12;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13 = goog.getMsg(\"Previous month\");\n        i18n_12 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13;\n      } else {\n        i18n_12 = $localize(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\":@@ngb.datepicker.previous-month\\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\\u241F8586908745456864217:Previous month\"])));\n      }\n\n      var i18n_14;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15 = goog.getMsg(\"Previous month\");\n        i18n_14 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15;\n      } else {\n        i18n_14 = $localize(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\":@@ngb.datepicker.previous-month\\u241Fc3b08b07b5ab98e7cdcf18df39355690ab7d3884\\u241F8586908745456864217:Previous month\"])));\n      }\n\n      var i18n_16;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17 = goog.getMsg(\"Next month\");\n        i18n_16 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17;\n      } else {\n        i18n_16 = $localize(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\":@@ngb.datepicker.next-month\\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\\u241F3628374603023447227:Next month\"])));\n      }\n\n      var i18n_18;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19 = goog.getMsg(\"Next month\");\n        i18n_18 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19;\n      } else {\n        i18n_18 = $localize(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\":@@ngb.datepicker.next-month\\u241F4bd046985cfe13040d5ef0cd881edce0968a111a\\u241F3628374603023447227:Next month\"])));\n      }\n\n      return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_12, \"title\", i18n_14, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_16, \"title\", i18n_18, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]];\n    },\n    template: function NgbDatepickerNavigation_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"button\", 1);\n        ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) {\n          return ctx.onClickPrev($event);\n        });\n        ɵngcc0.ɵɵelement(2, \"span\", 2);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n        ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, undefined, 4);\n        ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n        ɵngcc0.ɵɵelementStart(6, \"button\", 6);\n        ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) {\n          return ctx.onClickNext($event);\n        });\n        ɵngcc0.ɵɵelement(7, \"span\", 2);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n      }\n    },\n    directives: function directives() {\n      return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf];\n    },\n    styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbDatepickerNavigation;\n}();\n\nvar isContainedIn = function isContainedIn(element, array) {\n  return array ? array.some(function (item) {\n    return item.contains(element);\n  }) : false;\n};\n\nvar ɵ0$3 = isContainedIn;\n\nvar matchesSelectorIfAny = function matchesSelectorIfAny(element, selector) {\n  return !selector || closest(element, selector) != null;\n};\n\nvar ɵ1 = matchesSelectorIfAny;\n\nvar ɵ2 = function ɵ2() {\n  var isIOS = function isIOS() {\n    return /iPad|iPhone|iPod/.test(navigator.userAgent) || /Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n  };\n\n  var isAndroid = function isAndroid() {\n    return /Android/.test(navigator.userAgent);\n  };\n\n  return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n}; // we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\n\n\nvar isMobile = ɵ2(); // setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\n\nvar wrapAsyncForMobile = function wrapAsyncForMobile(fn) {\n  return isMobile ? function () {\n    return setTimeout(function () {\n      return fn();\n    }, 100);\n  } : fn;\n};\n\nvar ɵ3 = wrapAsyncForMobile;\n\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n  // closing on ESC and outside clicks\n  if (type) {\n    zone.runOutsideAngular(wrapAsyncForMobile(function () {\n      var shouldCloseOnClick = function shouldCloseOnClick(event) {\n        var element = event.target;\n\n        if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n          return false;\n        }\n\n        if (type === 'inside') {\n          return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n        } else if (type === 'outside') {\n          return !isContainedIn(element, insideElements);\n        } else\n          /* if (type === true) */\n          {\n            return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n          }\n      };\n\n      var escapes$ = fromEvent(document, 'keydown').pipe(takeUntil(closed$), // tslint:disable-next-line:deprecation\n      filter(function (e) {\n        return e.which === Key.Escape;\n      }), tap(function (e) {\n        return e.preventDefault();\n      })); // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n      // because on 'mouseup' DOM nodes might be detached\n\n      var mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n      var closeableClicks$ = fromEvent(document, 'mouseup').pipe(withLatestFrom(mouseDowns$), filter(function (_ref13) {\n        var _ref14 = _slicedToArray(_ref13, 2),\n            _ = _ref14[0],\n            shouldClose = _ref14[1];\n\n        return shouldClose;\n      }), delay(0), takeUntil(closed$));\n      race([escapes$.pipe(map(function (_) {\n        return 0;\n      }\n      /* ESCAPE */\n      )), closeableClicks$.pipe(map(function (_) {\n        return 1;\n      }\n      /* CLICK */\n      ))]).subscribe(function (source) {\n        return zone.run(function () {\n          return close(source);\n        });\n      });\n    }));\n  }\n}\n\nvar FOCUSABLE_ELEMENTS_SELECTOR = ['a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])', 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\n\nfunction getFocusableBoundaryElements(element) {\n  var list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR)).filter(function (el) {\n    return el.tabIndex !== -1;\n  });\n  return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\n\n\nvar ngbFocusTrap = function ngbFocusTrap(zone, element, stopFocusTrap$) {\n  var refocusOnClick = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  zone.runOutsideAngular(function () {\n    // last focused element\n    var lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(function (e) {\n      return e.target;\n    })); // 'tab' / 'shift+tab' stream\n\n    fromEvent(element, 'keydown').pipe(takeUntil(stopFocusTrap$), // tslint:disable:deprecation\n    filter(function (e) {\n      return e.which === Key.Tab;\n    }), // tslint:enable:deprecation\n    withLatestFrom(lastFocusedElement$)).subscribe(function (_ref15) {\n      var _ref16 = _slicedToArray(_ref15, 2),\n          tabEvent = _ref16[0],\n          focusedElement = _ref16[1];\n\n      var _getFocusableBoundary = getFocusableBoundaryElements(element),\n          _getFocusableBoundary2 = _slicedToArray(_getFocusableBoundary, 2),\n          first = _getFocusableBoundary2[0],\n          last = _getFocusableBoundary2[1];\n\n      if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n        last.focus();\n        tabEvent.preventDefault();\n      }\n\n      if (focusedElement === last && !tabEvent.shiftKey) {\n        first.focus();\n        tabEvent.preventDefault();\n      }\n    }); // inside click\n\n    if (refocusOnClick) {\n      fromEvent(element, 'click').pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(function (arr) {\n        return arr[1];\n      })).subscribe(function (lastFocusedElement) {\n        return lastFocusedElement.focus();\n      });\n    }\n  });\n}; // previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\n\n\nvar Positioning = /*#__PURE__*/function () {\n  function Positioning() {\n    _classCallCheck(this, Positioning);\n  }\n\n  _createClass(Positioning, [{\n    key: \"getAllStyles\",\n    value: function getAllStyles(element) {\n      return window.getComputedStyle(element);\n    }\n  }, {\n    key: \"getStyle\",\n    value: function getStyle(element, prop) {\n      return this.getAllStyles(element)[prop];\n    }\n  }, {\n    key: \"isStaticPositioned\",\n    value: function isStaticPositioned(element) {\n      return (this.getStyle(element, 'position') || 'static') === 'static';\n    }\n  }, {\n    key: \"offsetParent\",\n    value: function offsetParent(element) {\n      var offsetParentEl = element.offsetParent || document.documentElement;\n\n      while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n        offsetParentEl = offsetParentEl.offsetParent;\n      }\n\n      return offsetParentEl || document.documentElement;\n    }\n  }, {\n    key: \"position\",\n    value: function position(element) {\n      var round = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var elPosition;\n      var parentOffset = {\n        width: 0,\n        height: 0,\n        top: 0,\n        bottom: 0,\n        left: 0,\n        right: 0\n      };\n\n      if (this.getStyle(element, 'position') === 'fixed') {\n        elPosition = element.getBoundingClientRect();\n        elPosition = {\n          top: elPosition.top,\n          bottom: elPosition.bottom,\n          left: elPosition.left,\n          right: elPosition.right,\n          height: elPosition.height,\n          width: elPosition.width\n        };\n      } else {\n        var offsetParentEl = this.offsetParent(element);\n        elPosition = this.offset(element, false);\n\n        if (offsetParentEl !== document.documentElement) {\n          parentOffset = this.offset(offsetParentEl, false);\n        }\n\n        parentOffset.top += offsetParentEl.clientTop;\n        parentOffset.left += offsetParentEl.clientLeft;\n      }\n\n      elPosition.top -= parentOffset.top;\n      elPosition.bottom -= parentOffset.top;\n      elPosition.left -= parentOffset.left;\n      elPosition.right -= parentOffset.left;\n\n      if (round) {\n        elPosition.top = Math.round(elPosition.top);\n        elPosition.bottom = Math.round(elPosition.bottom);\n        elPosition.left = Math.round(elPosition.left);\n        elPosition.right = Math.round(elPosition.right);\n      }\n\n      return elPosition;\n    }\n  }, {\n    key: \"offset\",\n    value: function offset(element) {\n      var round = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var elBcr = element.getBoundingClientRect();\n      var viewportOffset = {\n        top: window.pageYOffset - document.documentElement.clientTop,\n        left: window.pageXOffset - document.documentElement.clientLeft\n      };\n      var elOffset = {\n        height: elBcr.height || element.offsetHeight,\n        width: elBcr.width || element.offsetWidth,\n        top: elBcr.top + viewportOffset.top,\n        bottom: elBcr.bottom + viewportOffset.top,\n        left: elBcr.left + viewportOffset.left,\n        right: elBcr.right + viewportOffset.left\n      };\n\n      if (round) {\n        elOffset.height = Math.round(elOffset.height);\n        elOffset.width = Math.round(elOffset.width);\n        elOffset.top = Math.round(elOffset.top);\n        elOffset.bottom = Math.round(elOffset.bottom);\n        elOffset.left = Math.round(elOffset.left);\n        elOffset.right = Math.round(elOffset.right);\n      }\n\n      return elOffset;\n    }\n    /*\n      Return false if the element to position is outside the viewport\n    */\n\n  }, {\n    key: \"positionElements\",\n    value: function positionElements(hostElement, targetElement, placement, appendToBody) {\n      var _placement$split = placement.split('-'),\n          _placement$split2 = _slicedToArray(_placement$split, 2),\n          _placement$split2$ = _placement$split2[0],\n          placementPrimary = _placement$split2$ === void 0 ? 'top' : _placement$split2$,\n          _placement$split2$2 = _placement$split2[1],\n          placementSecondary = _placement$split2$2 === void 0 ? 'center' : _placement$split2$2;\n\n      var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n      var targetElStyles = this.getAllStyles(targetElement);\n      var marginTop = parseFloat(targetElStyles.marginTop);\n      var marginBottom = parseFloat(targetElStyles.marginBottom);\n      var marginLeft = parseFloat(targetElStyles.marginLeft);\n      var marginRight = parseFloat(targetElStyles.marginRight);\n      var topPosition = 0;\n      var leftPosition = 0;\n\n      switch (placementPrimary) {\n        case 'top':\n          topPosition = hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom);\n          break;\n\n        case 'bottom':\n          topPosition = hostElPosition.top + hostElPosition.height;\n          break;\n\n        case 'left':\n          leftPosition = hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight);\n          break;\n\n        case 'right':\n          leftPosition = hostElPosition.left + hostElPosition.width;\n          break;\n      }\n\n      switch (placementSecondary) {\n        case 'top':\n          topPosition = hostElPosition.top;\n          break;\n\n        case 'bottom':\n          topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n          break;\n\n        case 'left':\n          leftPosition = hostElPosition.left;\n          break;\n\n        case 'right':\n          leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n          break;\n\n        case 'center':\n          if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n            leftPosition = hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2;\n          } else {\n            topPosition = hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2;\n          }\n\n          break;\n      } /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n      // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n\n\n      targetElement.style.transform = \"translate(\".concat(Math.round(leftPosition), \"px, \").concat(Math.round(topPosition), \"px)\"); // Check if the targetElement is inside the viewport\n\n      var targetElBCR = targetElement.getBoundingClientRect();\n      var html = document.documentElement;\n      var windowHeight = window.innerHeight || html.clientHeight;\n      var windowWidth = window.innerWidth || html.clientWidth;\n      return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth && targetElBCR.bottom <= windowHeight;\n    }\n  }]);\n\n  return Positioning;\n}();\n\nvar placementSeparator = /\\s+/;\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n *   'top', 'bottom', 'left', 'right',\n *   'top-left', 'top-right',\n *   'bottom-left', 'bottom-right',\n *   'left-top', 'left-bottom',\n *   'right-top', 'right-bottom'.\n * */\n\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n  var placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n  var allowedPlacements = ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom', 'right-top', 'right-bottom'];\n  var classList = targetElement.classList;\n\n  var addClassesToTarget = function addClassesToTarget(targetPlacement) {\n    var _targetPlacement$spli = targetPlacement.split('-'),\n        _targetPlacement$spli2 = _slicedToArray(_targetPlacement$spli, 2),\n        primary = _targetPlacement$spli2[0],\n        secondary = _targetPlacement$spli2[1];\n\n    var classes = [];\n\n    if (baseClass) {\n      classes.push(\"\".concat(baseClass, \"-\").concat(primary));\n\n      if (secondary) {\n        classes.push(\"\".concat(baseClass, \"-\").concat(primary, \"-\").concat(secondary));\n      }\n\n      classes.forEach(function (classname) {\n        classList.add(classname);\n      });\n    }\n\n    return classes;\n  }; // Remove old placement classes to avoid issues\n\n\n  if (baseClass) {\n    allowedPlacements.forEach(function (placementToRemove) {\n      classList.remove(\"\".concat(baseClass, \"-\").concat(placementToRemove));\n    });\n  } // replace auto placement with other placements\n\n\n  var hasAuto = placementVals.findIndex(function (val) {\n    return val === 'auto';\n  });\n\n  if (hasAuto >= 0) {\n    allowedPlacements.forEach(function (obj) {\n      if (placementVals.find(function (val) {\n        return val.search('^' + obj) !== -1;\n      }) == null) {\n        placementVals.splice(hasAuto++, 1, obj);\n      }\n    });\n  } // coordinates where to position\n  // Required for transform:\n\n\n  var style = targetElement.style;\n  style.position = 'absolute';\n  style.top = '0';\n  style.left = '0';\n  style['will-change'] = 'transform';\n  var testPlacement = null;\n  var isInViewport = false;\n\n  var _iterator3 = _createForOfIteratorHelper(placementVals),\n      _step3;\n\n  try {\n    for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n      testPlacement = _step3.value;\n      var addedClasses = addClassesToTarget(testPlacement);\n\n      if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n        isInViewport = true;\n        break;\n      } // Remove the baseClasses for further calculation\n\n\n      if (baseClass) {\n        addedClasses.forEach(function (classname) {\n          classList.remove(classname);\n        });\n      }\n    }\n  } catch (err) {\n    _iterator3.e(err);\n  } finally {\n    _iterator3.f();\n  }\n\n  if (!isInViewport) {\n    // If nothing match, the first placement is the default one\n    testPlacement = placementVals[0];\n    addClassesToTarget(testPlacement);\n    positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n  }\n\n  return testPlacement;\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n  return new NgbDateISOParserFormatter();\n}\n\nvar NgbDateParserFormatter = /*@__PURE__*/function () {\n  var NgbDateParserFormatter = /*#__PURE__*/_createClass(function NgbDateParserFormatter() {\n    _classCallCheck(this, NgbDateParserFormatter);\n  });\n\n  NgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) {\n    return new (t || NgbDateParserFormatter)();\n  };\n\n  NgbDateParserFormatter.ɵprov = i0.ɵɵdefineInjectable({\n    factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY,\n    token: NgbDateParserFormatter,\n    providedIn: \"root\"\n  });\n  return NgbDateParserFormatter;\n}();\n\nvar NgbDateISOParserFormatter = /*@__PURE__*/function () {\n  var NgbDateISOParserFormatter = /*#__PURE__*/function (_NgbDateParserFormatt) {\n    _inherits(NgbDateISOParserFormatter, _NgbDateParserFormatt);\n\n    var _super4 = _createSuper(NgbDateISOParserFormatter);\n\n    function NgbDateISOParserFormatter() {\n      _classCallCheck(this, NgbDateISOParserFormatter);\n\n      return _super4.apply(this, arguments);\n    }\n\n    _createClass(NgbDateISOParserFormatter, [{\n      key: \"parse\",\n      value: function parse(value) {\n        if (value != null) {\n          var dateParts = value.trim().split('-');\n\n          if (dateParts.length === 1 && isNumber(dateParts[0])) {\n            return {\n              year: toInteger(dateParts[0]),\n              month: null,\n              day: null\n            };\n          } else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n            return {\n              year: toInteger(dateParts[0]),\n              month: toInteger(dateParts[1]),\n              day: null\n            };\n          } else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n            return {\n              year: toInteger(dateParts[0]),\n              month: toInteger(dateParts[1]),\n              day: toInteger(dateParts[2])\n            };\n          }\n        }\n\n        return null;\n      }\n    }, {\n      key: \"format\",\n      value: function format(date) {\n        return date ? \"\".concat(date.year, \"-\").concat(isNumber(date.month) ? padNumber(date.month) : '', \"-\").concat(isNumber(date.day) ? padNumber(date.day) : '') : '';\n      }\n    }]);\n\n    return NgbDateISOParserFormatter;\n  }(NgbDateParserFormatter);\n\n  NgbDateISOParserFormatter.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbDateISOParserFormatter_BaseFactory;\n    return function NgbDateISOParserFormatter_Factory(t) {\n      return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter);\n    };\n  }();\n\n  NgbDateISOParserFormatter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDateISOParserFormatter,\n    factory: NgbDateISOParserFormatter.ɵfac\n  });\n  return NgbDateISOParserFormatter;\n}();\n\nvar NgbInputDatepickerConfig = /*@__PURE__*/function () {\n  var NgbInputDatepickerConfig = /*#__PURE__*/function (_NgbDatepickerConfig) {\n    _inherits(NgbInputDatepickerConfig, _NgbDatepickerConfig);\n\n    var _super5 = _createSuper(NgbInputDatepickerConfig);\n\n    function NgbInputDatepickerConfig() {\n      var _this18;\n\n      _classCallCheck(this, NgbInputDatepickerConfig);\n\n      _this18 = _super5.apply(this, arguments);\n      _this18.autoClose = true;\n      _this18.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n      _this18.restoreFocus = true;\n      return _this18;\n    }\n\n    return _createClass(NgbInputDatepickerConfig);\n  }(NgbDatepickerConfig);\n\n  NgbInputDatepickerConfig.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbInputDatepickerConfig_BaseFactory;\n    return function NgbInputDatepickerConfig_Factory(t) {\n      return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig);\n    };\n  }();\n\n  NgbInputDatepickerConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbInputDatepickerConfig_Factory() {\n      return new NgbInputDatepickerConfig();\n    },\n    token: NgbInputDatepickerConfig,\n    providedIn: \"root\"\n  });\n  return NgbInputDatepickerConfig;\n}();\n\nvar NgbInputDatepicker = /*@__PURE__*/function () {\n  var NgbInputDatepicker = /*#__PURE__*/function () {\n    function NgbInputDatepicker(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\n      var _this19 = this;\n\n      _classCallCheck(this, NgbInputDatepicker);\n\n      this._parserFormatter = _parserFormatter;\n      this._elRef = _elRef;\n      this._vcRef = _vcRef;\n      this._renderer = _renderer;\n      this._cfr = _cfr;\n      this._ngZone = _ngZone;\n      this._calendar = _calendar;\n      this._dateAdapter = _dateAdapter;\n      this._document = _document;\n      this._changeDetector = _changeDetector;\n      this._cRef = null;\n      this._disabled = false;\n      this._elWithFocus = null;\n      this._model = null;\n      /**\n       * An event emitted when user selects a date using keyboard or mouse.\n       *\n       * The payload of the event is currently selected `NgbDate`.\n       *\n       * @since 1.1.1\n       */\n\n      this.dateSelect = new EventEmitter();\n      /**\n       * Event emitted right after the navigation happens and displayed month changes.\n       *\n       * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n       */\n\n      this.navigate = new EventEmitter();\n      /**\n       * An event fired after closing datepicker window.\n       *\n       * @since 4.2.0\n       */\n\n      this.closed = new EventEmitter();\n\n      this._onChange = function (_) {};\n\n      this._onTouched = function () {};\n\n      this._validatorChange = function () {};\n\n      ['autoClose', 'container', 'positionTarget', 'placement'].forEach(function (input) {\n        return _this19[input] = config[input];\n      });\n      this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n        return _this19._updatePopupPosition();\n      });\n    }\n\n    _createClass(NgbInputDatepicker, [{\n      key: \"disabled\",\n      get: function get() {\n        return this._disabled;\n      },\n      set: function set(value) {\n        this._disabled = value === '' || value && value !== 'false';\n\n        if (this.isOpen()) {\n          this._cRef.instance.setDisabledState(this._disabled);\n        }\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this._onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this._onTouched = fn;\n      }\n    }, {\n      key: \"registerOnValidatorChange\",\n      value: function registerOnValidatorChange(fn) {\n        this._validatorChange = fn;\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this.disabled = isDisabled;\n      }\n    }, {\n      key: \"validate\",\n      value: function validate(c) {\n        var value = c.value;\n\n        if (value != null) {\n          var ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\n          if (!ngbDate) {\n            return {\n              'ngbDate': {\n                invalid: value\n              }\n            };\n          }\n\n          if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n            return {\n              'ngbDate': {\n                minDate: {\n                  minDate: this.minDate,\n                  actual: value\n                }\n              }\n            };\n          }\n\n          if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n            return {\n              'ngbDate': {\n                maxDate: {\n                  maxDate: this.maxDate,\n                  actual: value\n                }\n              }\n            };\n          }\n        }\n\n        return null;\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\n        this._writeModelValue(this._model);\n      }\n    }, {\n      key: \"manualDateChange\",\n      value: function manualDateChange(value) {\n        var updateView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n        var inputValueChanged = value !== this._inputValue;\n\n        if (inputValueChanged) {\n          this._inputValue = value;\n          this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n        }\n\n        if (inputValueChanged || !updateView) {\n          this._onChange(this._model ? this._dateAdapter.toModel(this._model) : value === '' ? null : value);\n        }\n\n        if (updateView && this._model) {\n          this._writeModelValue(this._model);\n        }\n      }\n    }, {\n      key: \"isOpen\",\n      value: function isOpen() {\n        return !!this._cRef;\n      }\n      /**\n       * Opens the datepicker popup.\n       *\n       * If the related form control contains a valid date, the corresponding month will be opened.\n       */\n\n    }, {\n      key: \"open\",\n      value: function open() {\n        var _this20 = this;\n\n        if (!this.isOpen()) {\n          var cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n\n          this._cRef = this._vcRef.createComponent(cf);\n\n          this._applyPopupStyling(this._cRef.location.nativeElement);\n\n          this._applyDatepickerInputs(this._cRef.instance);\n\n          this._subscribeForDatepickerOutputs(this._cRef.instance);\n\n          this._cRef.instance.ngOnInit();\n\n          this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model)); // date selection event handling\n\n\n          this._cRef.instance.registerOnChange(function (selectedDate) {\n            _this20.writeValue(selectedDate);\n\n            _this20._onChange(selectedDate);\n\n            _this20._onTouched();\n          });\n\n          this._cRef.changeDetectorRef.detectChanges();\n\n          this._cRef.instance.setDisabledState(this.disabled);\n\n          if (this.container === 'body') {\n            this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n          } // focus handling\n\n\n          this._elWithFocus = this._document.activeElement;\n          ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n\n          this._cRef.instance.focus();\n\n          ngbAutoClose(this._ngZone, this._document, this.autoClose, function () {\n            return _this20.close();\n          }, this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n        }\n      }\n      /**\n       * Closes the datepicker popup.\n       */\n\n    }, {\n      key: \"close\",\n      value: function close() {\n        if (this.isOpen()) {\n          this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n\n          this._cRef = null;\n          this.closed.emit();\n\n          this._changeDetector.markForCheck(); // restore focus\n\n\n          var elementToFocus = this._elWithFocus;\n\n          if (isString(this.restoreFocus)) {\n            elementToFocus = this._document.querySelector(this.restoreFocus);\n          } else if (this.restoreFocus !== undefined) {\n            elementToFocus = this.restoreFocus;\n          } // in IE document.activeElement can contain an object without 'focus()' sometimes\n\n\n          if (elementToFocus && elementToFocus['focus']) {\n            elementToFocus.focus();\n          } else {\n            this._document.body.focus();\n          }\n        }\n      }\n      /**\n       * Toggles the datepicker popup.\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        if (this.isOpen()) {\n          this.close();\n        } else {\n          this.open();\n        }\n      }\n      /**\n       * Navigates to the provided date.\n       *\n       * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n       * If nothing or invalid date provided calendar will open current month.\n       *\n       * Use the `[startDate]` input as an alternative.\n       */\n\n    }, {\n      key: \"navigateTo\",\n      value: function navigateTo(date) {\n        if (this.isOpen()) {\n          this._cRef.instance.navigateTo(date);\n        }\n      }\n    }, {\n      key: \"onBlur\",\n      value: function onBlur() {\n        this._onTouched();\n      }\n    }, {\n      key: \"onFocus\",\n      value: function onFocus() {\n        this._elWithFocus = this._elRef.nativeElement;\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        if (changes['minDate'] || changes['maxDate']) {\n          this._validatorChange();\n\n          if (this.isOpen()) {\n            if (changes['minDate']) {\n              this._cRef.instance.minDate = this.minDate;\n            }\n\n            if (changes['maxDate']) {\n              this._cRef.instance.maxDate = this.maxDate;\n            }\n\n            this._cRef.instance.ngOnChanges(changes);\n          }\n        }\n\n        if (changes['datepickerClass']) {\n          var _changes$datepickerCl = changes['datepickerClass'],\n              currentValue = _changes$datepickerCl.currentValue,\n              previousValue = _changes$datepickerCl.previousValue;\n\n          this._applyPopupClass(currentValue, previousValue);\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this.close();\n\n        this._zoneSubscription.unsubscribe();\n      }\n    }, {\n      key: \"_applyDatepickerInputs\",\n      value: function _applyDatepickerInputs(datepickerInstance) {\n        var _this21 = this;\n\n        ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate', 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays'].forEach(function (optionName) {\n          if (_this21[optionName] !== undefined) {\n            datepickerInstance[optionName] = _this21[optionName];\n          }\n        });\n        datepickerInstance.startDate = this.startDate || this._model;\n      }\n    }, {\n      key: \"_applyPopupClass\",\n      value: function _applyPopupClass(newClass, oldClass) {\n        var _a;\n\n        var popupEl = (_a = this._cRef) === null || _a === void 0 ? void 0 : _a.location.nativeElement;\n\n        if (popupEl) {\n          if (newClass) {\n            this._renderer.addClass(popupEl, newClass);\n          }\n\n          if (oldClass) {\n            this._renderer.removeClass(popupEl, oldClass);\n          }\n        }\n      }\n    }, {\n      key: \"_applyPopupStyling\",\n      value: function _applyPopupStyling(nativeElement) {\n        this._renderer.addClass(nativeElement, 'dropdown-menu');\n\n        this._renderer.addClass(nativeElement, 'show');\n\n        if (this.container === 'body') {\n          this._renderer.addClass(nativeElement, 'ngb-dp-body');\n        }\n\n        this._applyPopupClass(this.datepickerClass);\n      }\n    }, {\n      key: \"_subscribeForDatepickerOutputs\",\n      value: function _subscribeForDatepickerOutputs(datepickerInstance) {\n        var _this22 = this;\n\n        datepickerInstance.navigate.subscribe(function (navigateEvent) {\n          return _this22.navigate.emit(navigateEvent);\n        });\n        datepickerInstance.dateSelect.subscribe(function (date) {\n          _this22.dateSelect.emit(date);\n\n          if (_this22.autoClose === true || _this22.autoClose === 'inside') {\n            _this22.close();\n          }\n        });\n      }\n    }, {\n      key: \"_writeModelValue\",\n      value: function _writeModelValue(model) {\n        var value = this._parserFormatter.format(model);\n\n        this._inputValue = value;\n\n        this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n\n        if (this.isOpen()) {\n          this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n\n          this._onTouched();\n        }\n      }\n    }, {\n      key: \"_fromDateStruct\",\n      value: function _fromDateStruct(date) {\n        var ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n        return this._calendar.isValid(ngbDate) ? ngbDate : null;\n      }\n    }, {\n      key: \"_updatePopupPosition\",\n      value: function _updatePopupPosition() {\n        if (!this._cRef) {\n          return;\n        }\n\n        var hostElement;\n\n        if (isString(this.positionTarget)) {\n          hostElement = this._document.querySelector(this.positionTarget);\n        } else if (this.positionTarget instanceof HTMLElement) {\n          hostElement = this.positionTarget;\n        } else {\n          hostElement = this._elRef.nativeElement;\n        }\n\n        if (this.positionTarget && !hostElement) {\n          throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n        }\n\n        positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n      }\n    }]);\n\n    return NgbInputDatepicker;\n  }();\n\n  NgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) {\n    return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbInputDatepickerConfig));\n  };\n\n  NgbInputDatepicker.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbInputDatepicker,\n    selectors: [[\"input\", \"ngbDatepicker\", \"\"]],\n    hostVars: 1,\n    hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) {\n          return ctx.manualDateChange($event.target.value);\n        })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) {\n          return ctx.manualDateChange($event.target.value, true);\n        })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() {\n          return ctx.onFocus();\n        })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() {\n          return ctx.onBlur();\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n      }\n    },\n    inputs: {\n      disabled: \"disabled\",\n      autoClose: \"autoClose\",\n      datepickerClass: \"datepickerClass\",\n      dayTemplate: \"dayTemplate\",\n      dayTemplateData: \"dayTemplateData\",\n      displayMonths: \"displayMonths\",\n      firstDayOfWeek: \"firstDayOfWeek\",\n      footerTemplate: \"footerTemplate\",\n      markDisabled: \"markDisabled\",\n      minDate: \"minDate\",\n      maxDate: \"maxDate\",\n      navigation: \"navigation\",\n      outsideDays: \"outsideDays\",\n      placement: \"placement\",\n      restoreFocus: \"restoreFocus\",\n      showWeekNumbers: \"showWeekNumbers\",\n      startDate: \"startDate\",\n      container: \"container\",\n      positionTarget: \"positionTarget\",\n      weekdays: \"weekdays\"\n    },\n    outputs: {\n      dateSelect: \"dateSelect\",\n      navigate: \"navigate\",\n      closed: \"closed\"\n    },\n    exportAs: [\"ngbDatepicker\"],\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbInputDatepicker;\n      }),\n      multi: true\n    }, {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(function () {\n        return NgbInputDatepicker;\n      }),\n      multi: true\n    }, {\n      provide: NgbDatepickerConfig,\n      useExisting: NgbInputDatepickerConfig\n    }]), ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbInputDatepicker;\n}();\n\nvar NgbDatepickerDayView = /*@__PURE__*/function () {\n  var NgbDatepickerDayView = /*#__PURE__*/function () {\n    function NgbDatepickerDayView(i18n) {\n      _classCallCheck(this, NgbDatepickerDayView);\n\n      this.i18n = i18n;\n    }\n\n    _createClass(NgbDatepickerDayView, [{\n      key: \"isMuted\",\n      value: function isMuted() {\n        return !this.selected && (this.date.month !== this.currentMonth || this.disabled);\n      }\n    }]);\n\n    return NgbDatepickerDayView;\n  }();\n\n  NgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) {\n    return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n));\n  };\n\n  NgbDatepickerDayView.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbDatepickerDayView,\n    selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]],\n    hostAttrs: [1, \"btn-light\"],\n    hostVars: 10,\n    hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n      }\n    },\n    inputs: {\n      currentMonth: \"currentMonth\",\n      date: \"date\",\n      disabled: \"disabled\",\n      focused: \"focused\",\n      selected: \"selected\"\n    },\n    attrs: _c20,\n    decls: 1,\n    vars: 1,\n    template: function NgbDatepickerDayView_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtext(0);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n      }\n    },\n    styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbDatepickerDayView;\n}();\n\nvar NgbDatepickerNavigationSelect = /*@__PURE__*/function () {\n  var NgbDatepickerNavigationSelect = /*#__PURE__*/function () {\n    function NgbDatepickerNavigationSelect(i18n, _renderer) {\n      _classCallCheck(this, NgbDatepickerNavigationSelect);\n\n      this.i18n = i18n;\n      this._renderer = _renderer;\n      this.select = new EventEmitter();\n      this._month = -1;\n      this._year = -1;\n    }\n\n    _createClass(NgbDatepickerNavigationSelect, [{\n      key: \"changeMonth\",\n      value: function changeMonth(month) {\n        this.select.emit(new NgbDate(this.date.year, toInteger(month), 1));\n      }\n    }, {\n      key: \"changeYear\",\n      value: function changeYear(year) {\n        this.select.emit(new NgbDate(toInteger(year), this.date.month, 1));\n      }\n    }, {\n      key: \"ngAfterViewChecked\",\n      value: function ngAfterViewChecked() {\n        if (this.date) {\n          if (this.date.month !== this._month) {\n            this._month = this.date.month;\n\n            this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n          }\n\n          if (this.date.year !== this._year) {\n            this._year = this.date.year;\n\n            this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n          }\n        }\n      }\n    }]);\n\n    return NgbDatepickerNavigationSelect;\n  }();\n\n  NgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) {\n    return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2));\n  };\n\n  NgbDatepickerNavigationSelect.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbDatepickerNavigationSelect,\n    selectors: [[\"ngb-datepicker-navigation-select\"]],\n    viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c21, 7, ElementRef);\n        ɵngcc0.ɵɵviewQuery(_c22, 7, ElementRef);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n      }\n    },\n    inputs: {\n      date: \"date\",\n      disabled: \"disabled\",\n      months: \"months\",\n      years: \"years\"\n    },\n    outputs: {\n      select: \"select\"\n    },\n    decls: 6,\n    vars: 4,\n    consts: function consts() {\n      var i18n_23;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24 = goog.getMsg(\"Select month\");\n        i18n_23 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24;\n      } else {\n        i18n_23 = $localize(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\":@@ngb.datepicker.select-month\\u241F1dbc84807f35518112f62e5775d1daebd3d8462b\\u241F2253869508135064750:Select month\"])));\n      }\n\n      var i18n_25;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26 = goog.getMsg(\"Select month\");\n        i18n_25 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26;\n      } else {\n        i18n_25 = $localize(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\":@@ngb.datepicker.select-month\\u241F1dbc84807f35518112f62e5775d1daebd3d8462b\\u241F2253869508135064750:Select month\"])));\n      }\n\n      var i18n_27;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28 = goog.getMsg(\"Select year\");\n        i18n_27 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28;\n      } else {\n        i18n_27 = $localize(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\":@@ngb.datepicker.select-year\\u241F8ceb09d002bf0c5d1cac171dfbffe1805d2b3962\\u241F8852264961585484321:Select year\"])));\n      }\n\n      var i18n_29;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30 = goog.getMsg(\"Select year\");\n        i18n_29 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30;\n      } else {\n        i18n_29 = $localize(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\":@@ngb.datepicker.select-year\\u241F8ceb09d002bf0c5d1cac171dfbffe1805d2b3962\\u241F8852264961585484321:Select year\"])));\n      }\n\n      return [[\"aria-label\", i18n_23, \"title\", i18n_25, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"month\", \"\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_27, \"title\", i18n_29, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"year\", \"\"], [3, \"value\"]];\n    },\n    template: function NgbDatepickerNavigationSelect_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"select\", 0, 1);\n        ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) {\n          return ctx.changeMonth($event.target.value);\n        });\n        ɵngcc0.ɵɵtemplate(2, NgbDatepickerNavigationSelect_option_2_Template, 2, 3, \"option\", 2);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(3, \"select\", 3, 4);\n        ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_3_listener($event) {\n          return ctx.changeYear($event.target.value);\n        });\n        ɵngcc0.ɵɵtemplate(5, NgbDatepickerNavigationSelect_option_5_Template, 2, 2, \"option\", 2);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵNgSelectMultipleOption],\n    styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbDatepickerNavigationSelect;\n}();\n\nvar NgbCalendarHijri = /*@__PURE__*/function () {\n  var NgbCalendarHijri = /*#__PURE__*/function (_NgbCalendar2) {\n    _inherits(NgbCalendarHijri, _NgbCalendar2);\n\n    var _super6 = _createSuper(NgbCalendarHijri);\n\n    function NgbCalendarHijri() {\n      _classCallCheck(this, NgbCalendarHijri);\n\n      return _super6.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarHijri, [{\n      key: \"getDaysPerWeek\",\n      value: function getDaysPerWeek() {\n        return 7;\n      }\n    }, {\n      key: \"getMonths\",\n      value: function getMonths() {\n        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n      }\n    }, {\n      key: \"getWeeksPerMonth\",\n      value: function getWeeksPerMonth() {\n        return 6;\n      }\n    }, {\n      key: \"getNext\",\n      value: function getNext(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        date = new NgbDate(date.year, date.month, date.day);\n\n        switch (period) {\n          case 'y':\n            date = this._setYear(date, date.year + number);\n            date.month = 1;\n            date.day = 1;\n            return date;\n\n          case 'm':\n            date = this._setMonth(date, date.month + number);\n            date.day = 1;\n            return date;\n\n          case 'd':\n            return this._setDay(date, date.day + number);\n\n          default:\n            return date;\n        }\n      }\n    }, {\n      key: \"getPrev\",\n      value: function getPrev(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        return this.getNext(date, period, -number);\n      }\n    }, {\n      key: \"getWeekday\",\n      value: function getWeekday(date) {\n        var day = this.toGregorian(date).getDay(); // in JS Date Sun=0, in ISO 8601 Sun=7\n\n        return day === 0 ? 7 : day;\n      }\n    }, {\n      key: \"getWeekNumber\",\n      value: function getWeekNumber(week, firstDayOfWeek) {\n        // in JS Date Sun=0, in ISO 8601 Sun=7\n        if (firstDayOfWeek === 7) {\n          firstDayOfWeek = 0;\n        }\n\n        var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n        var date = week[thursdayIndex];\n        var jsDate = this.toGregorian(date);\n        jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\n        var time = jsDate.getTime();\n        var MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n\n        return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n      }\n    }, {\n      key: \"getToday\",\n      value: function getToday() {\n        return this.fromGregorian(new Date());\n      }\n    }, {\n      key: \"isValid\",\n      value: function isValid(date) {\n        return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) && !isNaN(this.toGregorian(date).getTime());\n      }\n    }, {\n      key: \"_setDay\",\n      value: function _setDay(date, day) {\n        day = +day;\n        var mDays = this.getDaysPerMonth(date.month, date.year);\n\n        if (day <= 0) {\n          while (day <= 0) {\n            date = this._setMonth(date, date.month - 1);\n            mDays = this.getDaysPerMonth(date.month, date.year);\n            day += mDays;\n          }\n        } else if (day > mDays) {\n          while (day > mDays) {\n            day -= mDays;\n            date = this._setMonth(date, date.month + 1);\n            mDays = this.getDaysPerMonth(date.month, date.year);\n          }\n        }\n\n        date.day = day;\n        return date;\n      }\n    }, {\n      key: \"_setMonth\",\n      value: function _setMonth(date, month) {\n        month = +month;\n        date.year = date.year + Math.floor((month - 1) / 12);\n        date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n        return date;\n      }\n    }, {\n      key: \"_setYear\",\n      value: function _setYear(date, year) {\n        date.year = +year;\n        return date;\n      }\n    }]);\n\n    return NgbCalendarHijri;\n  }(NgbCalendar);\n\n  NgbCalendarHijri.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarHijri_BaseFactory;\n    return function NgbCalendarHijri_Factory(t) {\n      return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri);\n    };\n  }();\n\n  NgbCalendarHijri.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarHijri,\n    factory: NgbCalendarHijri.ɵfac\n  });\n  return NgbCalendarHijri;\n}();\n/**\n * Checks if islamic year is a leap year\n */\n\n\nfunction isIslamicLeapYear(hYear) {\n  return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\n\n\nfunction isGregorianLeapYear$1(gDate) {\n  var year = gDate.getFullYear();\n  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n\n\nfunction getIslamicMonthStart(hYear, hMonth) {\n  return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\n\n\nfunction getIslamicYearStart(year) {\n  return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n\nfunction mod$1(a, b) {\n  return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\n\n\nvar GREGORIAN_EPOCH$1 = 1721425.5;\nvar ISLAMIC_EPOCH = 1948439.5;\n\nvar NgbCalendarIslamicCivil = /*@__PURE__*/function () {\n  var NgbCalendarIslamicCivil = /*#__PURE__*/function (_NgbCalendarHijri) {\n    _inherits(NgbCalendarIslamicCivil, _NgbCalendarHijri);\n\n    var _super7 = _createSuper(NgbCalendarIslamicCivil);\n\n    function NgbCalendarIslamicCivil() {\n      _classCallCheck(this, NgbCalendarIslamicCivil);\n\n      return _super7.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarIslamicCivil, [{\n      key: \"fromGregorian\",\n      value:\n      /**\n       * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n       * `gDate` is a JS Date to be converted to Hijri.\n       */\n      function fromGregorian(gDate) {\n        var gYear = gDate.getFullYear(),\n            gMonth = gDate.getMonth(),\n            gDay = gDate.getDate();\n        var julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) + -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) + Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gDate) ? -1 : -2) + gDay);\n        julianDay = Math.floor(julianDay) + 0.5;\n        var days = julianDay - ISLAMIC_EPOCH;\n        var hYear = Math.floor((30 * days + 10646) / 10631.0);\n        var hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n        hMonth = Math.min(hMonth, 11);\n        var hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n        return new NgbDate(hYear, hMonth + 1, hDay);\n      }\n      /**\n       * Returns the equivalent JS date value for a give input islamic(civil) date.\n       * `hDate` is an islamic(civil) date to be converted to Gregorian.\n       */\n\n    }, {\n      key: \"toGregorian\",\n      value: function toGregorian(hDate) {\n        var hYear = hDate.year;\n        var hMonth = hDate.month - 1;\n        var hDay = hDate.day;\n        var julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n        var wjd = Math.floor(julianDay - 0.5) + 0.5,\n            depoch = wjd - GREGORIAN_EPOCH$1,\n            quadricent = Math.floor(depoch / 146097),\n            dqc = mod$1(depoch, 146097),\n            cent = Math.floor(dqc / 36524),\n            dcent = mod$1(dqc, 36524),\n            quad = Math.floor(dcent / 1461),\n            dquad = mod$1(dcent, 1461),\n            yindex = Math.floor(dquad / 365);\n        var year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n\n        if (!(cent === 4 || yindex === 4)) {\n          year++;\n        }\n\n        var gYearStart = GREGORIAN_EPOCH$1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400);\n        var yearday = wjd - gYearStart;\n        var tjd = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear$1(new Date(year, 3, 1)) ? -1 : -2) + 1);\n        var leapadj = wjd < tjd ? 0 : isGregorianLeapYear$1(new Date(year, 3, 1)) ? 1 : 2;\n        var month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n        var tjd2 = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400) + Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear$1(new Date(year, month - 1, 1)) ? -1 : -2) + 1);\n        var day = wjd - tjd2 + 1;\n        return new Date(year, month - 1, day);\n      }\n      /**\n       * Returns the number of days in a specific Hijri month.\n       * `month` is 1 for Muharram, 2 for Safar, etc.\n       * `year` is any Hijri year.\n       */\n\n    }, {\n      key: \"getDaysPerMonth\",\n      value: function getDaysPerMonth(month, year) {\n        year = year + Math.floor(month / 13);\n        month = (month - 1) % 12 + 1;\n        var length = 29 + month % 2;\n\n        if (month === 12 && isIslamicLeapYear(year)) {\n          length++;\n        }\n\n        return length;\n      }\n    }]);\n\n    return NgbCalendarIslamicCivil;\n  }(NgbCalendarHijri);\n\n  NgbCalendarIslamicCivil.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarIslamicCivil_BaseFactory;\n    return function NgbCalendarIslamicCivil_Factory(t) {\n      return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil);\n    };\n  }();\n\n  NgbCalendarIslamicCivil.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarIslamicCivil,\n    factory: NgbCalendarIslamicCivil.ɵfac\n  });\n  return NgbCalendarIslamicCivil;\n}();\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\n\n\nvar GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nvar GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nvar HIJRI_BEGIN = 1300;\nvar HIJRI_END = 1600;\nvar ONE_DAY = 1000 * 60 * 60 * 24;\nvar MONTH_LENGTH = [// 1300-1304\n'101010101010', '110101010100', '111011001001', '011011010100', '011011101010', // 1305-1309\n'001101101100', '101010101101', '010101010101', '011010101001', '011110010010', // 1310-1314\n'101110101001', '010111010100', '101011011010', '010101011100', '110100101101', // 1315-1319\n'011010010101', '011101001010', '101101010100', '101101101010', '010110101101', // 1320-1324\n'010010101110', '101001001111', '010100010111', '011010001011', '011010100101', // 1325-1329\n'101011010101', '001011010110', '100101011011', '010010011101', '101001001101', // 1330-1334\n'110100100110', '110110010101', '010110101100', '100110110110', '001010111010', // 1335-1339\n'101001011011', '010100101011', '101010010101', '011011001010', '101011101001', // 1340-1344\n'001011110100', '100101110110', '001010110110', '100101010110', '101011001010', // 1345-1349\n'101110100100', '101111010010', '010111011001', '001011011100', '100101101101', // 1350-1354\n'010101001101', '101010100101', '101101010010', '101110100101', '010110110100', // 1355-1359\n'100110110110', '010101010111', '001010010111', '010101001011', '011010100011', // 1360-1364\n'011101010010', '101101100101', '010101101010', '101010101011', '010100101011', // 1365-1369\n'110010010101', '110101001010', '110110100101', '010111001010', '101011010110', // 1370-1374\n'100101010111', '010010101011', '100101001011', '101010100101', '101101010010', // 1375-1379\n'101101101010', '010101110101', '001001110110', '100010110111', '010001011011', // 1380-1384\n'010101010101', '010110101001', '010110110100', '100111011010', '010011011101', // 1385-1389\n'001001101110', '100100110110', '101010101010', '110101010100', '110110110010', // 1390-1394\n'010111010101', '001011011010', '100101011011', '010010101011', '101001010101', // 1395-1399\n'101101001001', '101101100100', '101101110001', '010110110100', '101010110101', // 1400-1404\n'101001010101', '110100100101', '111010010010', '111011001001', '011011010100', // 1405-1409\n'101011101001', '100101101011', '010010101011', '101010010011', '110101001001', // 1410-1414\n'110110100100', '110110110010', '101010111001', '010010111010', '101001011011', // 1415-1419\n'010100101011', '101010010101', '101100101010', '101101010101', '010101011100', // 1420-1424\n'010010111101', '001000111101', '100100011101', '101010010101', '101101001010', // 1425-1429\n'101101011010', '010101101101', '001010110110', '100100111011', '010010011011', // 1430-1434\n'011001010101', '011010101001', '011101010100', '101101101010', '010101101100', // 1435-1439\n'101010101101', '010101010101', '101100101001', '101110010010', '101110101001', // 1440-1444\n'010111010100', '101011011010', '010101011010', '101010101011', '010110010101', // 1445-1449\n'011101001001', '011101100100', '101110101010', '010110110101', '001010110110', // 1450-1454\n'101001010110', '111001001101', '101100100101', '101101010010', '101101101010', // 1455-1459\n'010110101101', '001010101110', '100100101111', '010010010111', '011001001011', // 1460-1464\n'011010100101', '011010101100', '101011010110', '010101011101', '010010011101', // 1465-1469\n'101001001101', '110100010110', '110110010101', '010110101010', '010110110101', // 1470-1474\n'001011011010', '100101011011', '010010101101', '010110010101', '011011001010', // 1475-1479\n'011011100100', '101011101010', '010011110101', '001010110110', '100101010110', // 1480-1484\n'101010101010', '101101010100', '101111010010', '010111011001', '001011101010', // 1485-1489\n'100101101101', '010010101101', '101010010101', '101101001010', '101110100101', // 1490-1494\n'010110110010', '100110110101', '010011010110', '101010010111', '010101000111', // 1495-1499\n'011010010011', '011101001001', '101101010101', '010101101010', '101001101011', // 1500-1504\n'010100101011', '101010001011', '110101000110', '110110100011', '010111001010', // 1505-1509\n'101011010110', '010011011011', '001001101011', '100101001011', '101010100101', // 1510-1514\n'101101010010', '101101101001', '010101110101', '000101110110', '100010110111', // 1515-1519\n'001001011011', '010100101011', '010101100101', '010110110100', '100111011010', // 1520-1524\n'010011101101', '000101101101', '100010110110', '101010100110', '110101010010', // 1525-1529\n'110110101001', '010111010100', '101011011010', '100101011011', '010010101011', // 1530-1534\n'011001010011', '011100101001', '011101100010', '101110101001', '010110110010', // 1535-1539\n'101010110101', '010101010101', '101100100101', '110110010010', '111011001001', // 1540-1544\n'011011010010', '101011101001', '010101101011', '010010101011', '101001010101', // 1545-1549\n'110100101001', '110101010100', '110110101010', '100110110101', '010010111010', // 1550-1554\n'101000111011', '010010011011', '101001001101', '101010101010', '101011010101', // 1555-1559\n'001011011010', '100101011101', '010001011110', '101000101110', '110010011010', // 1560-1564\n'110101010101', '011010110010', '011010111001', '010010111010', '101001011101', // 1565-1569\n'010100101101', '101010010101', '101101010010', '101110101000', '101110110100', // 1570-1574\n'010110111001', '001011011010', '100101011010', '101101001010', '110110100100', // 1575-1579\n'111011010001', '011011101000', '101101101010', '010101101101', '010100110101', // 1580-1584\n'011010010101', '110101001010', '110110101000', '110111010100', '011011011010', // 1585-1589\n'010101011011', '001010011101', '011000101011', '101100010101', '101101001010', // 1590-1594\n'101110010101', '010110101010', '101010101110', '100100101110', '110010001111', // 1595-1599\n'010100100111', '011010010101', '011010101010', '101011010110', '010101011101', // 1600\n'001010011101'];\n\nfunction getDaysDiff(date1, date2) {\n  // Ignores the time part in date1 and date2:\n  var time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n  var time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n  var diff = Math.abs(time1 - time2);\n  return Math.round(diff / ONE_DAY);\n}\n\nvar NgbCalendarIslamicUmalqura = /*@__PURE__*/function () {\n  var NgbCalendarIslamicUmalqura = /*#__PURE__*/function (_NgbCalendarIslamicCi) {\n    _inherits(NgbCalendarIslamicUmalqura, _NgbCalendarIslamicCi);\n\n    var _super8 = _createSuper(NgbCalendarIslamicUmalqura);\n\n    function NgbCalendarIslamicUmalqura() {\n      _classCallCheck(this, NgbCalendarIslamicUmalqura);\n\n      return _super8.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarIslamicUmalqura, [{\n      key: \"fromGregorian\",\n      value:\n      /**\n      * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n      * `gdate` is s JS Date to be converted to Hijri.\n      */\n      function fromGregorian(gDate) {\n        var hDay = 1,\n            hMonth = 0,\n            hYear = 1300;\n        var daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n\n        if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n          var year = 1300;\n\n          for (var i = 0; i < MONTH_LENGTH.length; i++, year++) {\n            for (var j = 0; j < 12; j++) {\n              var numOfDays = +MONTH_LENGTH[i][j] + 29;\n\n              if (daysDiff <= numOfDays) {\n                hDay = daysDiff + 1;\n\n                if (hDay > numOfDays) {\n                  hDay = 1;\n                  j++;\n                }\n\n                if (j > 11) {\n                  j = 0;\n                  year++;\n                }\n\n                hMonth = j;\n                hYear = year;\n                return new NgbDate(hYear, hMonth + 1, hDay);\n              }\n\n              daysDiff = daysDiff - numOfDays;\n            }\n          }\n\n          return null;\n        } else {\n          return _get(_getPrototypeOf(NgbCalendarIslamicUmalqura.prototype), \"fromGregorian\", this).call(this, gDate);\n        }\n      }\n      /**\n      * Converts the current Hijri date to Gregorian.\n      */\n\n    }, {\n      key: \"toGregorian\",\n      value: function toGregorian(hDate) {\n        var hYear = hDate.year;\n        var hMonth = hDate.month - 1;\n        var hDay = hDate.day;\n        var gDate = new Date(GREGORIAN_FIRST_DATE);\n        var dayDiff = hDay - 1;\n\n        if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n          for (var y = 0; y < hYear - HIJRI_BEGIN; y++) {\n            for (var m = 0; m < 12; m++) {\n              dayDiff += +MONTH_LENGTH[y][m] + 29;\n            }\n          }\n\n          for (var _m = 0; _m < hMonth; _m++) {\n            dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][_m] + 29;\n          }\n\n          gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n        } else {\n          gDate = _get(_getPrototypeOf(NgbCalendarIslamicUmalqura.prototype), \"toGregorian\", this).call(this, hDate);\n        }\n\n        return gDate;\n      }\n      /**\n      * Returns the number of days in a specific Hijri hMonth.\n      * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n      * `hYear` is any Hijri hYear.\n      */\n\n    }, {\n      key: \"getDaysPerMonth\",\n      value: function getDaysPerMonth(hMonth, hYear) {\n        if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n          var pos = hYear - HIJRI_BEGIN;\n          return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n        }\n\n        return _get(_getPrototypeOf(NgbCalendarIslamicUmalqura.prototype), \"getDaysPerMonth\", this).call(this, hMonth, hYear);\n      }\n    }]);\n\n    return NgbCalendarIslamicUmalqura;\n  }(NgbCalendarIslamicCivil);\n\n  NgbCalendarIslamicUmalqura.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarIslamicUmalqura_BaseFactory;\n    return function NgbCalendarIslamicUmalqura_Factory(t) {\n      return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura);\n    };\n  }();\n\n  NgbCalendarIslamicUmalqura.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarIslamicUmalqura,\n    factory: NgbCalendarIslamicUmalqura.ɵfac\n  });\n  return NgbCalendarIslamicUmalqura;\n}();\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\n\n\nfunction toGregorian$2(jalaliDate) {\n  var jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n  var date = julianToGregorian(jdn);\n  date.setHours(6, 30, 3, 200);\n  return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\n\n\nfunction fromGregorian$2(gdate) {\n  var g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n  return julianToJalali(g2d);\n}\n\nfunction setJalaliYear(date, yearValue) {\n  date.year = +yearValue;\n  return date;\n}\n\nfunction setJalaliMonth(date, month) {\n  month = +month;\n  date.year = date.year + Math.floor((month - 1) / 12);\n  date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n  return date;\n}\n\nfunction setJalaliDay(date, day) {\n  var mDays = getDaysPerMonth(date.month, date.year);\n\n  if (day <= 0) {\n    while (day <= 0) {\n      date = setJalaliMonth(date, date.month - 1);\n      mDays = getDaysPerMonth(date.month, date.year);\n      day += mDays;\n    }\n  } else if (day > mDays) {\n    while (day > mDays) {\n      day -= mDays;\n      date = setJalaliMonth(date, date.month + 1);\n      mDays = getDaysPerMonth(date.month, date.year);\n    }\n  }\n\n  date.day = day;\n  return date;\n}\n\nfunction mod(a, b) {\n  return a - b * Math.floor(a / b);\n}\n\nfunction div(a, b) {\n  return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\n\n\nfunction jalCal(jalaliYear) {\n  // Jalali years starting the 33-year rule.\n  var breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n  var breaksLength = breaks.length;\n  var gYear = jalaliYear + 621;\n  var leapJ = -14;\n  var jp = breaks[0];\n\n  if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n    throw new Error('Invalid Jalali year ' + jalaliYear);\n  } // Find the limiting years for the Jalali year jalaliYear.\n\n\n  var jump;\n\n  for (var i = 1; i < breaksLength; i += 1) {\n    var jm = breaks[i];\n    jump = jm - jp;\n\n    if (jalaliYear < jm) {\n      break;\n    }\n\n    leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n    jp = jm;\n  }\n\n  var n = jalaliYear - jp; // Find the number of leap years from AD 621 to the beginning\n  // of the current Jalali year in the Persian calendar.\n\n  leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n\n  if (mod(jump, 33) === 4 && jump - n === 4) {\n    leapJ += 1;\n  } // And the same in the Gregorian calendar (until the year gYear).\n\n\n  var leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150; // Determine the Gregorian date of Farvardin the 1st.\n\n  var march = 20 + leapJ - leapG; // Find how many years have passed since the last leap year.\n\n  if (jump - n < 6) {\n    n = n - jump + div(jump + 4, 33) * 33;\n  }\n\n  var leap = mod(mod(n + 1, 33) - 1, 4);\n\n  if (leap === -1) {\n    leap = 4;\n  }\n\n  return {\n    leap: leap,\n    gy: gYear,\n    march: march\n  };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\n\n\nfunction julianToGregorian(julianDayNumber) {\n  var j = 4 * julianDayNumber + 139361631;\n  j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n  var i = div(mod(j, 1461), 4) * 5 + 308;\n  var gDay = div(mod(i, 153), 5) + 1;\n  var gMonth = mod(div(i, 153), 12) + 1;\n  var gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n  return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\n\n\nfunction gregorianToJulian(gy, gm, gd) {\n  var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n  d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n  return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\n\n\nfunction julianToJalali(julianDayNumber) {\n  var gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n  ,\n      jalaliYear = gy - 621,\n      r = jalCal(jalaliYear),\n      gregorianDay = gregorianToJulian(gy, 3, r.march),\n      jalaliDay,\n      jalaliMonth,\n      numberOfDays; // Find number of days that passed since 1 Farvardin.\n\n  numberOfDays = julianDayNumber - gregorianDay;\n\n  if (numberOfDays >= 0) {\n    if (numberOfDays <= 185) {\n      // The first 6 months.\n      jalaliMonth = 1 + div(numberOfDays, 31);\n      jalaliDay = mod(numberOfDays, 31) + 1;\n      return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n    } else {\n      // The remaining months.\n      numberOfDays -= 186;\n    }\n  } else {\n    // Previous Jalali year.\n    jalaliYear -= 1;\n    numberOfDays += 179;\n\n    if (r.leap === 1) {\n      numberOfDays += 1;\n    }\n  }\n\n  jalaliMonth = 7 + div(numberOfDays, 30);\n  jalaliDay = mod(numberOfDays, 30) + 1;\n  return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\n\n\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n  var r = jalCal(jYear);\n  return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\n\n\nfunction getDaysPerMonth(month, year) {\n  if (month <= 6) {\n    return 31;\n  }\n\n  if (month <= 11) {\n    return 30;\n  }\n\n  if (jalCal(year).leap === 0) {\n    return 30;\n  }\n\n  return 29;\n}\n\nvar NgbCalendarPersian = /*@__PURE__*/function () {\n  var NgbCalendarPersian = /*#__PURE__*/function (_NgbCalendar3) {\n    _inherits(NgbCalendarPersian, _NgbCalendar3);\n\n    var _super9 = _createSuper(NgbCalendarPersian);\n\n    function NgbCalendarPersian() {\n      _classCallCheck(this, NgbCalendarPersian);\n\n      return _super9.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarPersian, [{\n      key: \"getDaysPerWeek\",\n      value: function getDaysPerWeek() {\n        return 7;\n      }\n    }, {\n      key: \"getMonths\",\n      value: function getMonths() {\n        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n      }\n    }, {\n      key: \"getWeeksPerMonth\",\n      value: function getWeeksPerMonth() {\n        return 6;\n      }\n    }, {\n      key: \"getNext\",\n      value: function getNext(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        date = new NgbDate(date.year, date.month, date.day);\n\n        switch (period) {\n          case 'y':\n            date = setJalaliYear(date, date.year + number);\n            date.month = 1;\n            date.day = 1;\n            return date;\n\n          case 'm':\n            date = setJalaliMonth(date, date.month + number);\n            date.day = 1;\n            return date;\n\n          case 'd':\n            return setJalaliDay(date, date.day + number);\n\n          default:\n            return date;\n        }\n      }\n    }, {\n      key: \"getPrev\",\n      value: function getPrev(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        return this.getNext(date, period, -number);\n      }\n    }, {\n      key: \"getWeekday\",\n      value: function getWeekday(date) {\n        var day = toGregorian$2(date).getDay(); // in JS Date Sun=0, in ISO 8601 Sun=7\n\n        return day === 0 ? 7 : day;\n      }\n    }, {\n      key: \"getWeekNumber\",\n      value: function getWeekNumber(week, firstDayOfWeek) {\n        // in JS Date Sun=0, in ISO 8601 Sun=7\n        if (firstDayOfWeek === 7) {\n          firstDayOfWeek = 0;\n        }\n\n        var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n        var date = week[thursdayIndex];\n        var jsDate = toGregorian$2(date);\n        jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\n        var time = jsDate.getTime();\n        var startDate = toGregorian$2(new NgbDate(date.year, 1, 1));\n        return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n      }\n    }, {\n      key: \"getToday\",\n      value: function getToday() {\n        return fromGregorian$2(new Date());\n      }\n    }, {\n      key: \"isValid\",\n      value: function isValid(date) {\n        return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) && !isNaN(toGregorian$2(date).getTime());\n      }\n    }]);\n\n    return NgbCalendarPersian;\n  }(NgbCalendar);\n\n  NgbCalendarPersian.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarPersian_BaseFactory;\n    return function NgbCalendarPersian_Factory(t) {\n      return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian);\n    };\n  }();\n\n  NgbCalendarPersian.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarPersian,\n    factory: NgbCalendarPersian.ɵfac\n  });\n  return NgbCalendarPersian;\n}();\n\nvar PARTS_PER_HOUR = 1080;\nvar PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nvar PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nvar PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nvar BAHARAD = 11 * PARTS_PER_HOUR + 204;\nvar HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nvar GREGORIAN_EPOCH = 1721425.5;\n\nfunction isGregorianLeapYear(year) {\n  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n\nfunction numberOfFirstDayInYear(year) {\n  var monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n  var fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n  var dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n  var timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n  var dayOfWeek = dayNumber % 7; // 0 == Monday\n\n  if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n    dayNumber++;\n    dayOfWeek = dayNumber % 7;\n  }\n\n  if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n    dayNumber += 2;\n  } else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n    dayNumber++;\n  }\n\n  return dayNumber;\n}\n\nfunction getDaysInGregorianMonth(month, year) {\n  var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n  if (isGregorianLeapYear(year)) {\n    days[1]++;\n  }\n\n  return days[month - 1];\n}\n\nfunction getHebrewMonths(year) {\n  return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\n\n\nfunction getDaysInHebrewYear(year) {\n  return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n\nfunction isHebrewLeapYear(year) {\n  if (year != null) {\n    var b = (year * 12 + 17) % 19;\n    return b >= (b < 0 ? -7 : 12);\n  }\n\n  return false;\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\n\n\nfunction getDaysInHebrewMonth(month, year) {\n  var yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n  var yearType = (yearLength <= 380 ? yearLength : yearLength - 30) - 353;\n  var leapYear = isHebrewLeapYear(year);\n  var daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] : [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n\n  if (yearType > 0) {\n    daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n  }\n\n  if (yearType > 1) {\n    daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n  }\n\n  return daysInMonth[month - 1];\n}\n\nfunction getDayNumberInHebrewYear(date) {\n  var numberOfDay = 0;\n\n  for (var i = 1; i < date.month; i++) {\n    numberOfDay += getDaysInHebrewMonth(i, date.year);\n  }\n\n  return numberOfDay + date.day;\n}\n\nfunction setHebrewMonth(date, val) {\n  var after = val >= 0;\n\n  if (!after) {\n    val = -val;\n  }\n\n  while (val > 0) {\n    if (after) {\n      if (val > getHebrewMonths(date.year) - date.month) {\n        val -= getHebrewMonths(date.year) - date.month + 1;\n        date.year++;\n        date.month = 1;\n      } else {\n        date.month += val;\n        val = 0;\n      }\n    } else {\n      if (val >= date.month) {\n        date.year--;\n        val -= date.month;\n        date.month = getHebrewMonths(date.year);\n      } else {\n        date.month -= val;\n        val = 0;\n      }\n    }\n  }\n\n  return date;\n}\n\nfunction setHebrewDay(date, val) {\n  var after = val >= 0;\n\n  if (!after) {\n    val = -val;\n  }\n\n  while (val > 0) {\n    if (after) {\n      if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n        val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n        date.year++;\n        date.month = 1;\n        date.day = 1;\n      } else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n        val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n        date.month++;\n        date.day = 1;\n      } else {\n        date.day += val;\n        val = 0;\n      }\n    } else {\n      if (val >= date.day) {\n        val -= date.day;\n        date.month--;\n\n        if (date.month === 0) {\n          date.year--;\n          date.month = getHebrewMonths(date.year);\n        }\n\n        date.day = getDaysInHebrewMonth(date.month, date.year);\n      } else {\n        date.day -= val;\n        val = 0;\n      }\n    }\n  }\n\n  return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\n\n\nfunction fromGregorian$1(gdate) {\n  var date = new Date(gdate);\n  var gYear = date.getFullYear(),\n      gMonth = date.getMonth(),\n      gDay = date.getDate();\n  var julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) - Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) + Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n  julianDay = Math.floor(julianDay + 0.5);\n  var daysSinceHebEpoch = julianDay - 347997;\n  var monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n  var hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n  var firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n  var dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n\n  while (dayOfYear < 1) {\n    hYear--;\n    firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n    dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n  }\n\n  var hMonth = 1;\n  var hDay = dayOfYear;\n\n  while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n    hDay -= getDaysInHebrewMonth(hMonth, hYear);\n    hMonth++;\n  }\n\n  return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\n\n\nfunction toGregorian$1(hebrewDate) {\n  var hYear = hebrewDate.year;\n  var hMonth = hebrewDate.month;\n  var hDay = hebrewDate.day;\n  var days = numberOfFirstDayInYear(hYear);\n\n  for (var i = 1; i < hMonth; i++) {\n    days += getDaysInHebrewMonth(i, hYear);\n  }\n\n  days += hDay;\n  var diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n  var after = diffDays >= 0;\n\n  if (!after) {\n    diffDays = -diffDays;\n  }\n\n  var gYear = 1970;\n  var gMonth = 1;\n  var gDay = 1;\n\n  while (diffDays > 0) {\n    if (after) {\n      if (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n        diffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n        gYear++;\n      } else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n        diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n        gMonth++;\n      } else {\n        gDay += diffDays;\n        diffDays = 0;\n      }\n    } else {\n      if (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n        diffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n        gYear--;\n      } else {\n        if (gMonth > 1) {\n          gMonth--;\n        } else {\n          gMonth = 12;\n          gYear--;\n        }\n\n        if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n          diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n        } else {\n          gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n          diffDays = 0;\n        }\n      }\n    }\n  }\n\n  return new Date(gYear, gMonth - 1, gDay);\n}\n\nfunction hebrewNumerals(numerals) {\n  if (!numerals) {\n    return '';\n  }\n\n  var hArray0_9 = ['', \"\\u05D0\", \"\\u05D1\", \"\\u05D2\", \"\\u05D3\", \"\\u05D4\", \"\\u05D5\", \"\\u05D6\", \"\\u05D7\", \"\\u05D8\"];\n  var hArray10_19 = [\"\\u05D9\", \"\\u05D9\\u05D0\", \"\\u05D9\\u05D1\", \"\\u05D9\\u05D2\", \"\\u05D9\\u05D3\", \"\\u05D8\\u05D5\", \"\\u05D8\\u05D6\", \"\\u05D9\\u05D6\", \"\\u05D9\\u05D7\", \"\\u05D9\\u05D8\"];\n  var hArray20_90 = ['', '', \"\\u05DB\", \"\\u05DC\", \"\\u05DE\", \"\\u05E0\", \"\\u05E1\", \"\\u05E2\", \"\\u05E4\", \"\\u05E6\"];\n  var hArray100_900 = ['', \"\\u05E7\", \"\\u05E8\", \"\\u05E9\", \"\\u05EA\", \"\\u05EA\\u05E7\", \"\\u05EA\\u05E8\", \"\\u05EA\\u05E9\", \"\\u05EA\\u05EA\", \"\\u05EA\\u05EA\\u05E7\"];\n  var hArray1000_9000 = ['', \"\\u05D0\", \"\\u05D1\", \"\\u05D1\\u05D0\", \"\\u05D1\\u05D1\", \"\\u05D4\", \"\\u05D4\\u05D0\", \"\\u05D4\\u05D1\", \"\\u05D4\\u05D1\\u05D0\", \"\\u05D4\\u05D1\\u05D1\"];\n  var geresh = \"\\u05F3\",\n      gershaim = \"\\u05F4\";\n  var mem = 0;\n  var result = [];\n  var step = 0;\n\n  while (numerals > 0) {\n    var m = numerals % 10;\n\n    if (step === 0) {\n      mem = m;\n    } else if (step === 1) {\n      if (m !== 1) {\n        result.unshift(hArray20_90[m], hArray0_9[mem]);\n      } else {\n        result.unshift(hArray10_19[mem]);\n      }\n    } else if (step === 2) {\n      result.unshift(hArray100_900[m]);\n    } else {\n      if (m !== 5) {\n        result.unshift(hArray1000_9000[m], geresh, ' ');\n      }\n\n      break;\n    }\n\n    numerals = Math.floor(numerals / 10);\n\n    if (step === 0 && numerals === 0) {\n      result.unshift(hArray0_9[m]);\n    }\n\n    step++;\n  }\n\n  result = result.join('').split('');\n\n  if (result.length === 1) {\n    result.push(geresh);\n  } else if (result.length > 1) {\n    result.splice(result.length - 1, 0, gershaim);\n  }\n\n  return result.join('');\n}\n\nvar NgbCalendarHebrew = /*@__PURE__*/function () {\n  var NgbCalendarHebrew = /*#__PURE__*/function (_NgbCalendar4) {\n    _inherits(NgbCalendarHebrew, _NgbCalendar4);\n\n    var _super10 = _createSuper(NgbCalendarHebrew);\n\n    function NgbCalendarHebrew() {\n      _classCallCheck(this, NgbCalendarHebrew);\n\n      return _super10.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarHebrew, [{\n      key: \"getDaysPerWeek\",\n      value: function getDaysPerWeek() {\n        return 7;\n      }\n    }, {\n      key: \"getMonths\",\n      value: function getMonths(year) {\n        if (year && isHebrewLeapYear(year)) {\n          return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n        } else {\n          return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n        }\n      }\n    }, {\n      key: \"getWeeksPerMonth\",\n      value: function getWeeksPerMonth() {\n        return 6;\n      }\n    }, {\n      key: \"isValid\",\n      value: function isValid(date) {\n        if (date != null) {\n          var b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n          b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n          b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n          return b && !isNaN(toGregorian$1(date).getTime());\n        }\n\n        return false;\n      }\n    }, {\n      key: \"getNext\",\n      value: function getNext(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        date = new NgbDate(date.year, date.month, date.day);\n\n        switch (period) {\n          case 'y':\n            date.year += number;\n            date.month = 1;\n            date.day = 1;\n            return date;\n\n          case 'm':\n            date = setHebrewMonth(date, number);\n            date.day = 1;\n            return date;\n\n          case 'd':\n            return setHebrewDay(date, number);\n\n          default:\n            return date;\n        }\n      }\n    }, {\n      key: \"getPrev\",\n      value: function getPrev(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        return this.getNext(date, period, -number);\n      }\n    }, {\n      key: \"getWeekday\",\n      value: function getWeekday(date) {\n        var day = toGregorian$1(date).getDay(); // in JS Date Sun=0, in ISO 8601 Sun=7\n\n        return day === 0 ? 7 : day;\n      }\n    }, {\n      key: \"getWeekNumber\",\n      value: function getWeekNumber(week, firstDayOfWeek) {\n        var date = week[week.length - 1];\n        return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n      }\n    }, {\n      key: \"getToday\",\n      value: function getToday() {\n        return fromGregorian$1(new Date());\n      }\n      /**\n       * @since 3.4.0\n       */\n\n    }, {\n      key: \"toGregorian\",\n      value: function toGregorian(date) {\n        return fromJSDate(toGregorian$1(date));\n      }\n      /**\n       * @since 3.4.0\n       */\n\n    }, {\n      key: \"fromGregorian\",\n      value: function fromGregorian(date) {\n        return fromGregorian$1(toJSDate(date));\n      }\n    }]);\n\n    return NgbCalendarHebrew;\n  }(NgbCalendar);\n\n  NgbCalendarHebrew.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarHebrew_BaseFactory;\n    return function NgbCalendarHebrew_Factory(t) {\n      return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew);\n    };\n  }();\n\n  NgbCalendarHebrew.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarHebrew,\n    factory: NgbCalendarHebrew.ɵfac\n  });\n  return NgbCalendarHebrew;\n}();\n\nvar WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nvar MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nvar MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n\nvar NgbDatepickerI18nHebrew = /*@__PURE__*/function () {\n  var NgbDatepickerI18nHebrew = /*#__PURE__*/function (_NgbDatepickerI18n2) {\n    _inherits(NgbDatepickerI18nHebrew, _NgbDatepickerI18n2);\n\n    var _super11 = _createSuper(NgbDatepickerI18nHebrew);\n\n    function NgbDatepickerI18nHebrew() {\n      _classCallCheck(this, NgbDatepickerI18nHebrew);\n\n      return _super11.apply(this, arguments);\n    }\n\n    _createClass(NgbDatepickerI18nHebrew, [{\n      key: \"getMonthShortName\",\n      value: function getMonthShortName(month, year) {\n        return this.getMonthFullName(month, year);\n      }\n    }, {\n      key: \"getMonthFullName\",\n      value: function getMonthFullName(month, year) {\n        return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n      }\n    }, {\n      key: \"getWeekdayLabel\",\n      value: function getWeekdayLabel(weekday, width) {\n        return WEEKDAYS[weekday - 1] || '';\n      }\n    }, {\n      key: \"getDayAriaLabel\",\n      value: function getDayAriaLabel(date) {\n        return \"\".concat(hebrewNumerals(date.day), \" \").concat(this.getMonthFullName(date.month, date.year), \" \").concat(hebrewNumerals(date.year));\n      }\n    }, {\n      key: \"getDayNumerals\",\n      value: function getDayNumerals(date) {\n        return hebrewNumerals(date.day);\n      }\n    }, {\n      key: \"getWeekNumerals\",\n      value: function getWeekNumerals(weekNumber) {\n        return hebrewNumerals(weekNumber);\n      }\n    }, {\n      key: \"getYearNumerals\",\n      value: function getYearNumerals(year) {\n        return hebrewNumerals(year);\n      }\n    }]);\n\n    return NgbDatepickerI18nHebrew;\n  }(NgbDatepickerI18n);\n\n  NgbDatepickerI18nHebrew.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbDatepickerI18nHebrew_BaseFactory;\n    return function NgbDatepickerI18nHebrew_Factory(t) {\n      return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew);\n    };\n  }();\n\n  NgbDatepickerI18nHebrew.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDatepickerI18nHebrew,\n    factory: NgbDatepickerI18nHebrew.ɵfac\n  });\n  return NgbDatepickerI18nHebrew;\n}();\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\n\n\nfunction toGregorian(date) {\n  return new Date(date.year - 543, date.month - 1, date.day);\n}\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\n\n\nfunction fromGregorian(gdate) {\n  return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n\nvar NgbCalendarBuddhist = /*@__PURE__*/function () {\n  var NgbCalendarBuddhist = /*#__PURE__*/function (_NgbCalendarGregorian) {\n    _inherits(NgbCalendarBuddhist, _NgbCalendarGregorian);\n\n    var _super12 = _createSuper(NgbCalendarBuddhist);\n\n    function NgbCalendarBuddhist() {\n      _classCallCheck(this, NgbCalendarBuddhist);\n\n      return _super12.apply(this, arguments);\n    }\n\n    _createClass(NgbCalendarBuddhist, [{\n      key: \"getToday\",\n      value: function getToday() {\n        return fromGregorian(new Date());\n      }\n    }, {\n      key: \"getNext\",\n      value: function getNext(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        var jsDate = toGregorian(date);\n        var checkMonth = true;\n        var expectedMonth = jsDate.getMonth();\n\n        switch (period) {\n          case 'y':\n            jsDate.setFullYear(jsDate.getFullYear() + number);\n            break;\n\n          case 'm':\n            expectedMonth += number;\n            jsDate.setMonth(expectedMonth);\n            expectedMonth = expectedMonth % 12;\n\n            if (expectedMonth < 0) {\n              expectedMonth = expectedMonth + 12;\n            }\n\n            break;\n\n          case 'd':\n            jsDate.setDate(jsDate.getDate() + number);\n            checkMonth = false;\n            break;\n\n          default:\n            return date;\n        }\n\n        if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n          // this means the destination month has less days than the initial month\n          // let's go back to the end of the previous month:\n          jsDate.setDate(0);\n        }\n\n        return fromGregorian(jsDate);\n      }\n    }, {\n      key: \"getPrev\",\n      value: function getPrev(date) {\n        var period = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'd';\n        var number = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        return this.getNext(date, period, -number);\n      }\n    }, {\n      key: \"getWeekday\",\n      value: function getWeekday(date) {\n        var jsDate = toGregorian(date);\n        var day = jsDate.getDay(); // in JS Date Sun=0, in ISO 8601 Sun=7\n\n        return day === 0 ? 7 : day;\n      }\n    }, {\n      key: \"getWeekNumber\",\n      value: function getWeekNumber(week, firstDayOfWeek) {\n        // in JS Date Sun=0, in ISO 8601 Sun=7\n        if (firstDayOfWeek === 7) {\n          firstDayOfWeek = 0;\n        }\n\n        var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n        var date = week[thursdayIndex];\n        var jsDate = toGregorian(date);\n        jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\n        var time = jsDate.getTime();\n        jsDate.setMonth(0); // Compare with Jan 1\n\n        jsDate.setDate(1);\n        return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n      }\n    }, {\n      key: \"isValid\",\n      value: function isValid(date) {\n        if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n          return false;\n        } // year 0 doesn't exist in Gregorian calendar\n\n\n        if (date.year === 0) {\n          return false;\n        }\n\n        var jsDate = toGregorian(date);\n        return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 && jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n      }\n    }]);\n\n    return NgbCalendarBuddhist;\n  }(NgbCalendarGregorian);\n\n  NgbCalendarBuddhist.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbCalendarBuddhist_BaseFactory;\n    return function NgbCalendarBuddhist_Factory(t) {\n      return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(t || NgbCalendarBuddhist);\n    };\n  }();\n\n  NgbCalendarBuddhist.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbCalendarBuddhist,\n    factory: NgbCalendarBuddhist.ɵfac\n  });\n  return NgbCalendarBuddhist;\n}();\n\nvar NgbDateNativeAdapter = /*@__PURE__*/function () {\n  var NgbDateNativeAdapter = /*#__PURE__*/function (_NgbDateAdapter2) {\n    _inherits(NgbDateNativeAdapter, _NgbDateAdapter2);\n\n    var _super13 = _createSuper(NgbDateNativeAdapter);\n\n    function NgbDateNativeAdapter() {\n      _classCallCheck(this, NgbDateNativeAdapter);\n\n      return _super13.apply(this, arguments);\n    }\n\n    _createClass(NgbDateNativeAdapter, [{\n      key: \"fromModel\",\n      value:\n      /**\n       * Converts a native `Date` to a `NgbDateStruct`.\n       */\n      function fromModel(date) {\n        return date instanceof Date && !isNaN(date.getTime()) ? this._fromNativeDate(date) : null;\n      }\n      /**\n       * Converts a `NgbDateStruct` to a native `Date`.\n       */\n\n    }, {\n      key: \"toModel\",\n      value: function toModel(date) {\n        return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) : null;\n      }\n    }, {\n      key: \"_fromNativeDate\",\n      value: function _fromNativeDate(date) {\n        return {\n          year: date.getFullYear(),\n          month: date.getMonth() + 1,\n          day: date.getDate()\n        };\n      }\n    }, {\n      key: \"_toNativeDate\",\n      value: function _toNativeDate(date) {\n        var jsDate = new Date(date.year, date.month - 1, date.day, 12); // avoid 30 -> 1930 conversion\n\n        jsDate.setFullYear(date.year);\n        return jsDate;\n      }\n    }]);\n\n    return NgbDateNativeAdapter;\n  }(NgbDateAdapter);\n\n  NgbDateNativeAdapter.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbDateNativeAdapter_BaseFactory;\n    return function NgbDateNativeAdapter_Factory(t) {\n      return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter);\n    };\n  }();\n\n  NgbDateNativeAdapter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDateNativeAdapter,\n    factory: NgbDateNativeAdapter.ɵfac\n  });\n  return NgbDateNativeAdapter;\n}();\n\nvar NgbDateNativeUTCAdapter = /*@__PURE__*/function () {\n  var NgbDateNativeUTCAdapter = /*#__PURE__*/function (_NgbDateNativeAdapter) {\n    _inherits(NgbDateNativeUTCAdapter, _NgbDateNativeAdapter);\n\n    var _super14 = _createSuper(NgbDateNativeUTCAdapter);\n\n    function NgbDateNativeUTCAdapter() {\n      _classCallCheck(this, NgbDateNativeUTCAdapter);\n\n      return _super14.apply(this, arguments);\n    }\n\n    _createClass(NgbDateNativeUTCAdapter, [{\n      key: \"_fromNativeDate\",\n      value: function _fromNativeDate(date) {\n        return {\n          year: date.getUTCFullYear(),\n          month: date.getUTCMonth() + 1,\n          day: date.getUTCDate()\n        };\n      }\n    }, {\n      key: \"_toNativeDate\",\n      value: function _toNativeDate(date) {\n        var jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day)); // avoid 30 -> 1930 conversion\n\n        jsDate.setUTCFullYear(date.year);\n        return jsDate;\n      }\n    }]);\n\n    return NgbDateNativeUTCAdapter;\n  }(NgbDateNativeAdapter);\n\n  NgbDateNativeUTCAdapter.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbDateNativeUTCAdapter_BaseFactory;\n    return function NgbDateNativeUTCAdapter_Factory(t) {\n      return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter);\n    };\n  }();\n\n  NgbDateNativeUTCAdapter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbDateNativeUTCAdapter,\n    factory: NgbDateNativeUTCAdapter.ɵfac\n  });\n  return NgbDateNativeUTCAdapter;\n}();\n\nvar NgbDatepickerModule = /*@__PURE__*/function () {\n  var NgbDatepickerModule = /*#__PURE__*/_createClass(function NgbDatepickerModule() {\n    _classCallCheck(this, NgbDatepickerModule);\n  });\n\n  NgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) {\n    return new (t || NgbDatepickerModule)();\n  };\n\n  NgbDatepickerModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbDatepickerModule\n  });\n  NgbDatepickerModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule, FormsModule]]\n  });\n  return NgbDatepickerModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, {\n    declarations: function declarations() {\n      return [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker];\n    },\n    imports: function imports() {\n      return [CommonModule, FormsModule];\n    },\n    exports: function exports() {\n      return [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth];\n    }\n  });\n})();\n\nvar NgbDropdownConfig = /*@__PURE__*/function () {\n  var NgbDropdownConfig = /*#__PURE__*/_createClass(function NgbDropdownConfig() {\n    _classCallCheck(this, NgbDropdownConfig);\n\n    this.autoClose = true;\n    this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n  });\n\n  NgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) {\n    return new (t || NgbDropdownConfig)();\n  };\n\n  NgbDropdownConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbDropdownConfig_Factory() {\n      return new NgbDropdownConfig();\n    },\n    token: NgbDropdownConfig,\n    providedIn: \"root\"\n  });\n  return NgbDropdownConfig;\n}();\n\nvar NgbNavbar = /*@__PURE__*/function () {\n  var NgbNavbar = /*#__PURE__*/_createClass(function NgbNavbar() {\n    _classCallCheck(this, NgbNavbar);\n  });\n\n  NgbNavbar.ɵfac = function NgbNavbar_Factory(t) {\n    return new (t || NgbNavbar)();\n  };\n\n  NgbNavbar.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNavbar,\n    selectors: [[\"\", 8, \"navbar\"]]\n  });\n  return NgbNavbar;\n}();\n\nvar NgbDropdownItem = /*@__PURE__*/function () {\n  var NgbDropdownItem = /*#__PURE__*/function () {\n    function NgbDropdownItem(elementRef) {\n      _classCallCheck(this, NgbDropdownItem);\n\n      this.elementRef = elementRef;\n      this._disabled = false;\n    }\n\n    _createClass(NgbDropdownItem, [{\n      key: \"disabled\",\n      get: function get() {\n        return this._disabled;\n      },\n      set: function set(value) {\n        this._disabled = value === '' || value === true; // accept an empty attribute as true\n      }\n    }]);\n\n    return NgbDropdownItem;\n  }();\n\n  NgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) {\n    return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbDropdownItem.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDropdownItem,\n    selectors: [[\"\", \"ngbDropdownItem\", \"\"]],\n    hostAttrs: [1, \"dropdown-item\"],\n    hostVars: 2,\n    hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n      }\n    },\n    inputs: {\n      disabled: \"disabled\"\n    }\n  });\n  return NgbDropdownItem;\n}();\n\nvar NgbDropdownMenu = /*@__PURE__*/function () {\n  var NgbDropdownMenu = /*#__PURE__*/_createClass(function NgbDropdownMenu(dropdown, _elementRef) {\n    _classCallCheck(this, NgbDropdownMenu);\n\n    this.dropdown = dropdown;\n    this.placement = 'bottom';\n    this.isOpen = false;\n    this.nativeElement = _elementRef.nativeElement;\n  });\n\n  NgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) {\n    return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(function () {\n      return NgbDropdown;\n    })), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbDropdownMenu.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDropdownMenu,\n    selectors: [[\"\", \"ngbDropdownMenu\", \"\"]],\n    contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n      }\n    },\n    hostVars: 5,\n    hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Tab\", function NgbDropdownMenu_keydown_Tab_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Shift.Tab\", function NgbDropdownMenu_keydown_Shift_Tab_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n        ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n      }\n    }\n  });\n  return NgbDropdownMenu;\n}();\n\nvar NgbDropdownAnchor = /*@__PURE__*/function () {\n  var NgbDropdownAnchor = /*#__PURE__*/_createClass(function NgbDropdownAnchor(dropdown, _elementRef) {\n    _classCallCheck(this, NgbDropdownAnchor);\n\n    this.dropdown = dropdown;\n    this.nativeElement = _elementRef.nativeElement;\n  });\n\n  NgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) {\n    return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(function () {\n      return NgbDropdown;\n    })), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbDropdownAnchor.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDropdownAnchor,\n    selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]],\n    hostAttrs: [1, \"dropdown-toggle\"],\n    hostVars: 1,\n    hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n      }\n    }\n  });\n  return NgbDropdownAnchor;\n}();\n\nvar NgbDropdownToggle = /*@__PURE__*/function () {\n  var NgbDropdownToggle = /*#__PURE__*/function (_NgbDropdownAnchor) {\n    _inherits(NgbDropdownToggle, _NgbDropdownAnchor);\n\n    var _super15 = _createSuper(NgbDropdownToggle);\n\n    function NgbDropdownToggle(dropdown, elementRef) {\n      _classCallCheck(this, NgbDropdownToggle);\n\n      return _super15.call(this, dropdown, elementRef);\n    }\n\n    return _createClass(NgbDropdownToggle);\n  }(NgbDropdownAnchor);\n\n  NgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) {\n    return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(function () {\n      return NgbDropdown;\n    })), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbDropdownToggle.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDropdownToggle,\n    selectors: [[\"\", \"ngbDropdownToggle\", \"\"]],\n    hostAttrs: [1, \"dropdown-toggle\"],\n    hostVars: 1,\n    hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() {\n          return ctx.dropdown.toggle();\n        })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Tab\", function NgbDropdownToggle_keydown_Tab_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        })(\"keydown.Shift.Tab\", function NgbDropdownToggle_keydown_Shift_Tab_HostBindingHandler($event) {\n          return ctx.dropdown.onKeyDown($event);\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n      }\n    },\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NgbDropdownAnchor,\n      useExisting: forwardRef(function () {\n        return NgbDropdownToggle;\n      })\n    }]), ɵngcc0.ɵɵInheritDefinitionFeature]\n  });\n  return NgbDropdownToggle;\n}();\n\nvar NgbDropdown = /*@__PURE__*/function () {\n  var NgbDropdown = /*#__PURE__*/function () {\n    function NgbDropdown(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n      var _this23 = this;\n\n      _classCallCheck(this, NgbDropdown);\n\n      this._changeDetector = _changeDetector;\n      this._document = _document;\n      this._ngZone = _ngZone;\n      this._elementRef = _elementRef;\n      this._renderer = _renderer;\n      this._closed$ = new Subject();\n      this._bodyContainer = null;\n      /**\n       * Defines whether or not the dropdown menu is opened initially.\n       */\n\n      this._open = false;\n      /**\n       * An event fired when the dropdown is opened or closed.\n       *\n       * The event payload is a `boolean`:\n       * * `true` - the dropdown was opened\n       * * `false` - the dropdown was closed\n       */\n\n      this.openChange = new EventEmitter();\n      this.placement = config.placement;\n      this.container = config.container;\n      this.autoClose = config.autoClose;\n      this.display = ngbNavbar ? 'static' : 'dynamic';\n      this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n        _this23._positionMenu();\n      });\n    }\n\n    _createClass(NgbDropdown, [{\n      key: \"ngAfterContentInit\",\n      value: function ngAfterContentInit() {\n        var _this24 = this;\n\n        this._ngZone.onStable.pipe(take(1)).subscribe(function () {\n          _this24._applyPlacementClasses();\n\n          if (_this24._open) {\n            _this24._setCloseHandlers();\n          }\n        });\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        if (changes.container && this._open) {\n          this._applyContainer(this.container);\n        }\n\n        if (changes.placement && !changes.placement.isFirstChange) {\n          this._applyPlacementClasses();\n        }\n\n        if (changes.dropdownClass) {\n          var _changes$dropdownClas = changes.dropdownClass,\n              currentValue = _changes$dropdownClas.currentValue,\n              previousValue = _changes$dropdownClas.previousValue;\n\n          this._applyCustomDropdownClass(currentValue, previousValue);\n        }\n      }\n      /**\n       * Checks if the dropdown menu is open.\n       */\n\n    }, {\n      key: \"isOpen\",\n      value: function isOpen() {\n        return this._open;\n      }\n      /**\n       * Opens the dropdown menu.\n       */\n\n    }, {\n      key: \"open\",\n      value: function open() {\n        if (!this._open) {\n          this._open = true;\n\n          this._applyContainer(this.container);\n\n          this.openChange.emit(true);\n\n          this._setCloseHandlers();\n\n          if (this._anchor) {\n            this._anchor.nativeElement.focus();\n          }\n        }\n      }\n    }, {\n      key: \"_setCloseHandlers\",\n      value: function _setCloseHandlers() {\n        var _this25 = this;\n\n        ngbAutoClose(this._ngZone, this._document, this.autoClose, function (source) {\n          _this25.close();\n\n          if (source === 0\n          /* ESCAPE */\n          ) {\n            _this25._anchor.nativeElement.focus();\n          }\n        }, this._closed$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\n      }\n      /**\n       * Closes the dropdown menu.\n       */\n\n    }, {\n      key: \"close\",\n      value: function close() {\n        if (this._open) {\n          this._open = false;\n\n          this._resetContainer();\n\n          this._closed$.next();\n\n          this.openChange.emit(false);\n\n          this._changeDetector.markForCheck();\n        }\n      }\n      /**\n       * Toggles the dropdown menu.\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        if (this.isOpen()) {\n          this.close();\n        } else {\n          this.open();\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._resetContainer();\n\n        this._closed$.next();\n\n        this._zoneSubscription.unsubscribe();\n      }\n    }, {\n      key: \"onKeyDown\",\n      value: function onKeyDown(event) {\n        var _this26 = this;\n\n        // tslint:disable-next-line:deprecation\n        var key = event.which;\n\n        var itemElements = this._getMenuElements();\n\n        var position = -1;\n        var itemElement = null;\n\n        var isEventFromToggle = this._isEventFromToggle(event);\n\n        if (!isEventFromToggle && itemElements.length) {\n          itemElements.forEach(function (item, index) {\n            if (item.contains(event.target)) {\n              itemElement = item;\n            }\n\n            if (item === _this26._document.activeElement) {\n              position = index;\n            }\n          });\n        } // closing on Enter / Space\n\n\n        if (key === Key.Space || key === Key.Enter) {\n          if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n            // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n            // So we have to register a one-time click handler that will fire after any user defined click handlers\n            // to close the dropdown\n            fromEvent(itemElement, 'click').pipe(take(1)).subscribe(function () {\n              return _this26.close();\n            });\n          }\n\n          return;\n        }\n\n        if (key === Key.Tab) {\n          if (event.target && this.isOpen() && this.autoClose) {\n            if (this._anchor.nativeElement === event.target) {\n              if (this.container === 'body' && !event.shiftKey) {\n                /* This case is special: user is using [Tab] from the anchor/toggle.\n                   User expects the next focusable element in the dropdown menu to get focus.\n                   But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n                   Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n                   so that browser will focus the proper element (first one focusable in the menu) */\n                this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\n\n                this._menu.nativeElement.focus();\n\n                this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\n              } else if (event.shiftKey) {\n                this.close();\n              }\n\n              return;\n            } else if (this.container === 'body') {\n              var focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n\n              if (event.shiftKey && event.target === focusableElements[0]) {\n                this._anchor.nativeElement.focus();\n\n                event.preventDefault();\n              } else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n                this._anchor.nativeElement.focus();\n\n                this.close();\n              }\n            } else {\n              fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(function (_ref17) {\n                var relatedTarget = _ref17.relatedTarget;\n\n                if (!_this26._elementRef.nativeElement.contains(relatedTarget)) {\n                  _this26.close();\n                }\n              });\n            }\n          }\n\n          return;\n        } // opening / navigating\n\n\n        if (isEventFromToggle || itemElement) {\n          this.open();\n\n          if (itemElements.length) {\n            switch (key) {\n              case Key.ArrowDown:\n                position = Math.min(position + 1, itemElements.length - 1);\n                break;\n\n              case Key.ArrowUp:\n                if (this._isDropup() && position === -1) {\n                  position = itemElements.length - 1;\n                  break;\n                }\n\n                position = Math.max(position - 1, 0);\n                break;\n\n              case Key.Home:\n                position = 0;\n                break;\n\n              case Key.End:\n                position = itemElements.length - 1;\n                break;\n            }\n\n            itemElements[position].focus();\n          }\n\n          event.preventDefault();\n        }\n      }\n    }, {\n      key: \"_isDropup\",\n      value: function _isDropup() {\n        return this._elementRef.nativeElement.classList.contains('dropup');\n      }\n    }, {\n      key: \"_isEventFromToggle\",\n      value: function _isEventFromToggle(event) {\n        return this._anchor.nativeElement.contains(event.target);\n      }\n    }, {\n      key: \"_getMenuElements\",\n      value: function _getMenuElements() {\n        var menu = this._menu;\n\n        if (menu == null) {\n          return [];\n        }\n\n        return menu.menuItems.filter(function (item) {\n          return !item.disabled;\n        }).map(function (item) {\n          return item.elementRef.nativeElement;\n        });\n      }\n    }, {\n      key: \"_positionMenu\",\n      value: function _positionMenu() {\n        var menu = this._menu;\n\n        if (this.isOpen() && menu) {\n          this._applyPlacementClasses(this.display === 'dynamic' ? positionElements(this._anchor.nativeElement, this._bodyContainer || this._menu.nativeElement, this.placement, this.container === 'body') : this._getFirstPlacement(this.placement));\n        }\n      }\n    }, {\n      key: \"_getFirstPlacement\",\n      value: function _getFirstPlacement(placement) {\n        return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n      }\n    }, {\n      key: \"_resetContainer\",\n      value: function _resetContainer() {\n        var renderer = this._renderer;\n\n        if (this._menu) {\n          var dropdownElement = this._elementRef.nativeElement;\n          var dropdownMenuElement = this._menu.nativeElement;\n          renderer.appendChild(dropdownElement, dropdownMenuElement);\n          renderer.removeStyle(dropdownMenuElement, 'position');\n          renderer.removeStyle(dropdownMenuElement, 'transform');\n        }\n\n        if (this._bodyContainer) {\n          renderer.removeChild(this._document.body, this._bodyContainer);\n          this._bodyContainer = null;\n        }\n      }\n    }, {\n      key: \"_applyContainer\",\n      value: function _applyContainer() {\n        var container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n        this._resetContainer();\n\n        if (container === 'body') {\n          var renderer = this._renderer;\n          var dropdownMenuElement = this._menu.nativeElement;\n          var bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div'); // Override some styles to have the positioning working\n\n          renderer.setStyle(bodyContainer, 'position', 'absolute');\n          renderer.setStyle(dropdownMenuElement, 'position', 'static');\n          renderer.setStyle(bodyContainer, 'z-index', '1050');\n          renderer.appendChild(bodyContainer, dropdownMenuElement);\n          renderer.appendChild(this._document.body, bodyContainer);\n        }\n\n        this._applyCustomDropdownClass(this.dropdownClass);\n      }\n    }, {\n      key: \"_applyCustomDropdownClass\",\n      value: function _applyCustomDropdownClass(newClass, oldClass) {\n        var targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\n\n        if (targetElement) {\n          if (oldClass) {\n            this._renderer.removeClass(targetElement, oldClass);\n          }\n\n          if (newClass) {\n            this._renderer.addClass(targetElement, newClass);\n          }\n        }\n      }\n    }, {\n      key: \"_applyPlacementClasses\",\n      value: function _applyPlacementClasses(placement) {\n        var menu = this._menu;\n\n        if (menu) {\n          if (!placement) {\n            placement = this._getFirstPlacement(this.placement);\n          }\n\n          var renderer = this._renderer;\n          var dropdownElement = this._elementRef.nativeElement; // remove the current placement classes\n\n          renderer.removeClass(dropdownElement, 'dropup');\n          renderer.removeClass(dropdownElement, 'dropdown');\n          menu.placement = this.display === 'static' ? null : placement;\n          /*\n          * apply the new placement\n          * in case of top use up-arrow or down-arrow otherwise\n          */\n\n          var dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n          renderer.addClass(dropdownElement, dropdownClass);\n          var bodyContainer = this._bodyContainer;\n\n          if (bodyContainer) {\n            renderer.removeClass(bodyContainer, 'dropup');\n            renderer.removeClass(bodyContainer, 'dropdown');\n            renderer.addClass(bodyContainer, dropdownClass);\n          }\n        }\n      }\n    }]);\n\n    return NgbDropdown;\n  }();\n\n  NgbDropdown.ɵfac = function NgbDropdown_Factory(t) {\n    return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8));\n  };\n\n  NgbDropdown.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbDropdown,\n    selectors: [[\"\", \"ngbDropdown\", \"\"]],\n    contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n      }\n    },\n    hostVars: 2,\n    hostBindings: function NgbDropdown_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n      }\n    },\n    inputs: {\n      _open: [\"open\", \"_open\"],\n      placement: \"placement\",\n      container: \"container\",\n      autoClose: \"autoClose\",\n      display: \"display\",\n      dropdownClass: \"dropdownClass\"\n    },\n    outputs: {\n      openChange: \"openChange\"\n    },\n    exportAs: [\"ngbDropdown\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbDropdown;\n}();\n\nvar NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\n\nvar NgbDropdownModule = /*@__PURE__*/function () {\n  var NgbDropdownModule = /*#__PURE__*/_createClass(function NgbDropdownModule() {\n    _classCallCheck(this, NgbDropdownModule);\n  });\n\n  NgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) {\n    return new (t || NgbDropdownModule)();\n  };\n\n  NgbDropdownModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbDropdownModule\n  });\n  NgbDropdownModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({});\n  return NgbDropdownModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, {\n    declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar],\n    exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar]\n  });\n})();\n\nvar NgbModalConfig = /*@__PURE__*/function () {\n  var NgbModalConfig = /*#__PURE__*/function () {\n    function NgbModalConfig(_ngbConfig) {\n      _classCallCheck(this, NgbModalConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.backdrop = true;\n      this.keyboard = true;\n    }\n\n    _createClass(NgbModalConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbModalConfig;\n  }();\n\n  NgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) {\n    return new (t || NgbModalConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbModalConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbModalConfig_Factory() {\n      return new NgbModalConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbModalConfig,\n    providedIn: \"root\"\n  });\n  return NgbModalConfig;\n}();\n\nvar ContentRef = /*#__PURE__*/_createClass(function ContentRef(nodes, viewRef, componentRef) {\n  _classCallCheck(this, ContentRef);\n\n  this.nodes = nodes;\n  this.viewRef = viewRef;\n  this.componentRef = componentRef;\n});\n\nvar PopupService = /*#__PURE__*/function () {\n  function PopupService(_type, _injector, _viewContainerRef, _renderer, _ngZone, _componentFactoryResolver, _applicationRef) {\n    _classCallCheck(this, PopupService);\n\n    this._type = _type;\n    this._injector = _injector;\n    this._viewContainerRef = _viewContainerRef;\n    this._renderer = _renderer;\n    this._ngZone = _ngZone;\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._applicationRef = _applicationRef;\n    this._windowRef = null;\n    this._contentRef = null;\n  }\n\n  _createClass(PopupService, [{\n    key: \"open\",\n    value: function open(content, context) {\n      var _this27 = this;\n\n      var animation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (!this._windowRef) {\n        this._contentRef = this._getContentRef(content, context);\n        this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), this._viewContainerRef.length, this._injector, this._contentRef.nodes);\n      }\n\n      var nativeElement = this._windowRef.location.nativeElement;\n\n      var transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(function () {\n        return ngbRunTransition(_this27._ngZone, nativeElement, function (_ref18) {\n          var classList = _ref18.classList;\n          return classList.add('show');\n        }, {\n          animation: animation,\n          runningTransition: 'continue'\n        });\n      }));\n\n      return {\n        windowRef: this._windowRef,\n        transition$: transition$\n      };\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      var _this28 = this;\n\n      var animation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (!this._windowRef) {\n        return of(undefined);\n      }\n\n      return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, function (_ref19) {\n        var classList = _ref19.classList;\n        return classList.remove('show');\n      }, {\n        animation: animation,\n        runningTransition: 'stop'\n      }).pipe(tap(function () {\n        var _a;\n\n        if (_this28._windowRef) {\n          // this is required because of the container='body' option\n          _this28._viewContainerRef.remove(_this28._viewContainerRef.indexOf(_this28._windowRef.hostView));\n\n          _this28._windowRef = null;\n        }\n\n        if ((_a = _this28._contentRef) === null || _a === void 0 ? void 0 : _a.viewRef) {\n          _this28._applicationRef.detachView(_this28._contentRef.viewRef);\n\n          _this28._contentRef.viewRef.destroy();\n\n          _this28._contentRef = null;\n        }\n      }));\n    }\n  }, {\n    key: \"_getContentRef\",\n    value: function _getContentRef(content, context) {\n      if (!content) {\n        return new ContentRef([]);\n      } else if (content instanceof TemplateRef) {\n        var viewRef = content.createEmbeddedView(context);\n\n        this._applicationRef.attachView(viewRef);\n\n        return new ContentRef([viewRef.rootNodes], viewRef);\n      } else {\n        return new ContentRef([[this._renderer.createText(\"\".concat(content))]]);\n      }\n    }\n  }]);\n\n  return PopupService;\n}();\n\nvar noop = function noop() {};\n\nvar ɵ0$2 = noop;\n\nvar ScrollBar = /*@__PURE__*/function () {\n  var ScrollBar = /*#__PURE__*/function () {\n    function ScrollBar(_document) {\n      _classCallCheck(this, ScrollBar);\n\n      this._document = _document;\n    }\n    /**\n     * To be called right before a potential vertical scrollbar would be removed:\n     *\n     * - if there was a scrollbar, adds some compensation padding to the body\n     * to keep the same layout as when the scrollbar is there\n     * - if there was none, there is nothing to do\n     *\n     * @return a callback used to revert the compensation (noop if there was none,\n     * otherwise a function removing the padding)\n     */\n\n\n    _createClass(ScrollBar, [{\n      key: \"compensate\",\n      value: function compensate() {\n        var width = this._getWidth();\n\n        return !this._isPresent(width) ? noop : this._adjustBody(width);\n      }\n      /**\n       * Adds a padding of the given width on the right of the body.\n       *\n       * @return a callback used to revert the padding to its previous value\n       */\n\n    }, {\n      key: \"_adjustBody\",\n      value: function _adjustBody(scrollbarWidth) {\n        var body = this._document.body;\n        var userSetPaddingStyle = body.style.paddingRight;\n        var actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\n        body.style['padding-right'] = \"\".concat(actualPadding + scrollbarWidth, \"px\");\n        return function () {\n          return body.style['padding-right'] = userSetPaddingStyle;\n        };\n      }\n      /**\n       * Tells whether a scrollbar is currently present on the body.\n       *\n       * @return true if scrollbar is present, false otherwise\n       */\n\n    }, {\n      key: \"_isPresent\",\n      value: function _isPresent(scrollbarWidth) {\n        var rect = this._document.body.getBoundingClientRect();\n\n        var bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n        var uncertainty = 0.1 * scrollbarWidth;\n        return bodyToViewportGap >= scrollbarWidth - uncertainty;\n      }\n      /**\n       * Calculates and returns the width of a scrollbar.\n       *\n       * @return the width of a scrollbar on this page\n       */\n\n    }, {\n      key: \"_getWidth\",\n      value: function _getWidth() {\n        var measurer = this._document.createElement('div');\n\n        measurer.className = 'modal-scrollbar-measure';\n        var body = this._document.body;\n        body.appendChild(measurer);\n        var width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n        body.removeChild(measurer);\n        return width;\n      }\n    }]);\n\n    return ScrollBar;\n  }();\n\n  ScrollBar.ɵfac = function ScrollBar_Factory(t) {\n    return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT));\n  };\n\n  ScrollBar.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function ScrollBar_Factory() {\n      return new ScrollBar(i0.ɵɵinject(i1.DOCUMENT));\n    },\n    token: ScrollBar,\n    providedIn: \"root\"\n  });\n  return ScrollBar;\n}();\n\nvar NgbModalBackdrop = /*@__PURE__*/function () {\n  var NgbModalBackdrop = /*#__PURE__*/function () {\n    function NgbModalBackdrop(_el, _zone) {\n      _classCallCheck(this, NgbModalBackdrop);\n\n      this._el = _el;\n      this._zone = _zone;\n    }\n\n    _createClass(NgbModalBackdrop, [{\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        var _this29 = this;\n\n        this._zone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n          ngbRunTransition(_this29._zone, _this29._el.nativeElement, function (element, animation) {\n            if (animation) {\n              reflow(element);\n            }\n\n            element.classList.add('show');\n          }, {\n            animation: _this29.animation,\n            runningTransition: 'continue'\n          });\n        });\n      }\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        return ngbRunTransition(this._zone, this._el.nativeElement, function (_ref20) {\n          var classList = _ref20.classList;\n          return classList.remove('show');\n        }, {\n          animation: this.animation,\n          runningTransition: 'stop'\n        });\n      }\n    }]);\n\n    return NgbModalBackdrop;\n  }();\n\n  NgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) {\n    return new (t || NgbModalBackdrop)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbModalBackdrop.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbModalBackdrop,\n    selectors: [[\"ngb-modal-backdrop\"]],\n    hostAttrs: [2, \"z-index\", \"1050\"],\n    hostVars: 6,\n    hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassMap(\"modal-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n        ɵngcc0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n      }\n    },\n    inputs: {\n      animation: \"animation\",\n      backdropClass: \"backdropClass\"\n    },\n    decls: 0,\n    vars: 0,\n    template: function NgbModalBackdrop_Template(rf, ctx) {},\n    encapsulation: 2\n  });\n  return NgbModalBackdrop;\n}();\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\n\n\nvar NgbActiveModal = /*#__PURE__*/function () {\n  function NgbActiveModal() {\n    _classCallCheck(this, NgbActiveModal);\n  }\n\n  _createClass(NgbActiveModal, [{\n    key: \"close\",\n    value:\n    /**\n     * Closes the modal with an optional `result` value.\n     *\n     * The `NgbModalRef.result` promise will be resolved with the provided value.\n     */\n    function close(result) {}\n    /**\n     * Dismisses the modal with an optional `reason` value.\n     *\n     * The `NgbModalRef.result` promise will be rejected with the provided value.\n     */\n\n  }, {\n    key: \"dismiss\",\n    value: function dismiss(reason) {}\n  }]);\n\n  return NgbActiveModal;\n}();\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\n\n\nvar NgbModalRef = /*#__PURE__*/function () {\n  function NgbModalRef(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n    var _this30 = this;\n\n    _classCallCheck(this, NgbModalRef);\n\n    this._windowCmptRef = _windowCmptRef;\n    this._contentRef = _contentRef;\n    this._backdropCmptRef = _backdropCmptRef;\n    this._beforeDismiss = _beforeDismiss;\n    this._closed = new Subject();\n    this._dismissed = new Subject();\n    this._hidden = new Subject();\n\n    _windowCmptRef.instance.dismissEvent.subscribe(function (reason) {\n      _this30.dismiss(reason);\n    });\n\n    this.result = new Promise(function (resolve, reject) {\n      _this30._resolve = resolve;\n      _this30._reject = reject;\n    });\n    this.result.then(null, function () {});\n  }\n  /**\n   * The instance of a component used for the modal content.\n   *\n   * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n   */\n\n\n  _createClass(NgbModalRef, [{\n    key: \"componentInstance\",\n    get: function get() {\n      if (this._contentRef && this._contentRef.componentRef) {\n        return this._contentRef.componentRef.instance;\n      }\n    }\n    /**\n     * The observable that emits when the modal is closed via the `.close()` method.\n     *\n     * It will emit the result passed to the `.close()` method.\n     *\n     * @since 8.0.0\n     */\n\n  }, {\n    key: \"closed\",\n    get: function get() {\n      return this._closed.asObservable().pipe(takeUntil(this._hidden));\n    }\n    /**\n     * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n     *\n     * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n     * reasons like backdrop click or ESC key press.\n     *\n     * @since 8.0.0\n     */\n\n  }, {\n    key: \"dismissed\",\n    get: function get() {\n      return this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n    }\n    /**\n     * The observable that emits when both modal window and backdrop are closed and animations were finished.\n     * At this point modal and backdrop elements will be removed from the DOM tree.\n     *\n     * This observable will be completed after emitting.\n     *\n     * @since 8.0.0\n     */\n\n  }, {\n    key: \"hidden\",\n    get: function get() {\n      return this._hidden.asObservable();\n    }\n    /**\n     * The observable that emits when modal is fully visible and animation was finished.\n     * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n     *\n     * This observable will be completed after emitting.\n     * It will not emit, if modal is closed before open animation is finished.\n     *\n     * @since 8.0.0\n     */\n\n  }, {\n    key: \"shown\",\n    get: function get() {\n      return this._windowCmptRef.instance.shown.asObservable();\n    }\n    /**\n     * Closes the modal with an optional `result` value.\n     *\n     * The `NgbMobalRef.result` promise will be resolved with the provided value.\n     */\n\n  }, {\n    key: \"close\",\n    value: function close(result) {\n      if (this._windowCmptRef) {\n        this._closed.next(result);\n\n        this._resolve(result);\n\n        this._removeModalElements();\n      }\n    }\n  }, {\n    key: \"_dismiss\",\n    value: function _dismiss(reason) {\n      this._dismissed.next(reason);\n\n      this._reject(reason);\n\n      this._removeModalElements();\n    }\n    /**\n     * Dismisses the modal with an optional `reason` value.\n     *\n     * The `NgbModalRef.result` promise will be rejected with the provided value.\n     */\n\n  }, {\n    key: \"dismiss\",\n    value: function dismiss(reason) {\n      var _this31 = this;\n\n      if (this._windowCmptRef) {\n        if (!this._beforeDismiss) {\n          this._dismiss(reason);\n        } else {\n          var dismiss = this._beforeDismiss();\n\n          if (dismiss && dismiss.then) {\n            dismiss.then(function (result) {\n              if (result !== false) {\n                _this31._dismiss(reason);\n              }\n            }, function () {});\n          } else if (dismiss !== false) {\n            this._dismiss(reason);\n          }\n        }\n      }\n    }\n  }, {\n    key: \"_removeModalElements\",\n    value: function _removeModalElements() {\n      var _this32 = this;\n\n      var windowTransition$ = this._windowCmptRef.instance.hide();\n\n      var backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined); // hiding window\n\n      windowTransition$.subscribe(function () {\n        var nativeElement = _this32._windowCmptRef.location.nativeElement;\n        nativeElement.parentNode.removeChild(nativeElement);\n\n        _this32._windowCmptRef.destroy();\n\n        if (_this32._contentRef && _this32._contentRef.viewRef) {\n          _this32._contentRef.viewRef.destroy();\n        }\n\n        _this32._windowCmptRef = null;\n        _this32._contentRef = null;\n      }); // hiding backdrop\n\n      backdropTransition$.subscribe(function () {\n        if (_this32._backdropCmptRef) {\n          var nativeElement = _this32._backdropCmptRef.location.nativeElement;\n          nativeElement.parentNode.removeChild(nativeElement);\n\n          _this32._backdropCmptRef.destroy();\n\n          _this32._backdropCmptRef = null;\n        }\n      }); // all done\n\n      zip(windowTransition$, backdropTransition$).subscribe(function () {\n        _this32._hidden.next();\n\n        _this32._hidden.complete();\n      });\n    }\n  }]);\n\n  return NgbModalRef;\n}();\n\nvar ModalDismissReasons = /*@__PURE__*/function (ModalDismissReasons) {\n  ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n  ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n  return ModalDismissReasons;\n}({});\n\nvar NgbModalWindow = /*@__PURE__*/function () {\n  var NgbModalWindow = /*#__PURE__*/function () {\n    function NgbModalWindow(_document, _elRef, _zone) {\n      _classCallCheck(this, NgbModalWindow);\n\n      this._document = _document;\n      this._elRef = _elRef;\n      this._zone = _zone;\n      this._closed$ = new Subject();\n      this._elWithFocus = null; // element that is focused prior to modal opening\n\n      this.backdrop = true;\n      this.keyboard = true;\n      this.dismissEvent = new EventEmitter();\n      this.shown = new Subject();\n      this.hidden = new Subject();\n    }\n\n    _createClass(NgbModalWindow, [{\n      key: \"dismiss\",\n      value: function dismiss(reason) {\n        this.dismissEvent.emit(reason);\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        var _this33 = this;\n\n        this._elWithFocus = this._document.activeElement;\n\n        this._zone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n          _this33._show();\n        });\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._disableEventHandling();\n      }\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var _this34 = this;\n\n        var nativeElement = this._elRef.nativeElement;\n        var context = {\n          animation: this.animation,\n          runningTransition: 'stop'\n        };\n        var windowTransition$ = ngbRunTransition(this._zone, nativeElement, function () {\n          return nativeElement.classList.remove('show');\n        }, context);\n        var dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, function () {}, context);\n        var transitions$ = zip(windowTransition$, dialogTransition$);\n        transitions$.subscribe(function () {\n          _this34.hidden.next();\n\n          _this34.hidden.complete();\n        });\n\n        this._disableEventHandling();\n\n        this._restoreFocus();\n\n        return transitions$;\n      }\n    }, {\n      key: \"_show\",\n      value: function _show() {\n        var _this35 = this;\n\n        var context = {\n          animation: this.animation,\n          runningTransition: 'continue'\n        };\n        var windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, function (element, animation) {\n          if (animation) {\n            reflow(element);\n          }\n\n          element.classList.add('show');\n        }, context);\n        var dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, function () {}, context);\n        zip(windowTransition$, dialogTransition$).subscribe(function () {\n          _this35.shown.next();\n\n          _this35.shown.complete();\n        });\n\n        this._enableEventHandling();\n\n        this._setFocus();\n      }\n    }, {\n      key: \"_enableEventHandling\",\n      value: function _enableEventHandling() {\n        var _this36 = this;\n\n        var nativeElement = this._elRef.nativeElement;\n\n        this._zone.runOutsideAngular(function () {\n          fromEvent(nativeElement, 'keydown').pipe(takeUntil(_this36._closed$), // tslint:disable-next-line:deprecation\n          filter(function (e) {\n            return e.which === Key.Escape;\n          })).subscribe(function (event) {\n            if (_this36.keyboard) {\n              requestAnimationFrame(function () {\n                if (!event.defaultPrevented) {\n                  _this36._zone.run(function () {\n                    return _this36.dismiss(ModalDismissReasons.ESC);\n                  });\n                }\n              });\n            } else if (_this36.backdrop === 'static') {\n              _this36._bumpBackdrop();\n            }\n          }); // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n          // inside the modal dialog and releasing it outside\n\n          var preventClose = false;\n          fromEvent(_this36._dialogEl.nativeElement, 'mousedown').pipe(takeUntil(_this36._closed$), tap(function () {\n            return preventClose = false;\n          }), switchMap(function () {\n            return fromEvent(nativeElement, 'mouseup').pipe(takeUntil(_this36._closed$), take(1));\n          }), filter(function (_ref21) {\n            var target = _ref21.target;\n            return nativeElement === target;\n          })).subscribe(function () {\n            preventClose = true;\n          }); // We're listening to 'click' to dismiss modal on modal window click, except when:\n          // 1. clicking on modal dialog itself\n          // 2. closing was prevented by mousedown/up handlers\n          // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\n          fromEvent(nativeElement, 'click').pipe(takeUntil(_this36._closed$)).subscribe(function (_ref22) {\n            var target = _ref22.target;\n\n            if (nativeElement === target) {\n              if (_this36.backdrop === 'static') {\n                _this36._bumpBackdrop();\n              } else if (_this36.backdrop === true && !preventClose) {\n                _this36._zone.run(function () {\n                  return _this36.dismiss(ModalDismissReasons.BACKDROP_CLICK);\n                });\n              }\n            }\n\n            preventClose = false;\n          });\n        });\n      }\n    }, {\n      key: \"_disableEventHandling\",\n      value: function _disableEventHandling() {\n        this._closed$.next();\n      }\n    }, {\n      key: \"_setFocus\",\n      value: function _setFocus() {\n        var nativeElement = this._elRef.nativeElement;\n\n        if (!nativeElement.contains(document.activeElement)) {\n          var autoFocusable = nativeElement.querySelector(\"[ngbAutofocus]\");\n          var firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n          var elementToFocus = autoFocusable || firstFocusable || nativeElement;\n          elementToFocus.focus();\n        }\n      }\n    }, {\n      key: \"_restoreFocus\",\n      value: function _restoreFocus() {\n        var _this37 = this;\n\n        var body = this._document.body;\n        var elWithFocus = this._elWithFocus;\n        var elementToFocus;\n\n        if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n          elementToFocus = elWithFocus;\n        } else {\n          elementToFocus = body;\n        }\n\n        this._zone.runOutsideAngular(function () {\n          setTimeout(function () {\n            return elementToFocus.focus();\n          });\n          _this37._elWithFocus = null;\n        });\n      }\n    }, {\n      key: \"_bumpBackdrop\",\n      value: function _bumpBackdrop() {\n        if (this.backdrop === 'static') {\n          ngbRunTransition(this._zone, this._elRef.nativeElement, function (_ref23) {\n            var classList = _ref23.classList;\n            classList.add('modal-static');\n            return function () {\n              return classList.remove('modal-static');\n            };\n          }, {\n            animation: this.animation,\n            runningTransition: 'continue'\n          });\n        }\n      }\n    }]);\n\n    return NgbModalWindow;\n  }();\n\n  NgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) {\n    return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbModalWindow.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbModalWindow,\n    selectors: [[\"ngb-modal-window\"]],\n    viewQuery: function NgbModalWindow_Query(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c31, 7);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n      }\n    },\n    hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"],\n    hostVars: 7,\n    hostBindings: function NgbModalWindow_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n        ɵngcc0.ɵɵclassMap(\"modal d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n      }\n    },\n    inputs: {\n      backdrop: \"backdrop\",\n      keyboard: \"keyboard\",\n      animation: \"animation\",\n      ariaLabelledBy: \"ariaLabelledBy\",\n      ariaDescribedBy: \"ariaDescribedBy\",\n      centered: \"centered\",\n      scrollable: \"scrollable\",\n      size: \"size\",\n      windowClass: \"windowClass\",\n      modalDialogClass: \"modalDialogClass\"\n    },\n    outputs: {\n      dismissEvent: \"dismiss\"\n    },\n    ngContentSelectors: _c3,\n    decls: 4,\n    vars: 2,\n    consts: [[\"role\", \"document\"], [\"dialog\", \"\"], [1, \"modal-content\"]],\n    template: function NgbModalWindow_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n        ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n        ɵngcc0.ɵɵprojection(3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\") + (ctx.modalDialogClass ? \" \" + ctx.modalDialogClass : \"\"));\n      }\n    },\n    styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"],\n    encapsulation: 2\n  });\n  return NgbModalWindow;\n}();\n\nvar NgbModalStack = /*@__PURE__*/function () {\n  var NgbModalStack = /*#__PURE__*/function () {\n    function NgbModalStack(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n      var _this38 = this;\n\n      _classCallCheck(this, NgbModalStack);\n\n      this._applicationRef = _applicationRef;\n      this._injector = _injector;\n      this._document = _document;\n      this._scrollBar = _scrollBar;\n      this._rendererFactory = _rendererFactory;\n      this._ngZone = _ngZone;\n      this._activeWindowCmptHasChanged = new Subject();\n      this._ariaHiddenValues = new Map();\n      this._backdropAttributes = ['animation', 'backdropClass'];\n      this._modalRefs = [];\n      this._windowAttributes = ['animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size', 'windowClass', 'modalDialogClass'];\n      this._windowCmpts = [];\n      this._activeInstances = new EventEmitter(); // Trap focus on active WindowCmpt\n\n      this._activeWindowCmptHasChanged.subscribe(function () {\n        if (_this38._windowCmpts.length) {\n          var activeWindowCmpt = _this38._windowCmpts[_this38._windowCmpts.length - 1];\n          ngbFocusTrap(_this38._ngZone, activeWindowCmpt.location.nativeElement, _this38._activeWindowCmptHasChanged);\n\n          _this38._revertAriaHidden();\n\n          _this38._setAriaHidden(activeWindowCmpt.location.nativeElement);\n        }\n      });\n    }\n\n    _createClass(NgbModalStack, [{\n      key: \"open\",\n      value: function open(moduleCFR, contentInjector, content, options) {\n        var _this39 = this;\n\n        var containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n\n        var renderer = this._rendererFactory.createRenderer(null, null);\n\n        var revertPaddingForScrollBar = this._scrollBar.compensate();\n\n        var removeBodyClass = function removeBodyClass() {\n          if (!_this39._modalRefs.length) {\n            renderer.removeClass(_this39._document.body, 'modal-open');\n\n            _this39._revertAriaHidden();\n          }\n        };\n\n        if (!containerEl) {\n          throw new Error(\"The specified modal container \\\"\".concat(options.container || 'body', \"\\\" was not found in the DOM.\"));\n        }\n\n        var activeModal = new NgbActiveModal();\n\n        var contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n\n        var backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\n\n        var windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n\n        var ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n\n        this._registerModalRef(ngbModalRef);\n\n        this._registerWindowCmpt(windowCmptRef);\n\n        ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n        ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n\n        activeModal.close = function (result) {\n          ngbModalRef.close(result);\n        };\n\n        activeModal.dismiss = function (reason) {\n          ngbModalRef.dismiss(reason);\n        };\n\n        this._applyWindowOptions(windowCmptRef.instance, options);\n\n        if (this._modalRefs.length === 1) {\n          renderer.addClass(this._document.body, 'modal-open');\n        }\n\n        if (backdropCmptRef && backdropCmptRef.instance) {\n          this._applyBackdropOptions(backdropCmptRef.instance, options);\n\n          backdropCmptRef.changeDetectorRef.detectChanges();\n        }\n\n        windowCmptRef.changeDetectorRef.detectChanges();\n        return ngbModalRef;\n      }\n    }, {\n      key: \"activeInstances\",\n      get: function get() {\n        return this._activeInstances;\n      }\n    }, {\n      key: \"dismissAll\",\n      value: function dismissAll(reason) {\n        this._modalRefs.forEach(function (ngbModalRef) {\n          return ngbModalRef.dismiss(reason);\n        });\n      }\n    }, {\n      key: \"hasOpenModals\",\n      value: function hasOpenModals() {\n        return this._modalRefs.length > 0;\n      }\n    }, {\n      key: \"_attachBackdrop\",\n      value: function _attachBackdrop(moduleCFR, containerEl) {\n        var backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n        var backdropCmptRef = backdropFactory.create(this._injector);\n\n        this._applicationRef.attachView(backdropCmptRef.hostView);\n\n        containerEl.appendChild(backdropCmptRef.location.nativeElement);\n        return backdropCmptRef;\n      }\n    }, {\n      key: \"_attachWindowComponent\",\n      value: function _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n        var windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n        var windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n\n        this._applicationRef.attachView(windowCmptRef.hostView);\n\n        containerEl.appendChild(windowCmptRef.location.nativeElement);\n        return windowCmptRef;\n      }\n    }, {\n      key: \"_applyWindowOptions\",\n      value: function _applyWindowOptions(windowInstance, options) {\n        this._windowAttributes.forEach(function (optionName) {\n          if (isDefined(options[optionName])) {\n            windowInstance[optionName] = options[optionName];\n          }\n        });\n      }\n    }, {\n      key: \"_applyBackdropOptions\",\n      value: function _applyBackdropOptions(backdropInstance, options) {\n        this._backdropAttributes.forEach(function (optionName) {\n          if (isDefined(options[optionName])) {\n            backdropInstance[optionName] = options[optionName];\n          }\n        });\n      }\n    }, {\n      key: \"_getContentRef\",\n      value: function _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\n        if (!content) {\n          return new ContentRef([]);\n        } else if (content instanceof TemplateRef) {\n          return this._createFromTemplateRef(content, activeModal);\n        } else if (isString(content)) {\n          return this._createFromString(content);\n        } else {\n          return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n        }\n      }\n    }, {\n      key: \"_createFromTemplateRef\",\n      value: function _createFromTemplateRef(content, activeModal) {\n        var context = {\n          $implicit: activeModal,\n          close: function close(result) {\n            activeModal.close(result);\n          },\n          dismiss: function dismiss(reason) {\n            activeModal.dismiss(reason);\n          }\n        };\n        var viewRef = content.createEmbeddedView(context);\n\n        this._applicationRef.attachView(viewRef);\n\n        return new ContentRef([viewRef.rootNodes], viewRef);\n      }\n    }, {\n      key: \"_createFromString\",\n      value: function _createFromString(content) {\n        var component = this._document.createTextNode(\"\".concat(content));\n\n        return new ContentRef([[component]]);\n      }\n    }, {\n      key: \"_createFromComponent\",\n      value: function _createFromComponent(moduleCFR, contentInjector, content, context, options) {\n        var contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n        var modalContentInjector = Injector.create({\n          providers: [{\n            provide: NgbActiveModal,\n            useValue: context\n          }],\n          parent: contentInjector\n        });\n        var componentRef = contentCmptFactory.create(modalContentInjector);\n        var componentNativeEl = componentRef.location.nativeElement;\n\n        if (options.scrollable) {\n          componentNativeEl.classList.add('component-host-scrollable');\n        }\n\n        this._applicationRef.attachView(componentRef.hostView); // FIXME: we should here get rid of the component nativeElement\n        // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\n\n        return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n      }\n    }, {\n      key: \"_setAriaHidden\",\n      value: function _setAriaHidden(element) {\n        var _this40 = this;\n\n        var parent = element.parentElement;\n\n        if (parent && element !== this._document.body) {\n          Array.from(parent.children).forEach(function (sibling) {\n            if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n              _this40._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n\n              sibling.setAttribute('aria-hidden', 'true');\n            }\n          });\n\n          this._setAriaHidden(parent);\n        }\n      }\n    }, {\n      key: \"_revertAriaHidden\",\n      value: function _revertAriaHidden() {\n        this._ariaHiddenValues.forEach(function (value, element) {\n          if (value) {\n            element.setAttribute('aria-hidden', value);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this._ariaHiddenValues.clear();\n      }\n    }, {\n      key: \"_registerModalRef\",\n      value: function _registerModalRef(ngbModalRef) {\n        var _this41 = this;\n\n        var unregisterModalRef = function unregisterModalRef() {\n          var index = _this41._modalRefs.indexOf(ngbModalRef);\n\n          if (index > -1) {\n            _this41._modalRefs.splice(index, 1);\n\n            _this41._activeInstances.emit(_this41._modalRefs);\n          }\n        };\n\n        this._modalRefs.push(ngbModalRef);\n\n        this._activeInstances.emit(this._modalRefs);\n\n        ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n      }\n    }, {\n      key: \"_registerWindowCmpt\",\n      value: function _registerWindowCmpt(ngbWindowCmpt) {\n        var _this42 = this;\n\n        this._windowCmpts.push(ngbWindowCmpt);\n\n        this._activeWindowCmptHasChanged.next();\n\n        ngbWindowCmpt.onDestroy(function () {\n          var index = _this42._windowCmpts.indexOf(ngbWindowCmpt);\n\n          if (index > -1) {\n            _this42._windowCmpts.splice(index, 1);\n\n            _this42._activeWindowCmptHasChanged.next();\n          }\n        });\n      }\n    }]);\n\n    return NgbModalStack;\n  }();\n\n  NgbModalStack.ɵfac = function NgbModalStack_Factory(t) {\n    return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone));\n  };\n\n  NgbModalStack.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbModalStack_Factory() {\n      return new NgbModalStack(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(ScrollBar), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i0.NgZone));\n    },\n    token: NgbModalStack,\n    providedIn: \"root\"\n  });\n  return NgbModalStack;\n}();\n\nvar NgbModal = /*@__PURE__*/function () {\n  var NgbModal = /*#__PURE__*/function () {\n    function NgbModal(_moduleCFR, _injector, _modalStack, _config) {\n      _classCallCheck(this, NgbModal);\n\n      this._moduleCFR = _moduleCFR;\n      this._injector = _injector;\n      this._modalStack = _modalStack;\n      this._config = _config;\n    }\n    /**\n     * Opens a new modal window with the specified content and supplied options.\n     *\n     * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n     * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n     * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n     *\n     * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n     */\n\n\n    _createClass(NgbModal, [{\n      key: \"open\",\n      value: function open(content) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var combinedOptions = Object.assign(Object.assign(Object.assign({}, this._config), {\n          animation: this._config.animation\n        }), options);\n        return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n      }\n      /**\n       * Returns an observable that holds the active modal instances.\n       */\n\n    }, {\n      key: \"activeInstances\",\n      get: function get() {\n        return this._modalStack.activeInstances;\n      }\n      /**\n       * Dismisses all currently displayed modal windows with the supplied reason.\n       *\n       * @since 3.1.0\n       */\n\n    }, {\n      key: \"dismissAll\",\n      value: function dismissAll(reason) {\n        this._modalStack.dismissAll(reason);\n      }\n      /**\n       * Indicates if there are currently any open modal windows in the application.\n       *\n       * @since 3.3.0\n       */\n\n    }, {\n      key: \"hasOpenModals\",\n      value: function hasOpenModals() {\n        return this._modalStack.hasOpenModals();\n      }\n    }]);\n\n    return NgbModal;\n  }();\n\n  NgbModal.ɵfac = function NgbModal_Factory(t) {\n    return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig));\n  };\n\n  NgbModal.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbModal_Factory() {\n      return new NgbModal(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(NgbModalStack), i0.ɵɵinject(NgbModalConfig));\n    },\n    token: NgbModal,\n    providedIn: \"root\"\n  });\n  return NgbModal;\n}();\n\nvar NgbModalModule = /*@__PURE__*/function () {\n  var NgbModalModule = /*#__PURE__*/_createClass(function NgbModalModule() {\n    _classCallCheck(this, NgbModalModule);\n  });\n\n  NgbModalModule.ɵfac = function NgbModalModule_Factory(t) {\n    return new (t || NgbModalModule)();\n  };\n\n  NgbModalModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbModalModule\n  });\n  NgbModalModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    providers: [NgbModal]\n  });\n  return NgbModalModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, {\n    declarations: [NgbModalBackdrop, NgbModalWindow]\n  });\n})();\n\nvar NgbNavConfig = /*@__PURE__*/function () {\n  var NgbNavConfig = /*#__PURE__*/function () {\n    function NgbNavConfig(_ngbConfig) {\n      _classCallCheck(this, NgbNavConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.destroyOnHide = true;\n      this.orientation = 'horizontal';\n      this.roles = 'tablist';\n      this.keyboard = false;\n    }\n\n    _createClass(NgbNavConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbNavConfig;\n  }();\n\n  NgbNavConfig.ɵfac = function NgbNavConfig_Factory(t) {\n    return new (t || NgbNavConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbNavConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbNavConfig_Factory() {\n      return new NgbNavConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbNavConfig,\n    providedIn: \"root\"\n  });\n  return NgbNavConfig;\n}();\n\nvar isValidNavId = function isValidNavId(id) {\n  return isDefined(id) && id !== '';\n};\n\nvar ɵ0$1 = isValidNavId;\nvar navCounter = 0;\n\nvar NgbNavContent = /*@__PURE__*/function () {\n  var NgbNavContent = /*#__PURE__*/_createClass(function NgbNavContent(templateRef) {\n    _classCallCheck(this, NgbNavContent);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbNavContent.ɵfac = function NgbNavContent_Factory(t) {\n    return new (t || NgbNavContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbNavContent.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNavContent,\n    selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]]\n  });\n  return NgbNavContent;\n}();\n\nvar NgbNavItem = /*@__PURE__*/function () {\n  var NgbNavItem = /*#__PURE__*/function () {\n    function NgbNavItem(nav, elementRef) {\n      _classCallCheck(this, NgbNavItem);\n\n      this.elementRef = elementRef;\n      /**\n       * If `true`, the current nav item is disabled and can't be toggled by user.\n       *\n       * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n       */\n\n      this.disabled = false;\n      /**\n       * An event emitted when the fade in transition is finished on the related nav content\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the fade out transition is finished on the related nav content\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter(); // TODO: cf https://github.com/angular/angular/issues/30106\n\n      this._nav = nav;\n    }\n\n    _createClass(NgbNavItem, [{\n      key: \"ngAfterContentChecked\",\n      value: function ngAfterContentChecked() {\n        // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n        // only @ContentChildren allows us to specify the {descendants: false} option.\n        // Without {descendants: false} we are hitting bugs described in:\n        // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n        this.contentTpl = this.contentTpls.first;\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        if (!isDefined(this.domId)) {\n          this.domId = \"ngb-nav-\".concat(navCounter++);\n        }\n      }\n    }, {\n      key: \"active\",\n      get: function get() {\n        return this._nav.activeId === this.id;\n      }\n    }, {\n      key: \"id\",\n      get: function get() {\n        return isValidNavId(this._id) ? this._id : this.domId;\n      }\n    }, {\n      key: \"panelDomId\",\n      get: function get() {\n        return \"\".concat(this.domId, \"-panel\");\n      }\n    }, {\n      key: \"isPanelInDom\",\n      value: function isPanelInDom() {\n        return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n      }\n    }]);\n\n    return NgbNavItem;\n  }();\n\n  NgbNavItem.ɵfac = function NgbNavItem_Factory(t) {\n    return new (t || NgbNavItem)(ɵngcc0.ɵɵdirectiveInject(forwardRef(function () {\n      return NgbNav;\n    })), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbNavItem.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNavItem,\n    selectors: [[\"\", \"ngbNavItem\", \"\"]],\n    contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n      }\n    },\n    hostVars: 2,\n    hostBindings: function NgbNavItem_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"nav-item\", true);\n      }\n    },\n    inputs: {\n      disabled: \"disabled\",\n      domId: \"domId\",\n      destroyOnHide: \"destroyOnHide\",\n      _id: [\"ngbNavItem\", \"_id\"]\n    },\n    outputs: {\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbNavItem\"]\n  });\n  return NgbNavItem;\n}();\n\nvar NgbNav = /*@__PURE__*/function () {\n  var NgbNav = /*#__PURE__*/function () {\n    function NgbNav(role, config, _cd, _document) {\n      _classCallCheck(this, NgbNav);\n\n      this.role = role;\n      this._cd = _cd;\n      this._document = _document;\n      /**\n       * The event emitted after the active nav changes\n       * The payload of the event is the newly active nav id\n       *\n       * If you want to prevent nav change, you should use `(navChange)` event\n       */\n\n      this.activeIdChange = new EventEmitter();\n      /**\n       * An event emitted when the fade in transition is finished for one of the items.\n       *\n       * Payload of the event is the nav id that was just shown.\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the fade out transition is finished for one of the items.\n       *\n       * Payload of the event is the nav id that was just hidden.\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter();\n      this.destroy$ = new Subject();\n      this.navItemChange$ = new Subject();\n      /**\n       * The nav change event emitted right before the nav change happens on user click.\n       *\n       * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n       *\n       * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n       */\n\n      this.navChange = new EventEmitter();\n      this.animation = config.animation;\n      this.destroyOnHide = config.destroyOnHide;\n      this.orientation = config.orientation;\n      this.roles = config.roles;\n      this.keyboard = config.keyboard;\n    }\n\n    _createClass(NgbNav, [{\n      key: \"click\",\n      value: function click(item) {\n        if (!item.disabled) {\n          this._updateActiveId(item.id);\n        }\n      }\n    }, {\n      key: \"onKeyDown\",\n      value: function onKeyDown(event) {\n        var _this43 = this;\n\n        if (this.roles !== 'tablist' || !this.keyboard) {\n          return;\n        } // tslint:disable-next-line: deprecation\n\n\n        var key = event.which;\n        var enabledLinks = this.links.filter(function (link) {\n          return !link.navItem.disabled;\n        });\n        var length = enabledLinks.length;\n        var position = -1;\n        enabledLinks.forEach(function (link, index) {\n          if (link.elRef.nativeElement === _this43._document.activeElement) {\n            position = index;\n          }\n        });\n\n        if (length) {\n          switch (key) {\n            case Key.ArrowLeft:\n              if (this.orientation === 'vertical') {\n                return;\n              }\n\n              position = (position - 1 + length) % length;\n              break;\n\n            case Key.ArrowRight:\n              if (this.orientation === 'vertical') {\n                return;\n              }\n\n              position = (position + 1) % length;\n              break;\n\n            case Key.ArrowDown:\n              if (this.orientation === 'horizontal') {\n                return;\n              }\n\n              position = (position + 1) % length;\n              break;\n\n            case Key.ArrowUp:\n              if (this.orientation === 'horizontal') {\n                return;\n              }\n\n              position = (position - 1 + length) % length;\n              break;\n\n            case Key.Home:\n              position = 0;\n              break;\n\n            case Key.End:\n              position = length - 1;\n              break;\n          }\n\n          if (this.keyboard === 'changeWithArrows') {\n            this.select(enabledLinks[position].navItem.id);\n          }\n\n          enabledLinks[position].elRef.nativeElement.focus();\n          event.preventDefault();\n        }\n      }\n      /**\n       * Selects the nav with the given id and shows its associated pane.\n       * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n       */\n\n    }, {\n      key: \"select\",\n      value: function select(id) {\n        this._updateActiveId(id, false);\n      }\n    }, {\n      key: \"ngAfterContentInit\",\n      value: function ngAfterContentInit() {\n        var _this44 = this;\n\n        if (!isDefined(this.activeId)) {\n          var _nextId = this.items.first ? this.items.first.id : null;\n\n          if (isValidNavId(_nextId)) {\n            this._updateActiveId(_nextId, false);\n\n            this._cd.detectChanges();\n          }\n        }\n\n        this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(function () {\n          return _this44._notifyItemChanged(_this44.activeId);\n        });\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(_ref24) {\n        var activeId = _ref24.activeId;\n\n        if (activeId && !activeId.firstChange) {\n          this._notifyItemChanged(activeId.currentValue);\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this.destroy$.next();\n      }\n    }, {\n      key: \"_updateActiveId\",\n      value: function _updateActiveId(nextId) {\n        var emitNavChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n        if (this.activeId !== nextId) {\n          var defaultPrevented = false;\n\n          if (emitNavChange) {\n            this.navChange.emit({\n              activeId: this.activeId,\n              nextId: nextId,\n              preventDefault: function preventDefault() {\n                defaultPrevented = true;\n              }\n            });\n          }\n\n          if (!defaultPrevented) {\n            this.activeId = nextId;\n            this.activeIdChange.emit(nextId);\n\n            this._notifyItemChanged(nextId);\n          }\n        }\n      }\n    }, {\n      key: \"_notifyItemChanged\",\n      value: function _notifyItemChanged(nextItemId) {\n        this.navItemChange$.next(this._getItemById(nextItemId));\n      }\n    }, {\n      key: \"_getItemById\",\n      value: function _getItemById(itemId) {\n        return this.items && this.items.find(function (item) {\n          return item.id === itemId;\n        }) || null;\n      }\n    }]);\n\n    return NgbNav;\n  }();\n\n  NgbNav.ɵfac = function NgbNav_Factory(t) {\n    return new (t || NgbNav)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT));\n  };\n\n  NgbNav.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNav,\n    selectors: [[\"\", \"ngbNav\", \"\"]],\n    contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavLink, 5);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.links = _t);\n      }\n    },\n    hostVars: 6,\n    hostBindings: function NgbNav_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbNav_keydown_arrowLeft_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        })(\"keydown.arrowRight\", function NgbNav_keydown_arrowRight_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        })(\"keydown.arrowDown\", function NgbNav_keydown_arrowDown_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        })(\"keydown.arrowUp\", function NgbNav_keydown_arrowUp_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        })(\"keydown.Home\", function NgbNav_keydown_Home_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        })(\"keydown.End\", function NgbNav_keydown_End_HostBindingHandler($event) {\n          return ctx.onKeyDown($event);\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n        ɵngcc0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n      }\n    },\n    inputs: {\n      animation: \"animation\",\n      destroyOnHide: \"destroyOnHide\",\n      orientation: \"orientation\",\n      roles: \"roles\",\n      keyboard: \"keyboard\",\n      activeId: \"activeId\"\n    },\n    outputs: {\n      activeIdChange: \"activeIdChange\",\n      shown: \"shown\",\n      hidden: \"hidden\",\n      navChange: \"navChange\"\n    },\n    exportAs: [\"ngbNav\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbNav;\n}();\n\nvar NgbNavLink = /*@__PURE__*/function () {\n  var NgbNavLink = /*#__PURE__*/function () {\n    function NgbNavLink(role, navItem, nav, elRef) {\n      _classCallCheck(this, NgbNavLink);\n\n      this.role = role;\n      this.navItem = navItem;\n      this.nav = nav;\n      this.elRef = elRef;\n    }\n\n    _createClass(NgbNavLink, [{\n      key: \"hasNavItemClass\",\n      value: function hasNavItemClass() {\n        // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n        return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n      }\n    }]);\n\n    return NgbNavLink;\n  }();\n\n  NgbNavLink.ɵfac = function NgbNavLink_Factory(t) {\n    return new (t || NgbNavLink)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavItem), ɵngcc0.ɵɵdirectiveInject(NgbNav), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbNavLink.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNavLink,\n    selectors: [[\"a\", \"ngbNavLink\", \"\"]],\n    hostAttrs: [\"href\", \"\"],\n    hostVars: 14,\n    hostBindings: function NgbNavLink_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) {\n          ctx.nav.click(ctx.navItem);\n          return $event.preventDefault();\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n        ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.navItem.disabled ? -1 : undefined)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n        ɵngcc0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.hasNavItemClass())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n      }\n    }\n  });\n  return NgbNavLink;\n}();\n\nvar ngbNavFadeOutTransition = function ngbNavFadeOutTransition(_ref25) {\n  var classList = _ref25.classList;\n  classList.remove('show');\n  return function () {\n    return classList.remove('active');\n  };\n};\n\nvar ngbNavFadeInTransition = function ngbNavFadeInTransition(element, animation) {\n  if (animation) {\n    reflow(element);\n  }\n\n  element.classList.add('show');\n};\n\nvar NgbNavPane = /*@__PURE__*/function () {\n  var NgbNavPane = /*#__PURE__*/_createClass(function NgbNavPane(elRef) {\n    _classCallCheck(this, NgbNavPane);\n\n    this.elRef = elRef;\n  });\n\n  NgbNavPane.ɵfac = function NgbNavPane_Factory(t) {\n    return new (t || NgbNavPane)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbNavPane.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbNavPane,\n    selectors: [[\"\", \"ngbNavPane\", \"\"]],\n    hostAttrs: [1, \"tab-pane\"],\n    hostVars: 5,\n    hostBindings: function NgbNavPane_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"id\", ctx.item.panelDomId);\n        ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", ctx.item.domId);\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.nav.animation);\n      }\n    },\n    inputs: {\n      item: \"item\",\n      nav: \"nav\",\n      role: \"role\"\n    }\n  });\n  return NgbNavPane;\n}();\n\nvar NgbNavOutlet = /*@__PURE__*/function () {\n  var NgbNavOutlet = /*#__PURE__*/function () {\n    function NgbNavOutlet(_cd, _ngZone) {\n      _classCallCheck(this, NgbNavOutlet);\n\n      this._cd = _cd;\n      this._ngZone = _ngZone;\n      this._activePane = null;\n    }\n\n    _createClass(NgbNavOutlet, [{\n      key: \"isPanelTransitioning\",\n      value: function isPanelTransitioning(item) {\n        var _a;\n\n        return ((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) === item;\n      }\n    }, {\n      key: \"ngAfterViewInit\",\n      value: function ngAfterViewInit() {\n        var _this45 = this;\n\n        var _a; // initial display\n\n\n        this._updateActivePane(); // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n\n\n        this.nav.navItemChange$.pipe(takeUntil(this.nav.destroy$), startWith(((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) || null), distinctUntilChanged(), skip(1)).subscribe(function (nextItem) {\n          var options = {\n            animation: _this45.nav.animation,\n            runningTransition: 'stop'\n          }; // next panel we're switching to will only appear in DOM after the change detection is done\n          // and `this._panes` will be updated\n\n          _this45._cd.detectChanges(); // fading out\n\n\n          if (_this45._activePane) {\n            ngbRunTransition(_this45._ngZone, _this45._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options).subscribe(function () {\n              var _a;\n\n              var activeItem = (_a = _this45._activePane) === null || _a === void 0 ? void 0 : _a.item;\n              _this45._activePane = _this45._getPaneForItem(nextItem); // mark for check when transition finishes as outlet or parent containers might be OnPush\n              // without this the panes that have \"faded out\" will stay in DOM\n\n              _this45._cd.markForCheck(); // fading in\n\n\n              if (_this45._activePane) {\n                // we have to add the '.active' class before running the transition,\n                // because it should be in place before `ngbRunTransition` does `reflow()`\n                _this45._activePane.elRef.nativeElement.classList.add('active');\n\n                ngbRunTransition(_this45._ngZone, _this45._activePane.elRef.nativeElement, ngbNavFadeInTransition, options).subscribe(function () {\n                  if (nextItem) {\n                    nextItem.shown.emit();\n\n                    _this45.nav.shown.emit(nextItem.id);\n                  }\n                });\n              }\n\n              if (activeItem) {\n                activeItem.hidden.emit();\n\n                _this45.nav.hidden.emit(activeItem.id);\n              }\n            });\n          } else {\n            _this45._updateActivePane();\n          }\n        });\n      }\n    }, {\n      key: \"_updateActivePane\",\n      value: function _updateActivePane() {\n        var _a, _b;\n\n        this._activePane = this._getActivePane();\n        (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.elRef.nativeElement.classList.add('show');\n        (_b = this._activePane) === null || _b === void 0 ? void 0 : _b.elRef.nativeElement.classList.add('active');\n      }\n    }, {\n      key: \"_getPaneForItem\",\n      value: function _getPaneForItem(item) {\n        return this._panes && this._panes.find(function (pane) {\n          return pane.item === item;\n        }) || null;\n      }\n    }, {\n      key: \"_getActivePane\",\n      value: function _getActivePane() {\n        return this._panes && this._panes.find(function (pane) {\n          return pane.item.active;\n        }) || null;\n      }\n    }]);\n\n    return NgbNavOutlet;\n  }();\n\n  NgbNavOutlet.ɵfac = function NgbNavOutlet_Factory(t) {\n    return new (t || NgbNavOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n  };\n\n  NgbNavOutlet.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbNavOutlet,\n    selectors: [[\"\", \"ngbNavOutlet\", \"\"]],\n    viewQuery: function NgbNavOutlet_Query(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(NgbNavPane, 5);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._panes = _t);\n      }\n    },\n    hostVars: 2,\n    hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"tab-content\", true);\n      }\n    },\n    inputs: {\n      paneRole: \"paneRole\",\n      nav: [\"ngbNavOutlet\", \"nav\"]\n    },\n    attrs: _c32,\n    decls: 1,\n    vars: 1,\n    consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\", 4, \"ngIf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n    template: function NgbNavOutlet_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.nav.items);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbNavPane, ɵngcc1.NgTemplateOutlet],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbNavOutlet;\n}();\n\nvar NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\n\nvar NgbNavModule = /*@__PURE__*/function () {\n  var NgbNavModule = /*#__PURE__*/_createClass(function NgbNavModule() {\n    _classCallCheck(this, NgbNavModule);\n  });\n\n  NgbNavModule.ɵfac = function NgbNavModule_Factory(t) {\n    return new (t || NgbNavModule)();\n  };\n\n  NgbNavModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbNavModule\n  });\n  NgbNavModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbNavModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbNavModule, {\n    declarations: function declarations() {\n      return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\n    }\n  });\n})();\n\nvar NgbPaginationConfig = /*@__PURE__*/function () {\n  var NgbPaginationConfig = /*#__PURE__*/_createClass(function NgbPaginationConfig() {\n    _classCallCheck(this, NgbPaginationConfig);\n\n    this.disabled = false;\n    this.boundaryLinks = false;\n    this.directionLinks = true;\n    this.ellipses = true;\n    this.maxSize = 0;\n    this.pageSize = 10;\n    this.rotate = false;\n  });\n\n  NgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) {\n    return new (t || NgbPaginationConfig)();\n  };\n\n  NgbPaginationConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbPaginationConfig_Factory() {\n      return new NgbPaginationConfig();\n    },\n    token: NgbPaginationConfig,\n    providedIn: \"root\"\n  });\n  return NgbPaginationConfig;\n}();\n\nvar NgbPaginationEllipsis = /*@__PURE__*/function () {\n  var NgbPaginationEllipsis = /*#__PURE__*/_createClass(function NgbPaginationEllipsis(templateRef) {\n    _classCallCheck(this, NgbPaginationEllipsis);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) {\n    return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationEllipsis.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationEllipsis,\n    selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]]\n  });\n  return NgbPaginationEllipsis;\n}();\n\nvar NgbPaginationFirst = /*@__PURE__*/function () {\n  var NgbPaginationFirst = /*#__PURE__*/_createClass(function NgbPaginationFirst(templateRef) {\n    _classCallCheck(this, NgbPaginationFirst);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) {\n    return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationFirst.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationFirst,\n    selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]]\n  });\n  return NgbPaginationFirst;\n}();\n\nvar NgbPaginationLast = /*@__PURE__*/function () {\n  var NgbPaginationLast = /*#__PURE__*/_createClass(function NgbPaginationLast(templateRef) {\n    _classCallCheck(this, NgbPaginationLast);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) {\n    return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationLast.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationLast,\n    selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]]\n  });\n  return NgbPaginationLast;\n}();\n\nvar NgbPaginationNext = /*@__PURE__*/function () {\n  var NgbPaginationNext = /*#__PURE__*/_createClass(function NgbPaginationNext(templateRef) {\n    _classCallCheck(this, NgbPaginationNext);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) {\n    return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationNext.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationNext,\n    selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]]\n  });\n  return NgbPaginationNext;\n}();\n\nvar NgbPaginationNumber = /*@__PURE__*/function () {\n  var NgbPaginationNumber = /*#__PURE__*/_createClass(function NgbPaginationNumber(templateRef) {\n    _classCallCheck(this, NgbPaginationNumber);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) {\n    return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationNumber.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationNumber,\n    selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]]\n  });\n  return NgbPaginationNumber;\n}();\n\nvar NgbPaginationPrevious = /*@__PURE__*/function () {\n  var NgbPaginationPrevious = /*#__PURE__*/_createClass(function NgbPaginationPrevious(templateRef) {\n    _classCallCheck(this, NgbPaginationPrevious);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) {\n    return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationPrevious.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationPrevious,\n    selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]]\n  });\n  return NgbPaginationPrevious;\n}();\n\nvar NgbPaginationPages = /*@__PURE__*/function () {\n  var NgbPaginationPages = /*#__PURE__*/_createClass(function NgbPaginationPages(templateRef) {\n    _classCallCheck(this, NgbPaginationPages);\n\n    this.templateRef = templateRef;\n  });\n\n  NgbPaginationPages.ɵfac = function NgbPaginationPages_Factory(t) {\n    return new (t || NgbPaginationPages)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef));\n  };\n\n  NgbPaginationPages.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPaginationPages,\n    selectors: [[\"ng-template\", \"ngbPaginationPages\", \"\"]]\n  });\n  return NgbPaginationPages;\n}();\n\nvar NgbPagination = /*@__PURE__*/function () {\n  var NgbPagination = /*#__PURE__*/function () {\n    function NgbPagination(config) {\n      _classCallCheck(this, NgbPagination);\n\n      this.pageCount = 0;\n      this.pages = [];\n      /**\n       *  The current page.\n       *\n       *  Page numbers start with `1`.\n       */\n\n      this.page = 1;\n      /**\n       *  An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n       *\n       *  Event payload is the number of the newly selected page.\n       *\n       *  Page numbers start with `1`.\n       */\n\n      this.pageChange = new EventEmitter(true);\n      this.disabled = config.disabled;\n      this.boundaryLinks = config.boundaryLinks;\n      this.directionLinks = config.directionLinks;\n      this.ellipses = config.ellipses;\n      this.maxSize = config.maxSize;\n      this.pageSize = config.pageSize;\n      this.rotate = config.rotate;\n      this.size = config.size;\n    }\n\n    _createClass(NgbPagination, [{\n      key: \"hasPrevious\",\n      value: function hasPrevious() {\n        return this.page > 1;\n      }\n    }, {\n      key: \"hasNext\",\n      value: function hasNext() {\n        return this.page < this.pageCount;\n      }\n    }, {\n      key: \"nextDisabled\",\n      value: function nextDisabled() {\n        return !this.hasNext() || this.disabled;\n      }\n    }, {\n      key: \"previousDisabled\",\n      value: function previousDisabled() {\n        return !this.hasPrevious() || this.disabled;\n      }\n    }, {\n      key: \"selectPage\",\n      value: function selectPage(pageNumber) {\n        this._updatePages(pageNumber);\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        this._updatePages(this.page);\n      }\n    }, {\n      key: \"isEllipsis\",\n      value: function isEllipsis(pageNumber) {\n        return pageNumber === -1;\n      }\n      /**\n       * Appends ellipses and first/last page number to the displayed pages\n       */\n\n    }, {\n      key: \"_applyEllipses\",\n      value: function _applyEllipses(start, end) {\n        if (this.ellipses) {\n          if (start > 0) {\n            // The first page will always be included. If the displayed range\n            // starts after the third page, then add ellipsis. But if the range\n            // starts on the third page, then add the second page instead of\n            // an ellipsis, because the ellipsis would only hide a single page.\n            if (start > 2) {\n              this.pages.unshift(-1);\n            } else if (start === 2) {\n              this.pages.unshift(2);\n            }\n\n            this.pages.unshift(1);\n          }\n\n          if (end < this.pageCount) {\n            // The last page will always be included. If the displayed range\n            // ends before the third-last page, then add ellipsis. But if the range\n            // ends on third-last page, then add the second-last page instead of\n            // an ellipsis, because the ellipsis would only hide a single page.\n            if (end < this.pageCount - 2) {\n              this.pages.push(-1);\n            } else if (end === this.pageCount - 2) {\n              this.pages.push(this.pageCount - 1);\n            }\n\n            this.pages.push(this.pageCount);\n          }\n        }\n      }\n      /**\n       * Rotates page numbers based on maxSize items visible.\n       * Currently selected page stays in the middle:\n       *\n       * Ex. for selected page = 6:\n       * [5,*6*,7] for maxSize = 3\n       * [4,5,*6*,7] for maxSize = 4\n       */\n\n    }, {\n      key: \"_applyRotation\",\n      value: function _applyRotation() {\n        var start = 0;\n        var end = this.pageCount;\n        var leftOffset = Math.floor(this.maxSize / 2);\n        var rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n\n        if (this.page <= leftOffset) {\n          // very beginning, no rotation -> [0..maxSize]\n          end = this.maxSize;\n        } else if (this.pageCount - this.page < leftOffset) {\n          // very end, no rotation -> [len-maxSize..len]\n          start = this.pageCount - this.maxSize;\n        } else {\n          // rotate\n          start = this.page - leftOffset - 1;\n          end = this.page + rightOffset;\n        }\n\n        return [start, end];\n      }\n      /**\n       * Paginates page numbers based on maxSize items per page.\n       */\n\n    }, {\n      key: \"_applyPagination\",\n      value: function _applyPagination() {\n        var page = Math.ceil(this.page / this.maxSize) - 1;\n        var start = page * this.maxSize;\n        var end = start + this.maxSize;\n        return [start, end];\n      }\n    }, {\n      key: \"_setPageInRange\",\n      value: function _setPageInRange(newPageNo) {\n        var prevPageNo = this.page;\n        this.page = getValueInRange(newPageNo, this.pageCount, 1);\n\n        if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n          this.pageChange.emit(this.page);\n        }\n      }\n    }, {\n      key: \"_updatePages\",\n      value: function _updatePages(newPage) {\n        this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n\n        if (!isNumber(this.pageCount)) {\n          this.pageCount = 0;\n        } // fill-in model needed to render pages\n\n\n        this.pages.length = 0;\n\n        for (var i = 1; i <= this.pageCount; i++) {\n          this.pages.push(i);\n        } // set page within 1..max range\n\n\n        this._setPageInRange(newPage); // apply maxSize if necessary\n\n\n        if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n          var start = 0;\n          var end = this.pageCount; // either paginating or rotating page numbers\n\n          if (this.rotate) {\n            var _this$_applyRotation = this._applyRotation();\n\n            var _this$_applyRotation2 = _slicedToArray(_this$_applyRotation, 2);\n\n            start = _this$_applyRotation2[0];\n            end = _this$_applyRotation2[1];\n          } else {\n            var _this$_applyPaginatio = this._applyPagination();\n\n            var _this$_applyPaginatio2 = _slicedToArray(_this$_applyPaginatio, 2);\n\n            start = _this$_applyPaginatio2[0];\n            end = _this$_applyPaginatio2[1];\n          }\n\n          this.pages = this.pages.slice(start, end); // adding ellipses\n\n          this._applyEllipses(start, end);\n        }\n      }\n    }]);\n\n    return NgbPagination;\n  }();\n\n  NgbPagination.ɵfac = function NgbPagination_Factory(t) {\n    return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig));\n  };\n\n  NgbPagination.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbPagination,\n    selectors: [[\"ngb-pagination\"]],\n    contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPages, 5);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPages = _t.first);\n      }\n    },\n    hostAttrs: [\"role\", \"navigation\"],\n    inputs: {\n      page: \"page\",\n      disabled: \"disabled\",\n      boundaryLinks: \"boundaryLinks\",\n      directionLinks: \"directionLinks\",\n      ellipses: \"ellipses\",\n      maxSize: \"maxSize\",\n      pageSize: \"pageSize\",\n      rotate: \"rotate\",\n      size: \"size\",\n      collectionSize: \"collectionSize\"\n    },\n    outputs: {\n      pageChange: \"pageChange\"\n    },\n    features: [ɵngcc0.ɵɵNgOnChangesFeature],\n    decls: 20,\n    vars: 12,\n    consts: function consts() {\n      var i18n_34;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"\\xAB\\xAB\");\n        i18n_34 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35;\n      } else {\n        i18n_34 = $localize(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\":@@ngb.pagination.first\\u241F656506dfd46380956a655f919f1498d018f75ca0\\u241F6867721956102594380:\\xAB\\xAB\"])));\n      }\n\n      var i18n_36;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37 = goog.getMsg(\"\\xAB\");\n        i18n_36 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37;\n      } else {\n        i18n_36 = $localize(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\":@@ngb.pagination.previous\\u241F6e52b6ee77a4848d899dd21b591c6fd499e3aef3\\u241F6479320895410098858:\\xAB\"])));\n      }\n\n      var i18n_38;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39 = goog.getMsg(\"\\xBB\");\n        i18n_38 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39;\n      } else {\n        i18n_38 = $localize(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral([\":@@ngb.pagination.next\\u241Fba9cbb4ff311464308a3627e4f1c3345d9fe6d7d\\u241F5458177150283468089:\\xBB\"])));\n      }\n\n      var i18n_40;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41 = goog.getMsg(\"\\xBB\\xBB\");\n        i18n_40 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41;\n      } else {\n        i18n_40 = $localize(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral([\":@@ngb.pagination.last\\u241F49f27a460bc97e7e00be5b37098bfa79884fc7d9\\u241F5277020320267646988:\\xBB\\xBB\"])));\n      }\n\n      var i18n_44;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45 = goog.getMsg(\"First\");\n        i18n_44 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45;\n      } else {\n        i18n_44 = $localize(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral([\":@@ngb.pagination.first-aria\\u241Ff2f852318759c6396b5d3d17031d53817d7b38cc\\u241F2241508602425256033:First\"])));\n      }\n\n      var i18n_47;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48 = goog.getMsg(\"Previous\");\n        i18n_47 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48;\n      } else {\n        i18n_47 = $localize(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral([\":@@ngb.pagination.previous-aria\\u241F680d5c75b7fd8d37961083608b9fcdc4167b4c43\\u241F4452427314943113135:Previous\"])));\n      }\n\n      var i18n_50;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51 = goog.getMsg(\"Next\");\n        i18n_50 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51;\n      } else {\n        i18n_50 = $localize(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral([\":@@ngb.pagination.next-aria\\u241Ff732c304c7433e5a83ffcd862c3dce709a0f4982\\u241F3885497195825665706:Next\"])));\n      }\n\n      var i18n_52;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53 = goog.getMsg(\"Last\");\n        i18n_52 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53;\n      } else {\n        i18n_52 = $localize(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral([\":@@ngb.pagination.last-aria\\u241F5c729788ba138508aca1bec050b610f7bf81db3e\\u241F4882268002141858767:Last\"])));\n      }\n\n      return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"defaultPages\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\"], i18n_34, i18n_36, i18n_38, i18n_40, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [1, \"page-item\"], [\"class\", \"page-link\", \"tabindex\", \"-1\", \"aria-disabled\", \"true\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_44, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_47, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_50, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_52, \"href\", \"\", 1, \"page-link\", 3, \"click\"]];\n    },\n    template: function NgbPagination_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(12, NgbPagination_ng_template_12_Template, 1, 1, \"ng-template\", null, 6, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵelementStart(14, \"ul\");\n        ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 9, \"li\", 7);\n        ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 8, \"li\", 7);\n        ɵngcc0.ɵɵtemplate(17, NgbPagination_ng_template_17_Template, 0, 0, \"ng-template\", 8);\n        ɵngcc0.ɵɵtemplate(18, NgbPagination_li_18_Template, 3, 9, \"li\", 7);\n        ɵngcc0.ɵɵtemplate(19, NgbPagination_li_19_Template, 3, 9, \"li\", 7);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        var _r12 = ɵngcc0.ɵɵreference(13);\n\n        ɵngcc0.ɵɵadvance(14);\n        ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.tplPages == null ? null : ctx.tplPages.templateRef) || _r12)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(8, _c54, ctx.page, ctx.pages, ctx.disabled));\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n      }\n    },\n    directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbPagination;\n}();\n\nvar DIRECTIVES = [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages];\n\nvar NgbPaginationModule = /*@__PURE__*/function () {\n  var NgbPaginationModule = /*#__PURE__*/_createClass(function NgbPaginationModule() {\n    _classCallCheck(this, NgbPaginationModule);\n  });\n\n  NgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) {\n    return new (t || NgbPaginationModule)();\n  };\n\n  NgbPaginationModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbPaginationModule\n  });\n  NgbPaginationModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbPaginationModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, {\n    declarations: function declarations() {\n      return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages];\n    }\n  });\n})();\n\nvar Trigger = /*#__PURE__*/function () {\n  function Trigger(open, close) {\n    _classCallCheck(this, Trigger);\n\n    this.open = open;\n    this.close = close;\n\n    if (!close) {\n      this.close = open;\n    }\n  }\n\n  _createClass(Trigger, [{\n    key: \"isManual\",\n    value: function isManual() {\n      return this.open === 'manual' || this.close === 'manual';\n    }\n  }]);\n\n  return Trigger;\n}();\n\nvar DEFAULT_ALIASES = {\n  'hover': ['mouseenter', 'mouseleave'],\n  'focus': ['focusin', 'focusout']\n};\n\nfunction parseTriggers(triggers) {\n  var aliases = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ALIASES;\n  var trimmedTriggers = (triggers || '').trim();\n\n  if (trimmedTriggers.length === 0) {\n    return [];\n  }\n\n  var parsedTriggers = trimmedTriggers.split(/\\s+/).map(function (trigger) {\n    return trigger.split(':');\n  }).map(function (triggerPair) {\n    var alias = aliases[triggerPair[0]] || triggerPair;\n    return new Trigger(alias[0], alias[1]);\n  });\n  var manualTriggers = parsedTriggers.filter(function (triggerPair) {\n    return triggerPair.isManual();\n  });\n\n  if (manualTriggers.length > 1) {\n    throw 'Triggers parse error: only one manual trigger is allowed';\n  }\n\n  if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n    throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n  }\n\n  return parsedTriggers;\n}\n\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n  return new Observable(function (subscriber) {\n    var listeners = [];\n\n    var openFn = function openFn() {\n      return subscriber.next(true);\n    };\n\n    var closeFn = function closeFn() {\n      return subscriber.next(false);\n    };\n\n    var toggleFn = function toggleFn() {\n      return subscriber.next(!isOpenedFn());\n    };\n\n    triggers.forEach(function (trigger) {\n      if (trigger.open === trigger.close) {\n        listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n      } else {\n        listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n      }\n    });\n    return function () {\n      listeners.forEach(function (unsubscribeFn) {\n        return unsubscribeFn();\n      });\n    };\n  });\n}\n\nvar delayOrNoop = function delayOrNoop(time) {\n  return time > 0 ? delay(time) : function (a) {\n    return a;\n  };\n};\n\nvar ɵ0 = delayOrNoop;\n\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n  return function (input$) {\n    var pending = null;\n    var filteredInput$ = input$.pipe(map(function (open) {\n      return {\n        open: open\n      };\n    }), filter(function (event) {\n      var currentlyOpen = isOpenedFn();\n\n      if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n        pending = event;\n        return true;\n      }\n\n      if (pending && pending.open !== event.open) {\n        pending = null;\n      }\n\n      return false;\n    }), share());\n    var delayedOpen$ = filteredInput$.pipe(filter(function (event) {\n      return event.open;\n    }), delayOrNoop(openDelay));\n    var delayedClose$ = filteredInput$.pipe(filter(function (event) {\n      return !event.open;\n    }), delayOrNoop(closeDelay));\n    return merge(delayedOpen$, delayedClose$).pipe(filter(function (event) {\n      if (event === pending) {\n        pending = null;\n        return event.open !== isOpenedFn();\n      }\n\n      return false;\n    }), map(function (event) {\n      return event.open;\n    }));\n  };\n}\n\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn) {\n  var openDelay = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n  var closeDelay = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;\n  var parsedTriggers = parseTriggers(triggers);\n\n  if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n    return function () {};\n  }\n\n  var subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn).pipe(triggerDelay(openDelay, closeDelay, isOpenedFn)).subscribe(function (open) {\n    return open ? openFn() : closeFn();\n  });\n  return function () {\n    return subscription.unsubscribe();\n  };\n}\n\nvar NgbPopoverConfig = /*@__PURE__*/function () {\n  var NgbPopoverConfig = /*#__PURE__*/function () {\n    function NgbPopoverConfig(_ngbConfig) {\n      _classCallCheck(this, NgbPopoverConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.autoClose = true;\n      this.placement = 'auto';\n      this.triggers = 'click';\n      this.disablePopover = false;\n      this.openDelay = 0;\n      this.closeDelay = 0;\n    }\n\n    _createClass(NgbPopoverConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbPopoverConfig;\n  }();\n\n  NgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) {\n    return new (t || NgbPopoverConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbPopoverConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbPopoverConfig_Factory() {\n      return new NgbPopoverConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbPopoverConfig,\n    providedIn: \"root\"\n  });\n  return NgbPopoverConfig;\n}();\n\nvar nextId$1 = 0;\n\nvar NgbPopoverWindow = /*@__PURE__*/function () {\n  var NgbPopoverWindow = /*#__PURE__*/function () {\n    function NgbPopoverWindow() {\n      _classCallCheck(this, NgbPopoverWindow);\n    }\n\n    _createClass(NgbPopoverWindow, [{\n      key: \"isTitleTemplate\",\n      value: function isTitleTemplate() {\n        return this.title instanceof TemplateRef;\n      }\n    }]);\n\n    return NgbPopoverWindow;\n  }();\n\n  NgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) {\n    return new (t || NgbPopoverWindow)();\n  };\n\n  NgbPopoverWindow.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbPopoverWindow,\n    selectors: [[\"ngb-popover-window\"]],\n    hostAttrs: [\"role\", \"tooltip\"],\n    hostVars: 5,\n    hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n        ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n      }\n    },\n    inputs: {\n      animation: \"animation\",\n      title: \"title\",\n      id: \"id\",\n      popoverClass: \"popoverClass\",\n      context: \"context\"\n    },\n    ngContentSelectors: _c3,\n    decls: 4,\n    vars: 1,\n    consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n    template: function NgbPopoverWindow_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵelement(0, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n        ɵngcc0.ɵɵprojection(3);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n      }\n    },\n    directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet],\n    styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbPopoverWindow;\n}();\n\nvar NgbPopover = /*@__PURE__*/function () {\n  var NgbPopover = /*#__PURE__*/function () {\n    function NgbPopover(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n      var _this46 = this;\n\n      _classCallCheck(this, NgbPopover);\n\n      this._elementRef = _elementRef;\n      this._renderer = _renderer;\n      this._ngZone = _ngZone;\n      this._document = _document;\n      this._changeDetector = _changeDetector;\n      /**\n       * An event emitted when the popover opening animation has finished. Contains no payload.\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the popover closing animation has finished. Contains no payload.\n       *\n       * At this point popover is not in the DOM anymore.\n       */\n\n      this.hidden = new EventEmitter();\n      this._ngbPopoverWindowId = \"ngb-popover-\".concat(nextId$1++);\n      this._windowRef = null;\n      this.animation = config.animation;\n      this.autoClose = config.autoClose;\n      this.placement = config.placement;\n      this.triggers = config.triggers;\n      this.container = config.container;\n      this.disablePopover = config.disablePopover;\n      this.popoverClass = config.popoverClass;\n      this.openDelay = config.openDelay;\n      this.closeDelay = config.closeDelay;\n      this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n      this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n        if (_this46._windowRef) {\n          positionElements(_this46._elementRef.nativeElement, _this46._windowRef.location.nativeElement, _this46.placement, _this46.container === 'body', 'bs-popover');\n        }\n      });\n    }\n\n    _createClass(NgbPopover, [{\n      key: \"_isDisabled\",\n      value: function _isDisabled() {\n        if (this.disablePopover) {\n          return true;\n        }\n\n        if (!this.ngbPopover && !this.popoverTitle) {\n          return true;\n        }\n\n        return false;\n      }\n      /**\n       * Opens the popover.\n       *\n       * This is considered to be a \"manual\" triggering.\n       * The `context` is an optional value to be injected into the popover template when it is created.\n       */\n\n    }, {\n      key: \"open\",\n      value: function open(context) {\n        var _this47 = this;\n\n        if (!this._windowRef && !this._isDisabled()) {\n          // this type assertion is safe because otherwise _isDisabled would return true\n          var _this$_popupService$o = this._popupService.open(this.ngbPopover, context, this.animation),\n              windowRef = _this$_popupService$o.windowRef,\n              transition$ = _this$_popupService$o.transition$;\n\n          this._windowRef = windowRef;\n          this._windowRef.instance.animation = this.animation;\n          this._windowRef.instance.title = this.popoverTitle;\n          this._windowRef.instance.context = context;\n          this._windowRef.instance.popoverClass = this.popoverClass;\n          this._windowRef.instance.id = this._ngbPopoverWindowId;\n\n          this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n\n          if (this.container === 'body') {\n            this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n          } // We need to detect changes, because we don't know where .open() might be called from.\n          // Ex. opening popover from one of lifecycle hooks that run after the CD\n          // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n\n\n          this._windowRef.changeDetectorRef.detectChanges(); // We need to mark for check, because popover won't work inside the OnPush component.\n          // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n          // inside the template of an OnPush component and we change the popover from\n          // open -> closed, the expression in question won't be updated unless we explicitly\n          // mark the parent component to be checked.\n\n\n          this._windowRef.changeDetectorRef.markForCheck();\n\n          ngbAutoClose(this._ngZone, this._document, this.autoClose, function () {\n            return _this47.close();\n          }, this.hidden, [this._windowRef.location.nativeElement]);\n          transition$.subscribe(function () {\n            return _this47.shown.emit();\n          });\n        }\n      }\n      /**\n       * Closes the popover.\n       *\n       * This is considered to be a \"manual\" triggering of the popover.\n       */\n\n    }, {\n      key: \"close\",\n      value: function close() {\n        var _this48 = this;\n\n        if (this._windowRef) {\n          this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\n          this._popupService.close(this.animation).subscribe(function () {\n            _this48._windowRef = null;\n\n            _this48.hidden.emit();\n\n            _this48._changeDetector.markForCheck();\n          });\n        }\n      }\n      /**\n       * Toggles the popover.\n       *\n       * This is considered to be a \"manual\" triggering of the popover.\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        if (this._windowRef) {\n          this.close();\n        } else {\n          this.open();\n        }\n      }\n      /**\n       * Returns `true`, if the popover is currently shown.\n       */\n\n    }, {\n      key: \"isOpen\",\n      value: function isOpen() {\n        return this._windowRef != null;\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(_ref26) {\n        var ngbPopover = _ref26.ngbPopover,\n            popoverTitle = _ref26.popoverTitle,\n            disablePopover = _ref26.disablePopover,\n            popoverClass = _ref26.popoverClass;\n\n        if (popoverClass && this.isOpen()) {\n          this._windowRef.instance.popoverClass = popoverClass.currentValue;\n        } // close popover if title and content become empty, or disablePopover set to true\n\n\n        if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n          this.close();\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this.close(); // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n        // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n\n        if (this._unregisterListenersFn) {\n          this._unregisterListenersFn();\n        }\n\n        this._zoneSubscription.unsubscribe();\n      }\n    }]);\n\n    return NgbPopover;\n  }();\n\n  NgbPopover.ɵfac = function NgbPopover_Factory(t) {\n    return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef));\n  };\n\n  NgbPopover.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbPopover,\n    selectors: [[\"\", \"ngbPopover\", \"\"]],\n    inputs: {\n      animation: \"animation\",\n      autoClose: \"autoClose\",\n      placement: \"placement\",\n      triggers: \"triggers\",\n      container: \"container\",\n      disablePopover: \"disablePopover\",\n      popoverClass: \"popoverClass\",\n      openDelay: \"openDelay\",\n      closeDelay: \"closeDelay\",\n      ngbPopover: \"ngbPopover\",\n      popoverTitle: \"popoverTitle\"\n    },\n    outputs: {\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbPopover\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbPopover;\n}();\n\nvar NgbPopoverModule = /*@__PURE__*/function () {\n  var NgbPopoverModule = /*#__PURE__*/_createClass(function NgbPopoverModule() {\n    _classCallCheck(this, NgbPopoverModule);\n  });\n\n  NgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) {\n    return new (t || NgbPopoverModule)();\n  };\n\n  NgbPopoverModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbPopoverModule\n  });\n  NgbPopoverModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbPopoverModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, {\n    declarations: function declarations() {\n      return [NgbPopover, NgbPopoverWindow];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbPopover];\n    }\n  });\n})();\n\nvar NgbProgressbarConfig = /*@__PURE__*/function () {\n  var NgbProgressbarConfig = /*#__PURE__*/_createClass(function NgbProgressbarConfig() {\n    _classCallCheck(this, NgbProgressbarConfig);\n\n    this.max = 100;\n    this.animated = false;\n    this.striped = false;\n    this.showValue = false;\n  });\n\n  NgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) {\n    return new (t || NgbProgressbarConfig)();\n  };\n\n  NgbProgressbarConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbProgressbarConfig_Factory() {\n      return new NgbProgressbarConfig();\n    },\n    token: NgbProgressbarConfig,\n    providedIn: \"root\"\n  });\n  return NgbProgressbarConfig;\n}();\n\nvar NgbProgressbar = /*@__PURE__*/function () {\n  var NgbProgressbar = /*#__PURE__*/function () {\n    function NgbProgressbar(config) {\n      _classCallCheck(this, NgbProgressbar);\n\n      /**\n       * The current value for the progress bar.\n       *\n       * Should be in the `[0, max]` range.\n       */\n      this.value = 0;\n      this.max = config.max;\n      this.animated = config.animated;\n      this.striped = config.striped;\n      this.textType = config.textType;\n      this.type = config.type;\n      this.showValue = config.showValue;\n      this.height = config.height;\n    }\n    /**\n     * The maximal value to be displayed in the progress bar.\n     *\n     * Should be a positive number. Will default to 100 otherwise.\n     */\n\n\n    _createClass(NgbProgressbar, [{\n      key: \"max\",\n      get: function get() {\n        return this._max;\n      },\n      set: function set(max) {\n        this._max = !isNumber(max) || max <= 0 ? 100 : max;\n      }\n    }, {\n      key: \"getValue\",\n      value: function getValue() {\n        return getValueInRange(this.value, this.max);\n      }\n    }, {\n      key: \"getPercentValue\",\n      value: function getPercentValue() {\n        return 100 * this.getValue() / this.max;\n      }\n    }]);\n\n    return NgbProgressbar;\n  }();\n\n  NgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) {\n    return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig));\n  };\n\n  NgbProgressbar.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbProgressbar,\n    selectors: [[\"ngb-progressbar\"]],\n    hostAttrs: [1, \"progress\"],\n    hostVars: 2,\n    hostBindings: function NgbProgressbar_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n      }\n    },\n    inputs: {\n      value: \"value\",\n      max: \"max\",\n      animated: \"animated\",\n      striped: \"striped\",\n      textType: \"textType\",\n      type: \"type\",\n      showValue: \"showValue\",\n      height: \"height\"\n    },\n    ngContentSelectors: _c3,\n    decls: 3,\n    vars: 11,\n    consts: function consts() {\n      var i18n_55;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56 = goog.getMsg(\"{$interpolation}\", {\n          \"interpolation\": \"\\uFFFD0\\uFFFD\"\n        });\n        i18n_55 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56;\n      } else {\n        i18n_55 = $localize(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral([\":@@ngb.progressbar.value\\u241Ff8e9a947b9db4252c0e9905765338712f2fd032f\\u241F3720830768741091151:\", \":INTERPOLATION:\"])), \"\\uFFFD0\\uFFFD\");\n      }\n\n      return [[\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_55];\n    },\n    template: function NgbProgressbar_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, NgbProgressbar_span_1_Template, 3, 3, \"span\", 1);\n        ɵngcc0.ɵɵprojection(2);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassMapInterpolate4(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\\n    \", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n        ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n      }\n    },\n    directives: [ɵngcc1.NgIf],\n    pipes: [ɵngcc1.PercentPipe],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbProgressbar;\n}();\n\nvar NgbProgressbarModule = /*@__PURE__*/function () {\n  var NgbProgressbarModule = /*#__PURE__*/_createClass(function NgbProgressbarModule() {\n    _classCallCheck(this, NgbProgressbarModule);\n  });\n\n  NgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) {\n    return new (t || NgbProgressbarModule)();\n  };\n\n  NgbProgressbarModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbProgressbarModule\n  });\n  NgbProgressbarModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbProgressbarModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, {\n    declarations: function declarations() {\n      return [NgbProgressbar];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbProgressbar];\n    }\n  });\n})();\n\nvar NgbRatingConfig = /*@__PURE__*/function () {\n  var NgbRatingConfig = /*#__PURE__*/_createClass(function NgbRatingConfig() {\n    _classCallCheck(this, NgbRatingConfig);\n\n    this.max = 10;\n    this.readonly = false;\n    this.resettable = false;\n  });\n\n  NgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) {\n    return new (t || NgbRatingConfig)();\n  };\n\n  NgbRatingConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbRatingConfig_Factory() {\n      return new NgbRatingConfig();\n    },\n    token: NgbRatingConfig,\n    providedIn: \"root\"\n  });\n  return NgbRatingConfig;\n}();\n\nvar NgbRating = /*@__PURE__*/function () {\n  var NgbRating = /*#__PURE__*/function () {\n    function NgbRating(config, _changeDetectorRef) {\n      _classCallCheck(this, NgbRating);\n\n      this._changeDetectorRef = _changeDetectorRef;\n      this.contexts = [];\n      this.disabled = false;\n      /**\n       * An event emitted when the user is hovering over a given rating.\n       *\n       * Event payload equals to the rating being hovered over.\n       */\n\n      this.hover = new EventEmitter();\n      /**\n       * An event emitted when the user stops hovering over a given rating.\n       *\n       * Event payload equals to the rating of the last item being hovered over.\n       */\n\n      this.leave = new EventEmitter();\n      /**\n       * An event emitted when the user selects a new rating.\n       *\n       * Event payload equals to the newly selected rating.\n       */\n\n      this.rateChange = new EventEmitter(true);\n\n      this.onChange = function (_) {};\n\n      this.onTouched = function () {};\n\n      this.max = config.max;\n      this.readonly = config.readonly;\n    }\n\n    _createClass(NgbRating, [{\n      key: \"ariaValueText\",\n      value: function ariaValueText() {\n        return \"\".concat(this.nextRate, \" out of \").concat(this.max);\n      }\n    }, {\n      key: \"isInteractive\",\n      value: function isInteractive() {\n        return !this.readonly && !this.disabled;\n      }\n    }, {\n      key: \"enter\",\n      value: function enter(value) {\n        if (this.isInteractive()) {\n          this._updateState(value);\n        }\n\n        this.hover.emit(value);\n      }\n    }, {\n      key: \"handleBlur\",\n      value: function handleBlur() {\n        this.onTouched();\n      }\n    }, {\n      key: \"handleClick\",\n      value: function handleClick(value) {\n        if (this.isInteractive()) {\n          this.update(this.resettable && this.rate === value ? 0 : value);\n        }\n      }\n    }, {\n      key: \"handleKeyDown\",\n      value: function handleKeyDown(event) {\n        // tslint:disable-next-line:deprecation\n        switch (event.which) {\n          case Key.ArrowDown:\n          case Key.ArrowLeft:\n            this.update(this.rate - 1);\n            break;\n\n          case Key.ArrowUp:\n          case Key.ArrowRight:\n            this.update(this.rate + 1);\n            break;\n\n          case Key.Home:\n            this.update(0);\n            break;\n\n          case Key.End:\n            this.update(this.max);\n            break;\n\n          default:\n            return;\n        } // note 'return' in default case\n\n\n        event.preventDefault();\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        if (changes['rate']) {\n          this.update(this.rate);\n        }\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this.contexts = Array.from({\n          length: this.max\n        }, function (v, k) {\n          return {\n            fill: 0,\n            index: k\n          };\n        });\n\n        this._updateState(this.rate);\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this.onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this.onTouched = fn;\n      }\n    }, {\n      key: \"reset\",\n      value: function reset() {\n        this.leave.emit(this.nextRate);\n\n        this._updateState(this.rate);\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this.disabled = isDisabled;\n      }\n    }, {\n      key: \"update\",\n      value: function update(value) {\n        var internalChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        var newRate = getValueInRange(value, this.max, 0);\n\n        if (this.isInteractive() && this.rate !== newRate) {\n          this.rate = newRate;\n          this.rateChange.emit(this.rate);\n        }\n\n        if (internalChange) {\n          this.onChange(this.rate);\n          this.onTouched();\n        }\n\n        this._updateState(this.rate);\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this.update(value, false);\n\n        this._changeDetectorRef.markForCheck();\n      }\n    }, {\n      key: \"_updateState\",\n      value: function _updateState(nextValue) {\n        this.nextRate = nextValue;\n        this.contexts.forEach(function (context, index) {\n          return context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100);\n        });\n      }\n    }]);\n\n    return NgbRating;\n  }();\n\n  NgbRating.ɵfac = function NgbRating_Factory(t) {\n    return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n  };\n\n  NgbRating.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbRating,\n    selectors: [[\"ngb-rating\"]],\n    contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n      }\n    },\n    hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"],\n    hostVars: 5,\n    hostBindings: function NgbRating_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() {\n          return ctx.handleBlur();\n        })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) {\n          return ctx.handleKeyDown($event);\n        })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() {\n          return ctx.reset();\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : 0);\n        ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n      }\n    },\n    inputs: {\n      max: \"max\",\n      readonly: \"readonly\",\n      rate: \"rate\",\n      resettable: \"resettable\",\n      starTemplate: \"starTemplate\"\n    },\n    outputs: {\n      hover: \"hover\",\n      leave: \"leave\",\n      rateChange: \"rateChange\"\n    },\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbRating;\n      }),\n      multi: true\n    }]), ɵngcc0.ɵɵNgOnChangesFeature],\n    decls: 3,\n    vars: 1,\n    consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n    template: function NgbRating_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbRating;\n}();\n\nvar NgbRatingModule = /*@__PURE__*/function () {\n  var NgbRatingModule = /*#__PURE__*/_createClass(function NgbRatingModule() {\n    _classCallCheck(this, NgbRatingModule);\n  });\n\n  NgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) {\n    return new (t || NgbRatingModule)();\n  };\n\n  NgbRatingModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbRatingModule\n  });\n  NgbRatingModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbRatingModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, {\n    declarations: function declarations() {\n      return [NgbRating];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbRating];\n    }\n  });\n})();\n\nvar NgbTime = /*#__PURE__*/function () {\n  function NgbTime(hour, minute, second) {\n    _classCallCheck(this, NgbTime);\n\n    this.hour = toInteger(hour);\n    this.minute = toInteger(minute);\n    this.second = toInteger(second);\n  }\n\n  _createClass(NgbTime, [{\n    key: \"changeHour\",\n    value: function changeHour() {\n      var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n    }\n  }, {\n    key: \"updateHour\",\n    value: function updateHour(hour) {\n      if (isNumber(hour)) {\n        this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n      } else {\n        this.hour = NaN;\n      }\n    }\n  }, {\n    key: \"changeMinute\",\n    value: function changeMinute() {\n      var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n    }\n  }, {\n    key: \"updateMinute\",\n    value: function updateMinute(minute) {\n      if (isNumber(minute)) {\n        this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n        this.changeHour(Math.floor(minute / 60));\n      } else {\n        this.minute = NaN;\n      }\n    }\n  }, {\n    key: \"changeSecond\",\n    value: function changeSecond() {\n      var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n      this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n    }\n  }, {\n    key: \"updateSecond\",\n    value: function updateSecond(second) {\n      if (isNumber(second)) {\n        this.second = second < 0 ? 60 + second % 60 : second % 60;\n        this.changeMinute(Math.floor(second / 60));\n      } else {\n        this.second = NaN;\n      }\n    }\n  }, {\n    key: \"isValid\",\n    value: function isValid() {\n      var checkSecs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.hour || 0, \":\").concat(this.minute || 0, \":\").concat(this.second || 0);\n    }\n  }]);\n\n  return NgbTime;\n}();\n\nvar NgbTimepickerConfig = /*@__PURE__*/function () {\n  var NgbTimepickerConfig = /*#__PURE__*/_createClass(function NgbTimepickerConfig() {\n    _classCallCheck(this, NgbTimepickerConfig);\n\n    this.meridian = false;\n    this.spinners = true;\n    this.seconds = false;\n    this.hourStep = 1;\n    this.minuteStep = 1;\n    this.secondStep = 1;\n    this.disabled = false;\n    this.readonlyInputs = false;\n    this.size = 'medium';\n  });\n\n  NgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) {\n    return new (t || NgbTimepickerConfig)();\n  };\n\n  NgbTimepickerConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbTimepickerConfig_Factory() {\n      return new NgbTimepickerConfig();\n    },\n    token: NgbTimepickerConfig,\n    providedIn: \"root\"\n  });\n  return NgbTimepickerConfig;\n}();\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n  return new NgbTimeStructAdapter();\n}\n\nvar NgbTimeAdapter = /*@__PURE__*/function () {\n  var NgbTimeAdapter = /*#__PURE__*/_createClass(function NgbTimeAdapter() {\n    _classCallCheck(this, NgbTimeAdapter);\n  });\n\n  NgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) {\n    return new (t || NgbTimeAdapter)();\n  };\n\n  NgbTimeAdapter.ɵprov = i0.ɵɵdefineInjectable({\n    factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY,\n    token: NgbTimeAdapter,\n    providedIn: \"root\"\n  });\n  return NgbTimeAdapter;\n}();\n\nvar NgbTimeStructAdapter = /*@__PURE__*/function () {\n  var NgbTimeStructAdapter = /*#__PURE__*/function (_NgbTimeAdapter) {\n    _inherits(NgbTimeStructAdapter, _NgbTimeAdapter);\n\n    var _super16 = _createSuper(NgbTimeStructAdapter);\n\n    function NgbTimeStructAdapter() {\n      _classCallCheck(this, NgbTimeStructAdapter);\n\n      return _super16.apply(this, arguments);\n    }\n\n    _createClass(NgbTimeStructAdapter, [{\n      key: \"fromModel\",\n      value:\n      /**\n       * Converts a NgbTimeStruct value into NgbTimeStruct value\n       */\n      function fromModel(time) {\n        return time && isInteger(time.hour) && isInteger(time.minute) ? {\n          hour: time.hour,\n          minute: time.minute,\n          second: isInteger(time.second) ? time.second : null\n        } : null;\n      }\n      /**\n       * Converts a NgbTimeStruct value into NgbTimeStruct value\n       */\n\n    }, {\n      key: \"toModel\",\n      value: function toModel(time) {\n        return time && isInteger(time.hour) && isInteger(time.minute) ? {\n          hour: time.hour,\n          minute: time.minute,\n          second: isInteger(time.second) ? time.second : null\n        } : null;\n      }\n    }]);\n\n    return NgbTimeStructAdapter;\n  }(NgbTimeAdapter);\n\n  NgbTimeStructAdapter.ɵfac = /*@__PURE__*/function () {\n    var ɵNgbTimeStructAdapter_BaseFactory;\n    return function NgbTimeStructAdapter_Factory(t) {\n      return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter);\n    };\n  }();\n\n  NgbTimeStructAdapter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbTimeStructAdapter,\n    factory: NgbTimeStructAdapter.ɵfac\n  });\n  return NgbTimeStructAdapter;\n}();\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n  return new NgbTimepickerI18nDefault(locale);\n}\n\nvar NgbTimepickerI18n = /*@__PURE__*/function () {\n  var NgbTimepickerI18n = /*#__PURE__*/_createClass(function NgbTimepickerI18n() {\n    _classCallCheck(this, NgbTimepickerI18n);\n  });\n\n  NgbTimepickerI18n.ɵfac = function NgbTimepickerI18n_Factory(t) {\n    return new (t || NgbTimepickerI18n)();\n  };\n\n  NgbTimepickerI18n.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbTimepickerI18n_Factory() {\n      return NGB_TIMEPICKER_I18N_FACTORY(i0.ɵɵinject(i0.LOCALE_ID));\n    },\n    token: NgbTimepickerI18n,\n    providedIn: \"root\"\n  });\n  return NgbTimepickerI18n;\n}();\n\nvar NgbTimepickerI18nDefault = /*@__PURE__*/function () {\n  var NgbTimepickerI18nDefault = /*#__PURE__*/function (_NgbTimepickerI18n) {\n    _inherits(NgbTimepickerI18nDefault, _NgbTimepickerI18n);\n\n    var _super17 = _createSuper(NgbTimepickerI18nDefault);\n\n    function NgbTimepickerI18nDefault(locale) {\n      var _this49;\n\n      _classCallCheck(this, NgbTimepickerI18nDefault);\n\n      _this49 = _super17.call(this);\n      _this49._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n      return _this49;\n    }\n\n    _createClass(NgbTimepickerI18nDefault, [{\n      key: \"getMorningPeriod\",\n      value: function getMorningPeriod() {\n        return this._periods[0];\n      }\n    }, {\n      key: \"getAfternoonPeriod\",\n      value: function getAfternoonPeriod() {\n        return this._periods[1];\n      }\n    }]);\n\n    return NgbTimepickerI18nDefault;\n  }(NgbTimepickerI18n);\n\n  NgbTimepickerI18nDefault.ɵfac = function NgbTimepickerI18nDefault_Factory(t) {\n    return new (t || NgbTimepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID));\n  };\n\n  NgbTimepickerI18nDefault.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: NgbTimepickerI18nDefault,\n    factory: NgbTimepickerI18nDefault.ɵfac\n  });\n  return NgbTimepickerI18nDefault;\n}();\n\nvar FILTER_REGEX = /[^0-9]/g;\n\nvar NgbTimepicker = /*@__PURE__*/function () {\n  var NgbTimepicker = /*#__PURE__*/function () {\n    function NgbTimepicker(_config, _ngbTimeAdapter, _cd, i18n) {\n      _classCallCheck(this, NgbTimepicker);\n\n      this._config = _config;\n      this._ngbTimeAdapter = _ngbTimeAdapter;\n      this._cd = _cd;\n      this.i18n = i18n;\n\n      this.onChange = function (_) {};\n\n      this.onTouched = function () {};\n\n      this.meridian = _config.meridian;\n      this.spinners = _config.spinners;\n      this.seconds = _config.seconds;\n      this.hourStep = _config.hourStep;\n      this.minuteStep = _config.minuteStep;\n      this.secondStep = _config.secondStep;\n      this.disabled = _config.disabled;\n      this.readonlyInputs = _config.readonlyInputs;\n      this.size = _config.size;\n    }\n    /**\n     * The number of hours to add/subtract when clicking hour spinners.\n     */\n\n\n    _createClass(NgbTimepicker, [{\n      key: \"hourStep\",\n      get: function get() {\n        return this._hourStep;\n      }\n      /**\n       * The number of minutes to add/subtract when clicking minute spinners.\n       */\n      ,\n      set: function set(step) {\n        this._hourStep = isInteger(step) ? step : this._config.hourStep;\n      }\n    }, {\n      key: \"minuteStep\",\n      get: function get() {\n        return this._minuteStep;\n      }\n      /**\n       * The number of seconds to add/subtract when clicking second spinners.\n       */\n      ,\n      set: function set(step) {\n        this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n      }\n    }, {\n      key: \"secondStep\",\n      get: function get() {\n        return this._secondStep;\n      },\n      set: function set(step) {\n        this._secondStep = isInteger(step) ? step : this._config.secondStep;\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        var structValue = this._ngbTimeAdapter.fromModel(value);\n\n        this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n\n        if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n          this.model.second = 0;\n        }\n\n        this._cd.markForCheck();\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this.onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this.onTouched = fn;\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this.disabled = isDisabled;\n      }\n    }, {\n      key: \"changeHour\",\n      value: function changeHour(step) {\n        this.model.changeHour(step);\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"changeMinute\",\n      value: function changeMinute(step) {\n        this.model.changeMinute(step);\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"changeSecond\",\n      value: function changeSecond(step) {\n        this.model.changeSecond(step);\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"updateHour\",\n      value: function updateHour(newVal) {\n        var isPM = this.model.hour >= 12;\n        var enteredHour = toInteger(newVal);\n\n        if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n          this.model.updateHour(enteredHour + 12);\n        } else {\n          this.model.updateHour(enteredHour);\n        }\n\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"updateMinute\",\n      value: function updateMinute(newVal) {\n        this.model.updateMinute(toInteger(newVal));\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"updateSecond\",\n      value: function updateSecond(newVal) {\n        this.model.updateSecond(toInteger(newVal));\n        this.propagateModelChange();\n      }\n    }, {\n      key: \"toggleMeridian\",\n      value: function toggleMeridian() {\n        if (this.meridian) {\n          this.changeHour(12);\n        }\n      }\n    }, {\n      key: \"formatInput\",\n      value: function formatInput(input) {\n        input.value = input.value.replace(FILTER_REGEX, '');\n      }\n    }, {\n      key: \"formatHour\",\n      value: function formatHour(value) {\n        if (isNumber(value)) {\n          if (this.meridian) {\n            return padNumber(value % 12 === 0 ? 12 : value % 12);\n          } else {\n            return padNumber(value % 24);\n          }\n        } else {\n          return padNumber(NaN);\n        }\n      }\n    }, {\n      key: \"formatMinSec\",\n      value: function formatMinSec(value) {\n        return padNumber(isNumber(value) ? value : NaN);\n      }\n    }, {\n      key: \"handleBlur\",\n      value: function handleBlur() {\n        this.onTouched();\n      }\n    }, {\n      key: \"isSmallSize\",\n      get: function get() {\n        return this.size === 'small';\n      }\n    }, {\n      key: \"isLargeSize\",\n      get: function get() {\n        return this.size === 'large';\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n          this.model.second = 0;\n          this.propagateModelChange(false);\n        }\n      }\n    }, {\n      key: \"propagateModelChange\",\n      value: function propagateModelChange() {\n        var touched = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n        if (touched) {\n          this.onTouched();\n        }\n\n        if (this.model.isValid(this.seconds)) {\n          this.onChange(this._ngbTimeAdapter.toModel({\n            hour: this.model.hour,\n            minute: this.model.minute,\n            second: this.model.second\n          }));\n        } else {\n          this.onChange(this._ngbTimeAdapter.toModel(null));\n        }\n      }\n    }]);\n\n    return NgbTimepicker;\n  }();\n\n  NgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) {\n    return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbTimepickerI18n));\n  };\n\n  NgbTimepicker.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbTimepicker,\n    selectors: [[\"ngb-timepicker\"]],\n    inputs: {\n      meridian: \"meridian\",\n      spinners: \"spinners\",\n      seconds: \"seconds\",\n      hourStep: \"hourStep\",\n      minuteStep: \"minuteStep\",\n      secondStep: \"secondStep\",\n      readonlyInputs: \"readonlyInputs\",\n      size: \"size\"\n    },\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbTimepicker;\n      }),\n      multi: true\n    }]), ɵngcc0.ɵɵNgOnChangesFeature],\n    decls: 16,\n    vars: 25,\n    consts: function consts() {\n      var i18n_57;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58 = goog.getMsg(\"HH\");\n        i18n_57 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58;\n      } else {\n        i18n_57 = $localize(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral([\":@@ngb.timepicker.HH\\u241Fce676ab1d6d98f85c836381cf100a4a91ef95a1f\\u241F4043638465245303811:HH\"])));\n      }\n\n      var i18n_59;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60 = goog.getMsg(\"Hours\");\n        i18n_59 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60;\n      } else {\n        i18n_59 = $localize(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral([\":@@ngb.timepicker.hours\\u241F3bbce5fef7e1151da052a4e529453edb340e3912\\u241F8070396816726827304:Hours\"])));\n      }\n\n      var i18n_61;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62 = goog.getMsg(\"MM\");\n        i18n_61 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62;\n      } else {\n        i18n_61 = $localize(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral([\":@@ngb.timepicker.MM\\u241F72c8edf6a50068a05bde70991e36b1e881f4ca54\\u241F1647282246509919852:MM\"])));\n      }\n\n      var i18n_63;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64 = goog.getMsg(\"Minutes\");\n        i18n_63 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64;\n      } else {\n        i18n_63 = $localize(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral([\":@@ngb.timepicker.minutes\\u241F41e62daa962947c0d23ded0981975d1bddf0bf38\\u241F5531237363767747080:Minutes\"])));\n      }\n\n      var i18n_65;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66 = goog.getMsg(\"Increment hours\");\n        i18n_65 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66;\n      } else {\n        i18n_65 = $localize(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral([\":@@ngb.timepicker.increment-hours\\u241Fcb74bc1d625a6c1742f0d7d47306cf495780c218\\u241F5939278348542933629:Increment hours\"])));\n      }\n\n      var i18n_67;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68 = goog.getMsg(\"Decrement hours\");\n        i18n_67 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68;\n      } else {\n        i18n_67 = $localize(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral([\":@@ngb.timepicker.decrement-hours\\u241F147c7a19429da7d999e247d22e33fee370b1691b\\u241F3651829882940481818:Decrement hours\"])));\n      }\n\n      var i18n_69;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70 = goog.getMsg(\"Increment minutes\");\n        i18n_69 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70;\n      } else {\n        i18n_69 = $localize(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral([\":@@ngb.timepicker.increment-minutes\\u241Ff5a4a3bc05e053f6732475d0e74875ec01c3a348\\u241F180147720391025024:Increment minutes\"])));\n      }\n\n      var i18n_71;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72 = goog.getMsg(\"Decrement minutes\");\n        i18n_71 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72;\n      } else {\n        i18n_71 = $localize(_templateObject29 || (_templateObject29 = _taggedTemplateLiteral([\":@@ngb.timepicker.decrement-minutes\\u241Fc1a6899e529c096da5b660385d4e77fe1f7ad271\\u241F7447789825403243588:Decrement minutes\"])));\n      }\n\n      var i18n_73;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74 = goog.getMsg(\"SS\");\n        i18n_73 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74;\n      } else {\n        i18n_73 = $localize(_templateObject30 || (_templateObject30 = _taggedTemplateLiteral([\":@@ngb.timepicker.SS\\u241Febe38d36a40a2383c5fefa9b4608ffbda08bd4a3\\u241F3628127143071124194:SS\"])));\n      }\n\n      var i18n_75;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76 = goog.getMsg(\"Seconds\");\n        i18n_75 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76;\n      } else {\n        i18n_75 = $localize(_templateObject31 || (_templateObject31 = _taggedTemplateLiteral([\":@@ngb.timepicker.seconds\\u241F4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c\\u241F8874012390997067175:Seconds\"])));\n      }\n\n      var i18n_77;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78 = goog.getMsg(\"Increment seconds\");\n        i18n_77 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78;\n      } else {\n        i18n_77 = $localize(_templateObject32 || (_templateObject32 = _taggedTemplateLiteral([\":@@ngb.timepicker.increment-seconds\\u241F912322ecee7d659d04dcf494a70e22e49d334b26\\u241F5364772110539092174:Increment seconds\"])));\n      }\n\n      var i18n_79;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80 = goog.getMsg(\"Decrement seconds\");\n        i18n_79 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80;\n      } else {\n        i18n_79 = $localize(_templateObject33 || (_templateObject33 = _taggedTemplateLiteral([\":@@ngb.timepicker.decrement-seconds\\u241F5db47ac104294243a70eb9124fbea9d0004ddf69\\u241F753633511487974857:Decrement seconds\"])));\n      }\n\n      var i18n_81;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82 = goog.getMsg(\"{$interpolation}\", {\n          \"interpolation\": \"\\uFFFD0\\uFFFD\"\n        });\n        i18n_81 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82;\n      } else {\n        i18n_81 = $localize(_templateObject34 || (_templateObject34 = _taggedTemplateLiteral([\":@@ngb.timepicker.PM\\u241F8d6e691e10306c1b34c6b26805151aaea320ef7f\\u241F3564199131264287502:\", \":INTERPOLATION:\"])), \"\\uFFFD0\\uFFFD\");\n      }\n\n      var i18n_83;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84 = goog.getMsg(\"{$interpolation}\", {\n          \"interpolation\": \"\\uFFFD0\\uFFFD\"\n        });\n        i18n_83 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84;\n      } else {\n        i18n_83 = $localize(_templateObject35 || (_templateObject35 = _taggedTemplateLiteral([\":@@ngb.timepicker.AM\\u241F69a1f176a93998876952adac57c3bc3863b6105e\\u241F4592818992509942761:\", \":INTERPOLATION:\"])), \"\\uFFFD0\\uFFFD\");\n      }\n\n      return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_57, \"aria-label\", i18n_59, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_61, \"aria-label\", i18n_63, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_65, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_67, i18n_69, i18n_71, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_73, \"aria-label\", i18n_75, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_77, i18n_79, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_81, i18n_83];\n    },\n    template: function NgbTimepicker_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n        ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n        ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n        ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) {\n          return ctx.updateHour($event.target.value);\n        })(\"blur\", function NgbTimepicker_Template_input_blur_4_listener() {\n          return ctx.handleBlur();\n        })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) {\n          return ctx.formatInput($event.target);\n        })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) {\n          ctx.changeHour(ctx.hourStep);\n          return $event.preventDefault();\n        })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) {\n          ctx.changeHour(-ctx.hourStep);\n          return $event.preventDefault();\n        });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n        ɵngcc0.ɵɵtext(7, \":\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n        ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n        ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n        ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) {\n          return ctx.updateMinute($event.target.value);\n        })(\"blur\", function NgbTimepicker_Template_input_blur_10_listener() {\n          return ctx.handleBlur();\n        })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) {\n          return ctx.formatInput($event.target);\n        })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) {\n          ctx.changeMinute(ctx.minuteStep);\n          return $event.preventDefault();\n        })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) {\n          ctx.changeMinute(-ctx.minuteStep);\n          return $event.preventDefault();\n        });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n        ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n        ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n        ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n        ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n        ɵngcc0.ɵɵadvance(4);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n        ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n      }\n    },\n    directives: [ɵngcc1.NgIf],\n    styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"],\n    encapsulation: 2\n  });\n  return NgbTimepicker;\n}();\n\nvar NgbTimepickerModule = /*@__PURE__*/function () {\n  var NgbTimepickerModule = /*#__PURE__*/_createClass(function NgbTimepickerModule() {\n    _classCallCheck(this, NgbTimepickerModule);\n  });\n\n  NgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) {\n    return new (t || NgbTimepickerModule)();\n  };\n\n  NgbTimepickerModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbTimepickerModule\n  });\n  NgbTimepickerModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbTimepickerModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, {\n    declarations: function declarations() {\n      return [NgbTimepicker];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbTimepicker];\n    }\n  });\n})();\n\nvar NgbToastConfig = /*@__PURE__*/function () {\n  var NgbToastConfig = /*#__PURE__*/function () {\n    function NgbToastConfig(_ngbConfig) {\n      _classCallCheck(this, NgbToastConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.autohide = true;\n      this.delay = 500;\n      this.ariaLive = 'polite';\n    }\n\n    _createClass(NgbToastConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbToastConfig;\n  }();\n\n  NgbToastConfig.ɵfac = function NgbToastConfig_Factory(t) {\n    return new (t || NgbToastConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbToastConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbToastConfig_Factory() {\n      return new NgbToastConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbToastConfig,\n    providedIn: \"root\"\n  });\n  return NgbToastConfig;\n}();\n\nvar ngbToastFadeInTransition = function ngbToastFadeInTransition(element, animation) {\n  var classList = element.classList;\n\n  if (!animation) {\n    classList.add('show');\n    return;\n  }\n\n  classList.remove('hide');\n  reflow(element);\n  classList.add('showing');\n  return function () {\n    classList.remove('showing');\n    classList.add('show');\n  };\n};\n\nvar ngbToastFadeOutTransition = function ngbToastFadeOutTransition(_ref27) {\n  var classList = _ref27.classList;\n  classList.remove('show');\n  return function () {\n    classList.add('hide');\n  };\n};\n\nvar NgbToastHeader = /*@__PURE__*/function () {\n  var NgbToastHeader = /*#__PURE__*/_createClass(function NgbToastHeader() {\n    _classCallCheck(this, NgbToastHeader);\n  });\n\n  NgbToastHeader.ɵfac = function NgbToastHeader_Factory(t) {\n    return new (t || NgbToastHeader)();\n  };\n\n  NgbToastHeader.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbToastHeader,\n    selectors: [[\"\", \"ngbToastHeader\", \"\"]]\n  });\n  return NgbToastHeader;\n}();\n\nvar NgbToast = /*@__PURE__*/function () {\n  var NgbToast = /*#__PURE__*/function () {\n    function NgbToast(ariaLive, config, _zone, _element) {\n      _classCallCheck(this, NgbToast);\n\n      this.ariaLive = ariaLive;\n      this._zone = _zone;\n      this._element = _element;\n      /**\n       * A template like `<ng-template ngbToastHeader></ng-template>` can be\n       * used in the projected content to allow markup usage.\n       */\n\n      this.contentHeaderTpl = null;\n      /**\n       * An event fired after the animation triggered by calling `.show()` method has finished.\n       *\n       * @since 8.0.0\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event fired after the animation triggered by calling `.hide()` method has finished.\n       *\n       * It can only occur in 2 different scenarios:\n       * - `autohide` timeout fires\n       * - user clicks on a closing cross\n       *\n       * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n       * to the user to take care of that.\n       *\n       * @since 8.0.0\n       */\n\n      this.hidden = new EventEmitter();\n\n      if (this.ariaLive == null) {\n        this.ariaLive = config.ariaLive;\n      }\n\n      this.delay = config.delay;\n      this.autohide = config.autohide;\n      this.animation = config.animation;\n    }\n\n    _createClass(NgbToast, [{\n      key: \"ngAfterContentInit\",\n      value: function ngAfterContentInit() {\n        var _this50 = this;\n\n        this._zone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n          _this50._init();\n\n          _this50.show();\n        });\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        if ('autohide' in changes) {\n          this._clearTimeout();\n\n          this._init();\n        }\n      }\n      /**\n       * Triggers toast closing programmatically.\n       *\n       * The returned observable will emit and be completed once the closing transition has finished.\n       * If the animations are turned off this happens synchronously.\n       *\n       * Alternatively you could listen or subscribe to the `(hidden)` output\n       *\n       * @since 8.0.0\n       */\n\n    }, {\n      key: \"hide\",\n      value: function hide() {\n        var _this51 = this;\n\n        this._clearTimeout();\n\n        var transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, {\n          animation: this.animation,\n          runningTransition: 'stop'\n        });\n        transition.subscribe(function () {\n          _this51.hidden.emit();\n        });\n        return transition;\n      }\n      /**\n       * Triggers toast opening programmatically.\n       *\n       * The returned observable will emit and be completed once the opening transition has finished.\n       * If the animations are turned off this happens synchronously.\n       *\n       * Alternatively you could listen or subscribe to the `(shown)` output\n       *\n       * @since 8.0.0\n       */\n\n    }, {\n      key: \"show\",\n      value: function show() {\n        var _this52 = this;\n\n        var transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n          animation: this.animation,\n          runningTransition: 'continue'\n        });\n        transition.subscribe(function () {\n          _this52.shown.emit();\n        });\n        return transition;\n      }\n    }, {\n      key: \"_init\",\n      value: function _init() {\n        var _this53 = this;\n\n        if (this.autohide && !this._timeoutID) {\n          this._timeoutID = setTimeout(function () {\n            return _this53.hide();\n          }, this.delay);\n        }\n      }\n    }, {\n      key: \"_clearTimeout\",\n      value: function _clearTimeout() {\n        if (this._timeoutID) {\n          clearTimeout(this._timeoutID);\n          this._timeoutID = null;\n        }\n      }\n    }]);\n\n    return NgbToast;\n  }();\n\n  NgbToast.ɵfac = function NgbToast_Factory(t) {\n    return new (t || NgbToast)(ɵngcc0.ɵɵinjectAttribute('aria-live'), ɵngcc0.ɵɵdirectiveInject(NgbToastConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef));\n  };\n\n  NgbToast.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbToast,\n    selectors: [[\"ngb-toast\"]],\n    contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n      }\n\n      if (rf & 2) {\n        var _t;\n\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n      }\n    },\n    hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\", 1, \"toast\"],\n    hostVars: 3,\n    hostBindings: function NgbToast_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n      }\n    },\n    inputs: {\n      delay: \"delay\",\n      autohide: \"autohide\",\n      animation: \"animation\",\n      header: \"header\"\n    },\n    outputs: {\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbToast\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature],\n    ngContentSelectors: _c3,\n    decls: 5,\n    vars: 1,\n    consts: function consts() {\n      var i18n_85;\n\n      if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n        var MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86 = goog.getMsg(\"Close\");\n        i18n_85 = MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86;\n      } else {\n        i18n_85 = $localize(_templateObject36 || (_templateObject36 = _taggedTemplateLiteral([\":@@ngb.toast.close-aria\\u241Ff4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8\\u241F7819314041543176992:Close\"])));\n      }\n\n      return [[\"headerTpl\", \"\"], [3, \"ngIf\"], [1, \"toast-body\"], [1, \"mr-auto\"], [1, \"toast-header\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_85, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]];\n    },\n    template: function NgbToast_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbToast_ng_template_2_Template, 5, 1, \"ng-template\", 1);\n        ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n        ɵngcc0.ɵɵprojection(4);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentHeaderTpl || ctx.header);\n      }\n    },\n    directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet],\n    styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"],\n    encapsulation: 2\n  });\n  return NgbToast;\n}();\n\nvar NgbToastModule = /*@__PURE__*/function () {\n  var NgbToastModule = /*#__PURE__*/_createClass(function NgbToastModule() {\n    _classCallCheck(this, NgbToastModule);\n  });\n\n  NgbToastModule.ɵfac = function NgbToastModule_Factory(t) {\n    return new (t || NgbToastModule)();\n  };\n\n  NgbToastModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbToastModule\n  });\n  NgbToastModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbToastModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbToastModule, {\n    declarations: function declarations() {\n      return [NgbToast, NgbToastHeader];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbToast, NgbToastHeader];\n    }\n  });\n})();\n\nvar NgbTooltipConfig = /*@__PURE__*/function () {\n  var NgbTooltipConfig = /*#__PURE__*/function () {\n    function NgbTooltipConfig(_ngbConfig) {\n      _classCallCheck(this, NgbTooltipConfig);\n\n      this._ngbConfig = _ngbConfig;\n      this.autoClose = true;\n      this.placement = 'auto';\n      this.triggers = 'hover focus';\n      this.disableTooltip = false;\n      this.openDelay = 0;\n      this.closeDelay = 0;\n    }\n\n    _createClass(NgbTooltipConfig, [{\n      key: \"animation\",\n      get: function get() {\n        return this._animation === undefined ? this._ngbConfig.animation : this._animation;\n      },\n      set: function set(animation) {\n        this._animation = animation;\n      }\n    }]);\n\n    return NgbTooltipConfig;\n  }();\n\n  NgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) {\n    return new (t || NgbTooltipConfig)(ɵngcc0.ɵɵinject(NgbConfig));\n  };\n\n  NgbTooltipConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbTooltipConfig_Factory() {\n      return new NgbTooltipConfig(i0.ɵɵinject(NgbConfig));\n    },\n    token: NgbTooltipConfig,\n    providedIn: \"root\"\n  });\n  return NgbTooltipConfig;\n}();\n\nvar nextId = 0;\n\nvar NgbTooltipWindow = /*@__PURE__*/function () {\n  var NgbTooltipWindow = /*#__PURE__*/_createClass(function NgbTooltipWindow() {\n    _classCallCheck(this, NgbTooltipWindow);\n  });\n\n  NgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) {\n    return new (t || NgbTooltipWindow)();\n  };\n\n  NgbTooltipWindow.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbTooltipWindow,\n    selectors: [[\"ngb-tooltip-window\"]],\n    hostAttrs: [\"role\", \"tooltip\"],\n    hostVars: 5,\n    hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) {\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n        ɵngcc0.ɵɵclassMap(\"tooltip\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n        ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n      }\n    },\n    inputs: {\n      animation: \"animation\",\n      id: \"id\",\n      tooltipClass: \"tooltipClass\"\n    },\n    ngContentSelectors: _c3,\n    decls: 3,\n    vars: 0,\n    consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]],\n    template: function NgbTooltipWindow_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵelement(0, \"div\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n        ɵngcc0.ɵɵprojection(2);\n        ɵngcc0.ɵɵelementEnd();\n      }\n    },\n    styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbTooltipWindow;\n}();\n\nvar NgbTooltip = /*@__PURE__*/function () {\n  var NgbTooltip = /*#__PURE__*/function () {\n    function NgbTooltip(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n      var _this54 = this;\n\n      _classCallCheck(this, NgbTooltip);\n\n      this._elementRef = _elementRef;\n      this._renderer = _renderer;\n      this._ngZone = _ngZone;\n      this._document = _document;\n      this._changeDetector = _changeDetector;\n      /**\n       * An event emitted when the tooltip opening animation has finished. Contains no payload.\n       */\n\n      this.shown = new EventEmitter();\n      /**\n       * An event emitted when the tooltip closing animation has finished. Contains no payload.\n       */\n\n      this.hidden = new EventEmitter();\n      this._ngbTooltipWindowId = \"ngb-tooltip-\".concat(nextId++);\n      this._windowRef = null;\n      this.animation = config.animation;\n      this.autoClose = config.autoClose;\n      this.placement = config.placement;\n      this.triggers = config.triggers;\n      this.container = config.container;\n      this.disableTooltip = config.disableTooltip;\n      this.tooltipClass = config.tooltipClass;\n      this.openDelay = config.openDelay;\n      this.closeDelay = config.closeDelay;\n      this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n      this._zoneSubscription = _ngZone.onStable.subscribe(function () {\n        if (_this54._windowRef) {\n          positionElements(_this54._elementRef.nativeElement, _this54._windowRef.location.nativeElement, _this54.placement, _this54.container === 'body', 'bs-tooltip');\n        }\n      });\n    }\n    /**\n     * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n     *\n     * If the content if falsy, the tooltip won't open.\n     */\n\n\n    _createClass(NgbTooltip, [{\n      key: \"ngbTooltip\",\n      get: function get() {\n        return this._ngbTooltip;\n      }\n      /**\n       * Opens the tooltip.\n       *\n       * This is considered to be a \"manual\" triggering.\n       * The `context` is an optional value to be injected into the tooltip template when it is created.\n       */\n      ,\n      set: function set(value) {\n        this._ngbTooltip = value;\n\n        if (!value && this._windowRef) {\n          this.close();\n        }\n      }\n    }, {\n      key: \"open\",\n      value: function open(context) {\n        var _this55 = this;\n\n        if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n          var _this$_popupService$o2 = this._popupService.open(this._ngbTooltip, context, this.animation),\n              windowRef = _this$_popupService$o2.windowRef,\n              transition$ = _this$_popupService$o2.transition$;\n\n          this._windowRef = windowRef;\n          this._windowRef.instance.animation = this.animation;\n          this._windowRef.instance.tooltipClass = this.tooltipClass;\n          this._windowRef.instance.id = this._ngbTooltipWindowId;\n\n          this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n\n          if (this.container === 'body') {\n            this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n          } // We need to detect changes, because we don't know where .open() might be called from.\n          // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n          // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n\n\n          this._windowRef.changeDetectorRef.detectChanges(); // We need to mark for check, because tooltip won't work inside the OnPush component.\n          // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n          // inside the template of an OnPush component and we change the tooltip from\n          // open -> closed, the expression in question won't be updated unless we explicitly\n          // mark the parent component to be checked.\n\n\n          this._windowRef.changeDetectorRef.markForCheck();\n\n          ngbAutoClose(this._ngZone, this._document, this.autoClose, function () {\n            return _this55.close();\n          }, this.hidden, [this._windowRef.location.nativeElement]);\n          transition$.subscribe(function () {\n            return _this55.shown.emit();\n          });\n        }\n      }\n      /**\n       * Closes the tooltip.\n       *\n       * This is considered to be a \"manual\" triggering of the tooltip.\n       */\n\n    }, {\n      key: \"close\",\n      value: function close() {\n        var _this56 = this;\n\n        if (this._windowRef != null) {\n          this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\n          this._popupService.close(this.animation).subscribe(function () {\n            _this56._windowRef = null;\n\n            _this56.hidden.emit();\n\n            _this56._changeDetector.markForCheck();\n          });\n        }\n      }\n      /**\n       * Toggles the tooltip.\n       *\n       * This is considered to be a \"manual\" triggering of the tooltip.\n       */\n\n    }, {\n      key: \"toggle\",\n      value: function toggle() {\n        if (this._windowRef) {\n          this.close();\n        } else {\n          this.open();\n        }\n      }\n      /**\n       * Returns `true`, if the popover is currently shown.\n       */\n\n    }, {\n      key: \"isOpen\",\n      value: function isOpen() {\n        return this._windowRef != null;\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(_ref28) {\n        var tooltipClass = _ref28.tooltipClass;\n\n        if (tooltipClass && this.isOpen()) {\n          this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this.close(); // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n        // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n\n        if (this._unregisterListenersFn) {\n          this._unregisterListenersFn();\n        }\n\n        this._zoneSubscription.unsubscribe();\n      }\n    }]);\n\n    return NgbTooltip;\n  }();\n\n  NgbTooltip.ɵfac = function NgbTooltip_Factory(t) {\n    return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef));\n  };\n\n  NgbTooltip.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbTooltip,\n    selectors: [[\"\", \"ngbTooltip\", \"\"]],\n    inputs: {\n      animation: \"animation\",\n      autoClose: \"autoClose\",\n      placement: \"placement\",\n      triggers: \"triggers\",\n      container: \"container\",\n      disableTooltip: \"disableTooltip\",\n      tooltipClass: \"tooltipClass\",\n      openDelay: \"openDelay\",\n      closeDelay: \"closeDelay\",\n      ngbTooltip: \"ngbTooltip\"\n    },\n    outputs: {\n      shown: \"shown\",\n      hidden: \"hidden\"\n    },\n    exportAs: [\"ngbTooltip\"],\n    features: [ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbTooltip;\n}();\n\nvar NgbTooltipModule = /*@__PURE__*/function () {\n  var NgbTooltipModule = /*#__PURE__*/_createClass(function NgbTooltipModule() {\n    _classCallCheck(this, NgbTooltipModule);\n  });\n\n  NgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) {\n    return new (t || NgbTooltipModule)();\n  };\n\n  NgbTooltipModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbTooltipModule\n  });\n  NgbTooltipModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({});\n  return NgbTooltipModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, {\n    declarations: [NgbTooltip, NgbTooltipWindow],\n    exports: [NgbTooltip]\n  });\n})();\n\nvar NgbHighlight = /*@__PURE__*/function () {\n  var NgbHighlight = /*#__PURE__*/function () {\n    function NgbHighlight() {\n      _classCallCheck(this, NgbHighlight);\n\n      /**\n       * The CSS class for `<span>` elements wrapping the `term` inside the `result`.\n       */\n      this.highlightClass = 'ngb-highlight';\n      /**\n       * Boolean option to determine if the highlighting should be sensitive to accents or not.\n       *\n       * This feature is only available for browsers that implement the `String.normalize` function\n       * (typically not Internet Explorer).\n       * If you want to use this feature in a browser that does not implement `String.normalize`,\n       * you will have to include a polyfill in your application (`unorm` for example).\n       *\n       * @since 9.1.0\n       */\n\n      this.accentSensitive = true;\n    }\n\n    _createClass(NgbHighlight, [{\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(changes) {\n        var _this57 = this;\n\n        if (!this.accentSensitive && !String.prototype.normalize) {\n          console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' + 'that does not implement the `String.normalize` function. ' + 'You will have to include a polyfill in your application to use this feature in the current browser.');\n          this.accentSensitive = true;\n        }\n\n        var result = toString(this.result);\n        var terms = Array.isArray(this.term) ? this.term : [this.term];\n\n        var prepareTerm = function prepareTerm(term) {\n          return _this57.accentSensitive ? term : removeAccents(term);\n        };\n\n        var escapedTerms = terms.map(function (term) {\n          return regExpEscape(prepareTerm(toString(term)));\n        }).filter(function (term) {\n          return term;\n        });\n        var toSplit = this.accentSensitive ? result : removeAccents(result);\n        var parts = escapedTerms.length ? toSplit.split(new RegExp(\"(\".concat(escapedTerms.join('|'), \")\"), 'gmi')) : [result];\n\n        if (this.accentSensitive) {\n          this.parts = parts;\n        } else {\n          var offset = 0;\n          this.parts = parts.map(function (part) {\n            return result.substring(offset, offset += part.length);\n          });\n        }\n      }\n    }]);\n\n    return NgbHighlight;\n  }();\n\n  NgbHighlight.ɵfac = function NgbHighlight_Factory(t) {\n    return new (t || NgbHighlight)();\n  };\n\n  NgbHighlight.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbHighlight,\n    selectors: [[\"ngb-highlight\"]],\n    inputs: {\n      highlightClass: \"highlightClass\",\n      accentSensitive: \"accentSensitive\",\n      result: \"result\",\n      term: \"term\"\n    },\n    features: [ɵngcc0.ɵɵNgOnChangesFeature],\n    decls: 1,\n    vars: 1,\n    consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]],\n    template: function NgbHighlight_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf],\n    styles: [\".ngb-highlight{font-weight:700}\"],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n  return NgbHighlight;\n}();\n\nvar NgbTypeaheadWindow = /*@__PURE__*/function () {\n  var NgbTypeaheadWindow = /*#__PURE__*/function () {\n    function NgbTypeaheadWindow() {\n      _classCallCheck(this, NgbTypeaheadWindow);\n\n      this.activeIdx = 0;\n      /**\n       * Flag indicating if the first row should be active initially\n       */\n\n      this.focusFirst = true;\n      /**\n       * A function used to format a given result before display. This function should return a formatted string without any\n       * HTML markup\n       */\n\n      this.formatter = toString;\n      /**\n       * Event raised when user selects a particular result row\n       */\n\n      this.selectEvent = new EventEmitter();\n      this.activeChangeEvent = new EventEmitter();\n    }\n\n    _createClass(NgbTypeaheadWindow, [{\n      key: \"hasActive\",\n      value: function hasActive() {\n        return this.activeIdx > -1 && this.activeIdx < this.results.length;\n      }\n    }, {\n      key: \"getActive\",\n      value: function getActive() {\n        return this.results[this.activeIdx];\n      }\n    }, {\n      key: \"markActive\",\n      value: function markActive(activeIdx) {\n        this.activeIdx = activeIdx;\n\n        this._activeChanged();\n      }\n    }, {\n      key: \"next\",\n      value: function next() {\n        if (this.activeIdx === this.results.length - 1) {\n          this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n        } else {\n          this.activeIdx++;\n        }\n\n        this._activeChanged();\n      }\n    }, {\n      key: \"prev\",\n      value: function prev() {\n        if (this.activeIdx < 0) {\n          this.activeIdx = this.results.length - 1;\n        } else if (this.activeIdx === 0) {\n          this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n        } else {\n          this.activeIdx--;\n        }\n\n        this._activeChanged();\n      }\n    }, {\n      key: \"resetActive\",\n      value: function resetActive() {\n        this.activeIdx = this.focusFirst ? 0 : -1;\n\n        this._activeChanged();\n      }\n    }, {\n      key: \"select\",\n      value: function select(item) {\n        this.selectEvent.emit(item);\n      }\n    }, {\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this.resetActive();\n      }\n    }, {\n      key: \"_activeChanged\",\n      value: function _activeChanged() {\n        this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n      }\n    }]);\n\n    return NgbTypeaheadWindow;\n  }();\n\n  NgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) {\n    return new (t || NgbTypeaheadWindow)();\n  };\n\n  NgbTypeaheadWindow.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: NgbTypeaheadWindow,\n    selectors: [[\"ngb-typeahead-window\"]],\n    hostAttrs: [\"role\", \"listbox\"],\n    hostVars: 3,\n    hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) {\n          return $event.preventDefault();\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n        ɵngcc0.ɵɵclassMap(\"dropdown-menu show\" + (ctx.popupClass ? \" \" + ctx.popupClass : \"\"));\n      }\n    },\n    inputs: {\n      focusFirst: \"focusFirst\",\n      formatter: \"formatter\",\n      id: \"id\",\n      results: \"results\",\n      term: \"term\",\n      resultTemplate: \"resultTemplate\",\n      popupClass: \"popupClass\"\n    },\n    outputs: {\n      selectEvent: \"select\",\n      activeChangeEvent: \"activeChange\"\n    },\n    exportAs: [\"ngbTypeaheadWindow\"],\n    decls: 3,\n    vars: 1,\n    consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n    template: function NgbTypeaheadWindow_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, NgbHighlight, ɵngcc1.NgTemplateOutlet],\n    encapsulation: 2\n  });\n  return NgbTypeaheadWindow;\n}();\n\nvar ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', {\n  providedIn: 'root',\n  factory: ARIA_LIVE_DELAY_FACTORY\n});\n\nfunction ARIA_LIVE_DELAY_FACTORY() {\n  return 100;\n}\n\nfunction getLiveElement(document) {\n  var lazyCreate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var element = document.body.querySelector('#ngb-live');\n\n  if (element == null && lazyCreate) {\n    element = document.createElement('div');\n    element.setAttribute('id', 'ngb-live');\n    element.setAttribute('aria-live', 'polite');\n    element.setAttribute('aria-atomic', 'true');\n    element.classList.add('sr-only');\n    document.body.appendChild(element);\n  }\n\n  return element;\n}\n\nvar Live = /*@__PURE__*/function () {\n  var Live = /*#__PURE__*/function () {\n    function Live(_document, _delay) {\n      _classCallCheck(this, Live);\n\n      this._document = _document;\n      this._delay = _delay;\n    }\n\n    _createClass(Live, [{\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        var element = getLiveElement(this._document);\n\n        if (element) {\n          // if exists, it will always be attached to the <body>\n          element.parentElement.removeChild(element);\n        }\n      }\n    }, {\n      key: \"say\",\n      value: function say(message) {\n        var element = getLiveElement(this._document, true);\n        var delay = this._delay;\n\n        if (element != null) {\n          element.textContent = '';\n\n          var setText = function setText() {\n            return element.textContent = message;\n          };\n\n          if (delay === null) {\n            setText();\n          } else {\n            setTimeout(setText, delay);\n          }\n        }\n      }\n    }]);\n\n    return Live;\n  }();\n\n  Live.ɵfac = function Live_Factory(t) {\n    return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY));\n  };\n\n  Live.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function Live_Factory() {\n      return new Live(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(ARIA_LIVE_DELAY));\n    },\n    token: Live,\n    providedIn: \"root\"\n  });\n  return Live;\n}();\n\nvar NgbTypeaheadConfig = /*@__PURE__*/function () {\n  var NgbTypeaheadConfig = /*#__PURE__*/_createClass(function NgbTypeaheadConfig() {\n    _classCallCheck(this, NgbTypeaheadConfig);\n\n    this.editable = true;\n    this.focusFirst = true;\n    this.showHint = false;\n    this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n  });\n\n  NgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) {\n    return new (t || NgbTypeaheadConfig)();\n  };\n\n  NgbTypeaheadConfig.ɵprov = i0.ɵɵdefineInjectable({\n    factory: function NgbTypeaheadConfig_Factory() {\n      return new NgbTypeaheadConfig();\n    },\n    token: NgbTypeaheadConfig,\n    providedIn: \"root\"\n  });\n  return NgbTypeaheadConfig;\n}();\n\nvar nextWindowId = 0;\n\nvar NgbTypeahead = /*@__PURE__*/function () {\n  var NgbTypeahead = /*#__PURE__*/function () {\n    function NgbTypeahead(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n      var _this58 = this;\n\n      _classCallCheck(this, NgbTypeahead);\n\n      this._elementRef = _elementRef;\n      this._renderer = _renderer;\n      this._live = _live;\n      this._document = _document;\n      this._ngZone = _ngZone;\n      this._changeDetector = _changeDetector;\n      this._subscription = null;\n      this._closed$ = new Subject();\n      this._inputValueBackup = null;\n      this._windowRef = null;\n      /**\n       * The value for the `autocomplete` attribute for the `<input>` element.\n       *\n       * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n       *\n       * @since 2.1.0\n       */\n\n      this.autocomplete = 'off';\n      /**\n       * The preferred placement of the typeahead.\n       *\n       * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n       * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n       * `\"right-bottom\"`\n       *\n       * Accepts an array of strings or a string with space separated possible values.\n       *\n       * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n       *\n       * Please see the [positioning overview](#/positioning) for more details.\n       */\n\n      this.placement = 'bottom-left';\n      /**\n       * An event emitted right before an item is selected from the result list.\n       *\n       * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n       */\n\n      this.selectItem = new EventEmitter();\n      this.activeDescendant = null;\n      this.popupId = \"ngb-typeahead-\".concat(nextWindowId++);\n\n      this._onTouched = function () {};\n\n      this._onChange = function (_) {};\n\n      this.container = config.container;\n      this.editable = config.editable;\n      this.focusFirst = config.focusFirst;\n      this.showHint = config.showHint;\n      this.placement = config.placement;\n      this._valueChanges = fromEvent(_elementRef.nativeElement, 'input').pipe(map(function ($event) {\n        return $event.target.value;\n      }));\n      this._resubscribeTypeahead = new BehaviorSubject(null);\n      this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n      this._zoneSubscription = ngZone.onStable.subscribe(function () {\n        if (_this58.isPopupOpen()) {\n          positionElements(_this58._elementRef.nativeElement, _this58._windowRef.location.nativeElement, _this58.placement, _this58.container === 'body');\n        }\n      });\n    }\n\n    _createClass(NgbTypeahead, [{\n      key: \"ngOnInit\",\n      value: function ngOnInit() {\n        this._subscribeToUserInput();\n      }\n    }, {\n      key: \"ngOnChanges\",\n      value: function ngOnChanges(_ref29) {\n        var ngbTypeahead = _ref29.ngbTypeahead;\n\n        if (ngbTypeahead && !ngbTypeahead.firstChange) {\n          this._unsubscribeFromUserInput();\n\n          this._subscribeToUserInput();\n        }\n      }\n    }, {\n      key: \"ngOnDestroy\",\n      value: function ngOnDestroy() {\n        this._closePopup();\n\n        this._unsubscribeFromUserInput();\n\n        this._zoneSubscription.unsubscribe();\n      }\n    }, {\n      key: \"registerOnChange\",\n      value: function registerOnChange(fn) {\n        this._onChange = fn;\n      }\n    }, {\n      key: \"registerOnTouched\",\n      value: function registerOnTouched(fn) {\n        this._onTouched = fn;\n      }\n    }, {\n      key: \"writeValue\",\n      value: function writeValue(value) {\n        this._writeInputValue(this._formatItemForInput(value));\n\n        if (this.showHint) {\n          this._inputValueBackup = value;\n        }\n      }\n    }, {\n      key: \"setDisabledState\",\n      value: function setDisabledState(isDisabled) {\n        this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n      }\n      /**\n       * Dismisses typeahead popup window\n       */\n\n    }, {\n      key: \"dismissPopup\",\n      value: function dismissPopup() {\n        if (this.isPopupOpen()) {\n          this._resubscribeTypeahead.next(null);\n\n          this._closePopup();\n\n          if (this.showHint && this._inputValueBackup !== null) {\n            this._writeInputValue(this._inputValueBackup);\n          }\n\n          this._changeDetector.markForCheck();\n        }\n      }\n      /**\n       * Returns true if the typeahead popup window is displayed\n       */\n\n    }, {\n      key: \"isPopupOpen\",\n      value: function isPopupOpen() {\n        return this._windowRef != null;\n      }\n    }, {\n      key: \"handleBlur\",\n      value: function handleBlur() {\n        this._resubscribeTypeahead.next(null);\n\n        this._onTouched();\n      }\n    }, {\n      key: \"handleKeyDown\",\n      value: function handleKeyDown(event) {\n        if (!this.isPopupOpen()) {\n          return;\n        } // tslint:disable-next-line:deprecation\n\n\n        switch (event.which) {\n          case Key.ArrowDown:\n            event.preventDefault();\n\n            this._windowRef.instance.next();\n\n            this._showHint();\n\n            break;\n\n          case Key.ArrowUp:\n            event.preventDefault();\n\n            this._windowRef.instance.prev();\n\n            this._showHint();\n\n            break;\n\n          case Key.Enter:\n          case Key.Tab:\n            var result = this._windowRef.instance.getActive();\n\n            if (isDefined(result)) {\n              event.preventDefault();\n              event.stopPropagation();\n\n              this._selectResult(result);\n            }\n\n            this._closePopup();\n\n            break;\n        }\n      }\n    }, {\n      key: \"_openPopup\",\n      value: function _openPopup() {\n        var _this59 = this;\n\n        if (!this.isPopupOpen()) {\n          this._inputValueBackup = this._elementRef.nativeElement.value;\n\n          var _this$_popupService$o3 = this._popupService.open(),\n              windowRef = _this$_popupService$o3.windowRef;\n\n          this._windowRef = windowRef;\n          this._windowRef.instance.id = this.popupId;\n\n          this._windowRef.instance.selectEvent.subscribe(function (result) {\n            return _this59._selectResultClosePopup(result);\n          });\n\n          this._windowRef.instance.activeChangeEvent.subscribe(function (activeId) {\n            return _this59.activeDescendant = activeId;\n          });\n\n          this._windowRef.instance.popupClass = this.popupClass;\n\n          if (this.container === 'body') {\n            this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n          }\n\n          this._changeDetector.markForCheck();\n\n          ngbAutoClose(this._ngZone, this._document, 'outside', function () {\n            return _this59.dismissPopup();\n          }, this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n        }\n      }\n    }, {\n      key: \"_closePopup\",\n      value: function _closePopup() {\n        var _this60 = this;\n\n        this._popupService.close().subscribe(function () {\n          _this60._closed$.next();\n\n          _this60._windowRef = null;\n          _this60.activeDescendant = null;\n        });\n      }\n    }, {\n      key: \"_selectResult\",\n      value: function _selectResult(result) {\n        var defaultPrevented = false;\n        this.selectItem.emit({\n          item: result,\n          preventDefault: function preventDefault() {\n            defaultPrevented = true;\n          }\n        });\n\n        this._resubscribeTypeahead.next(null);\n\n        if (!defaultPrevented) {\n          this.writeValue(result);\n\n          this._onChange(result);\n        }\n      }\n    }, {\n      key: \"_selectResultClosePopup\",\n      value: function _selectResultClosePopup(result) {\n        this._selectResult(result);\n\n        this._closePopup();\n      }\n    }, {\n      key: \"_showHint\",\n      value: function _showHint() {\n        var _a;\n\n        if (this.showHint && ((_a = this._windowRef) === null || _a === void 0 ? void 0 : _a.instance.hasActive()) && this._inputValueBackup != null) {\n          var userInputLowerCase = this._inputValueBackup.toLowerCase();\n\n          var formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n\n          if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n            this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n\n            this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n          } else {\n            this._writeInputValue(formattedVal);\n          }\n        }\n      }\n    }, {\n      key: \"_formatItemForInput\",\n      value: function _formatItemForInput(item) {\n        return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n      }\n    }, {\n      key: \"_writeInputValue\",\n      value: function _writeInputValue(value) {\n        this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n      }\n    }, {\n      key: \"_subscribeToUserInput\",\n      value: function _subscribeToUserInput() {\n        var _this61 = this;\n\n        var results$ = this._valueChanges.pipe(tap(function (value) {\n          _this61._inputValueBackup = _this61.showHint ? value : null;\n\n          _this61._onChange(_this61.editable ? value : undefined);\n        }), this.ngbTypeahead ? this.ngbTypeahead : function () {\n          return of([]);\n        });\n\n        this._subscription = this._resubscribeTypeahead.pipe(switchMap(function () {\n          return results$;\n        })).subscribe(function (results) {\n          if (!results || results.length === 0) {\n            _this61._closePopup();\n          } else {\n            _this61._openPopup();\n\n            _this61._windowRef.instance.focusFirst = _this61.focusFirst;\n            _this61._windowRef.instance.results = results;\n            _this61._windowRef.instance.term = _this61._elementRef.nativeElement.value;\n\n            if (_this61.resultFormatter) {\n              _this61._windowRef.instance.formatter = _this61.resultFormatter;\n            }\n\n            if (_this61.resultTemplate) {\n              _this61._windowRef.instance.resultTemplate = _this61.resultTemplate;\n            }\n\n            _this61._windowRef.instance.resetActive(); // The observable stream we are subscribing to might have async steps\n            // and if a component containing typeahead is using the OnPush strategy\n            // the change detection turn wouldn't be invoked automatically.\n\n\n            _this61._windowRef.changeDetectorRef.detectChanges();\n\n            _this61._showHint();\n          } // live announcer\n\n\n          var count = results ? results.length : 0;\n\n          _this61._live.say(count === 0 ? 'No results available' : \"\".concat(count, \" result\").concat(count === 1 ? '' : 's', \" available\"));\n        });\n      }\n    }, {\n      key: \"_unsubscribeFromUserInput\",\n      value: function _unsubscribeFromUserInput() {\n        if (this._subscription) {\n          this._subscription.unsubscribe();\n        }\n\n        this._subscription = null;\n      }\n    }]);\n\n    return NgbTypeahead;\n  }();\n\n  NgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) {\n    return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef));\n  };\n\n  NgbTypeahead.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n    type: NgbTypeahead,\n    selectors: [[\"input\", \"ngbTypeahead\", \"\"]],\n    hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"],\n    hostVars: 7,\n    hostBindings: function NgbTypeahead_HostBindings(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() {\n          return ctx.handleBlur();\n        })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) {\n          return ctx.handleKeyDown($event);\n        });\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n        ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n        ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n      }\n    },\n    inputs: {\n      autocomplete: \"autocomplete\",\n      placement: \"placement\",\n      container: \"container\",\n      editable: \"editable\",\n      focusFirst: \"focusFirst\",\n      showHint: \"showHint\",\n      inputFormatter: \"inputFormatter\",\n      ngbTypeahead: \"ngbTypeahead\",\n      resultFormatter: \"resultFormatter\",\n      resultTemplate: \"resultTemplate\",\n      popupClass: \"popupClass\"\n    },\n    outputs: {\n      selectItem: \"selectItem\"\n    },\n    exportAs: [\"ngbTypeahead\"],\n    features: [ɵngcc0.ɵɵProvidersFeature([{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(function () {\n        return NgbTypeahead;\n      }),\n      multi: true\n    }]), ɵngcc0.ɵɵNgOnChangesFeature]\n  });\n  return NgbTypeahead;\n}();\n\nvar NgbTypeaheadModule = /*@__PURE__*/function () {\n  var NgbTypeaheadModule = /*#__PURE__*/_createClass(function NgbTypeaheadModule() {\n    _classCallCheck(this, NgbTypeaheadModule);\n  });\n\n  NgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) {\n    return new (t || NgbTypeaheadModule)();\n  };\n\n  NgbTypeaheadModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbTypeaheadModule\n  });\n  NgbTypeaheadModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [[CommonModule]]\n  });\n  return NgbTypeaheadModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, {\n    declarations: function declarations() {\n      return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow];\n    },\n    imports: function imports() {\n      return [CommonModule];\n    },\n    exports: function exports() {\n      return [NgbTypeahead, NgbHighlight];\n    }\n  });\n})();\n\nvar NGB_MODULES = [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule];\n\nvar NgbModule = /*@__PURE__*/function () {\n  var NgbModule = /*#__PURE__*/_createClass(function NgbModule() {\n    _classCallCheck(this, NgbModule);\n  });\n\n  NgbModule.ɵfac = function NgbModule_Factory(t) {\n    return new (t || NgbModule)();\n  };\n\n  NgbModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n    type: NgbModule\n  });\n  NgbModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n    imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule]\n  });\n  return NgbModule;\n}();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, {\n    imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule],\n    exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule]\n  });\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, ContentRef as ɵba, NgbDatepickerDayView as ɵc, NgbDatepickerNavigation as ɵd, NgbDatepickerNavigationSelect as ɵe, NGB_DATEPICKER_18N_FACTORY as ɵf, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵg, NgbDateStructAdapter as ɵh, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵi, NgbDateISOParserFormatter as ɵj, NgbPopoverWindow as ɵk, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵl, NgbTimeStructAdapter as ɵm, NGB_TIMEPICKER_I18N_FACTORY as ɵn, NgbTimepickerI18nDefault as ɵo, NgbTooltipWindow as ɵp, NgbTypeaheadWindow as ɵq, NgbDatepickerService as ɵr, NgbModalBackdrop as ɵs, NgbModalWindow as ɵt, NgbModalStack as ɵu, ScrollBar as ɵv, ARIA_LIVE_DELAY as ɵw, ARIA_LIVE_DELAY_FACTORY as ɵx, Live as ɵy, NgbCalendarHijri as ɵz }; //# sourceMappingURL=ng-bootstrap.js.map","map":null,"metadata":{},"sourceType":"module"}