@idea-ionic/agenda 8.2.4 → 8.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
2
- import { Platform } from '@ionic/angular';
2
+ import { Platform } from '@ionic/angular/standalone';
3
3
  import { finalize, fromEvent, Subject, takeUntil } from 'rxjs';
4
4
  import { CalendarView } from 'angular-calendar';
5
5
  import { isFuture, isToday, isSameDay, endOfWeek, addDays, addMinutes } from 'date-fns';
@@ -250,10 +250,10 @@ export class IDEAAgendaComponent {
250
250
  fixedEnd.setMinutes(agendaBooking.start.getMinutes() + segmentSizeInMinutes);
251
251
  return fixedEnd;
252
252
  }
253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", allowedViews: "allowedViews", onlyFuture: "onlyFuture", titleNotes: "titleNotes", newEventTemplate: "newEventTemplate", allowDragToCreate: "allowDragToCreate", parentContent: "parentContent" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", newEventByDrag: "newEventByDrag", changeEvent: "changeEvent", changeDate: "changeDate", beforeWeekOrDayViewRenderEmitter: "beforeWeekOrDayViewRenderEmitter", beforeMonthViewRenderEmitter: "beforeMonthViewRenderEmitter" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n @if (allowedViews.length > 1) {\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n @for (view of allowedViews; track view) {\n <ion-select-option [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle' : locale }}</h2>\n @if (titleNotes) {\n <p>{{ titleNotes }}</p>\n }\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view : event }}\n @if (event.target) {\n <p>{{ event.target }}</p>\n } @else {\n @if (event.location) {\n <p>{{ event.location }}</p>\n }\n }\n @if (!event.allDay) {\n <p>{{ getPreviewDescription(event.description) }}</p>\n }\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.allDay]=\"weekEvent.event.allDay\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\" />\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n @if (!weekEvent.event.allDay) {\n <div class=\"eventGadgets\">\n @for (icon of weekEvent.event.icons; track icon) {\n <ion-icon [name]=\"icon.name\" [title]=\"icon.title\" />\n }\n @for (avatar of weekEvent.event.avatars; track avatar) {\n <idea-user-avatar size=\"mini\" [src]=\"avatar.url\" [name]=\"avatar.title\" />\n }\n </div>\n }\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n @if (isTimeLabel) {\n <div class=\"cal-time\">\n {{ segment.date | calendarDate: 'weekViewHour' : locale }}\n </div>\n }\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div>\n @switch (view) {\n @case (CalendarView.Month) {\n <mwl-calendar-month-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n }\n @case (CalendarView.Week) {\n <mwl-calendar-week-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n }\n @case (CalendarView.Day) {\n <mwl-calendar-day-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n }\n }\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i3.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAAgendaComponent, selector: "idea-agenda", inputs: { events: "events", excludeDays: "excludeDays", dayStartHour: "dayStartHour", dayEndHour: "dayEndHour", hourSegments: "hourSegments", activeDayIsOpen: "activeDayIsOpen", view: "view", allowedViews: "allowedViews", onlyFuture: "onlyFuture", titleNotes: "titleNotes", newEventTemplate: "newEventTemplate", allowDragToCreate: "allowDragToCreate", parentContent: "parentContent" }, outputs: { selectEvent: "selectEvent", selectDay: "selectDay", selectSlot: "selectSlot", newEventByDrag: "newEventByDrag", changeEvent: "changeEvent", changeDate: "changeDate", beforeWeekOrDayViewRenderEmitter: "beforeWeekOrDayViewRenderEmitter", beforeMonthViewRenderEmitter: "beforeMonthViewRenderEmitter" }, ngImport: i0, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n @if (allowedViews.length > 1) {\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n @for (view of allowedViews; track view) {\n <ion-select-option [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle' : locale }}</h2>\n @if (titleNotes) {\n <p>{{ titleNotes }}</p>\n }\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view : event }}\n @if (event.target) {\n <p>{{ event.target }}</p>\n } @else {\n @if (event.location) {\n <p>{{ event.location }}</p>\n }\n }\n @if (!event.allDay) {\n <p>{{ getPreviewDescription(event.description) }}</p>\n }\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.allDay]=\"weekEvent.event.allDay\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\" />\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n @if (!weekEvent.event.allDay) {\n <div class=\"eventGadgets\">\n @for (icon of weekEvent.event.icons; track icon) {\n <ion-icon [name]=\"icon.name\" [title]=\"icon.title\" />\n }\n @for (avatar of weekEvent.event.avatars; track avatar) {\n <idea-user-avatar size=\"mini\" [src]=\"avatar.url\" [name]=\"avatar.title\" />\n }\n </div>\n }\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n @if (isTimeLabel) {\n <div class=\"cal-time\">\n {{ segment.date | calendarDate: 'weekViewHour' : locale }}\n </div>\n }\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div>\n @switch (view) {\n @case (CalendarView.Month) {\n <mwl-calendar-month-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n }\n @case (CalendarView.Week) {\n <mwl-calendar-week-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n }\n @case (CalendarView.Day) {\n <mwl-calendar-day-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n }\n }\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "component", type: i3.IDEAUserAvatarComponent, selector: "idea-user-avatar", inputs: ["src", "name", "size", "color"] }, { kind: "component", type: i4.ɵCalendarEventActionsComponent, selector: "mwl-calendar-event-actions", inputs: ["event", "customTemplate"] }, { kind: "component", type: i4.ɵCalendarEventTitleComponent, selector: "mwl-calendar-event-title", inputs: ["event", "customTemplate", "view"] }, { kind: "directive", type: i4.ɵCalendarTooltipDirective, selector: "[mwlCalendarTooltip]", inputs: ["mwlCalendarTooltip", "tooltipPlacement", "tooltipTemplate", "tooltipEvent", "tooltipAppendToBody", "tooltipDelay"] }, { kind: "directive", type: i4.ɵCalendarPreviousViewDirective, selector: "[mwlCalendarPreviousView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarNextViewDirective, selector: "[mwlCalendarNextView]", inputs: ["view", "viewDate", "excludeDays", "daysInWeek"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵCalendarTodayDirective, selector: "[mwlCalendarToday]", inputs: ["viewDate"], outputs: ["viewDateChange"] }, { kind: "directive", type: i4.ɵClickDirective, selector: "[mwlClick]", inputs: ["clickListenerDisabled"], outputs: ["mwlClick"] }, { kind: "directive", type: i4.ɵKeydownEnterDirective, selector: "[mwlKeydownEnter]", outputs: ["mwlKeydownEnter"] }, { kind: "component", type: i4.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: i4.CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "component", type: i4.CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i4.ɵCalendarDatePipe, name: "calendarDate" }, { kind: "pipe", type: i4.ɵCalendarEventTitlePipe, name: "calendarEventTitle" }, { kind: "pipe", type: i4.ɵCalendarA11yPipe, name: "calendarA11y" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
255
255
  }
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaComponent, decorators: [{
257
257
  type: Component,
258
258
  args: [{ selector: 'idea-agenda', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"agenda\">\n <!-- TOOLBAR -->\n <ion-row class=\"ion-align-items-center\">\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"5\"\n [sizeSm]=\"3\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n @if (allowedViews.length > 1) {\n <ion-item lines=\"none\" class=\"calendarViewSelector\">\n <ion-select\n interface=\"popover\"\n [value]=\"view\"\n (ionChange)=\"$event?.detail ? setView($event.detail.value) : null\"\n >\n @for (view of allowedViews; track view) {\n <ion-select-option [value]=\"view\">\n {{ 'IDEA_AGENDA.' + view | uppercase | translate }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n </ion-col>\n <ion-col\n class=\"ion-align-self-center ion-text-right\"\n [size]=\"7\"\n [sizeSm]=\"4\"\n [pushSm]=\"5\"\n [sizeLg]=\"2\"\n [pushLg]=\"8\"\n >\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarPreviousView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarToday\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"today-outline\" slot=\"icon-only\" />\n </ion-button>\n <ion-button\n fill=\"clear\"\n color=\"dark\"\n size=\"small\"\n mwlCalendarNextView\n [view]=\"view\"\n [(viewDate)]=\"viewDate\"\n (viewDateChange)=\"viewDateChanged($event)\"\n >\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-align-self-center titleCol\" [size]=\"12\" [sizeSm]=\"5\" [pullSm]=\"7\" [sizeLg]=\"8\" [pullLg]=\"4\">\n <h2>{{ viewDate | calendarDate: view + 'ViewTitle' : locale }}</h2>\n @if (titleNotes) {\n <p>{{ titleNotes }}</p>\n }\n </ion-col>\n </ion-row>\n <!-- TEMPLATES (touch only what's necessary and leave everything else as it is) -->\n <ng-template #eventTitleTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [class.noWrap]=\"event.allDay\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n {{ event.title | calendarEventTitle: view : event }}\n @if (event.target) {\n <p>{{ event.target }}</p>\n } @else {\n @if (event.location) {\n <p>{{ event.location }}</p>\n }\n }\n @if (!event.allDay) {\n <p>{{ getPreviewDescription(event.description) }}</p>\n }\n </span>\n </ng-template>\n <ng-template\n #eventTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [class.external]=\"weekEvent.event.external\"\n [class.allDay]=\"weekEvent.event.allDay\"\n [class.needsAction]=\"Attendance.NEEDS_ACTION === weekEvent.event.attendance\"\n [class.declined]=\"Attendance.DECLINED === weekEvent.event.attendance\"\n [class.tentative]=\"Attendance.TENTATIVE === weekEvent.event.attendance\"\n [style.border-left-color]=\"weekEvent.event.color?.primary\"\n [style.color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 80 : -40)\"\n [style.background-color]=\"getAlternateColor(weekEvent.event.color?.primary, darkMode ? 60 : 80, 0.2)\"\n [mwlCalendarTooltip]=\"!tooltipDisabled && !isMobile() ? getTooltipContent(weekEvent.event) : ''\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale } | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions [event]=\"weekEvent.tempEvent || weekEvent.event\" />\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n @if (!weekEvent.event.allDay) {\n <div class=\"eventGadgets\">\n @for (icon of weekEvent.event.icons; track icon) {\n <ion-icon [name]=\"icon.name\" [title]=\"icon.title\" />\n }\n @for (avatar of weekEvent.event.avatars; track avatar) {\n <idea-user-avatar size=\"mini\" [src]=\"avatar.url\" [name]=\"avatar.title\" />\n }\n </div>\n }\n </div>\n </ng-template>\n <ng-template\n #hourSegmentTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n >\n <div\n #segmentElement\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n (mousedown)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n (touchstart)=\"allowDragToCreate ? startDragToCreate($event, segment.date, segmentElement) : null\"\n >\n @if (isTimeLabel) {\n <div class=\"cal-time\">\n {{ segment.date | calendarDate: 'weekViewHour' : locale }}\n </div>\n }\n </div>\n </ng-template>\n <!-- VIEWS -->\n <div>\n @switch (view) {\n @case (CalendarView.Month) {\n <mwl-calendar-month-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [activeDayIsOpen]=\"activeDayIsOpen\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayClicked)=\"changeDay($event.day)\"\n (beforeViewRender)=\"beforeMonthViewRender($event)\"\n >\n </mwl-calendar-month-view>\n }\n @case (CalendarView.Week) {\n <mwl-calendar-week-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [excludeDays]=\"excludeDays\"\n [weekStartsOn]=\"weekStartsOn\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (dayHeaderClicked)=\"dateIsValid($event.day.date) ? selectDay.emit($event.day.date) : null\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-week-view>\n }\n @case (CalendarView.Day) {\n <mwl-calendar-day-view\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [dayStartHour]=\"dayStartHour\"\n [dayEndHour]=\"dayEndHour\"\n [hourSegments]=\"hourSegments\"\n [eventTemplate]=\"eventTemplate\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n (eventClicked)=\"selectEvent.emit($event.event)\"\n (eventTimesChanged)=\"eventTimesChanged($event)\"\n (hourSegmentClicked)=\"dateIsValid($event.date) ? selectSlot.emit($event.date) : null\"\n (beforeViewRender)=\"beforeWeekOrDayViewRender($event)\"\n >\n </mwl-calendar-day-view>\n }\n }\n </div>\n</div>\n", styles: [".agenda{margin-top:15px}.agenda ion-col.titleCol{padding-left:8px}.agenda ion-col.titleCol h2,.agenda ion-col.titleCol p{margin:0}.agenda ion-col.titleCol h2{font-size:1.2em}.agenda ion-col.titleCol p{font-size:.8em;font-style:italic}.agenda .calendarViewSelector{background-color:transparent;--ion-background-color: transparent;--background: transparent}.agenda .calendarViewSelector ion-select{max-width:100%;width:100%;padding-left:0;font-weight:500}.agenda .eventGadgets{margin-top:4px;margin-left:5px;text-align:right}.agenda .eventGadgets idea-user-avatar{display:block;float:left;margin:2px 1px}.agenda .eventGadgets ion-icon{padding-right:2px;opacity:.7;font-size:1.15em}@media only screen and (max-width: 575px){.agenda ion-col.titleCol{padding:0 8px 12px;text-align:center}}\n"] }]
259
259
  }], propDecorators: { events: [{
@@ -320,4 +320,4 @@ export var DragToCreateOptions;
320
320
  })(DragToCreateOptions || (DragToCreateOptions = {}));
321
321
  const floorToNearest = (amount, precision) => Math.floor(amount / precision) * precision;
322
322
  const ceilToNearest = (amount, precision) => Math.ceil(amount / precision) * precision;
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixpQkFBaUIsRUFDakIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFJTCxZQUFZLEVBRWIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEYsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBUTdELE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFPVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUNwQzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQ3BDOztXQUVHO1FBQ00saUJBQVks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QkFJRyw0QkFBNEI7c0JBQXJDLE1BQU07O0FBdU5UOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN6Qiw4REFBYSxDQUFBO0lBQ2IscUVBQWdCLENBQUE7SUFDaEIsK0RBQVMsQ0FBQTtJQUNULDZEQUFRLENBQUE7QUFDVixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0IscUVBQVksQ0FBQTtJQUNaLCtFQUFpQixDQUFBO0lBQ2pCLDZEQUFRLENBQUE7QUFDVixDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QjtBQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNqSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxTQUFpQixFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZmluYWxpemUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDYWxlbmRhckV2ZW50LFxuICBDYWxlbmRhckV2ZW50VGltZXNDaGFuZ2VkRXZlbnQsXG4gIENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQsXG4gIENhbGVuZGFyVmlldyxcbiAgQ2FsZW5kYXJXZWVrVmlld0JlZm9yZVJlbmRlckV2ZW50XG59IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXInO1xuaW1wb3J0IHsgaXNGdXR1cmUsIGlzVG9kYXksIGlzU2FtZURheSwgZW5kT2ZXZWVrLCBhZGREYXlzLCBhZGRNaW51dGVzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IENvbG9yUGFyc2UgZnJvbSAnY29sb3ItcGFyc2UnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWFnZW5kYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJ2FnZW5kYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhZ2VuZGEuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBQWdlbmRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm0pO1xuICBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGV2ZW50czogQWdlbmRhRXZlbnRbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgZGF5IGluZGV4ZXMgKDAgPSBzdW5kYXksIDEgPSBtb25kYXksIGV0Yy4pIHRoYXQgd2lsbCBiZSBoaWRkZW4gb24gdGhlIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBleGNsdWRlRGF5czogbnVtYmVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBkYXkgc3RhcnQgaG91cnMgaW4gMjQgaG91ciB0aW1lLiBNdXN0IGJlIDAtMjNcbiAgICovXG4gIEBJbnB1dCgpIGRheVN0YXJ0SG91ciA9IDA7XG4gIC8qKlxuICAgKiBUaGUgZGF5IHN0YXJ0IGhvdXJzIGluIDI0IGhvdXIgdGltZS4gTXVzdCBiZSAwLTIzXG4gICAqL1xuICBASW5wdXQoKSBkYXlFbmRIb3VyID0gMjM7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIGFuIGhvdXIuIE11c3QgZGl2aWRlIGVxdWFsbHkgaW50byA2MC5cbiAgICovXG4gIEBJbnB1dCgpIGhvdXJTZWdtZW50cyA9IDI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9wZW4gdGhlIGN1cnJlbnQgZGF5J3MgZGV0YWlscyByaWdodCBhd2F5IGluIG1vbnRoIHZpZXcuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSB2aWV3IG1vZGUgZm9yIHRoZSBhZ2VuZGEuXG4gICAqL1xuICBASW5wdXQoKSB2aWV3OiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXcuV2VlaztcbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIHZpZXcgbW9kZSBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93ZWRWaWV3cyA9IFtDYWxlbmRhclZpZXcuRGF5LCBDYWxlbmRhclZpZXcuV2VlaywgQ2FsZW5kYXJWaWV3Lk1vbnRoXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYmxvY2sgYW55IGRheS9zbG90IGluIHRoZSBwYXN0LlxuICAgKi9cbiAgQElucHV0KCkgb25seUZ1dHVyZSA9IGZhbHNlO1xuICAvKipcbiAgICogU29tZSBub3RlcyB0byBzaG93IHVuZGVybmVhdGggdGhlIGNhbGVuZGFyJ3MgaGVhZGVyLlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGVOb3Rlczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIGZvciBuZXcgZXZlbnRzIGNyZWF0ZWQgYnkgZHJhZyZkcm9wLlxuICAgKi9cbiAgQElucHV0KCkgbmV3RXZlbnRUZW1wbGF0ZTogQWdlbmRhRXZlbnQgPSB7IHRpdGxlOiAnTmV3Jywgc3RhcnQ6IG51bGwsIG1ldGE6IHt9IH07XG4gIC8qKlxuICAgKiBXaGV0aGVyIChhbmQgaG93KSB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgZXZlbnRzIGJ5IGRyYWcmZHJvcC5cbiAgICogSWYgZW5hYmxlZCwgb24gbW9iaWxlIGl0IHJlcXVpcmVzIHRoZSBgcGFyZW50Q29udGVudGAgdG8gYmUgc2V0IGZvciBhIGNvcnJlY3QgZXhlY3V0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dEcmFnVG9DcmVhdGU6IERyYWdUb0NyZWF0ZU9wdGlvbnMgPSBEcmFnVG9DcmVhdGVPcHRpb25zLkRJU0FCTEVEO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBpb24tY29udGVudCwgaW4gY2FzZSB3ZSB3YW50IHRvIGNvbnRyb2wgaXRzIHNjcm9sbGFiaWxpdHkgZm9yIGRyYWcmZHJvcCBmZWF0dXJlcy5cbiAgICovXG4gIEBJbnB1dCgpIHBhcmVudENvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYW4gZXZlbnQgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFnZW5kYUV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgZGF5IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdERheSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhIHRpbWUgc2xvdCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RTbG90ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgbmV3IGV2ZW50IGlzIGFkZGVkIGJ5IGRyYWcgYW5kIGRyb3AuXG4gICAqL1xuICBAT3V0cHV0KCkgbmV3RXZlbnRCeURyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPEFnZW5kYUV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGFuIGV2ZW50IGNoYW5nZWQgZGF0ZSAoZHJhZyZkcm9wIG9yIHJlc2l6ZSkuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFnZW5kYUV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIHRoZSB2aWV3IGRhdGUgb2YgcmVmZXJlbmNlIGNoYW5nZWQgKGJlY2F1c2Ugd2UgbW92ZWQgaW5zaWRlIHRoZSBjYWxlbmRhcikuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgYmVmb3JlIHRoZSByZW5kZXJpbmcgb2YgdGhlIHdlZWsgb3IgZGF5IHZpZXcuXG4gICAqL1xuICBAT3V0cHV0KCkgYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlckVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyV2Vla1ZpZXdCZWZvcmVSZW5kZXJFdmVudD4oKTtcbiAgLyoqXG4gICAqIFRyaWdnZXIgYmVmb3JlIHRoZSByZW5kZXJpbmcgb2YgdGhlIG1vbnRoIHZpZXcuXG4gICAqL1xuICBAT3V0cHV0KCkgYmVmb3JlTW9udGhWaWV3UmVuZGVyRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJNb250aFZpZXdCZWZvcmVSZW5kZXJFdmVudD4oKTtcblxuICBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXc7XG4gIEF0dGVuZGFuY2UgPSBFdmVudEF0dGVuZGFuY2U7XG4gIHZpZXdEYXRlID0gbmV3IERhdGUoKTtcbiAgcmVmcmVzaCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBAaGlkZVxuICAgKi9cbiAgbG9jYWxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAaGlkZVxuICAgKi9cbiAgd2Vla1N0YXJ0c09uOiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuXG4gIGRhcmtNb2RlID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCk7XG4gICAgLy8gaW4gY2FzZSBvZiBJdGFsaWFuIGxvY2FsZSB0aGUgc3RhcnRpbmcgZGF5IGZvciB0aGUgd2VlayBpcyBtb25kYXkgKDEpLCBvdGhlcndpc2Ugc3VuZGF5ICgwKVxuICAgIHRoaXMud2Vla1N0YXJ0c09uID0gdGhpcy5sb2NhbGUgPT09ICdpdCcgPyAxIDogMDtcbiAgfVxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXMoJ21vYmlsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBzb21lIGNoZWNrcyBiZWZvcmUgdGhlIG1vbnRoIHZpZXcgaXMgcmVuZGVyZWQgKGUuZy4gZGlzYWJsZSBpbnZhbGlkIGRheXMpLlxuICAgKi9cbiAgYmVmb3JlTW9udGhWaWV3UmVuZGVyKGV2ZW50OiBDYWxlbmRhck1vbnRoVmlld0JlZm9yZVJlbmRlckV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5iZWZvcmVNb250aFZpZXdSZW5kZXJFbWl0dGVyLmVtaXQoZXZlbnQpO1xuICAgIGNvbnN0IHsgYm9keSB9ID0gZXZlbnQ7XG4gICAgYm9keS5mb3JFYWNoKGRheSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF5LmRhdGUpKSBkYXkuY3NzQ2xhc3MgPSAnY2FsLWRpc2FibGVkJztcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgd2Vlay9kYXkgdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKGV2ZW50OiBDYWxlbmRhcldlZWtWaWV3QmVmb3JlUmVuZGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXJFbWl0dGVyLmVtaXQoZXZlbnQpO1xuICAgIGNvbnN0IHsgaGVhZGVyLCBob3VyQ29sdW1ucyB9ID0gZXZlbnQ7XG4gICAgaGVhZGVyLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICAgIGhvdXJDb2x1bW5zLmZvckVhY2goaG91ckNvbCA9PiB7XG4gICAgICBob3VyQ29sLmhvdXJzLmZvckVhY2goaG91ciA9PiB7XG4gICAgICAgIGhvdXIuc2VnbWVudHMuZm9yRWFjaChzZWdtZW50ID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoc2VnbWVudC5kYXRlKSkgc2VnbWVudC5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGF0ZUlzVmFsaWQoZGF0ZTogYW55LCBzYW1lRGF5SXNWYWxpZD86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMub25seUZ1dHVyZSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGlzRnV0dXJlKGRhdGUpIHx8IChzYW1lRGF5SXNWYWxpZCA/IGlzVG9kYXkoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICBzZXRWaWV3KHZpZXc6IENhbGVuZGFyVmlldyk6IHZvaWQge1xuICAgIHRoaXMudmlldyA9IHZpZXc7XG4gIH1cblxuICB2aWV3RGF0ZUNoYW5nZWQobmV3RGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZXcgPT09IENhbGVuZGFyVmlldy5Nb250aCkgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURhdGUuZW1pdChuZXdEYXRlKTtcbiAgfVxuXG4gIGNoYW5nZURheSh7IGRhdGUsIGV2ZW50cyB9OiB7IGRhdGU6IERhdGU7IGV2ZW50czogQWdlbmRhRXZlbnRbXSB9KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRhdGUsIHRydWUpKSByZXR1cm47XG4gICAgaWYgKChpc1NhbWVEYXkodGhpcy52aWV3RGF0ZSwgZGF0ZSkgJiYgdGhpcy5hY3RpdmVEYXlJc09wZW4gPT09IHRydWUpIHx8ICFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG4gIH1cblxuICBldmVudFRpbWVzQ2hhbmdlZCh7IGV2ZW50LCBuZXdTdGFydCwgbmV3RW5kIH06IENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0YXJ0ID0gbmV3U3RhcnQ7XG4gICAgZXZlbnQuZW5kID0gbmV3RW5kO1xuICAgIHRoaXMuZXZlbnRzID0gdGhpcy5ldmVudHMuc2xpY2UoKTtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0QWx0ZXJuYXRlQ29sb3IoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIG9wYWNpdHk/OiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghY29sb3I/LnRyaW0oKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBhbHQgPSBDb2xvclBhcnNlKGNvbG9yLnRyaW0oKSk7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMF0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgZyA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMV0pICsgYW1vdW50KSwgMCk7XG4gICAgY29uc3QgYiA9IE1hdGgubWF4KE1hdGgubWluKDI1NSwgTnVtYmVyKGFsdC52YWx1ZXNbMl0pICsgYW1vdW50KSwgMCk7XG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7b3BhY2l0eSB8fCAxfSlgO1xuICB9XG5cbiAgZ2V0VG9vbHRpcENvbnRlbnQoZXZlbnQ6IEFnZW5kYUV2ZW50KTogc3RyaW5nIHtcbiAgICBpZiAoIWV2ZW50KSByZXR1cm4gJyc7XG4gICAgbGV0IHN0ciA9IGV2ZW50LnRpdGxlID8gJzxiPicgKyBldmVudC50aXRsZSArICc8L2I+JyA6ICcnO1xuICAgIGlmIChldmVudC50YXJnZXQpIHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCBldmVudC50YXJnZXQpO1xuICAgIGlmIChldmVudC5sb2NhdGlvbikgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIGV2ZW50LmxvY2F0aW9uKTtcbiAgICBpZiAoZXZlbnQuZGVzY3JpcHRpb24pIHtcbiAgICAgIHN0ciA9IHN0ci5jb25jYXQoJzxicj4nKTtcbiAgICAgIHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCBldmVudC5kZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmIChldmVudC5pY29ucykge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicpO1xuICAgICAgZXZlbnQuaWNvbnMuZm9yRWFjaCh4ID0+IChzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgJzxpPicsIHgudGl0bGUsICc8L2k+JykpKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmF2YXRhcnMgJiYgZXZlbnQuYXZhdGFycy5sZW5ndGgpIHtcbiAgICAgIHN0ciA9IHN0ci5jb25jYXQoJzxicj48YnI+ficpO1xuICAgICAgZXZlbnQuYXZhdGFycy5mb3JFYWNoKHggPT4gKHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCB4LnRpdGxlKSkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkZXNjcmlwdGlvbiAmJiBkZXNjcmlwdGlvbi5sZW5ndGggPiAxMDAgPyBkZXNjcmlwdGlvbi5zbGljZSgwLCAxMDApLmNvbmNhdCgnLi4uJykgOiBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHN0YXJ0RHJhZ1RvQ3JlYXRlKGV2ZW50OiBFdmVudCwgc2VnbWVudERhdGU6IERhdGUsIHNlZ21lbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hbGxvd0RyYWdUb0NyZWF0ZSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSBmYWxzZTtcblxuICAgIGNvbnN0IGV2ZW50QnlEcmFnQW5kRHJvcDogQWdlbmRhRXZlbnQgPSB7IC4uLnRoaXMubmV3RXZlbnRUZW1wbGF0ZSwgc3RhcnQ6IHNlZ21lbnREYXRlIH07XG4gICAgdGhpcy5ldmVudHMgPSBbLi4udGhpcy5ldmVudHMsIGV2ZW50QnlEcmFnQW5kRHJvcF07XG5cbiAgICBjb25zdCBzZWdtZW50UG9zaXRpb24gPSBzZWdtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbmRPZlZpZXcgPSBlbmRPZldlZWsodGhpcy52aWV3RGF0ZSwgeyB3ZWVrU3RhcnRzT246IHRoaXMud2Vla1N0YXJ0c09uIH0pO1xuXG4gICAgY29uc3Qgd2hpbGVEcmFnZ2luZyA9IChkcmFnZ2luZ0V2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgeyBjbGllbnRZLCBjbGllbnRYIH0gPVxuICAgICAgICBkcmFnZ2luZ0V2ZW50LnR5cGUgPT09ICd0b3VjaG1vdmUnID8gKGRyYWdnaW5nRXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXSA6IChkcmFnZ2luZ0V2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gICAgICBjb25zdCBtaW51dGVzRGlmZiA9IGNlaWxUb05lYXJlc3QoY2xpZW50WSAtIHNlZ21lbnRQb3NpdGlvbi50b3AsIDMwKTtcbiAgICAgIGNvbnN0IGRheXNEaWZmID0gZmxvb3JUb05lYXJlc3QoY2xpZW50WCAtIHNlZ21lbnRQb3NpdGlvbi5sZWZ0LCBzZWdtZW50UG9zaXRpb24ud2lkdGgpIC8gc2VnbWVudFBvc2l0aW9uLndpZHRoO1xuXG4gICAgICBsZXQgbmV3RW5kOiBEYXRlO1xuICAgICAgaWYgKHRoaXMuYWxsb3dEcmFnVG9DcmVhdGUgPT09IERyYWdUb0NyZWF0ZU9wdGlvbnMuT05MWV9TQU1FX0RBWSkgbmV3RW5kID0gYWRkTWludXRlcyhzZWdtZW50RGF0ZSwgbWludXRlc0RpZmYpO1xuICAgICAgZWxzZSBuZXdFbmQgPSBhZGREYXlzKGFkZE1pbnV0ZXMoc2VnbWVudERhdGUsIG1pbnV0ZXNEaWZmKSwgZGF5c0RpZmYpO1xuXG4gICAgICBpZiAobmV3RW5kID4gc2VnbWVudERhdGUgJiYgbmV3RW5kIDwgZW5kT2ZWaWV3KSBldmVudEJ5RHJhZ0FuZERyb3AuZW5kID0gbmV3RW5kO1xuICAgICAgcmVmcmVzaFZpZXcoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kT2ZEcmFnID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMucGFyZW50Q29udGVudCkgdGhpcy5wYXJlbnRDb250ZW50LnNjcm9sbFkgPSB0cnVlO1xuICAgICAgZXZlbnRCeURyYWdBbmREcm9wLmVuZCA9IHRoaXMuZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICAgIHJlZnJlc2hWaWV3KCk7XG4gICAgICB0aGlzLm5ld0V2ZW50QnlEcmFnLmVtaXQoZXZlbnRCeURyYWdBbmREcm9wKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaFZpZXcgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50c107XG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoc3RhcnQnKSB7XG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaG1vdmUnKVxuICAgICAgICAucGlwZShmaW5hbGl6ZShlbmRPZkRyYWcpLCB0YWtlVW50aWwoZnJvbUV2ZW50KGRvY3VtZW50LCAndG91Y2hlbmQnKSkpXG4gICAgICAgIC5zdWJzY3JpYmUod2hpbGVEcmFnZ2luZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgIC5waXBlKGZpbmFsaXplKGVuZE9mRHJhZyksIHRha2VVbnRpbChmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJykpKVxuICAgICAgICAuc3Vic2NyaWJlKHdoaWxlRHJhZ2dpbmcpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldEZpeGVkRW5kRGF0ZVdpdGhNaW5pbXVtU2VnbWVudER1cmF0aW9uKGFnZW5kYUJvb2tpbmc6IEFnZW5kYUV2ZW50KTogRGF0ZSB7XG4gICAgY29uc3QgZml4ZWRFbmQgPSBuZXcgRGF0ZShhZ2VuZGFCb29raW5nLmVuZCB8fCBhZ2VuZGFCb29raW5nLnN0YXJ0KTtcbiAgICBjb25zdCBzZWdtZW50U2l6ZUluTWludXRlcyA9IDYwIC8gdGhpcy5ob3VyU2VnbWVudHM7XG4gICAgaWYgKGZpeGVkRW5kLmdldFRpbWUoKSA8PSBhZ2VuZGFCb29raW5nLnN0YXJ0LmdldFRpbWUoKSArIHNlZ21lbnRTaXplSW5NaW51dGVzICogNjAgKiAxMDAwKVxuICAgICAgZml4ZWRFbmQuc2V0TWludXRlcyhhZ2VuZGFCb29raW5nLnN0YXJ0LmdldE1pbnV0ZXMoKSArIHNlZ21lbnRTaXplSW5NaW51dGVzKTtcbiAgICByZXR1cm4gZml4ZWRFbmQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJpY2hlciB2ZXJzaW9uIG9mIHRoZSBjbGFzc2ljIENhbGVuZGFyRXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbmRhRXZlbnQgZXh0ZW5kcyBDYWxlbmRhckV2ZW50IHtcbiAgLyoqXG4gICAqIEEgYnJpZWYgZGVzY3JpcHRpb24gZm9yIHRoZSBldmVudC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGN1c3RvbWVyL3N0YWtlaG9sZGVyL3RhcmdldCBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgVVJMcyBvZiBpbWFnZXMgdG8gc2hvdyBhcyBzbWFsbCBhdmF0YXJzLlxuICAgKi9cbiAgYXZhdGFycz86IHsgaWQ6IHN0cmluZzsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVtdO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGlvbi1pY29ucyB0byBzaG93LlxuICAgKi9cbiAgaWNvbnM/OiB7IG5hbWU6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W107XG4gIC8qKlxuICAgKiBUaGUgY29sb3JzIG9mIHRoZSBldmVudCBkaXNwbGF5ZWQuXG4gICAqL1xuICBjb2xvcj86IHsgcHJpbWFyeTogc3RyaW5nOyBzZWNvbmRhcnk/OiBzdHJpbmcgfSB8IGFueTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGV2ZW50IGlzIGV4dGVybmFsOyBleHRlcm5hbCBldmVudHMgYXJlIGxlc3MgaW1wb3J0YW50IFVJLXdpc2UuXG4gICAqL1xuICBleHRlcm5hbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYXR0ZW5kYW5jZSBzdGF0dXMgdG8gdGhpcyBldmVudCwgaWYgYW55LlxuICAgKi9cbiAgYXR0ZW5kYW5jZT86IEV2ZW50QXR0ZW5kYW5jZTtcbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgYW5kIHVuaXF1ZSBpZCBmb3IgdGhlIGV2ZW50LCB2YWxpZCBhY3Jvc3MgbXVsdGlwbGUgc291cmNlcy5cbiAgICovXG4gIGlDYWxVSUQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUG9zc2libGUgYXR0ZW5kYW5jZSBzdGF0dXNlcyBmb3IgdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZW51bSBFdmVudEF0dGVuZGFuY2Uge1xuICBERUNMSU5FRCA9IC0xLFxuICBORUVEU19BQ1RJT04gPSAwLFxuICBURU5UQVRJVkUsXG4gIEFDQ0VQVEVEXG59XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgdG8gYWxsb3cgKG9yIG5vdCkgZHJhZyZkcm9wIHRvIGNyZWF0ZSBhIG5ldyBldmVudC5cbiAqL1xuZXhwb3J0IGVudW0gRHJhZ1RvQ3JlYXRlT3B0aW9ucyB7XG4gIERJU0FCTEVEID0gMCxcbiAgT05MWV9TQU1FX0RBWSA9IDEsXG4gIEZSRUUgPSAyXG59XG5cbmNvbnN0IGZsb29yVG9OZWFyZXN0ID0gKGFtb3VudDogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciA9PiBNYXRoLmZsb29yKGFtb3VudCAvIHByZWNpc2lvbikgKiBwcmVjaXNpb247XG5jb25zdCBjZWlsVG9OZWFyZXN0ID0gKGFtb3VudDogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciA9PiBNYXRoLmNlaWwoYW1vdW50IC8gcHJlY2lzaW9uKSAqIHByZWNpc2lvbjtcbiIsIjxkaXYgY2xhc3M9XCJhZ2VuZGFcIj5cbiAgPCEtLSBUT09MQkFSIC0tPlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiNVwiXG4gICAgICBbc2l6ZVNtXT1cIjNcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIEBpZiAoYWxsb3dlZFZpZXdzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwiY2FsZW5kYXJWaWV3U2VsZWN0b3JcIj5cbiAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmlld1wiXG4gICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIiRldmVudD8uZGV0YWlsID8gc2V0VmlldygkZXZlbnQuZGV0YWlsLnZhbHVlKSA6IG51bGxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKHZpZXcgb2YgYWxsb3dlZFZpZXdzOyB0cmFjayB2aWV3KSB7XG4gICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwidmlld1wiPlxuICAgICAgICAgICAgICAgIHt7ICdJREVBX0FHRU5EQS4nICsgdmlldyB8IHVwcGVyY2FzZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgIH1cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2xcbiAgICAgIGNsYXNzPVwiaW9uLWFsaWduLXNlbGYtY2VudGVyIGlvbi10ZXh0LXJpZ2h0XCJcbiAgICAgIFtzaXplXT1cIjdcIlxuICAgICAgW3NpemVTbV09XCI0XCJcbiAgICAgIFtwdXNoU21dPVwiNVwiXG4gICAgICBbc2l6ZUxnXT1cIjJcIlxuICAgICAgW3B1c2hMZ109XCI4XCJcbiAgICA+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclByZXZpb3VzVmlld1xuICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhclRvZGF5XG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0b2RheS1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBtd2xDYWxlbmRhck5leHRWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgdGl0bGVDb2xcIiBbc2l6ZV09XCIxMlwiIFtzaXplU21dPVwiNVwiIFtwdWxsU21dPVwiN1wiIFtzaXplTGddPVwiOFwiIFtwdWxsTGddPVwiNFwiPlxuICAgICAgPGgyPnt7IHZpZXdEYXRlIHwgY2FsZW5kYXJEYXRlOiB2aWV3ICsgJ1ZpZXdUaXRsZScgOiBsb2NhbGUgfX08L2gyPlxuICAgICAgQGlmICh0aXRsZU5vdGVzKSB7XG4gICAgICAgIDxwPnt7IHRpdGxlTm90ZXMgfX08L3A+XG4gICAgICB9XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDwhLS0gVEVNUExBVEVTICh0b3VjaCBvbmx5IHdoYXQncyBuZWNlc3NhcnkgYW5kIGxlYXZlIGV2ZXJ5dGhpbmcgZWxzZSBhcyBpdCBpcykgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjZXZlbnRUaXRsZVRlbXBsYXRlIGxldC1ldmVudD1cImV2ZW50XCIgbGV0LXZpZXc9XCJ2aWV3XCI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50LXRpdGxlXCJcbiAgICAgIFtjbGFzcy5ub1dyYXBdPVwiZXZlbnQuYWxsRGF5XCJcbiAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInt9IHwgY2FsZW5kYXJBMTF5OiAnaGlkZUV2ZW50VGl0bGUnXCJcbiAgICA+XG4gICAgICB7eyBldmVudC50aXRsZSB8IGNhbGVuZGFyRXZlbnRUaXRsZTogdmlldyA6IGV2ZW50IH19XG4gICAgICBAaWYgKGV2ZW50LnRhcmdldCkge1xuICAgICAgICA8cD57eyBldmVudC50YXJnZXQgfX08L3A+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChldmVudC5sb2NhdGlvbikge1xuICAgICAgICAgIDxwPnt7IGV2ZW50LmxvY2F0aW9uIH19PC9wPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKCFldmVudC5hbGxEYXkpIHtcbiAgICAgICAgPHA+e3sgZ2V0UHJldmlld0Rlc2NyaXB0aW9uKGV2ZW50LmRlc2NyaXB0aW9uKSB9fTwvcD5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZVxuICAgICNldmVudFRlbXBsYXRlXG4gICAgbGV0LXdlZWtFdmVudD1cIndlZWtFdmVudFwiXG4gICAgbGV0LXRvb2x0aXBQbGFjZW1lbnQ9XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICBsZXQtZXZlbnRDbGlja2VkPVwiZXZlbnRDbGlja2VkXCJcbiAgICBsZXQtdG9vbHRpcFRlbXBsYXRlPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICBsZXQtdG9vbHRpcEFwcGVuZFRvQm9keT1cInRvb2x0aXBBcHBlbmRUb0JvZHlcIlxuICAgIGxldC10b29sdGlwRGlzYWJsZWQ9XCJ0b29sdGlwRGlzYWJsZWRcIlxuICAgIGxldC10b29sdGlwRGVsYXk9XCJ0b29sdGlwRGVsYXlcIlxuICAgIGxldC1jb2x1bW49XCJjb2x1bW5cIlxuICAgIGxldC1kYXlzSW5XZWVrPVwiZGF5c0luV2Vla1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhbC1ldmVudFwiXG4gICAgICBbY2xhc3MuZXh0ZXJuYWxdPVwid2Vla0V2ZW50LmV2ZW50LmV4dGVybmFsXCJcbiAgICAgIFtjbGFzcy5hbGxEYXldPVwid2Vla0V2ZW50LmV2ZW50LmFsbERheVwiXG4gICAgICBbY2xhc3MubmVlZHNBY3Rpb25dPVwiQXR0ZW5kYW5jZS5ORUVEU19BQ1RJT04gPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy5kZWNsaW5lZF09XCJBdHRlbmRhbmNlLkRFQ0xJTkVEID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbY2xhc3MudGVudGF0aXZlXT1cIkF0dGVuZGFuY2UuVEVOVEFUSVZFID09PSB3ZWVrRXZlbnQuZXZlbnQuYXR0ZW5kYW5jZVwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwid2Vla0V2ZW50LmV2ZW50LmNvbG9yPy5wcmltYXJ5XCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRBbHRlcm5hdGVDb2xvcih3ZWVrRXZlbnQuZXZlbnQuY29sb3I/LnByaW1hcnksIGRhcmtNb2RlID8gODAgOiAtNDApXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvcj8ucHJpbWFyeSwgZGFya01vZGUgPyA2MCA6IDgwLCAwLjIpXCJcbiAgICAgIFttd2xDYWxlbmRhclRvb2x0aXBdPVwiIXRvb2x0aXBEaXNhYmxlZCAmJiAhaXNNb2JpbGUoKSA/IGdldFRvb2x0aXBDb250ZW50KHdlZWtFdmVudC5ldmVudCkgOiAnJ1wiXG4gICAgICBbdG9vbHRpcFBsYWNlbWVudF09XCJ0b29sdGlwUGxhY2VtZW50XCJcbiAgICAgIFt0b29sdGlwRXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgW3Rvb2x0aXBUZW1wbGF0ZV09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgW3Rvb2x0aXBBcHBlbmRUb0JvZHldPVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgICBbdG9vbHRpcERlbGF5XT1cInRvb2x0aXBEZWxheVwiXG4gICAgICAobXdsQ2xpY2spPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIChtd2xLZXlkb3duRW50ZXIpPVwiZXZlbnRDbGlja2VkLmVtaXQoeyBzb3VyY2VFdmVudDogJGV2ZW50IH0pXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgeyBldmVudDogd2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnQsIGxvY2FsZTogbG9jYWxlIH0gfCBjYWxlbmRhckExMXk6ICdldmVudERlc2NyaXB0aW9uJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LWFjdGlvbnMgW2V2ZW50XT1cIndlZWtFdmVudC50ZW1wRXZlbnQgfHwgd2Vla0V2ZW50LmV2ZW50XCIgLz5cbiAgICAgICZuZ3NwO1xuICAgICAgPG13bC1jYWxlbmRhci1ldmVudC10aXRsZVxuICAgICAgICBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIlxuICAgICAgICBbY3VzdG9tVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgW3ZpZXddPVwiZGF5c0luV2VlayA9PT0gMSA/ICdkYXknIDogJ3dlZWsnXCJcbiAgICAgID5cbiAgICAgIDwvbXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlPlxuICAgICAgQGlmICghd2Vla0V2ZW50LmV2ZW50LmFsbERheSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRHYWRnZXRzXCI+XG4gICAgICAgICAgQGZvciAoaWNvbiBvZiB3ZWVrRXZlbnQuZXZlbnQuaWNvbnM7IHRyYWNrIGljb24pIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJpY29uLm5hbWVcIiBbdGl0bGVdPVwiaWNvbi50aXRsZVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGF2YXRhciBvZiB3ZWVrRXZlbnQuZXZlbnQuYXZhdGFyczsgdHJhY2sgYXZhdGFyKSB7XG4gICAgICAgICAgICA8aWRlYS11c2VyLWF2YXRhciBzaXplPVwibWluaVwiIFtzcmNdPVwiYXZhdGFyLnVybFwiIFtuYW1lXT1cImF2YXRhci50aXRsZVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2hvdXJTZWdtZW50VGVtcGxhdGVcbiAgICBsZXQtc2VnbWVudD1cInNlZ21lbnRcIlxuICAgIGxldC1sb2NhbGU9XCJsb2NhbGVcIlxuICAgIGxldC1zZWdtZW50SGVpZ2h0PVwic2VnbWVudEhlaWdodFwiXG4gICAgbGV0LWlzVGltZUxhYmVsPVwiaXNUaW1lTGFiZWxcIlxuICA+XG4gICAgPGRpdlxuICAgICAgI3NlZ21lbnRFbGVtZW50XG4gICAgICBjbGFzcz1cImNhbC1ob3VyLXNlZ21lbnRcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzZWdtZW50SGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5jYWwtaG91ci1zdGFydF09XCJzZWdtZW50LmlzU3RhcnRcIlxuICAgICAgW2NsYXNzLmNhbC1hZnRlci1ob3VyLXN0YXJ0XT1cIiFzZWdtZW50LmlzU3RhcnRcIlxuICAgICAgW25nQ2xhc3NdPVwic2VnbWVudC5jc3NDbGFzc1wiXG4gICAgICAobW91c2Vkb3duKT1cImFsbG93RHJhZ1RvQ3JlYXRlID8gc3RhcnREcmFnVG9DcmVhdGUoJGV2ZW50LCBzZWdtZW50LmRhdGUsIHNlZ21lbnRFbGVtZW50KSA6IG51bGxcIlxuICAgICAgKHRvdWNoc3RhcnQpPVwiYWxsb3dEcmFnVG9DcmVhdGUgPyBzdGFydERyYWdUb0NyZWF0ZSgkZXZlbnQsIHNlZ21lbnQuZGF0ZSwgc2VnbWVudEVsZW1lbnQpIDogbnVsbFwiXG4gICAgPlxuICAgICAgQGlmIChpc1RpbWVMYWJlbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsLXRpbWVcIj5cbiAgICAgICAgICB7eyBzZWdtZW50LmRhdGUgfCBjYWxlbmRhckRhdGU6ICd3ZWVrVmlld0hvdXInIDogbG9jYWxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8IS0tIFZJRVdTIC0tPlxuICA8ZGl2PlxuICAgIEBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgIEBjYXNlIChDYWxlbmRhclZpZXcuTW9udGgpIHtcbiAgICAgICAgPG13bC1jYWxlbmRhci1tb250aC12aWV3XG4gICAgICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgICAgW2FjdGl2ZURheUlzT3Blbl09XCJhY3RpdmVEYXlJc09wZW5cIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICBbZXhjbHVkZURheXNdPVwiZXhjbHVkZURheXNcIlxuICAgICAgICAgIFt3ZWVrU3RhcnRzT25dPVwid2Vla1N0YXJ0c09uXCJcbiAgICAgICAgICBbZXZlbnRUaXRsZVRlbXBsYXRlXT1cImV2ZW50VGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZGF5Q2xpY2tlZCk9XCJjaGFuZ2VEYXkoJGV2ZW50LmRheSlcIlxuICAgICAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZU1vbnRoVmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L213bC1jYWxlbmRhci1tb250aC12aWV3PlxuICAgICAgfVxuICAgICAgQGNhc2UgKENhbGVuZGFyVmlldy5XZWVrKSB7XG4gICAgICAgIDxtd2wtY2FsZW5kYXItd2Vlay12aWV3XG4gICAgICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgW2hvdXJTZWdtZW50VGVtcGxhdGVdPVwiaG91clNlZ21lbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZGF5SGVhZGVyQ2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF5LmRhdGUpID8gc2VsZWN0RGF5LmVtaXQoJGV2ZW50LmRheS5kYXRlKSA6IG51bGxcIlxuICAgICAgICAgIChob3VyU2VnbWVudENsaWNrZWQpPVwiZGF0ZUlzVmFsaWQoJGV2ZW50LmRhdGUpID8gc2VsZWN0U2xvdC5lbWl0KCRldmVudC5kYXRlKSA6IG51bGxcIlxuICAgICAgICAgIChiZWZvcmVWaWV3UmVuZGVyKT1cImJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9td2wtY2FsZW5kYXItd2Vlay12aWV3PlxuICAgICAgfVxuICAgICAgQGNhc2UgKENhbGVuZGFyVmlldy5EYXkpIHtcbiAgICAgICAgPG13bC1jYWxlbmRhci1kYXktdmlld1xuICAgICAgICAgIFt2aWV3RGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICAgW2V2ZW50c109XCJldmVudHNcIlxuICAgICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICBbZGF5U3RhcnRIb3VyXT1cImRheVN0YXJ0SG91clwiXG4gICAgICAgICAgW2RheUVuZEhvdXJdPVwiZGF5RW5kSG91clwiXG4gICAgICAgICAgW2hvdXJTZWdtZW50c109XCJob3VyU2VnbWVudHNcIlxuICAgICAgICAgIFtldmVudFRlbXBsYXRlXT1cImV2ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtob3VyU2VnbWVudFRlbXBsYXRlXT1cImhvdXJTZWdtZW50VGVtcGxhdGVcIlxuICAgICAgICAgIChldmVudENsaWNrZWQpPVwic2VsZWN0RXZlbnQuZW1pdCgkZXZlbnQuZXZlbnQpXCJcbiAgICAgICAgICAoZXZlbnRUaW1lc0NoYW5nZWQpPVwiZXZlbnRUaW1lc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L213bC1jYWxlbmRhci1kYXktdmlldz5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hZ2VuZGEvc3JjL2FnZW5kYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixpQkFBaUIsRUFDakIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFJTCxZQUFZLEVBRWIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEYsYUFBYTtBQUNiLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBUTdELE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFPVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxlQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUNwQzs7V0FFRztRQUNNLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQ3BDOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3pCOztXQUVHO1FBQ00saUJBQVksR0FBRyxDQUFDLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQzs7V0FFRztRQUNNLFNBQUksR0FBaUIsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNoRDs7V0FFRztRQUNNLGlCQUFZLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xGOztXQUVHO1FBQ00sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUs1Qjs7V0FFRztRQUNNLHFCQUFnQixHQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDakY7OztXQUdHO1FBQ00sc0JBQWlCLEdBQXdCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztRQUsvRTs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUN4RDs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQy9DOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEQ7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDM0Q7O1dBRUc7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDeEQ7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoRDs7V0FFRztRQUNPLHFDQUFnQyxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ25HOztXQUVHO1FBQ08saUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVBQXNDLENBQUM7UUFFaEcsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIsZUFBVSxHQUFHLGVBQWUsQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN0QixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVU5QixhQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQTRKdEU7SUExSkMsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQixDQUFDLEtBQXlDO1FBQzdELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCx5QkFBeUIsQ0FBQyxLQUF3QztRQUNoRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUFFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO2dCQUN6RSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVMsRUFBRSxjQUF3QjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWtCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBYTtRQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBeUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztZQUFFLE9BQU87UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3JHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDOztZQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBa0M7UUFDM0UsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdkIsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLE9BQWdCO1FBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbkQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWtCO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxLQUFLLENBQUMsTUFBTTtZQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxLQUFLLENBQUMsUUFBUTtZQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQscUJBQXFCLENBQUMsV0FBbUI7UUFDdkMsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFZLEVBQUUsV0FBaUIsRUFBRSxjQUEyQjtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUUzRCxNQUFNLGtCQUFrQixHQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN6RixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFbkQsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0QsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFaEYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxhQUFvQixFQUFRLEVBQUU7WUFDbkQsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FDeEIsYUFBYSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFFLGFBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxhQUE0QixDQUFDO1lBRWhILE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFFL0csSUFBSSxNQUFZLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssbUJBQW1CLENBQUMsYUFBYTtnQkFBRSxNQUFNLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQzs7Z0JBQzNHLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV0RSxJQUFJLE1BQU0sR0FBRyxXQUFXLElBQUksTUFBTSxHQUFHLFNBQVM7Z0JBQUUsa0JBQWtCLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNoRixXQUFXLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxHQUFTLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsYUFBYTtnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDMUQsa0JBQWtCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzVGLFdBQVcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxHQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO2lCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO2lCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUNPLHlDQUF5QyxDQUFDLGFBQTBCO1FBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEQsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxvQkFBb0IsR0FBRyxFQUFFLEdBQUcsSUFBSTtZQUN4RixRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztRQUMvRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQW5RVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw0dUJDOUJoQywrclJBNk9BOzsyRkQvTWEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGFBQWEsbUJBQ04sdUJBQXVCLENBQUMsTUFBTTs4QkFZdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUlJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSUcsU0FBUztzQkFBbEIsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQUlHLGdDQUFnQztzQkFBekMsTUFBTTtnQkFJRyw0QkFBNEI7c0JBQXJDLE1BQU07O0FBdU5UOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN6Qiw4REFBYSxDQUFBO0lBQ2IscUVBQWdCLENBQUE7SUFDaEIsK0RBQVMsQ0FBQTtJQUNULDZEQUFRLENBQUE7QUFDVixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0IscUVBQVksQ0FBQTtJQUNaLCtFQUFpQixDQUFBO0lBQ2pCLDZEQUFRLENBQUE7QUFDVixDQUFDLEVBSlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQUk5QjtBQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBYyxFQUFFLFNBQWlCLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNqSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxTQUFpQixFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENhbGVuZGFyRXZlbnQsXG4gIENhbGVuZGFyRXZlbnRUaW1lc0NoYW5nZWRFdmVudCxcbiAgQ2FsZW5kYXJNb250aFZpZXdCZWZvcmVSZW5kZXJFdmVudCxcbiAgQ2FsZW5kYXJWaWV3LFxuICBDYWxlbmRhcldlZWtWaWV3QmVmb3JlUmVuZGVyRXZlbnRcbn0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG5pbXBvcnQgeyBpc0Z1dHVyZSwgaXNUb2RheSwgaXNTYW1lRGF5LCBlbmRPZldlZWssIGFkZERheXMsIGFkZE1pbnV0ZXMgfSBmcm9tICdkYXRlLWZucyc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgQ29sb3JQYXJzZSBmcm9tICdjb2xvci1wYXJzZSc7XG5pbXBvcnQgeyBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtYWdlbmRhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnYWdlbmRhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2FnZW5kYS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFBZ2VuZGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9wbGF0Zm9ybSA9IGluamVjdChQbGF0Zm9ybSk7XG4gIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgZXZlbnRzOiBBZ2VuZGFFdmVudFtdID0gW107XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBkYXkgaW5kZXhlcyAoMCA9IHN1bmRheSwgMSA9IG1vbmRheSwgZXRjLikgdGhhdCB3aWxsIGJlIGhpZGRlbiBvbiB0aGUgdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVEYXlzOiBudW1iZXJbXSA9IFtdO1xuICAvKipcbiAgICogVGhlIGRheSBzdGFydCBob3VycyBpbiAyNCBob3VyIHRpbWUuIE11c3QgYmUgMC0yM1xuICAgKi9cbiAgQElucHV0KCkgZGF5U3RhcnRIb3VyID0gMDtcbiAgLyoqXG4gICAqIFRoZSBkYXkgc3RhcnQgaG91cnMgaW4gMjQgaG91ciB0aW1lLiBNdXN0IGJlIDAtMjNcbiAgICovXG4gIEBJbnB1dCgpIGRheUVuZEhvdXIgPSAyMztcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2VnbWVudHMgaW4gYW4gaG91ci4gTXVzdCBkaXZpZGUgZXF1YWxseSBpbnRvIDYwLlxuICAgKi9cbiAgQElucHV0KCkgaG91clNlZ21lbnRzID0gMjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gb3BlbiB0aGUgY3VycmVudCBkYXkncyBkZXRhaWxzIHJpZ2h0IGF3YXkgaW4gbW9udGggdmlldy5cbiAgICovXG4gIEBJbnB1dCgpIGFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIHZpZXcgbW9kZSBmb3IgdGhlIGFnZW5kYS5cbiAgICovXG4gIEBJbnB1dCgpIHZpZXc6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgdmlldyBtb2RlIGZvciB0aGUgYWdlbmRhLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dlZFZpZXdzID0gW0NhbGVuZGFyVmlldy5EYXksIENhbGVuZGFyVmlldy5XZWVrLCBDYWxlbmRhclZpZXcuTW9udGhdO1xuICAvKipcbiAgICogV2hldGhlciB0byBibG9jayBhbnkgZGF5L3Nsb3QgaW4gdGhlIHBhc3QuXG4gICAqL1xuICBASW5wdXQoKSBvbmx5RnV0dXJlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTb21lIG5vdGVzIHRvIHNob3cgdW5kZXJuZWF0aCB0aGUgY2FsZW5kYXIncyBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZU5vdGVzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgZm9yIG5ldyBldmVudHMgY3JlYXRlZCBieSBkcmFnJmRyb3AuXG4gICAqL1xuICBASW5wdXQoKSBuZXdFdmVudFRlbXBsYXRlOiBBZ2VuZGFFdmVudCA9IHsgdGl0bGU6ICdOZXcnLCBzdGFydDogbnVsbCwgbWV0YToge30gfTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgKGFuZCBob3cpIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBldmVudHMgYnkgZHJhZyZkcm9wLlxuICAgKiBJZiBlbmFibGVkLCBvbiBtb2JpbGUgaXQgcmVxdWlyZXMgdGhlIGBwYXJlbnRDb250ZW50YCB0byBiZSBzZXQgZm9yIGEgY29ycmVjdCBleGVjdXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd0RyYWdUb0NyZWF0ZTogRHJhZ1RvQ3JlYXRlT3B0aW9ucyA9IERyYWdUb0NyZWF0ZU9wdGlvbnMuRElTQUJMRUQ7XG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IGlvbi1jb250ZW50LCBpbiBjYXNlIHdlIHdhbnQgdG8gY29udHJvbCBpdHMgc2Nyb2xsYWJpbGl0eSBmb3IgZHJhZyZkcm9wIGZlYXR1cmVzLlxuICAgKi9cbiAgQElucHV0KCkgcGFyZW50Q29udGVudDogSW9uQ29udGVudDtcbiAgLyoqXG4gICAqIFRyaWdnZXIgd2hlbiBhbiBldmVudCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSBkYXkgaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0RGF5ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciB3aGVuIGEgdGltZSBzbG90IGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdFNsb3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYSBuZXcgZXZlbnQgaXMgYWRkZWQgYnkgZHJhZyBhbmQgZHJvcC5cbiAgICovXG4gIEBPdXRwdXQoKSBuZXdFdmVudEJ5RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gYW4gZXZlbnQgY2hhbmdlZCBkYXRlIChkcmFnJmRyb3Agb3IgcmVzaXplKS5cbiAgICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbmRhRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBUcmlnZ2VyIHdoZW4gdGhlIHZpZXcgZGF0ZSBvZiByZWZlcmVuY2UgY2hhbmdlZCAoYmVjYXVzZSB3ZSBtb3ZlZCBpbnNpZGUgdGhlIGNhbGVuZGFyKS5cbiAgICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VEYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICAvKipcbiAgICogVHJpZ2dlciBiZWZvcmUgdGhlIHJlbmRlcmluZyBvZiB0aGUgd2VlayBvciBkYXkgdmlldy5cbiAgICovXG4gIEBPdXRwdXQoKSBiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJXZWVrVmlld0JlZm9yZVJlbmRlckV2ZW50PigpO1xuICAvKipcbiAgICogVHJpZ2dlciBiZWZvcmUgdGhlIHJlbmRlcmluZyBvZiB0aGUgbW9udGggdmlldy5cbiAgICovXG4gIEBPdXRwdXQoKSBiZWZvcmVNb250aFZpZXdSZW5kZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhck1vbnRoVmlld0JlZm9yZVJlbmRlckV2ZW50PigpO1xuXG4gIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcbiAgQXR0ZW5kYW5jZSA9IEV2ZW50QXR0ZW5kYW5jZTtcbiAgdmlld0RhdGUgPSBuZXcgRGF0ZSgpO1xuICByZWZyZXNoID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgLyoqXG4gICAqIEBoaWRlXG4gICAqL1xuICBsb2NhbGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBoaWRlXG4gICAqL1xuICB3ZWVrU3RhcnRzT246IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbiAgZGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKTtcbiAgICAvLyBpbiBjYXNlIG9mIEl0YWxpYW4gbG9jYWxlIHRoZSBzdGFydGluZyBkYXkgZm9yIHRoZSB3ZWVrIGlzIG1vbmRheSAoMSksIG90aGVyd2lzZSBzdW5kYXkgKDApXG4gICAgdGhpcy53ZWVrU3RhcnRzT24gPSB0aGlzLmxvY2FsZSA9PT0gJ2l0JyA/IDEgOiAwO1xuICB9XG4gIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wbGF0Zm9ybS5pcygnbW9iaWxlJyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHNvbWUgY2hlY2tzIGJlZm9yZSB0aGUgbW9udGggdmlldyBpcyByZW5kZXJlZCAoZS5nLiBkaXNhYmxlIGludmFsaWQgZGF5cykuXG4gICAqL1xuICBiZWZvcmVNb250aFZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyTW9udGhWaWV3QmVmb3JlUmVuZGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJlZm9yZU1vbnRoVmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBib2R5IH0gPSBldmVudDtcbiAgICBib2R5LmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChkYXkuZGF0ZSkpIGRheS5jc3NDbGFzcyA9ICdjYWwtZGlzYWJsZWQnO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSdW4gc29tZSBjaGVja3MgYmVmb3JlIHRoZSB3ZWVrL2RheSB2aWV3IGlzIHJlbmRlcmVkIChlLmcuIGRpc2FibGUgaW52YWxpZCBkYXlzKS5cbiAgICovXG4gIGJlZm9yZVdlZWtPckRheVZpZXdSZW5kZXIoZXZlbnQ6IENhbGVuZGFyV2Vla1ZpZXdCZWZvcmVSZW5kZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgY29uc3QgeyBoZWFkZXIsIGhvdXJDb2x1bW5zIH0gPSBldmVudDtcbiAgICBoZWFkZXIuZm9yRWFjaChkYXkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVJc1ZhbGlkKGRheS5kYXRlKSkgZGF5LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgfSk7XG4gICAgaG91ckNvbHVtbnMuZm9yRWFjaChob3VyQ29sID0+IHtcbiAgICAgIGhvdXJDb2wuaG91cnMuZm9yRWFjaChob3VyID0+IHtcbiAgICAgICAgaG91ci5zZWdtZW50cy5mb3JFYWNoKHNlZ21lbnQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5kYXRlSXNWYWxpZChzZWdtZW50LmRhdGUpKSBzZWdtZW50LmNzc0NsYXNzID0gJ2NhbC1kaXNhYmxlZCc7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBkYXRlSXNWYWxpZChkYXRlOiBhbnksIHNhbWVEYXlJc1ZhbGlkPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5vbmx5RnV0dXJlKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gaXNGdXR1cmUoZGF0ZSkgfHwgKHNhbWVEYXlJc1ZhbGlkID8gaXNUb2RheShkYXRlKSA6IGZhbHNlKTtcbiAgfVxuXG4gIHNldFZpZXcodmlldzogQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgdGhpcy52aWV3ID0gdmlldztcbiAgfVxuXG4gIHZpZXdEYXRlQ2hhbmdlZChuZXdEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB0aGlzLmFjdGl2ZURheUlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGF0ZS5lbWl0KG5ld0RhdGUpO1xuICB9XG5cbiAgY2hhbmdlRGF5KHsgZGF0ZSwgZXZlbnRzIH06IHsgZGF0ZTogRGF0ZTsgZXZlbnRzOiBBZ2VuZGFFdmVudFtdIH0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZUlzVmFsaWQoZGF0ZSwgdHJ1ZSkpIHJldHVybjtcbiAgICBpZiAoKGlzU2FtZURheSh0aGlzLnZpZXdEYXRlLCBkYXRlKSAmJiB0aGlzLmFjdGl2ZURheUlzT3BlbiA9PT0gdHJ1ZSkgfHwgIWV2ZW50cyB8fCBldmVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5hY3RpdmVEYXlJc09wZW4gPSBmYWxzZTtcbiAgICBlbHNlIHRoaXMuYWN0aXZlRGF5SXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnZpZXdEYXRlID0gZGF0ZTtcbiAgfVxuXG4gIGV2ZW50VGltZXNDaGFuZ2VkKHsgZXZlbnQsIG5ld1N0YXJ0LCBuZXdFbmQgfTogQ2FsZW5kYXJFdmVudFRpbWVzQ2hhbmdlZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RhcnQgPSBuZXdTdGFydDtcbiAgICBldmVudC5lbmQgPSBuZXdFbmQ7XG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLmV2ZW50cy5zbGljZSgpO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXRBbHRlcm5hdGVDb2xvcihjb2xvcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgb3BhY2l0eT86IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjb2xvcj8udHJpbSgpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFsdCA9IENvbG9yUGFyc2UoY29sb3IudHJpbSgpKTtcbiAgICBjb25zdCByID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1swXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1sxXSkgKyBhbW91bnQpLCAwKTtcbiAgICBjb25zdCBiID0gTWF0aC5tYXgoTWF0aC5taW4oMjU1LCBOdW1iZXIoYWx0LnZhbHVlc1syXSkgKyBhbW91bnQpLCAwKTtcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IHx8IDF9KWA7XG4gIH1cblxuICBnZXRUb29sdGlwQ29udGVudChldmVudDogQWdlbmRhRXZlbnQpOiBzdHJpbmcge1xuICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcbiAgICBsZXQgc3RyID0gZXZlbnQudGl0bGUgPyAnPGI+JyArIGV2ZW50LnRpdGxlICsgJzwvYj4nIDogJyc7XG4gICAgaWYgKGV2ZW50LnRhcmdldCkgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIGV2ZW50LnRhcmdldCk7XG4gICAgaWYgKGV2ZW50LmxvY2F0aW9uKSBzdHIgPSBzdHIuY29uY2F0KCc8YnI+JywgZXZlbnQubG9jYXRpb24pO1xuICAgIGlmIChldmVudC5kZXNjcmlwdGlvbikge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicpO1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIGV2ZW50LmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50Lmljb25zKSB7XG4gICAgICBzdHIgPSBzdHIuY29uY2F0KCc8YnI+Jyk7XG4gICAgICBldmVudC5pY29ucy5mb3JFYWNoKHggPT4gKHN0ciA9IHN0ci5jb25jYXQoJzxicj4nLCAnPGk+JywgeC50aXRsZSwgJzwvaT4nKSkpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuYXZhdGFycyAmJiBldmVudC5hdmF0YXJzLmxlbmd0aCkge1xuICAgICAgc3RyID0gc3RyLmNvbmNhdCgnPGJyPjxicj5+Jyk7XG4gICAgICBldmVudC5hdmF0YXJzLmZvckVhY2goeCA9PiAoc3RyID0gc3RyLmNvbmNhdCgnPGJyPicsIHgudGl0bGUpKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IDEwMCA/IGRlc2NyaXB0aW9uLnNsaWNlKDAsIDEwMCkuY29uY2F0KCcuLi4nKSA6IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgc3RhcnREcmFnVG9DcmVhdGUoZXZlbnQ6IEV2ZW50LCBzZWdtZW50RGF0ZTogRGF0ZSwgc2VnbWVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFsbG93RHJhZ1RvQ3JlYXRlKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5wYXJlbnRDb250ZW50KSB0aGlzLnBhcmVudENvbnRlbnQuc2Nyb2xsWSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZXZlbnRCeURyYWdBbmREcm9wOiBBZ2VuZGFFdmVudCA9IHsgLi4udGhpcy5uZXdFdmVudFRlbXBsYXRlLCBzdGFydDogc2VnbWVudERhdGUgfTtcbiAgICB0aGlzLmV2ZW50cyA9IFsuLi50aGlzLmV2ZW50cywgZXZlbnRCeURyYWdBbmREcm9wXTtcblxuICAgIGNvbnN0IHNlZ21lbnRQb3NpdGlvbiA9IHNlZ21lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVuZE9mVmlldyA9IGVuZE9mV2Vlayh0aGlzLnZpZXdEYXRlLCB7IHdlZWtTdGFydHNPbjogdGhpcy53ZWVrU3RhcnRzT24gfSk7XG5cbiAgICBjb25zdCB3aGlsZURyYWdnaW5nID0gKGRyYWdnaW5nRXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IGNsaWVudFksIGNsaWVudFggfSA9XG4gICAgICAgIGRyYWdnaW5nRXZlbnQudHlwZSA9PT0gJ3RvdWNobW92ZScgPyAoZHJhZ2dpbmdFdmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzWzBdIDogKGRyYWdnaW5nRXZlbnQgYXMgTW91c2VFdmVudCk7XG5cbiAgICAgIGNvbnN0IG1pbnV0ZXNEaWZmID0gY2VpbFRvTmVhcmVzdChjbGllbnRZIC0gc2VnbWVudFBvc2l0aW9uLnRvcCwgMzApO1xuICAgICAgY29uc3QgZGF5c0RpZmYgPSBmbG9vclRvTmVhcmVzdChjbGllbnRYIC0gc2VnbWVudFBvc2l0aW9uLmxlZnQsIHNlZ21lbnRQb3NpdGlvbi53aWR0aCkgLyBzZWdtZW50UG9zaXRpb24ud2lkdGg7XG5cbiAgICAgIGxldCBuZXdFbmQ6IERhdGU7XG4gICAgICBpZiAodGhpcy5hbGxvd0RyYWdUb0NyZWF0ZSA9PT0gRHJhZ1RvQ3JlYXRlT3B0aW9ucy5PTkxZX1NBTUVfREFZKSBuZXdFbmQgPSBhZGRNaW51dGVzKHNlZ21lbnREYXRlLCBtaW51dGVzRGlmZik7XG4gICAgICBlbHNlIG5ld0VuZCA9IGFkZERheXMoYWRkTWludXRlcyhzZWdtZW50RGF0ZSwgbWludXRlc0RpZmYpLCBkYXlzRGlmZik7XG5cbiAgICAgIGlmIChuZXdFbmQgPiBzZWdtZW50RGF0ZSAmJiBuZXdFbmQgPCBlbmRPZlZpZXcpIGV2ZW50QnlEcmFnQW5kRHJvcC5lbmQgPSBuZXdFbmQ7XG4gICAgICByZWZyZXNoVmlldygpO1xuICAgIH07XG5cbiAgICBjb25zdCBlbmRPZkRyYWcgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5wYXJlbnRDb250ZW50KSB0aGlzLnBhcmVudENvbnRlbnQuc2Nyb2xsWSA9IHRydWU7XG4gICAgICBldmVudEJ5RHJhZ0FuZERyb3AuZW5kID0gdGhpcy5nZXRGaXhlZEVuZERhdGVXaXRoTWluaW11bVNlZ21lbnREdXJhdGlvbihldmVudEJ5RHJhZ0FuZERyb3ApO1xuICAgICAgcmVmcmVzaFZpZXcoKTtcbiAgICAgIHRoaXMubmV3RXZlbnRCeURyYWcuZW1pdChldmVudEJ5RHJhZ0FuZERyb3ApO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoVmlldyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuZXZlbnRzID0gWy4uLnRoaXMuZXZlbnRzXTtcbiAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ3RvdWNobW92ZScpXG4gICAgICAgIC5waXBlKGZpbmFsaXplKGVuZE9mRHJhZyksIHRha2VVbnRpbChmcm9tRXZlbnQoZG9jdW1lbnQsICd0b3VjaGVuZCcpKSlcbiAgICAgICAgLnN1YnNjcmliZSh3aGlsZURyYWdnaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoZmluYWxpemUoZW5kT2ZEcmFnKSwgdGFrZVVudGlsKGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKSkpXG4gICAgICAgIC5zdWJzY3JpYmUod2hpbGVEcmFnZ2luZyk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZ2V0Rml4ZWRFbmREYXRlV2l0aE1pbmltdW1TZWdtZW50RHVyYXRpb24oYWdlbmRhQm9va2luZzogQWdlbmRhRXZlbnQpOiBEYXRlIHtcbiAgICBjb25zdCBmaXhlZEVuZCA9IG5ldyBEYXRlKGFnZW5kYUJvb2tpbmcuZW5kIHx8IGFnZW5kYUJvb2tpbmcuc3RhcnQpO1xuICAgIGNvbnN0IHNlZ21lbnRTaXplSW5NaW51dGVzID0gNjAgLyB0aGlzLmhvdXJTZWdtZW50cztcbiAgICBpZiAoZml4ZWRFbmQuZ2V0VGltZSgpIDw9IGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0VGltZSgpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMgKiA2MCAqIDEwMDApXG4gICAgICBmaXhlZEVuZC5zZXRNaW51dGVzKGFnZW5kYUJvb2tpbmcuc3RhcnQuZ2V0TWludXRlcygpICsgc2VnbWVudFNpemVJbk1pbnV0ZXMpO1xuICAgIHJldHVybiBmaXhlZEVuZDtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmljaGVyIHZlcnNpb24gb2YgdGhlIGNsYXNzaWMgQ2FsZW5kYXJFdmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VuZGFFdmVudCBleHRlbmRzIENhbGVuZGFyRXZlbnQge1xuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBmb3IgdGhlIGV2ZW50LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tZXIvc3Rha2Vob2xkZXIvdGFyZ2V0IG9mIHRoZSBldmVudC5cbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICBsb2NhdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBVUkxzIG9mIGltYWdlcyB0byBzaG93IGFzIHNtYWxsIGF2YXRhcnMuXG4gICAqL1xuICBhdmF0YXJzPzogeyBpZDogc3RyaW5nOyB1cmw6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9W107XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaW9uLWljb25zIHRvIHNob3cuXG4gICAqL1xuICBpY29ucz86IHsgbmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1bXTtcbiAgLyoqXG4gICAqIFRoZSBjb2xvcnMgb2YgdGhlIGV2ZW50IGRpc3BsYXllZC5cbiAgICovXG4gIGNvbG9yPzogeyBwcmltYXJ5OiBzdHJpbmc7IHNlY29uZGFyeT86IHN0cmluZyB9IHwgYW55O1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZXZlbnQgaXMgZXh0ZXJuYWw7IGV4dGVybmFsIGV2ZW50cyBhcmUgbGVzcyBpbXBvcnRhbnQgVUktd2lzZS5cbiAgICovXG4gIGV4dGVybmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhdHRlbmRhbmNlIHN0YXR1cyB0byB0aGlzIGV2ZW50LCBpZiBhbnkuXG4gICAqL1xuICBhdHRlbmRhbmNlPzogRXZlbnRBdHRlbmRhbmNlO1xuICAvKipcbiAgICogQSBzdGFuZGFyZCBhbmQgdW5pcXVlIGlkIGZvciB0aGUgZXZlbnQsIHZhbGlkIGFjcm9zcyBtdWx0aXBsZSBzb3VyY2VzLlxuICAgKi9cbiAgaUNhbFVJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb3NzaWJsZSBhdHRlbmRhbmNlIHN0YXR1c2VzIGZvciB0aGUgZXZlbnQuXG4gKi9cbmV4cG9ydCBlbnVtIEV2ZW50QXR0ZW5kYW5jZSB7XG4gIERFQ0xJTkVEID0gLTEsXG4gIE5FRURTX0FDVElPTiA9IDAsXG4gIFRFTlRBVElWRSxcbiAgQUNDRVBURURcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB0byBhbGxvdyAob3Igbm90KSBkcmFnJmRyb3AgdG8gY3JlYXRlIGEgbmV3IGV2ZW50LlxuICovXG5leHBvcnQgZW51bSBEcmFnVG9DcmVhdGVPcHRpb25zIHtcbiAgRElTQUJMRUQgPSAwLFxuICBPTkxZX1NBTUVfREFZID0gMSxcbiAgRlJFRSA9IDJcbn1cblxuY29uc3QgZmxvb3JUb05lYXJlc3QgPSAoYW1vdW50OiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyID0+IE1hdGguZmxvb3IoYW1vdW50IC8gcHJlY2lzaW9uKSAqIHByZWNpc2lvbjtcbmNvbnN0IGNlaWxUb05lYXJlc3QgPSAoYW1vdW50OiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyID0+IE1hdGguY2VpbChhbW91bnQgLyBwcmVjaXNpb24pICogcHJlY2lzaW9uO1xuIiwiPGRpdiBjbGFzcz1cImFnZW5kYVwiPlxuICA8IS0tIFRPT0xCQVIgLS0+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxpb24tY29sXG4gICAgICBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlciBpb24tdGV4dC1yaWdodFwiXG4gICAgICBbc2l6ZV09XCI1XCJcbiAgICAgIFtzaXplU21dPVwiM1wiXG4gICAgICBbcHVzaFNtXT1cIjVcIlxuICAgICAgW3NpemVMZ109XCIyXCJcbiAgICAgIFtwdXNoTGddPVwiOFwiXG4gICAgPlxuICAgICAgQGlmIChhbGxvd2VkVmlld3MubGVuZ3RoID4gMSkge1xuICAgICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY2xhc3M9XCJjYWxlbmRhclZpZXdTZWxlY3RvclwiPlxuICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2aWV3XCJcbiAgICAgICAgICAgIChpb25DaGFuZ2UpPVwiJGV2ZW50Py5kZXRhaWwgPyBzZXRWaWV3KCRldmVudC5kZXRhaWwudmFsdWUpIDogbnVsbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAodmlldyBvZiBhbGxvd2VkVmlld3M7IHRyYWNrIHZpZXcpIHtcbiAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJ2aWV3XCI+XG4gICAgICAgICAgICAgICAge3sgJ0lERUFfQUdFTkRBLicgKyB2aWV3IHwgdXBwZXJjYXNlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgfVxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbFxuICAgICAgY2xhc3M9XCJpb24tYWxpZ24tc2VsZi1jZW50ZXIgaW9uLXRleHQtcmlnaHRcIlxuICAgICAgW3NpemVdPVwiN1wiXG4gICAgICBbc2l6ZVNtXT1cIjRcIlxuICAgICAgW3B1c2hTbV09XCI1XCJcbiAgICAgIFtzaXplTGddPVwiMlwiXG4gICAgICBbcHVzaExnXT1cIjhcIlxuICAgID5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyUHJldmlvdXNWaWV3XG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbKHZpZXdEYXRlKV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICh2aWV3RGF0ZUNoYW5nZSk9XCJ2aWV3RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyVG9kYXlcbiAgICAgICAgWyh2aWV3RGF0ZSldPVwidmlld0RhdGVcIlxuICAgICAgICAodmlld0RhdGVDaGFuZ2UpPVwidmlld0RhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInRvZGF5LW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIG13bENhbGVuZGFyTmV4dFZpZXdcbiAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgIFsodmlld0RhdGUpXT1cInZpZXdEYXRlXCJcbiAgICAgICAgKHZpZXdEYXRlQ2hhbmdlKT1cInZpZXdEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1hbGlnbi1zZWxmLWNlbnRlciB0aXRsZUNvbFwiIFtzaXplXT1cIjEyXCIgW3NpemVTbV09XCI1XCIgW3B1bGxTbV09XCI3XCIgW3NpemVMZ109XCI4XCIgW3B1bGxMZ109XCI0XCI+XG4gICAgICA8aDI+e3sgdmlld0RhdGUgfCBjYWxlbmRhckRhdGU6IHZpZXcgKyAnVmlld1RpdGxlJyA6IGxvY2FsZSB9fTwvaDI+XG4gICAgICBAaWYgKHRpdGxlTm90ZXMpIHtcbiAgICAgICAgPHA+e3sgdGl0bGVOb3RlcyB9fTwvcD5cbiAgICAgIH1cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPCEtLSBURU1QTEFURVMgKHRvdWNoIG9ubHkgd2hhdCdzIG5lY2Vzc2FyeSBhbmQgbGVhdmUgZXZlcnl0aGluZyBlbHNlIGFzIGl0IGlzKSAtLT5cbiAgPG5nLXRlbXBsYXRlICNldmVudFRpdGxlVGVtcGxhdGUgbGV0LWV2ZW50PVwiZXZlbnRcIiBsZXQtdmlldz1cInZpZXdcIj5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjYWwtZXZlbnQtdGl0bGVcIlxuICAgICAgW2NsYXNzLm5vV3JhcF09XCJldmVudC5hbGxEYXlcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwie30gfCBjYWxlbmRhckExMXk6ICdoaWRlRXZlbnRUaXRsZSdcIlxuICAgID5cbiAgICAgIHt7IGV2ZW50LnRpdGxlIHwgY2FsZW5kYXJFdmVudFRpdGxlOiB2aWV3IDogZXZlbnQgfX1cbiAgICAgIEBpZiAoZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgIDxwPnt7IGV2ZW50LnRhcmdldCB9fTwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKGV2ZW50LmxvY2F0aW9uKSB7XG4gICAgICAgICAgPHA+e3sgZXZlbnQubG9jYXRpb24gfX08L3A+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoIWV2ZW50LmFsbERheSkge1xuICAgICAgICA8cD57eyBnZXRQcmV2aWV3RGVzY3JpcHRpb24oZXZlbnQuZGVzY3JpcHRpb24pIH19PC9wPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2V2ZW50VGVtcGxhdGVcbiAgICBsZXQtd2Vla0V2ZW50PVwid2Vla0V2ZW50XCJcbiAgICBsZXQtdG9vbHRpcFBsYWNlbWVudD1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgIGxldC1ldmVudENsaWNrZWQ9XCJldmVudENsaWNrZWRcIlxuICAgIGxldC10b29sdGlwVGVtcGxhdGU9XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgIGxldC10b29sdGlwQXBwZW5kVG9Cb2R5PVwidG9vbHRpcEFwcGVuZFRvQm9keVwiXG4gICAgbGV0LXRvb2x0aXBEaXNhYmxlZD1cInRvb2x0aXBEaXNhYmxlZFwiXG4gICAgbGV0LXRvb2x0aXBEZWxheT1cInRvb2x0aXBEZWxheVwiXG4gICAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gICAgbGV0LWRheXNJbldlZWs9XCJkYXlzSW5XZWVrXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2FsLWV2ZW50XCJcbiAgICAgIFtjbGFzcy5leHRlcm5hbF09XCJ3ZWVrRXZlbnQuZXZlbnQuZXh0ZXJuYWxcIlxuICAgICAgW2NsYXNzLmFsbERheV09XCJ3ZWVrRXZlbnQuZXZlbnQuYWxsRGF5XCJcbiAgICAgIFtjbGFzcy5uZWVkc0FjdGlvbl09XCJBdHRlbmRhbmNlLk5FRURTX0FDVElPTiA9PT0gd2Vla0V2ZW50LmV2ZW50LmF0dGVuZGFuY2VcIlxuICAgICAgW2NsYXNzLmRlY2xpbmVkXT1cIkF0dGVuZGFuY2UuREVDTElORUQgPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtjbGFzcy50ZW50YXRpdmVdPVwiQXR0ZW5kYW5jZS5URU5UQVRJVkUgPT09IHdlZWtFdmVudC5ldmVudC5hdHRlbmRhbmNlXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJ3ZWVrRXZlbnQuZXZlbnQuY29sb3I/LnByaW1hcnlcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImdldEFsdGVybmF0ZUNvbG9yKHdlZWtFdmVudC5ldmVudC5jb2xvcj8ucHJpbWFyeSwgZGFya01vZGUgPyA4MCA6IC00MClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWx0ZXJuYXRlQ29sb3Iod2Vla0V2ZW50LmV2ZW50LmNvbG9yPy5wcmltYXJ5LCBkYXJrTW9kZSA/IDYwIDogODAsIDAuMilcIlxuICAgICAgW213bENhbGVuZGFyVG9vbHRpcF09XCIhdG9vbHRpcERpc2FibGVkICYmICFpc01vYmlsZSgpID8gZ2V0VG9vbHRpcENvbnRlbnQod2Vla0V2ZW50LmV2ZW50KSA6ICcnXCJcbiAgICAgIFt0b29sdGlwUGxhY2VtZW50XT1cInRvb2x0aXBQbGFjZW1lbnRcIlxuICAgICAgW3Rvb2x0aXBFdmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICBbdG9vbHRpcFRlbXBsYXRlXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICBbdG9vbHRpcEFwcGVuZFRvQm9keV09XCJ0b29sdGlwQXBwZW5kVG9Cb2R5XCJcbiAgICAgIFt0b29sdGlwRGVsYXldPVwidG9vbHRpcERlbGF5XCJcbiAgICAgIChtd2xDbGljayk9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgKG13bEtleWRvd25FbnRlcik9XCJldmVudENsaWNrZWQuZW1pdCh7IHNvdXJjZUV2ZW50OiAkZXZlbnQgfSlcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICB7IGV2ZW50OiB3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudCwgbG9jYWxlOiBsb2NhbGUgfSB8IGNhbGVuZGFyQTExeTogJ2V2ZW50RGVzY3JpcHRpb24nXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxtd2wtY2FsZW5kYXItZXZlbnQtYWN0aW9ucyBbZXZlbnRdPVwid2Vla0V2ZW50LnRlbXBFdmVudCB8fCB3ZWVrRXZlbnQuZXZlbnRcIiAvPlxuICAgICAgJm5nc3A7XG4gICAgICA8bXdsLWNhbGVuZGFyLWV2ZW50LXRpdGxlXG4gICAgICAgIFtldmVudF09XCJ3ZWVrRXZlbnQudGVtcEV2ZW50IHx8IHdlZWtFdmVudC5ldmVudFwiXG4gICAgICAgIFtjdXN0b21UZW1wbGF0ZV09XCJldmVudFRpdGxlVGVtcGxhdGVcIlxuICAgICAgICBbdmlld109XCJkYXlzSW5XZWVrID09PSAxID8gJ2RheScgOiAnd2VlaydcIlxuICAgICAgPlxuICAgICAgPC9td2wtY2FsZW5kYXItZXZlbnQtdGl0bGU+XG4gICAgICBAaWYgKCF3ZWVrRXZlbnQuZXZlbnQuYWxsRGF5KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldmVudEdhZGdldHNcIj5cbiAgICAgICAgICBAZm9yIChpY29uIG9mIHdlZWtFdmVudC5ldmVudC5pY29uczsgdHJhY2sgaWNvbikge1xuICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImljb24ubmFtZVwiIFt0aXRsZV09XCJpY29uLnRpdGxlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYXZhdGFyIG9mIHdlZWtFdmVudC5ldmVudC5hdmF0YXJzOyB0cmFjayBhdmF0YXIpIHtcbiAgICAgICAgICAgIDxpZGVhLXVzZXItYXZhdGFyIHNpemU9XCJtaW5pXCIgW3NyY109XCJhdmF0YXIudXJsXCIgW25hbWVdPVwiYXZhdGFyLnRpdGxlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjaG91clNlZ21lbnRUZW1wbGF0ZVxuICAgIGxldC1zZWdtZW50PVwic2VnbWVudFwiXG4gICAgbGV0LWxvY2FsZT1cImxvY2FsZVwiXG4gICAgbGV0LXNlZ21lbnRIZWlnaHQ9XCJzZWdtZW50SGVpZ2h0XCJcbiAgICBsZXQtaXNUaW1lTGFiZWw9XCJpc1RpbWVMYWJlbFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAjc2VnbWVudEVsZW1lbnRcbiAgICAgIGNsYXNzPVwiY2FsLWhvdXItc2VnbWVudFwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNlZ21lbnRIZWlnaHRcIlxuICAgICAgW2NsYXNzLmNhbC1ob3VyLXN0YXJ0XT1cInNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbY2xhc3MuY2FsLWFmdGVyLWhvdXItc3RhcnRdPVwiIXNlZ21lbnQuaXNTdGFydFwiXG4gICAgICBbbmdDbGFzc109XCJzZWdtZW50LmNzc0NsYXNzXCJcbiAgICAgIChtb3VzZWRvd24pPVwiYWxsb3dEcmFnVG9DcmVhdGUgPyBzdGFydERyYWdUb0NyZWF0ZSgkZXZlbnQsIHNlZ21lbnQuZGF0ZSwgc2VnbWVudEVsZW1lbnQpIDogbnVsbFwiXG4gICAgICAodG91Y2hzdGFydCk9XCJhbGxvd0RyYWdUb0NyZWF0ZSA/IHN0YXJ0RHJhZ1RvQ3JlYXRlKCRldmVudCwgc2VnbWVudC5kYXRlLCBzZWdtZW50RWxlbWVudCkgOiBudWxsXCJcbiAgICA+XG4gICAgICBAaWYgKGlzVGltZUxhYmVsKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWwtdGltZVwiPlxuICAgICAgICAgIHt7IHNlZ21lbnQuZGF0ZSB8IGNhbGVuZGFyRGF0ZTogJ3dlZWtWaWV3SG91cicgOiBsb2NhbGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gVklFV1MgLS0+XG4gIDxkaXY+XG4gICAgQHN3aXRjaCAodmlldykge1xuICAgICAgQGNhc2UgKENhbGVuZGFyVmlldy5Nb250aCkge1xuICAgICAgICA8bXdsLWNhbGVuZGFyLW1vbnRoLXZpZXdcbiAgICAgICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgICAgICBbYWN0aXZlRGF5SXNPcGVuXT1cImFjdGl2ZURheUlzT3BlblwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtleGNsdWRlRGF5c109XCJleGNsdWRlRGF5c1wiXG4gICAgICAgICAgW3dlZWtTdGFydHNPbl09XCJ3ZWVrU3RhcnRzT25cIlxuICAgICAgICAgIFtldmVudFRpdGxlVGVtcGxhdGVdPVwiZXZlbnRUaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChkYXlDbGlja2VkKT1cImNoYW5nZURheSgkZXZlbnQuZGF5KVwiXG4gICAgICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlTW9udGhWaWV3UmVuZGVyKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbXdsLWNhbGVuZGFyLW1vbnRoLXZpZXc+XG4gICAgICB9XG4gICAgICBAY2FzZSAoQ2FsZW5kYXJWaWV3LldlZWspIHtcbiAgICAgICAgPG13bC1jYWxlbmRhci13ZWVrLXZpZXdcbiAgICAgICAgICBbdmlld0RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgIFtldmVudHNdPVwiZXZlbnRzXCJcbiAgICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgW2V4Y2x1ZGVEYXlzXT1cImV4Y2x1ZGVEYXlzXCJcbiAgICAgICAgICBbd2Vla1N0YXJ0c09uXT1cIndlZWtTdGFydHNPblwiXG4gICAgICAgICAgW2RheVN0YXJ0SG91cl09XCJkYXlTdGFydEhvdXJcIlxuICAgICAgICAgIFtkYXlFbmRIb3VyXT1cImRheUVuZEhvdXJcIlxuICAgICAgICAgIFtob3VyU2VnbWVudHNdPVwiaG91clNlZ21lbnRzXCJcbiAgICAgICAgICBbZXZlbnRUZW1wbGF0ZV09XCJldmVudFRlbXBsYXRlXCJcbiAgICAgICAgICBbaG91clNlZ21lbnRUZW1wbGF0ZV09XCJob3VyU2VnbWVudFRlbXBsYXRlXCJcbiAgICAgICAgICAoZXZlbnRDbGlja2VkKT1cInNlbGVjdEV2ZW50LmVtaXQoJGV2ZW50LmV2ZW50KVwiXG4gICAgICAgICAgKGV2ZW50VGltZXNDaGFuZ2VkKT1cImV2ZW50VGltZXNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChkYXlIZWFkZXJDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXkuZGF0ZSkgPyBzZWxlY3REYXkuZW1pdCgkZXZlbnQuZGF5LmRhdGUpIDogbnVsbFwiXG4gICAgICAgICAgKGhvdXJTZWdtZW50Q2xpY2tlZCk9XCJkYXRlSXNWYWxpZCgkZXZlbnQuZGF0ZSkgPyBzZWxlY3RTbG90LmVtaXQoJGV2ZW50LmRhdGUpIDogbnVsbFwiXG4gICAgICAgICAgKGJlZm9yZVZpZXdSZW5kZXIpPVwiYmVmb3JlV2Vla09yRGF5Vmlld1JlbmRlcigkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L213bC1jYWxlbmRhci13ZWVrLXZpZXc+XG4gICAgICB9XG4gICAgICBAY2FzZSAoQ2FsZW5kYXJWaWV3LkRheSkge1xuICAgICAgICA8bXdsLWNhbGVuZGFyLWRheS12aWV3XG4gICAgICAgICAgW3ZpZXdEYXRlXT1cInZpZXdEYXRlXCJcbiAgICAgICAgICBbZXZlbnRzXT1cImV2ZW50c1wiXG4gICAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkYXlTdGFydEhvdXJdPVwiZGF5U3RhcnRIb3VyXCJcbiAgICAgICAgICBbZGF5RW5kSG91cl09XCJkYXlFbmRIb3VyXCJcbiAgICAgICAgICBbaG91clNlZ21lbnRzXT1cImhvdXJTZWdtZW50c1wiXG4gICAgICAgICAgW2V2ZW50VGVtcGxhdGVdPVwiZXZlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgW2hvdXJTZWdtZW50VGVtcGxhdGVdPVwiaG91clNlZ21lbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgKGV2ZW50Q2xpY2tlZCk9XCJzZWxlY3RFdmVudC5lbWl0KCRldmVudC5ldmVudClcIlxuICAgICAgICAgIChldmVudFRpbWVzQ2hhbmdlZCk9XCJldmVudFRpbWVzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoaG91clNlZ21lbnRDbGlja2VkKT1cImRhdGVJc1ZhbGlkKCRldmVudC5kYXRlKSA/IHNlbGVjdFNsb3QuZW1pdCgkZXZlbnQuZGF0ZSkgOiBudWxsXCJcbiAgICAgICAgICAoYmVmb3JlVmlld1JlbmRlcik9XCJiZWZvcmVXZWVrT3JEYXlWaWV3UmVuZGVyKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbXdsLWNhbGVuZGFyLWRheS12aWV3PlxuICAgICAgfVxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -5,7 +5,8 @@ import { IonicModule } from '@ionic/angular';
5
5
  import { CalendarDateFormatter, CalendarModule, DateAdapter } from 'angular-calendar';
6
6
  import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
7
7
  import { CustomDateFormatter } from './dateFormatter.provider';
8
- import { IDEATranslationsModule, IDEAColorPickerModule, IDEACheckerModule, IDEAUserAvatarModule } from '@idea-ionic/common';
8
+ import { IDEACheckerComponent, IDEATranslationsModule, IDEAUserAvatarComponent } from '@idea-ionic/common';
9
+ import { IDEAColorPickerModule } from '@idea-ionic/uncommon';
9
10
  import { IDEAAgendaComponent } from './agenda.component';
10
11
  import { IDEACalendarComponent } from './calendar.component';
11
12
  import { IDEACalendarItemComponent } from './calendarItem.component';
@@ -14,24 +15,24 @@ import { IDEACalendarsService } from './calendars.service';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "angular-calendar";
16
17
  export class IDEAAgendaModule {
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaModule, declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent], imports: [CommonModule,
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaModule, declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent], imports: [CommonModule,
19
20
  FormsModule,
20
21
  IonicModule,
21
22
  IDEATranslationsModule,
22
23
  IDEAColorPickerModule,
23
- IDEACheckerModule,
24
- IDEAUserAvatarModule, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] }); }
25
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [CommonModule,
24
+ IDEACheckerComponent,
25
+ IDEAUserAvatarComponent, i1.CalendarModule], exports: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent] }); }
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaModule, providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService], imports: [CommonModule,
26
27
  FormsModule,
27
28
  IonicModule,
28
29
  IDEATranslationsModule,
29
30
  IDEAColorPickerModule,
30
- IDEACheckerModule,
31
- IDEAUserAvatarModule,
31
+ IDEACheckerComponent,
32
+ IDEAUserAvatarComponent,
32
33
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })] }); }
33
34
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAAgendaModule, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAAgendaModule, decorators: [{
35
36
  type: NgModule,
36
37
  args: [{
37
38
  imports: [
@@ -40,8 +41,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
40
41
  IonicModule,
41
42
  IDEATranslationsModule,
42
43
  IDEAColorPickerModule,
43
- IDEACheckerModule,
44
- IDEAUserAvatarModule,
44
+ IDEACheckerComponent,
45
+ IDEAUserAvatarComponent,
45
46
  CalendarModule.forRoot({ provide: DateAdapter, useFactory: adapterFactory })
46
47
  ],
47
48
  declarations: [IDEAAgendaComponent, IDEACalendarComponent, IDEACalendarItemComponent, IDEACalendarCreationComponent],
@@ -49,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
49
50
  providers: [{ provide: CalendarDateFormatter, useClass: CustomDateFormatter }, IDEACalendarsService]
50
51
  }]
51
52
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFpQjNELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUpaLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixhQVRqSCxZQUFZO1lBQ1osV0FBVztZQUNYLFdBQVc7WUFDWCxzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixvQkFBb0IsZ0NBSVosbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCOytHQUduRyxnQkFBZ0IsYUFGaEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxZQVhsRyxZQUFZO1lBQ1osV0FBVztZQUNYLFdBQVc7WUFDWCxzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDOzsyRkFNbkUsZ0JBQWdCO2tCQWY1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztxQkFDN0U7b0JBQ0QsWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3BILE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixDQUFDO29CQUMvRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztpQkFDckciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IENhbGVuZGFyRGF0ZUZvcm1hdHRlciwgQ2FsZW5kYXJNb2R1bGUsIERhdGVBZGFwdGVyIH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhcic7XG5pbXBvcnQgeyBhZGFwdGVyRmFjdG9yeSB9IGZyb20gJ2FuZ3VsYXItY2FsZW5kYXIvZGF0ZS1hZGFwdGVycy9kYXRlLWZucyc7XG5pbXBvcnQgeyBDdXN0b21EYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlRm9ybWF0dGVyLnByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgSURFQVRyYW5zbGF0aW9uc01vZHVsZSxcbiAgSURFQUNvbG9yUGlja2VyTW9kdWxlLFxuICBJREVBQ2hlY2tlck1vZHVsZSxcbiAgSURFQVVzZXJBdmF0YXJNb2R1bGVcbn0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUFnZW5kYUNvbXBvbmVudCB9IGZyb20gJy4vYWdlbmRhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhckl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhckNyZWF0aW9uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IElERUFDYWxlbmRhcnNTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhcnMuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0aW9uc01vZHVsZSxcbiAgICBJREVBQ29sb3JQaWNrZXJNb2R1bGUsXG4gICAgSURFQUNoZWNrZXJNb2R1bGUsXG4gICAgSURFQVVzZXJBdmF0YXJNb2R1bGUsXG4gICAgQ2FsZW5kYXJNb2R1bGUuZm9yUm9vdCh7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VGYWN0b3J5OiBhZGFwdGVyRmFjdG9yeSB9KVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtJREVBQWdlbmRhQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDb21wb25lbnQsIElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQsIElERUFDYWxlbmRhckNyZWF0aW9uQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0lERUFBZ2VuZGFDb21wb25lbnQsIElERUFDYWxlbmRhckNvbXBvbmVudCwgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnRdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENhbGVuZGFyRGF0ZUZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVGb3JtYXR0ZXIgfSwgSURFQUNhbGVuZGFyc1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIElERUFBZ2VuZGFNb2R1bGUge31cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYWdlbmRhL3NyYy9hZ2VuZGEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0csT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWlCM0QsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBSlosbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCLGFBVGpILFlBQVk7WUFDWixXQUFXO1lBQ1gsV0FBVztZQUNYLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHVCQUF1QixnQ0FJZixtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkI7K0dBR25HLGdCQUFnQixhQUZoQixDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLG9CQUFvQixDQUFDLFlBWGxHLFlBQVk7WUFDWixXQUFXO1lBQ1gsV0FBVztZQUNYLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHVCQUF1QjtZQUN2QixjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7OzJGQU1uRSxnQkFBZ0I7a0JBZjVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxXQUFXO3dCQUNYLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDO3FCQUM3RTtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQztvQkFDcEgsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsNkJBQTZCLENBQUM7b0JBQy9HLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLG9CQUFvQixDQUFDO2lCQUNyRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlRm9ybWF0dGVyLCBDYWxlbmRhck1vZHVsZSwgRGF0ZUFkYXB0ZXIgfSBmcm9tICdhbmd1bGFyLWNhbGVuZGFyJztcbmltcG9ydCB7IGFkYXB0ZXJGYWN0b3J5IH0gZnJvbSAnYW5ndWxhci1jYWxlbmRhci9kYXRlLWFkYXB0ZXJzL2RhdGUtZm5zJztcbmltcG9ydCB7IEN1c3RvbURhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGVGb3JtYXR0ZXIucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBJREVBQ2hlY2tlckNvbXBvbmVudCwgSURFQVRyYW5zbGF0aW9uc01vZHVsZSwgSURFQVVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuaW1wb3J0IHsgSURFQUNvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnQGlkZWEtaW9uaWMvdW5jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQWdlbmRhQ29tcG9uZW50IH0gZnJvbSAnLi9hZ2VuZGEuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IElERUFDYWxlbmRhckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFySXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyQ3JlYXRpb24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgSURFQUNhbGVuZGFyc1NlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFycy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBJREVBVHJhbnNsYXRpb25zTW9kdWxlLFxuICAgIElERUFDb2xvclBpY2tlck1vZHVsZSxcbiAgICBJREVBQ2hlY2tlckNvbXBvbmVudCxcbiAgICBJREVBVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBDYWxlbmRhck1vZHVsZS5mb3JSb290KHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUZhY3Rvcnk6IGFkYXB0ZXJGYWN0b3J5IH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0lERUFBZ2VuZGFDb21wb25lbnQsIElERUFDYWxlbmRhckNvbXBvbmVudCwgSURFQUNhbGVuZGFySXRlbUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ3JlYXRpb25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbSURFQUFnZW5kYUNvbXBvbmVudCwgSURFQUNhbGVuZGFyQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJJdGVtQ29tcG9uZW50LCBJREVBQ2FsZW5kYXJDcmVhdGlvbkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2FsZW5kYXJEYXRlRm9ybWF0dGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUZvcm1hdHRlciB9LCBJREVBQ2FsZW5kYXJzU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgSURFQUFnZW5kYU1vZHVsZSB7fVxuIl19