@wavemaker/app-ng-runtime 11.11.0-rc.6109 → 11.11.0-rc.6113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/base/bundles/index.umd.js +3 -1
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +4 -2
- package/components/base/fesm2022/index.mjs +3 -1
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/bundles/index.umd.js +28 -4
- package/components/containers/tabs/esm2022/tabs.component.mjs +27 -6
- package/components/containers/tabs/esm2022/tabs.props.mjs +2 -1
- package/components/containers/tabs/fesm2022/index.mjs +27 -5
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tabs.component.d.ts +2 -0
- package/components/containers/wizard/bundles/index.umd.js +7 -7
- package/components/containers/wizard/esm2022/wizard.component.mjs +8 -8
- package/components/containers/wizard/fesm2022/index.mjs +7 -7
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard.component.d.ts +2 -2
- package/components/data/table/bundles/index.umd.js +8 -7
- package/components/data/table/esm2022/table.component.mjs +6 -4
- package/components/data/table/fesm2022/index.mjs +5 -3
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/bundles/index.umd.js +3 -0
- package/components/input/calendar/esm2022/calendar.component.mjs +4 -1
- package/components/input/calendar/fesm2022/index.mjs +3 -0
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +1 -0
- package/runtime/base/esm2022/services/i18n.service.mjs +2 -1
- package/runtime/base/fesm2022/index.mjs +1 -0
- package/runtime/base/fesm2022/index.mjs.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/calendar/src/calendar.props.ts","../../../../../projects/components/widgets/input/calendar/src/calendar.component.ts","../../../../../projects/components/widgets/input/calendar/src/calendar.component.html","../../../../../projects/components/widgets/input/calendar/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['calendartype', {value: 'basic', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['controls', {value: 'navigation, today, year, month, week, day', ...PROP_STRING}],\n ['dataset', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['eventallday', PROP_STRING],\n ['eventclass', PROP_STRING],\n ['eventend', PROP_STRING],\n ['eventstart', PROP_STRING],\n ['eventtitle', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showindevice', {displayType: 'inline-block', value: 'all', ...PROP_STRING}],\n ['view', PROP_STRING],\n ['selectionmode', PROP_STRING]\n ]\n );\n register('wm-calendar', props);\n};\n","import { WmComponentsModule } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {AbstractI18nService, getClonedObject, getSessionStorageItem, isMobile} from '@wm/core';\n\nimport {\n APPLY_STYLES_TYPE,\n createArrayFrom,\n getEvaluatedData,\n IRedrawableComponent,\n provideAsWidgetRef,\n StylableComponent,\n styler\n} from '@wm/components/base';\n\nimport {registerProps} from './calendar.props';\nimport {capitalize, clone, each, extend, get, includes, isDate, isEmpty, isObject, mapKeys} from \"lodash-es\";\n\ndeclare const $;\nimport * as momentLib from 'moment';\nconst moment = momentLib.default || window['moment'];\nimport {Calendar} from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport listPlugin from '@fullcalendar/list'\nimport interactionPlugin from '@fullcalendar/interaction';\nimport allLocales from '@fullcalendar/core/locales-all';\n\nimport {_WM_APP_PROJECT} from '@wm/core';\n\nconst DEFAULT_CLS = 'app-calendar';\nconst dateFormats = ['yyyy-MM-dd', 'yyyy-M-dd', 'M-dd-yyyy', 'MM-dd-yy', 'yyyy, dd MMMM', 'yyyy, MMM dd', 'MM/dd/yyyy', 'M/d/yyyy', 'EEE, dd MMM yyyy', 'EEE MMM dd yyyy', 'EEEE, MMMM dd, yyyy', 'timestamp'];\nconst defaultHeaderOptions = {\n start: 'prev next today',\n center: 'title',\n end: 'dayGridMonth dayGridWeek dayGridDay'\n};\nconst VIEW_TYPES = {\n BASIC: 'basic',\n AGENDA: 'agenda',\n LIST: 'list'\n};\nconst BUTTON_TEXT = {\n YEAR: 'Year',\n MONTH: 'Month',\n WEEK: 'Week',\n DAY: 'Day',\n TODAY: 'Today'\n};\nconst SELECTION_MODES = {\n NONE: 'none',\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\nconst NEXT_DAY_THRESHOLD = {\n START: '00:00',\n END: '24:00'\n};\nconst getEventMomentValue = (value, key) => {\n let isDate = false;\n\n dateFormats.forEach((format) => {\n // moment supports uppercase formats\n if (moment(value, format.toUpperCase(), true).isValid()) {\n isDate = true;\n return false;\n }\n });\n\n // if the value is date then for end date the value should be end of the day as the calendar is approximating it to the start.\n if (isDate && key === 'end') {\n return moment(value).endOf('day');\n }\n\n return moment(value);\n};\nconst getUTCDateTime = (dateObj) => {\n dateObj = moment(dateObj);\n const year = dateObj.format('YYYY'),\n // javascript starts the month count from '0' where as moment returns the human count\n month = dateObj.format('MM') - 1,\n day = dateObj.format('DD'),\n hours = dateObj.format('HH'),\n minutes = dateObj.format('mm'),\n seconds = dateObj.format('ss');\n return new Date(year, month, day, hours, minutes, seconds);\n};\nconst WIDGET_CONFIG = {widgetType: 'wm-calendar', hostClass: DEFAULT_CLS};\nconst dateFormat = 'YYYY/MM/DD';\n\n@Component({\n standalone: true,\n imports: [WmComponentsModule],\n selector: '[wmCalendar]',\n templateUrl: './calendar.component.html',\n styleUrls: [],\n providers: [\n provideAsWidgetRef(CalendarComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class CalendarComponent extends StylableComponent implements AfterContentInit, AfterViewInit, OnInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n // The calendar element reference\n @ViewChild('calendar') _calendar: ElementRef;\n @ViewChild('datepicker') _datepicker: ElementRef;\n\n public selecteddates: any;\n public selecteddata: any;\n public currentview: object;\n public dataset: any;\n public calendartype;\n public controls = 'navigation, today, year, month, week, day';\n public datavalue;\n public eventtitle;\n public eventstart;\n public eventend;\n public eventallday;\n public eventclass;\n\n private eventSources: Array<any> = [];\n\n private dataSetEvents = {\n events: []\n };\n private oldData;\n // map the fullcalendar Element rendered\n private $fullCalendar;\n // model to the mobile calendar\n private proxyModel;\n private eventData;\n private events;\n private changesStack = [];\n\n // calendarOptions to the calendar\n private calendarOptions: any = {\n calendar: {\n height: 600,\n eventSources: this.eventSources,\n editable: true,\n locale: getSessionStorageItem('selectedLocale') || 'en',\n selectable: false,\n longPressDelay: isMobile() ? 1 : 1000,\n headerToolbar: defaultHeaderOptions,\n nextDayThreshold: NEXT_DAY_THRESHOLD,\n views: {\n month: {\n dayMaxEventsRow: true\n }\n },\n unselectAuto: false,\n eventDrop: this.eventDrop.bind(this),\n eventResizeStart: this.onEventChangeStart.bind(this),\n eventDragStart: this.onEventChangeStart.bind(this),\n eventResize: this.eventResize.bind(this),\n eventClick: this.eventClick.bind(this),\n select: this.select.bind(this),\n eventDidMount: this.eventDidMount.bind(this),\n viewDidMount: this.viewDidMount.bind(this),\n datesSet: this.datesSet.bind(this),\n dateClick: this.dateClick.bind(this)\n }\n };\n public view: string;\n private dayClass: Array<any> = [];\n private cancelLocaleChangeSubscription;\n\n // this function selects the default date given for the calendar\n selectDate() {\n let start, end;\n // checks if datavalue is an object and not a Date object\n if (isObject(this.datavalue) && !isDate(this.datavalue)) {\n // @ts-ignore\n start = moment(this.datavalue.start);\n // @ts-ignore\n end = moment(this.datavalue.end);\n } else {\n start = moment(this.datavalue);\n end = moment(this.datavalue).add(1, 'day').startOf('day');\n }\n this.$fullCalendar.gotoDate( (moment(start) as any)._d); // after selecting the date go to the date.\n\n this.$fullCalendar.select(start.valueOf(), end.valueOf());\n }\n\n // changes the calendar view to the default date given for the calendar.\n public gotoDate() {\n this.$fullCalendar.gotoDate( (moment(this.datavalue) as any)._d);\n }\n\n // this function takes the calendar view to the a year ahead\n public gotoNextYear() {\n this.$fullCalendar.nextYear();\n }\n\n // this function takes the calendar view to the a year before\n public gotoPrevYear() {\n this.$fullCalendar.prevYear();\n }\n\n /**\n * this function takes the calendar view to the specified month\n * @param monthVal, 1-12 value of month\n */\n public gotoMonth(monthVal) {\n let presentDay = this.$fullCalendar.getDate();\n const presentMonthVal = presentDay.getMonth();\n presentDay = moment(presentDay);\n if (presentMonthVal < monthVal) {\n this.$fullCalendar.gotoDate(presentDay.add(monthVal - presentMonthVal - 1, 'M').valueOf());\n } else {\n this.$fullCalendar.gotoDate(presentDay.subtract( presentMonthVal - monthVal + 1, 'M').valueOf());\n }\n }\n\n // this function takes the calendar view to the a month ahead\n public gotoNextMonth() {\n const presentDay = moment(this.$fullCalendar.getDate());\n this.$fullCalendar.gotoDate(presentDay.add(1, 'M').valueOf());\n }\n\n // this function takes the calendar view to the a month before\n public gotoPrevMonth() {\n const presentDay = moment(this.$fullCalendar.getDate());\n this.$fullCalendar.gotoDate(presentDay.subtract(1, 'M').valueOf());\n }\n\n\n // this function re-renders the events assigned to the calendar.\n public rerenderEvents() {\n this.$fullCalendar.render();\n }\n\n private setSelectedData(start, end) {\n let dataset = this.dataset;\n if (!dataset) {\n return;\n }\n\n const filteredDates = [];\n const eventStartKey = this.eventstart || 'start';\n const eventEndKey = this.eventend || 'end';\n const startDate = moment(new Date(start)).format('MM/DD/YYYY');\n const endDate = moment(new Date(end)).subtract(1, 'days').format('MM/DD/YYYY');\n\n dataset = dataset.data || dataset;\n dataset.forEach((value) => {\n if (!value[eventStartKey]) {\n return;\n }\n const eventStartDate = moment(new Date(value[eventStartKey])).format('MM/DD/YYYY');\n const eventEndDate = moment(new Date(value[eventEndKey] || value[eventStartKey])).format('MM/DD/YYYY');\n const eventExists = moment(eventStartDate).isSameOrAfter(startDate) && moment(eventEndDate).isSameOrBefore(endDate);\n if (eventExists) {\n filteredDates.push(value);\n }\n });\n return filteredDates;\n }\n\n private eventDrop(eventDropInfo) {\n let newDataObj = this.convertEventObjForOldAndNewData(eventDropInfo.event);\n let oldDataObj = this.convertEventObjForOldAndNewData(eventDropInfo.oldEvent);\n this.invokeEventCallback('eventdrop', {$event: eventDropInfo.jsEvent, $newData: newDataObj, $oldData: oldDataObj, $delta: eventDropInfo.delta, $revertFunc: eventDropInfo.revert, $ui: {}, $view: eventDropInfo.view});\n }\n\n // Returns the default date when the datavalue is provided\n getDefaultDate() {\n if (this.datavalue) {\n return new Date(this.datavalue);\n }\n }\n\n getDefaultOptions() {\n return this.calendarOptions;\n }\n\n getLib() {\n return 'fullcalendar';\n }\n\n private select($selectionInfo) {\n this.selecteddates = {start: getUTCDateTime($selectionInfo.start), end: getUTCDateTime($selectionInfo.end)};\n this.selecteddata = this.setSelectedData($selectionInfo.start, $selectionInfo.end);\n this.invokeEventCallback('select', {$start: $selectionInfo.start.valueOf(), $end: $selectionInfo.end.valueOf(), $view: $selectionInfo.view, $data: this.selecteddata});\n }\n\n /**\n * this functions unselects all the selections in calendar\n */\n public unselect() {\n this.$fullCalendar.unselect();\n }\n\n /**\n * this function is to add extendedProps data to the data object.\n * this is done for backward compatibility\n * @param eventObj event object as per new version (v5)\n * @returns _eventMetadata event object as per the old version (v3)\n */\n private convertEventObj(eventObj) {\n if (!eventObj.extendedProps._eventMetadata) {\n return eventObj;\n }\n const _eventMetadata = eventObj.extendedProps._eventMetadata;\n Object.setPrototypeOf(_eventMetadata, eventObj);\n return _eventMetadata;\n }\n\n /**\n * this function is to add extendedProps data to the data object exluding start end title allDay objects if the key name matches.\n * * this is done for backward compatibility\n * @param eventObj event object as per new version (v5)\n * @returns data event object as per the old version (v3)\n */\n private convertEventObjForOldAndNewData(eventObj) {\n const _eventMetadata = eventObj.extendedProps;\n extend(eventObj, _eventMetadata);\n return eventObj;\n }\n\n private eventResize(eventResizeInfo) {\n let newDataObj = this.convertEventObjForOldAndNewData(eventResizeInfo.event);\n let oldDataObj = this.convertEventObjForOldAndNewData(eventResizeInfo.oldEvent);\n this.invokeEventCallback('eventresize', {$event: eventResizeInfo.jsEvent, $newData: newDataObj, $oldData: oldDataObj, $delta: eventResizeInfo.delta, $revertFunc: eventResizeInfo.revert, $ui: {}, $view: eventResizeInfo.view});\n }\n\n private onEventChangeStart(event) {\n this.oldData = getClonedObject(event);\n }\n\n private eventClick(eventClickInfo) {\n let eventObj = this.convertEventObj(eventClickInfo.event);\n this.invokeEventCallback('eventclick', {$event: eventClickInfo.jsEvent, $data: eventObj, $view: eventClickInfo.view});\n }\n\n private eventDidMount(event) {\n let eventObj = this.convertEventObj(event.event);\n if (this.calendartype === VIEW_TYPES.LIST) {\n this.$element.find('.fc-list-table').addClass('table');\n }\n this.invokeEventCallback('eventrender', {$event: event.el, $data: eventObj, $view: event.view});\n }\n\n private viewDidMount($view) {\n if (this.calendartype === VIEW_TYPES.LIST) {\n this.$element.find('.fc-list-table').addClass('table');\n }\n this.invokeEventCallback('viewrender', {$view: $view});\n }\n\n /**\n * This function gets called when the view of the calendar changes.\n * @param data contains the start end data of the calendar view.\n */\n private datesSet(data) {\n this.currentview = {start: moment(data.start).format(\"YYYY-MM-DD\"), end: moment(data.end).format(\"YYYY-MM-DD\")};\n }\n\n private dateClick($info) {\n const dateInfo = getUTCDateTime($info.date).valueOf();\n this.invokeEventCallback('dateclick', {$dateInfo: dateInfo});\n }\n\n // update the calendar header options once the controls changes\n private updateCalendarHeaderOptions() {\n const ctrls = this.controls, viewType = this.calendartype,\n regEx = new RegExp('\\\\bday\\\\b', 'g');\n let left = '', right = '';\n if (ctrls && viewType) {\n if (includes(ctrls, 'navigation')) {\n left += ' prev next';\n }\n\n if (includes(ctrls, 'today')) {\n left += ' today';\n }\n\n if (includes(ctrls, 'year')) {\n right += (viewType === VIEW_TYPES.LIST) ? 'listYear' : '';\n }\n\n if (includes(ctrls, 'month')) {\n right += (viewType === VIEW_TYPES.LIST) ? ' listMonth' : ' dayGridMonth';\n }\n\n if (includes(ctrls, 'week')) {\n right += (viewType === VIEW_TYPES.BASIC) ? ' dayGridWeek' : (viewType === VIEW_TYPES.LIST) ? ' listWeek' : ' timeGridWeek';\n }\n\n if (regEx.test(ctrls)) {\n right += (viewType === VIEW_TYPES.BASIC) ? ' dayGridDay' : (viewType === VIEW_TYPES.LIST) ? ' listDay' : ' timeGridDay';\n }\n if (left.charAt(0) === ' ') {\n left = left.substring(1);\n }\n if (right.charAt(0) === ' ') {\n right = right.substring(1);\n }\n extend(this.calendarOptions.calendar.headerToolbar, {'start': left, 'end': right});\n }\n }\n\n constructor(inj: Injector, i18nService: AbstractI18nService, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n this.eventSources.push(this.dataSetEvents);\n let FullCalendar = window['FullCalendar'] ? window['FullCalendar'] : Calendar;\n if (!FullCalendar.__wm_locale_initialized) {\n i18nService.initCalendarLocale();\n FullCalendar.__wm_locale_initialized = true;\n }\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (libLocale) => {\n this.setLocale();\n this.applyCalendarOptions('option', 'locale', libLocale.fullCalendar || 'en');\n this.redraw();\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['height']);\n this.setLocale();\n }\n\n onStyleChange(key, nv, ov?) {\n super.onStyleChange(key, nv, ov);\n if (key === 'height') {\n this.calendarOptions.calendar.height = this.calculateHeight(nv);\n this.updateCalendarOptions('option', 'height', this.calendarOptions.calendar.height);\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n super.onPropertyChange(key, nv, ov);\n switch (key) {\n case 'selectionmode':\n if (nv !== SELECTION_MODES.NONE) {\n this.calendarOptions.calendar.selectable = true;\n this.updateCalendarOptions('option', 'selectable', true);\n if (nv === SELECTION_MODES.SINGLE) {\n this.calendarOptions.calendar.selectConstraint = {\n startTime: '00:00',\n endTime: '24:00'\n };\n this.updateCalendarOptions('option', 'selectConstraint', this.calendarOptions.calendar.selectConstraint);\n } else {\n this.updateCalendarOptions('option', 'selectConstraint', {});\n }\n } else {\n this.calendarOptions.calendar.selectable = false;\n this.updateCalendarOptions('option', 'selectable', false);\n }\n break;\n case 'view':\n if (nv !== 'month' || this.calendartype === VIEW_TYPES.LIST) {\n this.calendarOptions.calendar.defaultView = this.calendartype + capitalize(nv);\n } else {\n this.calendarOptions.calendar.defaultView = nv;\n }\n this.updateCalendarOptions('changeView', this.calendarOptions.calendar.defaultView);\n break;\n case 'calendartype':\n this.calendartype = nv || 'dayGrid';\n case 'controls':\n this.updateCalendarHeaderOptions();\n break;\n case 'dataset':\n let dataSet;\n const self = this;\n this.dataset = nv;\n dataSet = createArrayFrom(getClonedObject(nv));\n dataSet = this.constructCalendarDataset(dataSet);\n this.dataSetEvents.events = dataSet.filter((event) => {\n event.start = event.start || event.end;\n if (event.start) {\n return true;\n }\n });\n\n this.renderEventDataSet();\n break;\n case 'show':\n this.$fullCalendar?.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n }\n }\n\n // to calculate the height for the event limit and parsing the value when it is percentage based.\n private calculateHeight(height): number {\n const $parent = $(this.nativeElement).parent(),\n elHeight = height || '650px';\n\n let parentHeight: any = $parent.css('height'),\n computedHeight: number;\n\n if (includes(elHeight, '%')) {\n if (includes(parentHeight, '%')) {\n parentHeight = $parent.height();\n }\n computedHeight = (parseInt(parentHeight, 10) * Number(elHeight.replace(/\\%/g, ''))) / 100;\n } else {\n computedHeight = parseInt(elHeight, 10);\n }\n this.calendarOptions.calendar.views.month.eventLimit = parseInt('' + computedHeight / 200, 10) + 1;\n return computedHeight;\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n const calendarEl = this._calendar.nativeElement;\n let FullCalendar:any ;\n if(window['FullCalendar']) FullCalendar = window['FullCalendar'].Calendar \n else {\n FullCalendar = Calendar;\n this.calendarOptions.calendar = {...this.calendarOptions.calendar, plugins: [dayGridPlugin, timeGridPlugin, listPlugin,listPlugin, interactionPlugin], locales: allLocales}\n }\n\n const calendar = new FullCalendar(calendarEl, this.calendarOptions.calendar);\n this.$fullCalendar = calendar;\n this.invokeEventCallback('beforerender', {'$event' : {}});\n calendar.render();\n\n // if the changes are already stacked before calendar renders then execute them when needed\n if (this.changesStack.length) {\n this.changesStack.forEach((changeObj) => {\n this.applyCalendarOptions(changeObj.operationType, changeObj.argumentKey, changeObj.argumentValue);\n });\n this.changesStack.length = 0;\n }\n\n //WMS-22412 : change calender's view based on the configuration set from studio\n setTimeout(() => {\n this.$fullCalendar.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n },50);\n }\n\n // constructs the calendar dataset by mapping the eventstart, eventend, eventtitle etc.,\n private constructCalendarDataset(eventSource) {\n const properties = {\n title: this.eventtitle || 'title',\n allDay: this.eventallday || 'allday',\n start: this.eventstart || 'start',\n end: this.eventend || 'end',\n className: this.eventclass || 'className'\n };\n\n eventSource.forEach((obj) => {\n obj._eventMetadata = clone(obj);\n if (isEmpty(obj._eventMetadata.url)) {\n delete obj._eventMetadata.url;\n }\n if (isEmpty(obj.url)) {\n delete obj.url;\n }\n\n mapKeys(properties, (value, key) => {\n let objVal;\n if (key === 'title') {\n objVal = getEvaluatedData(obj, {expression: value}, this.viewParent);\n } else if (key === 'allDay') {\n objVal = !!get(obj, value);\n } else {\n objVal = get(obj, value);\n }\n if (!objVal) {\n return;\n }\n obj[key] = objVal;\n });\n });\n return eventSource;\n }\n\n private setLocale() {\n const year = get(this.appLocale, 'LABEL_CALENDAR_YEAR') || BUTTON_TEXT.YEAR;\n const month = get(this.appLocale, 'LABEL_CALENDAR_MONTH') || BUTTON_TEXT.MONTH;\n const week = get(this.appLocale, 'LABEL_CALENDAR_WEEK') || BUTTON_TEXT.WEEK;\n const day = get(this.appLocale, 'LABEL_CALENDAR_DAY') || BUTTON_TEXT.DAY;\n const today = get(this.appLocale, 'LABEL_CALENDAR_TODAY') || BUTTON_TEXT.TODAY;\n this.calendarOptions.calendar.buttonText = { year, month, week, day, today,\n 'listYear': year,\n 'listMonth': month,\n 'listWeek': week,\n 'listDay': day\n };\n }\n\n /**\n * override the default calendar options with the newSet of options\n * @param options\n */\n overrideDefaults(options) {\n if (isObject(options)) {\n Object.entries(options).map(option => this.$fullCalendar.setOption(option[0], option[1]));\n }\n }\n\n /**\n * if the operations are performed before the calendar renders, the changes are pushed into changesStack and will be executed after the calendar gets rendered\n * if the calendar is already rendered, then the specific operation will be performed according to the operation type\n * @param operationType\n * @param argumentKey\n * @param argumentValue\n */\n updateCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void {//\n if (!this.$fullCalendar) {\n this.changesStack.push({\n operationType: operationType,\n argumentKey: argumentKey,\n argumentValue: argumentValue\n });\n return;\n }\n this.applyCalendarOptions(operationType, argumentKey, argumentValue);\n }\n\n redraw() {\n this.updateCalendarOptions('render');\n this.$fullCalendar?.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n }\n\n // on date change invoke the select event, and if date has event on it then invoke the event click.\n private onValueChange(value: Date): void {\n this.proxyModel = value;\n const selectedDate = this.proxyModel && moment(this.proxyModel).startOf('day').format(dateFormat),\n selectedEventData = this.eventData[selectedDate],\n start = moment(this.proxyModel),\n end = moment(this.proxyModel).endOf('day');\n this.selecteddata = selectedEventData;\n this.selecteddates = {\n 'start': moment(selectedDate).valueOf(),\n 'end' : moment(selectedDate).endOf('day').valueOf()\n };\n this.calendarOptions.calendar.select(start.valueOf(), end.valueOf(), {}, this, selectedEventData);\n if (selectedEventData) {\n this.calendarOptions.calendar.eventClick(selectedEventData, {}, this);\n }\n }\n\n /**\n * This function will receive an object containing source of calendar, apikey and calendarId and will integrate the respective calendar with fullcalendar.\n * @param eventObject\n */\n public addEventSource(eventObject) {\n if (isEmpty(eventObject)) {\n console.warn('addEventSource method requires an object as a parameter.');\n return;\n }\n if (eventObject.source === 'google') {\n if (!eventObject.googleCalendarApiKey || !eventObject.googleCalendarId ) {\n console.warn('For google calendar integration, \\'googleCalendarApiKey\\' and \\'googleCalendarId\\' should be passed in the parameter object.');\n return;\n }\n this.$fullCalendar.setOption('googleCalendarApiKey', eventObject.googleCalendarApiKey);\n this.$fullCalendar.addEventSource({\n googleCalendarId: eventObject.googleCalendarId\n });\n }\n }\n\n /**\n * get the viewTypeKey according to the calendarType and viewType selected\n * @param viewKey\n */\n getViewType(viewKey) {\n const calendarType = this.calendartype;\n const view = this.view;\n let result;\n\n if (view === 'month') {\n result = (calendarType === VIEW_TYPES.LIST) ? 'listMonth' : 'dayGridMonth';\n } else if (view === 'week') {\n result = (calendarType === VIEW_TYPES.BASIC) ? 'dayGridWeek' : (calendarType === VIEW_TYPES.LIST) ? 'listWeek' : 'timeGridWeek';\n } else if (view === 'day') {\n result = (calendarType === VIEW_TYPES.BASIC) ? 'dayGridDay' : (calendarType === VIEW_TYPES.LIST) ? 'listDay' : 'timeGridDay';\n } else if (view === 'year') {\n result = (calendarType === VIEW_TYPES.LIST) ? 'listYear' : '';\n } else {\n result = viewKey;\n }\n return result;\n }\n\n /**\n * @param operationType\n * @param argumentKey\n * @param argumentValue\n * Handle various operations like Rendering Calendar, changing the calendar viewType, setting the calendarOptions according to the operationType.\n */\n applyCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void {\n switch (operationType) {\n case 'render':\n this.$fullCalendar.render();\n break;\n case 'option':\n this.$fullCalendar.setOption(argumentKey, argumentValue);\n break;\n case 'changeView':\n const view = this.getViewType(argumentKey);\n this.$fullCalendar.changeView(view);\n break;\n }\n }\n\n /**\n * Adds the new eventsDataSet to the calendar object with addEvent Method and re-renders the calendar\n */\n renderEventDataSet() {\n const self = this;\n this.$fullCalendar.batchRendering(function() {\n const events = self.$fullCalendar.getEvents();\n each(events, function (event) {\n const eventData = self.$fullCalendar.getEventById(event.id);\n eventData.remove();\n });\n each(self.dataSetEvents.events, function (event) {\n self.$fullCalendar.addEvent(event);\n });\n });\n }\n\n ngOnDestroy() {\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n }\n}\n","<div #calendar></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAEO,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,CACb;QACI,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,EAAC,CAAC;QAClD,CAAC,OAAO,EAAE,WAAW,CAAC;QACtB,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,EAAC,CAAC;QACxC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,2CAA2C,EAAE,GAAG,WAAW,EAAC,CAAC;QAClF,CAAC,SAAS,EAAE,QAAQ,CAAC;QACrB,CAAC,WAAW,EAAE,WAAW,CAAC;QAC1B,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,UAAU,EAAE,WAAW,CAAC;QACzB,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;AACxC,QAAA,CAAC,cAAc,EAAE,EAAC,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,EAAC,CAAC;QAC7E,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,eAAe,EAAE,WAAW;AAChC,KAAA,CACJ;AACL,IAAA,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;AAClC,CAAC;;;;;ACQD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;AAUpD,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,WAAW,CAAC;AAC9M,MAAM,oBAAoB,GAAG;AACzB,IAAA,KAAK,EAAE,iBAAiB;AACxB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,GAAG,EAAE;CACR;AACD,MAAM,UAAU,GAAG;AACf,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE;CACT;AACD,MAAM,WAAW,GAAG;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE;CACV;AACD,MAAM,eAAe,GAAG;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE;CACb;AACD,MAAM,kBAAkB,GAAG;AACvB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,GAAG,EAAE;CACR;AACD,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,GAAG,KAAI;IACvC,IAAI,MAAM,GAAG,KAAK;AAElB,IAAA,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AAE3B,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACrD,MAAM,GAAG,IAAI;AACb,YAAA,OAAO,KAAK;;AAEpB,KAAC,CAAC;;AAGF,IAAA,IAAI,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;;AAGrC,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC;AACD,MAAM,cAAc,GAAG,CAAC,OAAO,KAAI;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;;IAE/B,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAC1B,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAC5B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAC9B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9D,CAAC;AACD,MAAM,aAAa,GAAG,EAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAC;AACzE,MAAM,UAAU,GAAG,YAAY;AAazB,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAC7C,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,aAAa,EAAhB,CAAmB;;IAkEzC,UAAU,GAAA;QACN,IAAI,KAAK,EAAE,GAAG;;AAEd,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;YAErD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;YAEpC,GAAG,GAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;aAC/B;AACH,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,YAAA,GAAG,GAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;;AAE/D,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAG,MAAM,CAAC,KAAK,CAAS,CAAC,EAAE,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;;;IAItD,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAS,CAAC,EAAE,CAAC;;;IAI7D,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;;IAI1B,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;AAGjC;;;AAGG;AACI,IAAA,SAAS,CAAC,QAAQ,EAAA;QACrB,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC7C,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,EAAE;AAC7C,QAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,eAAe,GAAG,QAAQ,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,eAAe,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;aACvF;YACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAE,eAAe,GAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;;;IAKjG,aAAa,GAAA;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;;IAI1D,aAAa,GAAA;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;;;IAK/D,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;IAGvB,eAAe,CAAC,KAAK,EAAE,GAAG,EAAA;AAC9B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO;QAC1B,IAAI,CAAC,OAAO,EAAE;YACV;;QAGJ,MAAM,aAAa,GAAG,EAAE;AACxB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO;AAChD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC1C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAE9E,QAAA,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO;AACjC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;gBACvB;;AAEJ,YAAA,MAAM,cAAc,GAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YACpF,MAAM,YAAY,GAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YACxG,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;YACnH,IAAI,WAAW,EAAE;AACb,gBAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEjC,SAAC,CAAC;AACF,QAAA,OAAO,aAAa;;AAGhB,IAAA,SAAS,CAAC,aAAa,EAAA;QAC3B,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,KAAK,CAAC;QAC1E,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC7E,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAC,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAC,CAAC;;;IAI1N,cAAc,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAIvC,iBAAiB,GAAA;QACb,OAAO,IAAI,CAAC,eAAe;;IAG/B,MAAM,GAAA;AACF,QAAA,OAAO,cAAc;;AAGjB,IAAA,MAAM,CAAC,cAAc,EAAA;QACzB,IAAI,CAAC,aAAa,GAAG,EAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAC;AAC3G,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;AAClF,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC;;AAG1K;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;;AAGjC;;;;;AAKG;AACK,IAAA,eAAe,CAAC,QAAQ,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE;AACxC,YAAA,OAAO,QAAQ;;AAEnB,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc;AAC5D,QAAA,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC/C,QAAA,OAAO,cAAc;;AAGzB;;;;;AAKG;AACK,IAAA,+BAA+B,CAAC,QAAQ,EAAA;AAC5C,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa;AAC7C,QAAA,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC;AAChC,QAAA,OAAO,QAAQ;;AAGX,IAAA,WAAW,CAAC,eAAe,EAAA;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5E,IAAI,UAAU,GAAG,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC/E,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,MAAM,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAC,CAAC;;AAG5N,IAAA,kBAAkB,CAAC,KAAK,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC;;AAGjC,IAAA,UAAU,CAAC,cAAc,EAAA;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,EAAC,CAAC;;AAGjH,IAAA,aAAa,CAAC,KAAK,EAAA;QACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;;QAE1D,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC;;AAG3F,IAAA,YAAY,CAAC,KAAK,EAAA;QACtB,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;;QAE1D,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;;AAG1D;;;AAGG;AACK,IAAA,QAAQ,CAAC,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAC;;AAG3G,IAAA,SAAS,CAAC,KAAK,EAAA;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;QACrD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAC,CAAC;;;IAIxD,2BAA2B,GAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,YAAY,EACrD,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACxC,QAAA,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE;AACzB,QAAA,IAAI,KAAK,IAAI,QAAQ,EAAE;AACnB,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;gBAC/B,IAAI,IAAI,YAAY;;AAGxB,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;gBAC1B,IAAI,IAAI,QAAQ;;AAGpB,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACzB,gBAAA,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,UAAU,GAAG,EAAE;;AAG7D,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC1B,gBAAA,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,YAAY,GAAG,eAAe;;AAG5E,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACzB,gBAAA,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAK,cAAc,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,WAAW,GAAG,eAAe;;AAG/H,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAK,aAAa,GAAG,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,UAAU,GAAG,cAAc;;YAE5H,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;YAE5B,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACzB,gBAAA,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;;AAE9B,YAAA,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;;;AAI1F,IAAA,WAAA,CAAY,GAAa,EAAE,WAAgC,EAA0C,eAAoB,EAAA;AACrH,QAAA,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,CAAC;QApSvC,IAAQ,CAAA,QAAA,GAAG,2CAA2C;QAQrD,IAAY,CAAA,YAAA,GAAe,EAAE;AAE7B,QAAA,IAAA,CAAA,aAAa,GAAG;AACpB,YAAA,MAAM,EAAE;SACX;QAQO,IAAY,CAAA,YAAA,GAAG,EAAE;;AAGjB,QAAA,IAAA,CAAA,eAAe,GAAQ;AAC3B,YAAA,QAAQ,EAAE;AACN,gBAAA,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,IAAI;AACvD,gBAAA,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI;AACrC,gBAAA,aAAa,EAAE,oBAAoB;AACnC,gBAAA,gBAAgB,EAAE,kBAAkB;AACpC,gBAAA,KAAK,EAAE;AACH,oBAAA,KAAK,EAAE;AACH,wBAAA,eAAe,EAAE;AACpB;AACJ,iBAAA;AACD,gBAAA,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpD,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClD,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;AACtC;SACJ;QAEO,IAAQ,CAAA,QAAA,GAAe,EAAE;QAkP7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1C,QAAA,IAAI,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ;AAC7E,QAAA,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE;YACvC,WAAW,CAAC,kBAAkB,EAAE;AAChC,YAAA,YAAY,CAAC,uBAAuB,GAAG,IAAI;;AAG/C,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,SAAS,KAAI;YAClG,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC;YAC7E,IAAI,CAAC,MAAM,EAAE;AACjB,SAAC,CAAC;;IAGN,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,EAAE;;AAGpB,IAAA,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,EAAG,EAAA;QACtB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAChC,QAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;;;AAI5F,IAAA,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAG,EAAA;QACzB,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,QAAQ,GAAG;AACP,YAAA,KAAK,eAAe;AAChB,gBAAA,IAAI,EAAE,KAAK,eAAe,CAAC,IAAI,EAAE;oBAC7B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI;oBAC/C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AACxD,oBAAA,IAAI,EAAE,KAAK,eAAe,CAAC,MAAM,EAAE;AAC/B,wBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,GAAG;AAC7C,4BAAA,SAAS,EAAE,OAAO;AAClB,4BAAA,OAAO,EAAE;yBACZ;AACD,wBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC;;yBACrG;wBACH,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;;;qBAE7D;oBACH,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK;oBAChD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;;gBAE7D;AACJ,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,EAAE;AACzD,oBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;;qBAC3E;oBACH,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;;AAElD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnF;AACJ,YAAA,KAAK,cAAc;AACf,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,SAAS;AACvC,YAAA,KAAK,UAAU;gBACX,IAAI,CAAC,2BAA2B,EAAE;gBAClC;AACJ,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,OAAO;gBACX,MAAM,IAAI,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE;gBACjB,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC9C,gBAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAChD,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;oBACjD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG;AACtC,oBAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AACb,wBAAA,OAAO,IAAI;;AAEnB,iBAAC,CAAC;gBAEF,IAAI,CAAC,kBAAkB,EAAE;gBACzB;AACJ,YAAA,KAAK,MAAM;gBACP,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;;;;AAK5F,IAAA,eAAe,CAAC,MAAM,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,EAC1C,QAAQ,GAAG,MAAM,IAAI,OAAO;QAEhC,IAAI,YAAY,GAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EACzC,cAAsB;AAE1B,QAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AAC7B,gBAAA,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE;;YAEnC,cAAc,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG;;aACtF;AACH,YAAA,cAAc,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;;QAE3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAClG,QAAA,OAAO,cAAc;;IAGzB,eAAe,GAAA;QACX,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAC/C,QAAA,IAAI,YAAgB;QACpB,IAAG,MAAM,CAAC,cAAc,CAAC;AAAE,YAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ;aACpE;YACD,YAAY,GAAG,QAAQ;AACvB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAC;;AAG/K,QAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC5E,QAAA,IAAI,CAAC,aAAa,GAAI,QAAQ;QAC9B,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAG,EAAE,EAAC,CAAC;QACzD,QAAQ,CAAC,MAAM,EAAE;;AAGjB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AACpC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC;AACtG,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;;;QAIhC,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;SAC1F,EAAC,EAAE,CAAC;;;AAID,IAAA,wBAAwB,CAAC,WAAW,EAAA;AACxC,QAAA,MAAM,UAAU,GAAG;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ;AACpC,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO;AACjC,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC3B,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI;SACjC;AAED,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxB,YAAA,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC;YAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACjC,gBAAA,OAAO,GAAG,CAAC,cAAc,CAAC,GAAG;;AAEjC,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAClB,OAAO,GAAG,CAAC,GAAG;;YAGlB,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAI;AAC/B,gBAAA,IAAI,MAAM;AACV,gBAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACjB,oBAAA,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,EAAE,IAAI,CAAC,UAAU,CAAC;;AACjE,qBAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;oBACzB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;qBACvB;AACH,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;gBAE5B,IAAI,CAAC,MAAM,EAAE;oBACT;;AAEJ,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM;AACrB,aAAC,CAAC;AACN,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;IAGd,SAAS,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,WAAW,CAAC,IAAI;AAC3E,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,WAAW,CAAC,KAAK;AAC9E,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,WAAW,CAAC,IAAI;AAC3E,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,WAAW,CAAC,GAAG;AACxE,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,WAAW,CAAC,KAAK;AAC9E,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,GAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK;AACzE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE;SACd;;AAGL;;;AAGG;AACH,IAAA,gBAAgB,CAAC,OAAO,EAAA;AACpB,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;;AAIjG;;;;;;AAMG;AACH,IAAA,qBAAqB,CAAC,aAAqB,EAAE,WAAiB,EAAE,aAAmB,EAAA;AAC/E,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,gBAAA,aAAa,EAAE,aAAa;AAC5B,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,aAAa,EAAE;AAClB,aAAA,CAAC;YACF;;QAEJ,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;;IAGxE,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;;;AAIpF,IAAA,aAAa,CAAC,KAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,MAAM,YAAY,GAAU,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EACpG,iBAAiB,GAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAClD,KAAK,GAAiB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAC7C,GAAG,GAAmB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB;QACrC,IAAI,CAAC,aAAa,GAAG;AACjB,YAAA,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AACvC,YAAA,KAAK,EAAI,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO;SACrD;QACD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC;QACjG,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,EAAE,IAAI,CAAC;;;AAI7E;;;AAGG;AACI,IAAA,cAAc,CAAC,WAAW,EAAA;AAC7B,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC;YACxE;;AAEJ,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,oBAAoB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAG;AACrE,gBAAA,OAAO,CAAC,IAAI,CAAC,8HAA8H,CAAC;gBAC5I;;YAEJ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,sBAAsB,EAAE,WAAW,CAAC,oBAAoB,CAAC;AACtF,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAC9B,gBAAgB,EAAE,WAAW,CAAC;AACjC,aAAA,CAAC;;;AAIV;;;AAGG;AACH,IAAA,WAAW,CAAC,OAAO,EAAA;AACf,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,IAAI,MAAM;AAEV,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,YAAA,MAAM,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,IAAI,WAAW,GAAG,cAAc;;AACvE,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,MAAM,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,KAAK,IAAK,aAAa,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,IAAI,UAAU,GAAG,cAAc;;AAC7H,aAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AACvB,YAAA,MAAM,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,KAAK,IAAK,YAAY,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,IAAI,SAAS,GAAG,aAAa;;AAC1H,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,MAAM,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,IAAI,IAAI,UAAU,GAAG,EAAE;;aAC1D;YACH,MAAM,GAAG,OAAO;;AAEpB,QAAA,OAAO,MAAM;;AAGjB;;;;;AAKG;AACH,IAAA,oBAAoB,CAAC,aAAqB,EAAE,WAAiB,EAAE,aAAmB,EAAA;QAC9E,QAAQ,aAAa;AACjB,YAAA,KAAK,QAAQ;AACT,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC3B;AACJ,YAAA,KAAK,QAAQ;gBACT,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC;gBACxD;AACJ,YAAA,KAAK,YAAY;gBACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC1C,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnC;;;AAIZ;;AAEG;IACH,kBAAkB,GAAA;QACd,MAAM,IAAI,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAA;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;AAC7C,YAAA,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,EAAA;AACxB,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,SAAS,CAAC,MAAM,EAAE;AACtB,aAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,KAAK,EAAA;AAC3C,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtC,aAAC,CAAC;AACN,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAG,IAAI,CAAC,8BAA8B,EAAE;YACpC,IAAI,CAAC,8BAA8B,EAAE;;;AA/mBpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,yBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,iBAAiB,wGA8S2C,kBAAkB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oEA9S9E,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;AALf,SAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;gBACP,kBAAkB,CAAC,iBAAiB;AACvC,aAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YC9GL,EAAqB,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4BDwGT,kBAAkB,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;iFASjB,iBAAiB,EAAA,CAAA;cAX7B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAC,kBAAkB,CAAC,EAAA,QAAA,EACjB,cAAc,EAGb,SAAA,EAAA;AACP,oBAAA,kBAAkB,CAAmB,iBAAA;iBACxC,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yBAAA,EAAA;;sBAgTyB,MAAM;uBAAC,kBAAkB;;sBAAG;qBA3SnE,SAAS,EAAA,CAAA;kBAA/B,SAAS;mBAAC,UAAU;YACI,WAAW,EAAA,CAAA;kBAAnC,SAAS;mBAAC,YAAY;;kFAJd,iBAAiB,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AEjH9B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/calendar/src/calendar.props.ts","../../../../../projects/components/widgets/input/calendar/src/calendar.component.ts","../../../../../projects/components/widgets/input/calendar/src/calendar.component.html","../../../../../projects/components/widgets/input/calendar/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['calendartype', {value: 'basic', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['controls', {value: 'navigation, today, year, month, week, day', ...PROP_STRING}],\n ['dataset', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['eventallday', PROP_STRING],\n ['eventclass', PROP_STRING],\n ['eventend', PROP_STRING],\n ['eventstart', PROP_STRING],\n ['eventtitle', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showindevice', {displayType: 'inline-block', value: 'all', ...PROP_STRING}],\n ['view', PROP_STRING],\n ['selectionmode', PROP_STRING]\n ]\n );\n register('wm-calendar', props);\n};\n","import { WmComponentsModule } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport {AbstractI18nService, getClonedObject, getSessionStorageItem, isMobile} from '@wm/core';\n\nimport {\n APPLY_STYLES_TYPE,\n createArrayFrom,\n getEvaluatedData,\n IRedrawableComponent,\n provideAsWidgetRef,\n StylableComponent,\n styler\n} from '@wm/components/base';\n\nimport {registerProps} from './calendar.props';\nimport {capitalize, clone, each, extend, get, includes, isDate, isEmpty, isObject, mapKeys} from \"lodash-es\";\n\ndeclare const $;\nimport * as momentLib from 'moment';\nconst moment = momentLib.default || window['moment'];\nimport {Calendar} from '@fullcalendar/core';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport listPlugin from '@fullcalendar/list'\nimport interactionPlugin from '@fullcalendar/interaction';\nimport allLocales from '@fullcalendar/core/locales-all';\n\nimport {_WM_APP_PROJECT} from '@wm/core';\n\nconst DEFAULT_CLS = 'app-calendar';\nconst dateFormats = ['yyyy-MM-dd', 'yyyy-M-dd', 'M-dd-yyyy', 'MM-dd-yy', 'yyyy, dd MMMM', 'yyyy, MMM dd', 'MM/dd/yyyy', 'M/d/yyyy', 'EEE, dd MMM yyyy', 'EEE MMM dd yyyy', 'EEEE, MMMM dd, yyyy', 'timestamp'];\nconst defaultHeaderOptions = {\n start: 'prev next today',\n center: 'title',\n end: 'dayGridMonth dayGridWeek dayGridDay'\n};\nconst VIEW_TYPES = {\n BASIC: 'basic',\n AGENDA: 'agenda',\n LIST: 'list'\n};\nconst BUTTON_TEXT = {\n YEAR: 'Year',\n MONTH: 'Month',\n WEEK: 'Week',\n DAY: 'Day',\n TODAY: 'Today'\n};\nconst SELECTION_MODES = {\n NONE: 'none',\n SINGLE: 'single',\n MULTIPLE: 'multiple'\n};\nconst NEXT_DAY_THRESHOLD = {\n START: '00:00',\n END: '24:00'\n};\nconst getEventMomentValue = (value, key) => {\n let isDate = false;\n\n dateFormats.forEach((format) => {\n // moment supports uppercase formats\n if (moment(value, format.toUpperCase(), true).isValid()) {\n isDate = true;\n return false;\n }\n });\n\n // if the value is date then for end date the value should be end of the day as the calendar is approximating it to the start.\n if (isDate && key === 'end') {\n return moment(value).endOf('day');\n }\n\n return moment(value);\n};\nconst getUTCDateTime = (dateObj) => {\n dateObj = moment(dateObj);\n const year = dateObj.format('YYYY'),\n // javascript starts the month count from '0' where as moment returns the human count\n month = dateObj.format('MM') - 1,\n day = dateObj.format('DD'),\n hours = dateObj.format('HH'),\n minutes = dateObj.format('mm'),\n seconds = dateObj.format('ss');\n return new Date(year, month, day, hours, minutes, seconds);\n};\nconst WIDGET_CONFIG = {widgetType: 'wm-calendar', hostClass: DEFAULT_CLS};\nconst dateFormat = 'YYYY/MM/DD';\n\n@Component({\n standalone: true,\n imports: [WmComponentsModule],\n selector: '[wmCalendar]',\n templateUrl: './calendar.component.html',\n styleUrls: [],\n providers: [\n provideAsWidgetRef(CalendarComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class CalendarComponent extends StylableComponent implements AfterContentInit, AfterViewInit, OnInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n // The calendar element reference\n @ViewChild('calendar') _calendar: ElementRef;\n @ViewChild('datepicker') _datepicker: ElementRef;\n\n public selecteddates: any;\n public selecteddata: any;\n public currentview: object;\n public dataset: any;\n public calendartype;\n public controls = 'navigation, today, year, month, week, day';\n public datavalue;\n public eventtitle;\n public eventstart;\n public eventend;\n public eventallday;\n public eventclass;\n\n private eventSources: Array<any> = [];\n\n private dataSetEvents = {\n events: []\n };\n private oldData;\n // map the fullcalendar Element rendered\n private $fullCalendar;\n // model to the mobile calendar\n private proxyModel;\n private eventData;\n private events;\n private changesStack = [];\n\n // calendarOptions to the calendar\n private calendarOptions: any = {\n calendar: {\n height: 600,\n eventSources: this.eventSources,\n editable: true,\n locale: getSessionStorageItem('selectedLocale') || 'en',\n selectable: false,\n longPressDelay: isMobile() ? 1 : 1000,\n headerToolbar: defaultHeaderOptions,\n nextDayThreshold: NEXT_DAY_THRESHOLD,\n views: {\n month: {\n dayMaxEventsRow: true\n }\n },\n unselectAuto: false,\n eventDrop: this.eventDrop.bind(this),\n eventResizeStart: this.onEventChangeStart.bind(this),\n eventDragStart: this.onEventChangeStart.bind(this),\n eventResize: this.eventResize.bind(this),\n eventClick: this.eventClick.bind(this),\n select: this.select.bind(this),\n eventDidMount: this.eventDidMount.bind(this),\n viewDidMount: this.viewDidMount.bind(this),\n datesSet: this.datesSet.bind(this),\n dateClick: this.dateClick.bind(this)\n }\n };\n public view: string;\n private dayClass: Array<any> = [];\n private cancelLocaleChangeSubscription;\n\n // this function selects the default date given for the calendar\n selectDate() {\n let start, end;\n // checks if datavalue is an object and not a Date object\n if (isObject(this.datavalue) && !isDate(this.datavalue)) {\n // @ts-ignore\n start = moment(this.datavalue.start);\n // @ts-ignore\n end = moment(this.datavalue.end);\n } else {\n start = moment(this.datavalue);\n end = moment(this.datavalue).add(1, 'day').startOf('day');\n }\n this.$fullCalendar.gotoDate( (moment(start) as any)._d); // after selecting the date go to the date.\n\n this.$fullCalendar.select(start.valueOf(), end.valueOf());\n }\n\n // changes the calendar view to the default date given for the calendar.\n public gotoDate() {\n this.$fullCalendar.gotoDate( (moment(this.datavalue) as any)._d);\n }\n\n // this function takes the calendar view to the a year ahead\n public gotoNextYear() {\n this.$fullCalendar.nextYear();\n }\n\n // this function takes the calendar view to the a year before\n public gotoPrevYear() {\n this.$fullCalendar.prevYear();\n }\n\n /**\n * this function takes the calendar view to the specified month\n * @param monthVal, 1-12 value of month\n */\n public gotoMonth(monthVal) {\n let presentDay = this.$fullCalendar.getDate();\n const presentMonthVal = presentDay.getMonth();\n presentDay = moment(presentDay);\n if (presentMonthVal < monthVal) {\n this.$fullCalendar.gotoDate(presentDay.add(monthVal - presentMonthVal - 1, 'M').valueOf());\n } else {\n this.$fullCalendar.gotoDate(presentDay.subtract( presentMonthVal - monthVal + 1, 'M').valueOf());\n }\n }\n\n // this function takes the calendar view to the a month ahead\n public gotoNextMonth() {\n const presentDay = moment(this.$fullCalendar.getDate());\n this.$fullCalendar.gotoDate(presentDay.add(1, 'M').valueOf());\n }\n\n // this function takes the calendar view to the a month before\n public gotoPrevMonth() {\n const presentDay = moment(this.$fullCalendar.getDate());\n this.$fullCalendar.gotoDate(presentDay.subtract(1, 'M').valueOf());\n }\n\n\n // this function re-renders the events assigned to the calendar.\n public rerenderEvents() {\n this.$fullCalendar.render();\n }\n\n private setSelectedData(start, end) {\n let dataset = this.dataset;\n if (!dataset) {\n return;\n }\n\n const filteredDates = [];\n const eventStartKey = this.eventstart || 'start';\n const eventEndKey = this.eventend || 'end';\n const startDate = moment(new Date(start)).format('MM/DD/YYYY');\n const endDate = moment(new Date(end)).subtract(1, 'days').format('MM/DD/YYYY');\n\n dataset = dataset.data || dataset;\n dataset.forEach((value) => {\n if (!value[eventStartKey]) {\n return;\n }\n const eventStartDate = moment(new Date(value[eventStartKey])).format('MM/DD/YYYY');\n const eventEndDate = moment(new Date(value[eventEndKey] || value[eventStartKey])).format('MM/DD/YYYY');\n const eventExists = moment(eventStartDate).isSameOrAfter(startDate) && moment(eventEndDate).isSameOrBefore(endDate);\n if (eventExists) {\n filteredDates.push(value);\n }\n });\n return filteredDates;\n }\n\n private eventDrop(eventDropInfo) {\n let newDataObj = this.convertEventObjForOldAndNewData(eventDropInfo.event);\n let oldDataObj = this.convertEventObjForOldAndNewData(eventDropInfo.oldEvent);\n this.invokeEventCallback('eventdrop', {$event: eventDropInfo.jsEvent, $newData: newDataObj, $oldData: oldDataObj, $delta: eventDropInfo.delta, $revertFunc: eventDropInfo.revert, $ui: {}, $view: eventDropInfo.view});\n }\n\n // Returns the default date when the datavalue is provided\n getDefaultDate() {\n if (this.datavalue) {\n return new Date(this.datavalue);\n }\n }\n\n getDefaultOptions() {\n return this.calendarOptions;\n }\n\n getLib() {\n return 'fullcalendar';\n }\n\n private select($selectionInfo) {\n this.selecteddates = {start: getUTCDateTime($selectionInfo.start), end: getUTCDateTime($selectionInfo.end)};\n this.selecteddata = this.setSelectedData($selectionInfo.start, $selectionInfo.end);\n this.invokeEventCallback('select', {$start: $selectionInfo.start.valueOf(), $end: $selectionInfo.end.valueOf(), $view: $selectionInfo.view, $data: this.selecteddata});\n }\n\n /**\n * this functions unselects all the selections in calendar\n */\n public unselect() {\n this.$fullCalendar.unselect();\n }\n\n /**\n * this function is to add extendedProps data to the data object.\n * this is done for backward compatibility\n * @param eventObj event object as per new version (v5)\n * @returns _eventMetadata event object as per the old version (v3)\n */\n private convertEventObj(eventObj) {\n if (!eventObj.extendedProps._eventMetadata) {\n return eventObj;\n }\n const _eventMetadata = eventObj.extendedProps._eventMetadata;\n Object.setPrototypeOf(_eventMetadata, eventObj);\n return _eventMetadata;\n }\n\n /**\n * this function is to add extendedProps data to the data object exluding start end title allDay objects if the key name matches.\n * * this is done for backward compatibility\n * @param eventObj event object as per new version (v5)\n * @returns data event object as per the old version (v3)\n */\n private convertEventObjForOldAndNewData(eventObj) {\n const _eventMetadata = eventObj.extendedProps;\n extend(eventObj, _eventMetadata);\n return eventObj;\n }\n\n private eventResize(eventResizeInfo) {\n let newDataObj = this.convertEventObjForOldAndNewData(eventResizeInfo.event);\n let oldDataObj = this.convertEventObjForOldAndNewData(eventResizeInfo.oldEvent);\n this.invokeEventCallback('eventresize', {$event: eventResizeInfo.jsEvent, $newData: newDataObj, $oldData: oldDataObj, $delta: eventResizeInfo.delta, $revertFunc: eventResizeInfo.revert, $ui: {}, $view: eventResizeInfo.view});\n }\n\n private onEventChangeStart(event) {\n this.oldData = getClonedObject(event);\n }\n\n private eventClick(eventClickInfo) {\n let eventObj = this.convertEventObj(eventClickInfo.event);\n this.invokeEventCallback('eventclick', {$event: eventClickInfo.jsEvent, $data: eventObj, $view: eventClickInfo.view});\n }\n\n private eventDidMount(event) {\n let eventObj = this.convertEventObj(event.event);\n if (this.calendartype === VIEW_TYPES.LIST) {\n this.$element.find('.fc-list-table').addClass('table');\n }\n this.invokeEventCallback('eventrender', {$event: event.el, $data: eventObj, $view: event.view});\n }\n\n private viewDidMount($view) {\n if (this.calendartype === VIEW_TYPES.LIST) {\n this.$element.find('.fc-list-table').addClass('table');\n }\n this.invokeEventCallback('viewrender', {$view: $view});\n }\n\n /**\n * This function gets called when the view of the calendar changes.\n * @param data contains the start end data of the calendar view.\n */\n private datesSet(data) {\n this.currentview = {start: moment(data.start).format(\"YYYY-MM-DD\"), end: moment(data.end).format(\"YYYY-MM-DD\")};\n }\n\n private dateClick($info) {\n const dateInfo = getUTCDateTime($info.date).valueOf();\n this.invokeEventCallback('dateclick', {$dateInfo: dateInfo});\n }\n\n // update the calendar header options once the controls changes\n private updateCalendarHeaderOptions() {\n const ctrls = this.controls, viewType = this.calendartype,\n regEx = new RegExp('\\\\bday\\\\b', 'g');\n let left = '', right = '';\n if (ctrls && viewType) {\n if (includes(ctrls, 'navigation')) {\n left += ' prev next';\n }\n\n if (includes(ctrls, 'today')) {\n left += ' today';\n }\n\n if (includes(ctrls, 'year')) {\n right += (viewType === VIEW_TYPES.LIST) ? 'listYear' : '';\n }\n\n if (includes(ctrls, 'month')) {\n right += (viewType === VIEW_TYPES.LIST) ? ' listMonth' : ' dayGridMonth';\n }\n\n if (includes(ctrls, 'week')) {\n right += (viewType === VIEW_TYPES.BASIC) ? ' dayGridWeek' : (viewType === VIEW_TYPES.LIST) ? ' listWeek' : ' timeGridWeek';\n }\n\n if (regEx.test(ctrls)) {\n right += (viewType === VIEW_TYPES.BASIC) ? ' dayGridDay' : (viewType === VIEW_TYPES.LIST) ? ' listDay' : ' timeGridDay';\n }\n if (left.charAt(0) === ' ') {\n left = left.substring(1);\n }\n if (right.charAt(0) === ' ') {\n right = right.substring(1);\n }\n extend(this.calendarOptions.calendar.headerToolbar, {'start': left, 'end': right});\n }\n }\n\n constructor(inj: Injector, i18nService: AbstractI18nService, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n this.eventSources.push(this.dataSetEvents);\n let FullCalendar = window['FullCalendar'] ? window['FullCalendar'] : Calendar;\n if (!FullCalendar.__wm_locale_initialized) {\n i18nService.initCalendarLocale();\n FullCalendar.__wm_locale_initialized = true;\n }\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (libLocale) => {\n this.setLocale();\n this.applyCalendarOptions('option', 'locale', libLocale.fullCalendar || 'en');\n this.redraw();\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['height']);\n this.setLocale();\n }\n\n onStyleChange(key, nv, ov?) {\n super.onStyleChange(key, nv, ov);\n if (key === 'height') {\n this.calendarOptions.calendar.height = this.calculateHeight(nv);\n this.updateCalendarOptions('option', 'height', this.calendarOptions.calendar.height);\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n super.onPropertyChange(key, nv, ov);\n switch (key) {\n case 'selectionmode':\n if (nv !== SELECTION_MODES.NONE) {\n this.calendarOptions.calendar.selectable = true;\n this.updateCalendarOptions('option', 'selectable', true);\n if (nv === SELECTION_MODES.SINGLE) {\n this.calendarOptions.calendar.selectConstraint = {\n startTime: '00:00',\n endTime: '24:00'\n };\n this.updateCalendarOptions('option', 'selectConstraint', this.calendarOptions.calendar.selectConstraint);\n } else {\n this.updateCalendarOptions('option', 'selectConstraint', {});\n }\n } else {\n this.calendarOptions.calendar.selectable = false;\n this.updateCalendarOptions('option', 'selectable', false);\n }\n break;\n case 'view':\n if (nv !== 'month' || this.calendartype === VIEW_TYPES.LIST) {\n this.calendarOptions.calendar.defaultView = this.calendartype + capitalize(nv);\n } else {\n this.calendarOptions.calendar.defaultView = nv;\n }\n this.updateCalendarOptions('changeView', this.calendarOptions.calendar.defaultView);\n break;\n case 'calendartype':\n this.calendartype = nv || 'dayGrid';\n case 'controls':\n this.updateCalendarHeaderOptions();\n break;\n case 'dataset':\n let dataSet;\n const self = this;\n this.dataset = nv;\n dataSet = createArrayFrom(getClonedObject(nv));\n dataSet = this.constructCalendarDataset(dataSet);\n this.dataSetEvents.events = dataSet.filter((event) => {\n event.start = event.start || event.end;\n if (event.start) {\n return true;\n }\n });\n\n this.renderEventDataSet();\n break;\n case 'show':\n this.$fullCalendar?.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n }\n }\n\n // to calculate the height for the event limit and parsing the value when it is percentage based.\n private calculateHeight(height): number {\n const $parent = $(this.nativeElement).parent(),\n elHeight = height || '650px';\n\n let parentHeight: any = $parent.css('height'),\n computedHeight: number;\n\n if (includes(elHeight, '%')) {\n if (includes(parentHeight, '%')) {\n parentHeight = $parent.height();\n }\n computedHeight = (parseInt(parentHeight, 10) * Number(elHeight.replace(/\\%/g, ''))) / 100;\n } else {\n computedHeight = parseInt(elHeight, 10);\n }\n this.calendarOptions.calendar.views.month.eventLimit = parseInt('' + computedHeight / 200, 10) + 1;\n return computedHeight;\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n const calendarEl = this._calendar.nativeElement;\n let FullCalendar:any ;\n if(window['FullCalendar']) FullCalendar = window['FullCalendar'].Calendar \n else {\n FullCalendar = Calendar;\n this.calendarOptions.calendar = {...this.calendarOptions.calendar, plugins: [dayGridPlugin, timeGridPlugin, listPlugin,listPlugin, interactionPlugin], locales: allLocales}\n }\n\n const calendar = new FullCalendar(calendarEl, this.calendarOptions.calendar);\n this.$fullCalendar = calendar;\n this.invokeEventCallback('beforerender', {'$event' : {}});\n calendar.render();\n\n // if the changes are already stacked before calendar renders then execute them when needed\n if (this.changesStack.length) {\n this.changesStack.forEach((changeObj) => {\n this.applyCalendarOptions(changeObj.operationType, changeObj.argumentKey, changeObj.argumentValue);\n });\n this.changesStack.length = 0;\n }\n $(\".fc-prev-button\").attr(\"aria-label\", \"prev\");\n $(\".fc-next-button\").attr(\"aria-label\", \"next\");\n $(\".fc-today-button\").attr(\"aria-label\", \"today\");\n\n //WMS-22412 : change calender's view based on the configuration set from studio\n setTimeout(() => {\n this.$fullCalendar.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n },50);\n }\n\n // constructs the calendar dataset by mapping the eventstart, eventend, eventtitle etc.,\n private constructCalendarDataset(eventSource) {\n const properties = {\n title: this.eventtitle || 'title',\n allDay: this.eventallday || 'allday',\n start: this.eventstart || 'start',\n end: this.eventend || 'end',\n className: this.eventclass || 'className'\n };\n\n eventSource.forEach((obj) => {\n obj._eventMetadata = clone(obj);\n if (isEmpty(obj._eventMetadata.url)) {\n delete obj._eventMetadata.url;\n }\n if (isEmpty(obj.url)) {\n delete obj.url;\n }\n\n mapKeys(properties, (value, key) => {\n let objVal;\n if (key === 'title') {\n objVal = getEvaluatedData(obj, {expression: value}, this.viewParent);\n } else if (key === 'allDay') {\n objVal = !!get(obj, value);\n } else {\n objVal = get(obj, value);\n }\n if (!objVal) {\n return;\n }\n obj[key] = objVal;\n });\n });\n return eventSource;\n }\n\n private setLocale() {\n const year = get(this.appLocale, 'LABEL_CALENDAR_YEAR') || BUTTON_TEXT.YEAR;\n const month = get(this.appLocale, 'LABEL_CALENDAR_MONTH') || BUTTON_TEXT.MONTH;\n const week = get(this.appLocale, 'LABEL_CALENDAR_WEEK') || BUTTON_TEXT.WEEK;\n const day = get(this.appLocale, 'LABEL_CALENDAR_DAY') || BUTTON_TEXT.DAY;\n const today = get(this.appLocale, 'LABEL_CALENDAR_TODAY') || BUTTON_TEXT.TODAY;\n this.calendarOptions.calendar.buttonText = { year, month, week, day, today,\n 'listYear': year,\n 'listMonth': month,\n 'listWeek': week,\n 'listDay': day\n };\n }\n\n /**\n * override the default calendar options with the newSet of options\n * @param options\n */\n overrideDefaults(options) {\n if (isObject(options)) {\n Object.entries(options).map(option => this.$fullCalendar.setOption(option[0], option[1]));\n }\n }\n\n /**\n * if the operations are performed before the calendar renders, the changes are pushed into changesStack and will be executed after the calendar gets rendered\n * if the calendar is already rendered, then the specific operation will be performed according to the operation type\n * @param operationType\n * @param argumentKey\n * @param argumentValue\n */\n updateCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void {//\n if (!this.$fullCalendar) {\n this.changesStack.push({\n operationType: operationType,\n argumentKey: argumentKey,\n argumentValue: argumentValue\n });\n return;\n }\n this.applyCalendarOptions(operationType, argumentKey, argumentValue);\n }\n\n redraw() {\n this.updateCalendarOptions('render');\n this.$fullCalendar?.changeView(this.getViewType(this.view ? this.view : 'dayGridMonth'));\n }\n\n // on date change invoke the select event, and if date has event on it then invoke the event click.\n private onValueChange(value: Date): void {\n this.proxyModel = value;\n const selectedDate = this.proxyModel && moment(this.proxyModel).startOf('day').format(dateFormat),\n selectedEventData = this.eventData[selectedDate],\n start = moment(this.proxyModel),\n end = moment(this.proxyModel).endOf('day');\n this.selecteddata = selectedEventData;\n this.selecteddates = {\n 'start': moment(selectedDate).valueOf(),\n 'end' : moment(selectedDate).endOf('day').valueOf()\n };\n this.calendarOptions.calendar.select(start.valueOf(), end.valueOf(), {}, this, selectedEventData);\n if (selectedEventData) {\n this.calendarOptions.calendar.eventClick(selectedEventData, {}, this);\n }\n }\n\n /**\n * This function will receive an object containing source of calendar, apikey and calendarId and will integrate the respective calendar with fullcalendar.\n * @param eventObject\n */\n public addEventSource(eventObject) {\n if (isEmpty(eventObject)) {\n console.warn('addEventSource method requires an object as a parameter.');\n return;\n }\n if (eventObject.source === 'google') {\n if (!eventObject.googleCalendarApiKey || !eventObject.googleCalendarId ) {\n console.warn('For google calendar integration, \\'googleCalendarApiKey\\' and \\'googleCalendarId\\' should be passed in the parameter object.');\n return;\n }\n this.$fullCalendar.setOption('googleCalendarApiKey', eventObject.googleCalendarApiKey);\n this.$fullCalendar.addEventSource({\n googleCalendarId: eventObject.googleCalendarId\n });\n }\n }\n\n /**\n * get the viewTypeKey according to the calendarType and viewType selected\n * @param viewKey\n */\n getViewType(viewKey) {\n const calendarType = this.calendartype;\n const view = this.view;\n let result;\n\n if (view === 'month') {\n result = (calendarType === VIEW_TYPES.LIST) ? 'listMonth' : 'dayGridMonth';\n } else if (view === 'week') {\n result = (calendarType === VIEW_TYPES.BASIC) ? 'dayGridWeek' : (calendarType === VIEW_TYPES.LIST) ? 'listWeek' : 'timeGridWeek';\n } else if (view === 'day') {\n result = (calendarType === VIEW_TYPES.BASIC) ? 'dayGridDay' : (calendarType === VIEW_TYPES.LIST) ? 'listDay' : 'timeGridDay';\n } else if (view === 'year') {\n result = (calendarType === VIEW_TYPES.LIST) ? 'listYear' : '';\n } else {\n result = viewKey;\n }\n return result;\n }\n\n /**\n * @param operationType\n * @param argumentKey\n * @param argumentValue\n * Handle various operations like Rendering Calendar, changing the calendar viewType, setting the calendarOptions according to the operationType.\n */\n applyCalendarOptions(operationType: string, argumentKey?: any, argumentValue?: any): void {\n switch (operationType) {\n case 'render':\n this.$fullCalendar.render();\n break;\n case 'option':\n this.$fullCalendar.setOption(argumentKey, argumentValue);\n break;\n case 'changeView':\n const view = this.getViewType(argumentKey);\n this.$fullCalendar.changeView(view);\n break;\n }\n }\n\n /**\n * Adds the new eventsDataSet to the calendar object with addEvent Method and re-renders the calendar\n */\n renderEventDataSet() {\n const self = this;\n this.$fullCalendar.batchRendering(function() {\n const events = self.$fullCalendar.getEvents();\n each(events, function (event) {\n const eventData = self.$fullCalendar.getEventById(event.id);\n eventData.remove();\n });\n each(self.dataSetEvents.events, function (event) {\n self.$fullCalendar.addEvent(event);\n });\n });\n }\n\n ngOnDestroy() {\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n }\n}\n","<div #calendar></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.11.0-rc.
|
|
3
|
+
"version": "11.11.0-rc.6113",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.11.0-rc.
|
|
9
|
+
"version": "11.11.0-rc.6113",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.11.0-rc.
|
|
3
|
+
"version": "11.11.0-rc.6113",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.11.0-rc.
|
|
9
|
+
"version": "11.11.0-rc.6113",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package.json
CHANGED
|
@@ -3092,6 +3092,7 @@
|
|
|
3092
3092
|
loadMomentTimeZoneBundle(locale, compInstance) {
|
|
3093
3093
|
return new Promise(resolve => {
|
|
3094
3094
|
const _cdnUrl = i1._WM_APP_PROJECT.cdnUrl || i1._WM_APP_PROJECT.ngDest;
|
|
3095
|
+
window['moment'] = moment; //moment-timezone-with-data.js need moment as require('moment') to be available in window
|
|
3095
3096
|
const path = _cdnUrl + `locales/moment-timezone/moment-timezone-with-data.js`;
|
|
3096
3097
|
i1.loadScripts([path], true).then(() => {
|
|
3097
3098
|
/**
|
|
@@ -134,6 +134,7 @@ export class I18nServiceImpl extends AbstractI18nService {
|
|
|
134
134
|
loadMomentTimeZoneBundle(locale, compInstance) {
|
|
135
135
|
return new Promise(resolve => {
|
|
136
136
|
const _cdnUrl = _WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest;
|
|
137
|
+
window['moment'] = moment; //moment-timezone-with-data.js need moment as require('moment') to be available in window
|
|
137
138
|
const path = _cdnUrl + `locales/moment-timezone/moment-timezone-with-data.js`;
|
|
138
139
|
loadScripts([path], true).then(() => {
|
|
139
140
|
/**
|
|
@@ -298,4 +299,4 @@ export class I18nServiceImpl extends AbstractI18nService {
|
|
|
298
299
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nServiceImpl, [{
|
|
299
300
|
type: Injectable
|
|
300
301
|
}], () => [{ type: i1.HttpClient }, { type: i2.BsLocaleService }, { type: i3.AppDefaults }, { type: i0.Injector }], null); })();
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLEdBQUcsRUFDTixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUMsSUFBSSxFQUFXLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTdGLE9BQU8sS0FBSyxTQUFTLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBQzdELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJELE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFB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QUFDLFVBQVMsTUFBTTtZQUNoRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0scUJBQXFCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBTTtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sZUFBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUcsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0wsQ0FBQztnSEF4VVEsZUFBZTt1RUFBZixlQUFlLFdBQWYsZUFBZTs7aUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBkZWZpbmVMb2NhbGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuaW1wb3J0IHsgQnNMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBpc01vYmlsZSxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICByZXBsYWNlLFxuICAgIHNldENTUyxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgQXBwXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHtmaW5kLCBmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBpbnRlcnNlY3Rpb24sIGlzT2JqZWN0LCBtYXAsIHRvTG93ZXJ9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuaW1wb3J0ICogYXMgbW9tZW50TGliIGZyb20gJ21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TGliLmRlZmF1bHQgfHwgd2luZG93Wydtb21lbnQnXTtcblxuY29uc3QgQVBQX0xPQ0FMRV9ST09UX1BBVEggPSAncmVzb3VyY2VzL2kxOG4nO1xuY29uc3QgUlRMX0xBTkdVQUdFX0NPREVTID0gWydhcicsICdhci0wMDEnLCAnYXItYWUnLCAnYXItYmgnLCAnYXItZHonLCAnYXItZWcnLCAnYXItaXEnLCAnYXItam8nLCAnYXIta3cnLCAnYXItbGInLCAnYXItbHknLFxuICAgICdhci1tYScsICdhci1vbScsICdhci1xYScsICdhci1zYScsICdhci1zZCcsICdhci1zeScsICdhci10bicsICdhci15ZScsICdhcmMnLCAnYmNjJywgJ2JxaScsICdja2InLCAnZHYnLCAnZmEnLCAnZ2xrJyxcbiAgICAnaGUnLCAna3UnLCAnbXpuJywgJ3BuYicsICdwcycsICdzZCcsICd1ZycsICd1cicsICd5aSddO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2VJbXBsIGV4dGVuZHMgQWJzdHJhY3RJMThuU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0U3VwcG9ydGVkTG9jYWxlID0gJ2VuJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcExvY2FsZTogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlZmFiTG9jYWxlOiBNYXA8U3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgbWVzc2FnZXM6IGFueTtcbiAgICBwcml2YXRlIF9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGZvcm1hdHNCeUxvY2FsZSA9IHsndGltZXpvbmUnOiAnJywgJ251bWJlcic6ICcnfTtcbiAgICBwcml2YXRlIGdldCBhcHAoKSB7IHJldHVybiB0aGlzLmluai5nZXQoQXBwKSB9O1xuXG4gICAgcHJpdmF0ZSBidW5kbGVMb2FkZWQ6e1trZXk6c3RyaW5nXSA6IGFueX0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlICRodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGJzTG9jYWxlU2VydmljZTogQnNMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgcHJpdmF0ZSBpbmo6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0ge307XG4gICAgICAgIHRoaXMucHJlZmFiTG9jYWxlID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlRGlyZWN0aW9uKCkge1xuICAgICAgICBsZXQgZGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XG4gICAgICAgIGlmIChSVExfTEFOR1VBR0VfQ09ERVMuaW5jbHVkZXModGhpcy5zZWxlY3RlZExvY2FsZSkpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdydGwnO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q1NTKGRvY3VtZW50LmJvZHksICdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLmFwcExvY2FsZSwgdGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGVkTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0U3VwcG9ydGVkTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFwcExvY2FsZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZWZhYkxvY2FsZUJ1bmRsZShwcmVmYWJOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMucHJlZmFiTG9jYWxlLmhhcyhwcmVmYWJOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIE9iamVjdC5jcmVhdGUodGhpcy5hcHBMb2NhbGUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmYWJMb2NhbGUuZ2V0KHByZWZhYk5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0ZW5kUHJlZmFiTWVzc2FnZXMobWVzc2FnZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIW1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyhtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykuZm9yRWFjaCgocHJlZmFiTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBsZXQgYnVuZGxlID0gdGhpcy5wcmVmYWJMb2NhbGUuZ2V0KHByZWZhYk5hbWUpO1xuICAgICAgICAgICAgaWYgKCFidW5kbGUpIHtcbiAgICAgICAgICAgICAgICBidW5kbGUgPSBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZWZhYkxvY2FsZS5zZXQocHJlZmFiTmFtZSwgYnVuZGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVuZGxlLCBtZXNzYWdlcy5wcmVmYWJNZXNzYWdlc1twcmVmYWJOYW1lXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0ZW5kTWVzc2FnZXMobWVzc2FnZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWVzc2FnZXMsIG1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRSZXNvdXJjZShwYXRoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KHBhdGgpXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBlcnJvciBsb2FkaW5nIGxvY2FsZSByZXNvdXJjZSBmcm9tICR7cGF0aH1gKTtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBcHBMb2NhbGVCdW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoID0gX1dNX0FQUF9QUk9KRUNULmlzUHJldmlldyB8fCAod2luZG93IGFzIGFueSkuX1dNX0FQUF9QUk9QRVJUSUVTPy5sYW5ndWFnZUJ1bmRsZVNvdXJjZXMgPT09ICdEWU5BTUlDJyA/ICcnIDogIF9XTV9BUFBfUFJPSkVDVC5jZG5VcmxcbiAgICAgICAgdGhpcy5sb2FkUmVzb3VyY2UoIGJhc2VQYXRoICsgYCR7QVBQX0xPQ0FMRV9ST09UX1BBVEh9LyR7dGhpcy5zZWxlY3RlZExvY2FsZX0uanNvbmApXG4gICAgICAgICAgICAudGhlbihidW5kbGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kTWVzc2FnZXMoYnVuZGxlLm1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuZFByZWZhYk1lc3NhZ2VzKGJ1bmRsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBEZWZhdWx0cy5zZXRGb3JtYXRzKGJ1bmRsZS5mb3JtYXRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRNb21lbnRMb2NhbGVCdW5kbGUobW9tZW50TG9jYWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX1dNX0FQUF9QUk9KRUNULmlzUHJldmlldykge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke19XTV9BUFBfUFJPSkVDVC5jZG5Vcmx9bG9jYWxlcy9tb21lbnQvJHttb21lbnRMb2NhbGV9LmpzYDtcbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdEZvck1vbWVudChtb21lbnRMb2NhbGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgdGhpcy5sb2FkU2NyaXB0Rm9yTW9tZW50KG1vbWVudExvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcHJvdGVjdGVkIGxvYWRTY3JpcHRGb3JNb21lbnQobW9tZW50TG9jYWxlKXtcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSk7XG4gICAgICAgICAgICAvLyBGb3Igbmd4IGJvb3RzdHJhcCBsb2NhbGUsIGdldCB0aGUgY29uZmlnIGZyb20gc2NyaXB0IGFuZCBhcHBseSBsb2NhbGVcbiAgICAgICAgICAgIC8vIG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSkgd2lsbCByZXR1cm4gbW9tZW50IGxvY2FsZSBpbnN0YW5jZS4gX2NvbmZpZyBpbnNpZGUgd2lsbCBoYXZlIGFjdHVhbCBjb25maWdcbiAgICAgICAgICAgIGxldCBfY29uZmlnOiBhbnkgPSBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpO1xuICAgICAgICAgICAgX2NvbmZpZyA9IF9jb25maWcgJiYgX2NvbmZpZy5fY29uZmlnO1xuICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHRoaXMuc2VsZWN0ZWRMb2NhbGUsIF9jb25maWcpO1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShhbmdMb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9hbmd1bGFyL2dsb2JhbC8ke2FuZ0xvY2FsZX0uanNgO1xuXG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudFRpbWVab25lQnVuZGxlKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9tb21lbnQtdGltZXpvbmUvbW9tZW50LXRpbWV6b25lLXdpdGgtZGF0YS5qc2A7XG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBJZiBsb2NhbGUgaXMgcHJvdmlkZWQgaW4gdGhlIGZvcm0gb2Ygb2Zmc2V0IGFuZCBub3QgdGltZXpvbmUgbmFtZSwgZGVkdWNlIHRoZSBuYW1lLlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBhcyBHTVQrOSwgbmFtZSB3aWxsIGJlIGRlZHVjZWQgYXMgQXNpYS9Ub2t5b1xuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZU9iaiA9IGxvY2FsZTtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVPYmpbJ3RpbWV6b25lJ107XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlSW5kZXggPSBsb2NhbGUuaW5kZXhPZignKycpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5zdWJzdHIobG9jYWxlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZU9ialsndGltZXpvbmUnXSA9IGZpbmQoKG1vbWVudCBhcyBhbnkpLnR6Lm5hbWVzKCksICh0aW1lem9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT09IChtb21lbnQgYXMgYW55KS50eih0aW1lem9uZU5hbWUpLmZvcm1hdCgnWicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKG1vbWVudCBhcyBhbnkpLnR6LnNldERlZmF1bHQobG9jYWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVEYXRhID0gIGNvbXBJbnN0YW5jZSAmJiBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlID8gY29tcEluc3RhbmNlLmZvcm1hdHNCeUxvY2FsZSA6IHRoaXMuZm9ybWF0c0J5TG9jYWxlO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obG9jYWxlRGF0YSwgbG9jYWxlT2JqKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCByZXNvbHZlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRMb2NhbGVCdW5kbGVzKGxpYkxvY2FsZSkge1xuICAgICAgICBpZiAobGliTG9jYWxlLm1vbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9tZW50TG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5tb21lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGliTG9jYWxlLmZ1bGxDYWxlbmRhciAmJiB3aW5kb3dbJ0Z1bGxDYWxlbmRhciddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUxvY2FsZUNoYW5nZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5hbmd1bGFyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBMb2NhbGVCdW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShsaWJMb2NhbGUuYW5ndWxhcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRpbWV6b25lKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICB0aGlzLmxvYWRNb21lbnRUaW1lWm9uZUJ1bmRsZShsb2NhbGUsIGNvbXBJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpbWV6b25lKGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgY29uc3QgcGFnZUNvbmZpZyA9IGdldCh0aGlzLmFwcCwgJ2FjdGl2ZVBhZ2UuZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGNvbnN0IGNvbXBDb25maWcgPSBnZXQoY29tcEluc3RhbmNlLCAnZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGlmIChjb21wQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcENvbmZpZztcbiAgICAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFnZUNvbmZpZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZVsndGltZXpvbmUnXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtYXRzQnlMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKSB7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIHByb3BhZ2F0ZWQgZnJvbSB0aGUgc2VsZWN0IG9yIGFueSBzdWNoIHdpZGdldFxuICAgICAgICBpZiAoaXNPYmplY3QobG9jYWxlKSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLmRhdGF2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpYkxvY2FsZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXNbbG9jYWxlXTtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgaWYgKCFpbmNsdWRlcyhzdXBwb3J0ZWRMb2NhbGUsIGxvY2FsZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYWxlIHx8IGxvY2FsZSA9PT0gdGhpcy5zZWxlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScsIGxvY2FsZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGxvY2FsZTtcblxuICAgICAgICAvLyByZXNldCB0aGUgbG9jYWxlRGF0YSBvYmplY3RcbiAgICAgICAgdGhpcy5pbml0KCk7XG5cbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5saWJMb2NhbGUgPSBsaWJMb2NhbGU7XG5cbiAgICAgICAgLy8gbG9hZCB0aGUgbG9jYWxlIGJ1bmRsZXMgb2YgdGhlIHNlbGVjdGVkIGxvY2FsZVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlQnVuZGxlcyhsaWJMb2NhbGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbGVEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVkdWNlQXBwTG9jYWxlKCkge1xuICAgICAgICAvLyBjb21wdXRhdGlvbiB0byBmaW5kIGFwcCBkZWZhdWx0IGxvY2FsZVxuICAgICAgICBjb25zdCBfYWNjZXB0TGFuZyA9IHRoaXMuZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKTtcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5ndWFnZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIF9hY2NlcHRMYW5nLnB1c2goX2RlZmF1bHRMYW5ndWFnZSk7XG5cbiAgICAgICAgLy8gY2hlY2tzIHdoZXRoZXIgdXNlciBwcmVmZXJlbmNlIGlzIGJhc2VkIG9uIGJyb3dzZXIgc2V0IGxhbmd1YWdlcyBvciBkZWZhdWx0IGxhbmd1YWdlIHNldCBpbiBwcm9qZWN0XG4gICAgICAgIGxldCBwcmVmZXJCcm93c2VyTGFuZyA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5wcmVmZXJCcm93c2VyTGFuZztcbiAgICAgICAgaWYgKCFwcmVmZXJCcm93c2VyTGFuZykgeyAvLyB3aGVuIHByZWZlckJyb3dzZXJMYW5nIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gaXRzIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nICA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7IC8vIGNvbnZlcnQgc3RyaW5naWZpZWQgYm9vbGVhbiB2YWx1ZXMgcmVjaWV2ZWQgZnJvbSBCRSB0byBib29sZWFuc1xuICAgICAgICAgICAgcHJlZmVyQnJvd3Nlckxhbmc9IChwcmVmZXJCcm93c2VyTGFuZyA9PT0gJ3RydWUnIHx8IHByZWZlckJyb3dzZXJMYW5nID09PSB0cnVlKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBfc3VwcG9ydGVkTGFuZyA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpIHx8IFt0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGVdO1xuXG4gICAgICAgIC8vIHdoZW4gcHJlZmVyZW5jZSBpcyBnaXZlbiB0byBicm93c2VyIHNldCBsYW5ndWFnZXMsIGRvIG5vdCBwb3B1bGF0ZSBfc2VsZWN0ZWREZWZhdWx0TGFuZyB2YXJpYWJsZVxuICAgICAgICBsZXQgX3NlbGVjdGVkRGVmYXVsdExhbmcgPSBwcmVmZXJCcm93c2VyTGFuZyA/IHVuZGVmaW5lZCA6IF9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAgICAgbGV0IF9hcHBTdXBwb3J0ZWRMYW5nO1xuICAgICAgICBcbiAgICAgICAgLy8gY2hlY2sgZm9yIHRoZSBzZXNzaW9uIHN0b3JhZ2UgdG8gbG9hZCBhbnkgcHJlLXJlcXVlc3RlZCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5nID0gZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScpIHx8IF9zZWxlY3RlZERlZmF1bHRMYW5nIHx8IF9hcHBTdXBwb3J0ZWRMYW5nIHx8IGludGVyc2VjdGlvbihfYWNjZXB0TGFuZywgX3N1cHBvcnRlZExhbmcpWzBdIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICAgICAgLy8gaWYgdGhlIHN1cHBvcnRlZExvY2FsZSBpcyBub3QgYXZhaWxhYmxlIHNldCBpdCB0byBkZWZhdWx0TG9jYWxlXG4gICAgICAgIF9zdXBwb3J0ZWRMYW5nID0gX3N1cHBvcnRlZExhbmcgfHwgW19kZWZhdWx0TGFuZ107XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gX2RlZmF1bHRMYW5nIHx8IF9zdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICByZXR1cm4gZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRGVmYXVsdExvY2FsZSgpIHtcbiAgICAgICAgRGF0ZS5wcm90b3R5cGVbXCJtb250aFwiXSA9IERhdGUucHJvdG90eXBlLmdldE1vbnRoO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmRlZHVjZUFwcExvY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb2NhbGl6ZWRNZXNzYWdlKG1lc3NhZ2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UodGhpcy5hcHBMb2NhbGVbbWVzc2FnZV0sIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWNjZXB0ZWQgbGFuZ3VhZ2VzIGxpc3RcbiAgICBwdWJsaWMgZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZXM7XG4gICAgICAgXG4gICAgICAgIGxhbmd1YWdlcyA9IGRlY29kZVVSSUNvbXBvbmVudChnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVycmVkTGFuZ3VhZ2UgfHwgJycpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWNjZXB0LUxhbmd1YWdlIEhlYWRlciB3aWxsIGNvbnRhaW4gc2V0IG9mIHN1cHBvcnRlZCBsb2NhbGUsIHNvIHRyeSBzcGxpdHRpbmcgdGhlIHN0cmluZyB0byBwcm9wZXIgbG9jYWxlIHNldFxuICAgICAgICAgKiBFeDogZW4sZW4tVVM7cT0wLjksZGU7cT0wLjYsYXI7cT0wLjIsaGlcbiAgICAgICAgICpcbiAgICAgICAgICogU3BsaXQgdGhlIGFib3ZlIGludG8gW2VuLGVuLXVzLGRlLGFyLGhpXVxuICAgICAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICAgICAqL1xuICAgICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZXMuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLnNwbGl0KCc7JylbMF07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwKGxhbmd1YWdlcywgdG9Mb3dlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRDYWxlbmRhckxvY2FsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLEdBQUcsRUFDTixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUMsSUFBSSxFQUFXLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTdGLE9BQU8sS0FBSyxTQUFTLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBQzdELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJELE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFB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SCxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBUyxNQUFNO1lBQ2hELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFNO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsSCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDTCxDQUFDO2dIQXpVUSxlQUFlO3VFQUFmLGVBQWUsV0FBZixlQUFlOztpRkFBZixlQUFlO2NBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGRlZmluZUxvY2FsZSB9IGZyb20gJ25neC1ib290c3RyYXAvY2hyb25vcyc7XG5pbXBvcnQgeyBCc0xvY2FsZVNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQge1xuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIGdldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLFxuICAgIGlzTW9iaWxlLFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIHJlcGxhY2UsXG4gICAgc2V0Q1NTLFxuICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBBcHBcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2ZpbmQsIGZvckVhY2gsIGdldCwgaW5jbHVkZXMsIGludGVyc2VjdGlvbiwgaXNPYmplY3QsIG1hcCwgdG9Mb3dlcn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5pbXBvcnQgKiBhcyBtb21lbnRMaWIgZnJvbSAnbW9tZW50LXRpbWV6b25lL21vbWVudC10aW1lem9uZSc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRMaWIuZGVmYXVsdCB8fCB3aW5kb3dbJ21vbWVudCddO1xuXG5jb25zdCBBUFBfTE9DQUxFX1JPT1RfUEFUSCA9ICdyZXNvdXJjZXMvaTE4bic7XG5jb25zdCBSVExfTEFOR1VBR0VfQ09ERVMgPSBbJ2FyJywgJ2FyLTAwMScsICdhci1hZScsICdhci1iaCcsICdhci1keicsICdhci1lZycsICdhci1pcScsICdhci1qbycsICdhci1rdycsICdhci1sYicsICdhci1seScsXG4gICAgJ2FyLW1hJywgJ2FyLW9tJywgJ2FyLXFhJywgJ2FyLXNhJywgJ2FyLXNkJywgJ2FyLXN5JywgJ2FyLXRuJywgJ2FyLXllJywgJ2FyYycsICdiY2MnLCAnYnFpJywgJ2NrYicsICdkdicsICdmYScsICdnbGsnLFxuICAgICdoZScsICdrdScsICdtem4nLCAncG5iJywgJ3BzJywgJ3NkJywgJ3VnJywgJ3VyJywgJ3lpJ107XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZUltcGwgZXh0ZW5kcyBBYnN0cmFjdEkxOG5TZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRMb2NhbGU6IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUgPSAnZW4nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwTG9jYWxlOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmVmYWJMb2NhbGU6IE1hcDxTdHJpbmcsIGFueT47XG4gICAgcHJpdmF0ZSBtZXNzYWdlczogYW55O1xuICAgIHByaXZhdGUgX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZm9ybWF0c0J5TG9jYWxlID0geyd0aW1lem9uZSc6ICcnLCAnbnVtYmVyJzogJyd9O1xuICAgIHByaXZhdGUgZ2V0IGFwcCgpIHsgcmV0dXJuIHRoaXMuaW5qLmdldChBcHApIH07XG5cbiAgICBwcml2YXRlIGJ1bmRsZUxvYWRlZDp7W2tleTpzdHJpbmddIDogYW55fSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgYnNMb2NhbGVTZXJ2aWNlOiBCc0xvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBwcml2YXRlIGluajogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB7fTtcbiAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVEaXJlY3Rpb24oKSB7XG4gICAgICAgIGxldCBkaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcgPSAnbHRyJztcbiAgICAgICAgaWYgKFJUTF9MQU5HVUFHRV9DT0RFUy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTG9jYWxlKSkge1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3J0bCc7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRDU1MoZG9jdW1lbnQuYm9keSwgJ2RpcmVjdGlvbicsIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0ge307XG5cbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMuYXBwTG9jYWxlLCB0aGlzLm1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRTdXBwb3J0ZWRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXBwTG9jYWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJlZmFiTG9jYWxlQnVuZGxlKHByZWZhYk5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5wcmVmYWJMb2NhbGUuaGFzKHByZWZhYk5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnByZWZhYkxvY2FsZS5zZXQocHJlZmFiTmFtZSwgT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZhYkxvY2FsZS5nZXQocHJlZmFiTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRQcmVmYWJNZXNzYWdlcyhtZXNzYWdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghbWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKG1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzKS5mb3JFYWNoKChwcmVmYWJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBidW5kbGUgPSB0aGlzLnByZWZhYkxvY2FsZS5nZXQocHJlZmFiTmFtZSk7XG4gICAgICAgICAgICBpZiAoIWJ1bmRsZSkge1xuICAgICAgICAgICAgICAgIGJ1bmRsZSA9IE9iamVjdC5jcmVhdGUodGhpcy5hcHBMb2NhbGUpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBidW5kbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidW5kbGUsIG1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzW3ByZWZhYk5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRNZXNzYWdlcyhtZXNzYWdlczogYW55KTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXNzYWdlcywgbWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFJlc291cmNlKHBhdGgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy4kaHR0cC5nZXQocGF0aClcbiAgICAgICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGxvYWRpbmcgbG9jYWxlIHJlc291cmNlIGZyb20gJHtwYXRofWApO1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZEFwcExvY2FsZUJ1bmRsZSgpIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBfV01fQVBQX1BST0pFQ1QuaXNQcmV2aWV3IHx8ICh3aW5kb3cgYXMgYW55KS5fV01fQVBQX1BST1BFUlRJRVM/Lmxhbmd1YWdlQnVuZGxlU291cmNlcyA9PT0gJ0RZTkFNSUMnID8gJycgOiAgX1dNX0FQUF9QUk9KRUNULmNkblVybFxuICAgICAgICB0aGlzLmxvYWRSZXNvdXJjZSggYmFzZVBhdGggKyBgJHtBUFBfTE9DQUxFX1JPT1RfUEFUSH0vJHt0aGlzLnNlbGVjdGVkTG9jYWxlfS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKGJ1bmRsZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRNZXNzYWdlcyhidW5kbGUubWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kUHJlZmFiTWVzc2FnZXMoYnVuZGxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcERlZmF1bHRzLnNldEZvcm1hdHMoYnVuZGxlLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShtb21lbnRMb2NhbGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfV01fQVBQX1BST0pFQ1QuaXNQcmV2aWV3KSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gYCR7X1dNX0FQUF9QUk9KRUNULmNkblVybH1sb2NhbGVzL21vbWVudC8ke21vbWVudExvY2FsZX0uanNgO1xuICAgICAgICAgICAgbG9hZFNjcmlwdHMoW3BhdGhdLCB0cnVlKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkU2NyaXB0Rm9yTW9tZW50KG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgICB0aGlzLmxvYWRTY3JpcHRGb3JNb21lbnQobW9tZW50TG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwcm90ZWN0ZWQgbG9hZFNjcmlwdEZvck1vbWVudChtb21lbnRMb2NhbGUpe1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcbiAgICAgICAgICAgIC8vIEZvciBuZ3ggYm9vdHN0cmFwIGxvY2FsZSwgZ2V0IHRoZSBjb25maWcgZnJvbSBzY3JpcHQgYW5kIGFwcGx5IGxvY2FsZVxuICAgICAgICAgICAgLy8gbW9tZW50LmxvY2FsZURhdGEobW9tZW50TG9jYWxlKSB3aWxsIHJldHVybiBtb21lbnQgbG9jYWxlIGluc3RhbmNlLiBfY29uZmlnIGluc2lkZSB3aWxsIGhhdmUgYWN0dWFsIGNvbmZpZ1xuICAgICAgICAgICAgbGV0IF9jb25maWc6IGFueSA9IG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICBfY29uZmlnID0gX2NvbmZpZyAmJiBfY29uZmlnLl9jb25maWc7XG4gICAgICAgICAgICBkZWZpbmVMb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGFuZ0xvY2FsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2FuZ3VsYXIvZ2xvYmFsLyR7YW5nTG9jYWxlfS5qc2A7XG5cbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgICAgICB3aW5kb3dbJ21vbWVudCddID0gbW9tZW50OyAvL21vbWVudC10aW1lem9uZS13aXRoLWRhdGEuanMgbmVlZCBtb21lbnQgYXMgcmVxdWlyZSgnbW9tZW50JykgdG8gYmUgYXZhaWxhYmxlIGluIHdpbmRvd1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9tb21lbnQtdGltZXpvbmUvbW9tZW50LXRpbWV6b25lLXdpdGgtZGF0YS5qc2A7XG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBJZiBsb2NhbGUgaXMgcHJvdmlkZWQgaW4gdGhlIGZvcm0gb2Ygb2Zmc2V0IGFuZCBub3QgdGltZXpvbmUgbmFtZSwgZGVkdWNlIHRoZSBuYW1lLlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBhcyBHTVQrOSwgbmFtZSB3aWxsIGJlIGRlZHVjZWQgYXMgQXNpYS9Ub2t5b1xuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZU9iaiA9IGxvY2FsZTtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVPYmpbJ3RpbWV6b25lJ107XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlSW5kZXggPSBsb2NhbGUuaW5kZXhPZignKycpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5zdWJzdHIobG9jYWxlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZU9ialsndGltZXpvbmUnXSA9IGZpbmQoKG1vbWVudCBhcyBhbnkpLnR6Lm5hbWVzKCksICh0aW1lem9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT09IChtb21lbnQgYXMgYW55KS50eih0aW1lem9uZU5hbWUpLmZvcm1hdCgnWicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKG1vbWVudCBhcyBhbnkpLnR6LnNldERlZmF1bHQobG9jYWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVEYXRhID0gIGNvbXBJbnN0YW5jZSAmJiBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlID8gY29tcEluc3RhbmNlLmZvcm1hdHNCeUxvY2FsZSA6IHRoaXMuZm9ybWF0c0J5TG9jYWxlO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obG9jYWxlRGF0YSwgbG9jYWxlT2JqKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCByZXNvbHZlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRMb2NhbGVCdW5kbGVzKGxpYkxvY2FsZSkge1xuICAgICAgICBpZiAobGliTG9jYWxlLm1vbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9tZW50TG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5tb21lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGliTG9jYWxlLmZ1bGxDYWxlbmRhciAmJiB3aW5kb3dbJ0Z1bGxDYWxlbmRhciddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUxvY2FsZUNoYW5nZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5hbmd1bGFyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBMb2NhbGVCdW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShsaWJMb2NhbGUuYW5ndWxhcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRpbWV6b25lKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICB0aGlzLmxvYWRNb21lbnRUaW1lWm9uZUJ1bmRsZShsb2NhbGUsIGNvbXBJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpbWV6b25lKGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgY29uc3QgcGFnZUNvbmZpZyA9IGdldCh0aGlzLmFwcCwgJ2FjdGl2ZVBhZ2UuZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGNvbnN0IGNvbXBDb25maWcgPSBnZXQoY29tcEluc3RhbmNlLCAnZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGlmIChjb21wQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcENvbmZpZztcbiAgICAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFnZUNvbmZpZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZVsndGltZXpvbmUnXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtYXRzQnlMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKSB7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIHByb3BhZ2F0ZWQgZnJvbSB0aGUgc2VsZWN0IG9yIGFueSBzdWNoIHdpZGdldFxuICAgICAgICBpZiAoaXNPYmplY3QobG9jYWxlKSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLmRhdGF2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpYkxvY2FsZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXNbbG9jYWxlXTtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgaWYgKCFpbmNsdWRlcyhzdXBwb3J0ZWRMb2NhbGUsIGxvY2FsZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYWxlIHx8IGxvY2FsZSA9PT0gdGhpcy5zZWxlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScsIGxvY2FsZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGxvY2FsZTtcblxuICAgICAgICAvLyByZXNldCB0aGUgbG9jYWxlRGF0YSBvYmplY3RcbiAgICAgICAgdGhpcy5pbml0KCk7XG5cbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5saWJMb2NhbGUgPSBsaWJMb2NhbGU7XG5cbiAgICAgICAgLy8gbG9hZCB0aGUgbG9jYWxlIGJ1bmRsZXMgb2YgdGhlIHNlbGVjdGVkIGxvY2FsZVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlQnVuZGxlcyhsaWJMb2NhbGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbGVEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVkdWNlQXBwTG9jYWxlKCkge1xuICAgICAgICAvLyBjb21wdXRhdGlvbiB0byBmaW5kIGFwcCBkZWZhdWx0IGxvY2FsZVxuICAgICAgICBjb25zdCBfYWNjZXB0TGFuZyA9IHRoaXMuZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKTtcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5ndWFnZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIF9hY2NlcHRMYW5nLnB1c2goX2RlZmF1bHRMYW5ndWFnZSk7XG5cbiAgICAgICAgLy8gY2hlY2tzIHdoZXRoZXIgdXNlciBwcmVmZXJlbmNlIGlzIGJhc2VkIG9uIGJyb3dzZXIgc2V0IGxhbmd1YWdlcyBvciBkZWZhdWx0IGxhbmd1YWdlIHNldCBpbiBwcm9qZWN0XG4gICAgICAgIGxldCBwcmVmZXJCcm93c2VyTGFuZyA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5wcmVmZXJCcm93c2VyTGFuZztcbiAgICAgICAgaWYgKCFwcmVmZXJCcm93c2VyTGFuZykgeyAvLyB3aGVuIHByZWZlckJyb3dzZXJMYW5nIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gaXRzIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nICA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7IC8vIGNvbnZlcnQgc3RyaW5naWZpZWQgYm9vbGVhbiB2YWx1ZXMgcmVjaWV2ZWQgZnJvbSBCRSB0byBib29sZWFuc1xuICAgICAgICAgICAgcHJlZmVyQnJvd3Nlckxhbmc9IChwcmVmZXJCcm93c2VyTGFuZyA9PT0gJ3RydWUnIHx8IHByZWZlckJyb3dzZXJMYW5nID09PSB0cnVlKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBfc3VwcG9ydGVkTGFuZyA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpIHx8IFt0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGVdO1xuXG4gICAgICAgIC8vIHdoZW4gcHJlZmVyZW5jZSBpcyBnaXZlbiB0byBicm93c2VyIHNldCBsYW5ndWFnZXMsIGRvIG5vdCBwb3B1bGF0ZSBfc2VsZWN0ZWREZWZhdWx0TGFuZyB2YXJpYWJsZVxuICAgICAgICBsZXQgX3NlbGVjdGVkRGVmYXVsdExhbmcgPSBwcmVmZXJCcm93c2VyTGFuZyA/IHVuZGVmaW5lZCA6IF9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAgICAgbGV0IF9hcHBTdXBwb3J0ZWRMYW5nO1xuICAgICAgICBcbiAgICAgICAgLy8gY2hlY2sgZm9yIHRoZSBzZXNzaW9uIHN0b3JhZ2UgdG8gbG9hZCBhbnkgcHJlLXJlcXVlc3RlZCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5nID0gZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScpIHx8IF9zZWxlY3RlZERlZmF1bHRMYW5nIHx8IF9hcHBTdXBwb3J0ZWRMYW5nIHx8IGludGVyc2VjdGlvbihfYWNjZXB0TGFuZywgX3N1cHBvcnRlZExhbmcpWzBdIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICAgICAgLy8gaWYgdGhlIHN1cHBvcnRlZExvY2FsZSBpcyBub3QgYXZhaWxhYmxlIHNldCBpdCB0byBkZWZhdWx0TG9jYWxlXG4gICAgICAgIF9zdXBwb3J0ZWRMYW5nID0gX3N1cHBvcnRlZExhbmcgfHwgW19kZWZhdWx0TGFuZ107XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gX2RlZmF1bHRMYW5nIHx8IF9zdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICByZXR1cm4gZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRGVmYXVsdExvY2FsZSgpIHtcbiAgICAgICAgRGF0ZS5wcm90b3R5cGVbXCJtb250aFwiXSA9IERhdGUucHJvdG90eXBlLmdldE1vbnRoO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmRlZHVjZUFwcExvY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb2NhbGl6ZWRNZXNzYWdlKG1lc3NhZ2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UodGhpcy5hcHBMb2NhbGVbbWVzc2FnZV0sIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWNjZXB0ZWQgbGFuZ3VhZ2VzIGxpc3RcbiAgICBwdWJsaWMgZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZXM7XG4gICAgICAgXG4gICAgICAgIGxhbmd1YWdlcyA9IGRlY29kZVVSSUNvbXBvbmVudChnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVycmVkTGFuZ3VhZ2UgfHwgJycpO1xuICAgICAgICAvKipcbiAgICAgICAgICogQWNjZXB0LUxhbmd1YWdlIEhlYWRlciB3aWxsIGNvbnRhaW4gc2V0IG9mIHN1cHBvcnRlZCBsb2NhbGUsIHNvIHRyeSBzcGxpdHRpbmcgdGhlIHN0cmluZyB0byBwcm9wZXIgbG9jYWxlIHNldFxuICAgICAgICAgKiBFeDogZW4sZW4tVVM7cT0wLjksZGU7cT0wLjYsYXI7cT0wLjIsaGlcbiAgICAgICAgICpcbiAgICAgICAgICogU3BsaXQgdGhlIGFib3ZlIGludG8gW2VuLGVuLXVzLGRlLGFyLGhpXVxuICAgICAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICAgICAqL1xuICAgICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZXMuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLnNwbGl0KCc7JylbMF07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwKGxhbmd1YWdlcywgdG9Mb3dlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRDYWxlbmRhckxvY2FsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -3150,6 +3150,7 @@ class I18nServiceImpl extends AbstractI18nService {
|
|
|
3150
3150
|
loadMomentTimeZoneBundle(locale, compInstance) {
|
|
3151
3151
|
return new Promise(resolve => {
|
|
3152
3152
|
const _cdnUrl = _WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest;
|
|
3153
|
+
window['moment'] = moment; //moment-timezone-with-data.js need moment as require('moment') to be available in window
|
|
3153
3154
|
const path = _cdnUrl + `locales/moment-timezone/moment-timezone-with-data.js`;
|
|
3154
3155
|
loadScripts([path], true).then(() => {
|
|
3155
3156
|
/**
|