New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@sq-ui/ng-datetime-picker

Package Overview
Dependencies
Maintainers
2
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sq-ui/ng-datetime-picker - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

2

bundles/sq-ui-ng-datetime-picker.umd.min.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("moment"),require("@angular/forms"),require("immutable"),require("@angular/common")):"function"==typeof define&&define.amd?define("@sq-ui/ng-datetime-picker",["exports","@angular/core","moment","@angular/forms","immutable","@angular/common"],t):t((e["sq-ui"]=e["sq-ui"]||{},e["sq-ui"]["ng-datetime-picker"]={}),e.ng.core,e.moment,e.ng.forms,null,e.ng.common)}(this,function(e,i,t,n,r,s){"use strict";var a={Current:0,Before:1,After:2};a[a.Current]="Current",a[a.Before]="Before",a[a.After]="After";var d=t,o=function(){function e(){this.locale="en",this.previouslySelectedYear=d()}return e.prototype.setLocale=function(e){d.locale(e),this.locale=e},e.prototype.generateCalendarForMonth=function(e,t,n,i){var r,s=d(e).startOf("month").locale(this.locale),a=0===s.weekday(),o=s.clone(),l=[],c=[];if(!a){var u=o.weekday();u=0===u?1:u,o.subtract(u,"days")}for(;l.length<6;)r={displayDate:o.format("D"),momentObj:o.clone(),relativityToCurrentMonth:this.determineDateRelativityToCurrentMonth(o,t),isDisabled:this.determineIfDateIsDisabled(o,i.minDate,i.maxDate),isSelected:-1<this.getSelectedItemIndex(o,n)},c.length<=6?c.push(r):(l.push(c),c=[r]),o.add(1,"day");return l},e.prototype.generateMonthPickerCollection=function(i,r){var s=this;return this.getMonths().map(function(e,t){var n=d().year(i).month(t);return{displayName:e,momentObj:n,isDisabled:s.determineIfDateIsDisabled(n,r.minDate,r.maxDate)}})},e.prototype.generateYearPickerCollection=function(e,t,n){var i=this;return void 0===t&&(t=19),this.getYearList(e,t).map(function(e){var t=d().year(e);return{displayName:e.toString(),momentObj:t,isDisabled:i.determineIfDateIsDisabled(t,n.minDate,n.maxDate)}})},e.prototype.getWeekdays=function(e){return void 0===e&&(e=!0),e?d.weekdaysShort(!0):d.weekdays(!0)},e.prototype.getMonths=function(e){return void 0===e&&(e=!0),e?d.monthsShort():d.months()},e.prototype.getYearList=function(e,t){var n,i;void 0===t&&(t=19),e&&(this.previouslySelectedYear=e.clone()),t<0?(i=d(this.previouslySelectedYear).add(t,"years"),n=d(i).add(t,"years")):(n=d(this.previouslySelectedYear),i=d(n).add(t,"years"));for(var r=[];n.isSameOrBefore(i);)r.push(n.clone().year()),n.add(1,"year");return this.previouslySelectedYear=n.subtract(1,"year").clone(),r},e.prototype.findADateFromCalendar=function(e,t){var n=d(e);return t.reduce(function(e,t){return e.concat(t)},[]).find(function(e){return e.momentObj.isSame(n,"day")})},e.prototype.getSelectedItemIndex=function(t,e){return e.findIndex(function(e){return d(e).isSame(t,"day")})},e.prototype.determineIfDateIsDisabled=function(e,t,n){var i=n&&d(e).isAfter(n,"day"),r=t&&d(e).isBefore(t,"day");return i||r},e.prototype.determineDateRelativityToCurrentMonth=function(e,t){var n=d(t).startOf("month"),i=d(t).endOf("month");return d(e).isBefore(n)?a.Before:d(e).isAfter(i)?a.After:a.Current},e.prototype.sortDatesAsc=function(e){return e.sort(function(e,t){return d(e).isAfter(t)?1:-1})},e.decorators=[{type:i.Injectable}],e.ctorParameters=function(){return[]},e}(),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function c(e,t){function n(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var u=function(){function e(){this._modelToViewChange=new i.EventEmitter,this._onChange=function(){},this._onTouched=function(){}}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){e!==this._value&&(this._value=e,this._onChange(e))},enumerable:!0,configurable:!0}),e.prototype.onBlur=function(){this._onTouched()},e.prototype.writeValue=function(e){e!==this._value&&(this._value=e,this._modelToViewChange.emit(e))},e.prototype.registerOnChange=function(e){this._onChange=e},e.prototype.registerOnTouched=function(e){this._onTouched=e},e}(),p=function(t){function e(){var e=t.call(this)||this;return e.defaultInputIdentifier="sq-form-control"+(new Date).getTime().toString(),e.name=e.defaultInputIdentifier,e.controlId=e.defaultInputIdentifier,e.controlLabel="",e.controlPlaceholder="",e.required=!1,e.pattern="",e.disabled=!1,e}return c(e,t),e.propDecorators={name:[{type:i.Input}],controlId:[{type:i.Input}],controlLabel:[{type:i.Input}],controlPlaceholder:[{type:i.Input}],required:[{type:i.Input}],pattern:[{type:i.Input}],disabled:[{type:i.Input}]},e}(u),h={Month:0,Year:1};h[h.Month]="Month",h[h.Year]="Year";var m="moment",f="date",g="unix",y=t,b={provide:n.NG_VALUE_ACCESSOR,useExisting:i.forwardRef(function(){return v}),multi:!0},v=function(n){function e(e){var t=n.call(this)||this;return t.calendarManager=e,t.locale="en",t.isMultipleSelect=!1,t.isTimepickerEnabled=!1,t.dateObjectType=m,t.dateSelectionChange=new i.EventEmitter,t.isMonthsPickerEnabled=!1,t.isYearsPickerEnabled=!1,t.calendarPeriodRelativity=a,t.period=h.Month,t.selectedDates=r.List(),t}return c(e,n),e.prototype.ngOnInit=function(){y.locale(this.locale),this.calendarManager.setLocale(this.locale);var e=y().hours(0).minutes(0).locale(this.locale);this.selectedDates=r.List([e.clone()]),this.weekdays=this.calendarManager.getWeekdays(),this.calendar=this.getMonthCalendar(e.clone()),this.initializeAuthorValuesIfAny()},e.prototype.ngAfterViewInit=function(){var e=this;setTimeout(function(){e.setValueResult()})},e.prototype.ngOnChanges=function(e){e.timepickerConfig&&e.timepickerConfig.currentValue&&this.setValueResult()},e.prototype.onDateClick=function(e){switch(e.relativityToCurrentMonth){case a.After:this.select(e),this.next();break;case a.Before:this.select(e),this.previous();break;default:this.select(e)}},e.prototype.select=function(e){var t=this.currentMonth.clone();e.relativityToCurrentMonth===a.Before&&t.subtract(1,"month"),e.relativityToCurrentMonth===a.After&&t.add(1,"month"),this.markDateAsSelected(e),this.dateSelectionChange.emit(this.value)},e.prototype.next=function(){if(this.period===h.Month){var e=this.currentMonth.add(1,"month");this.calendar=this.getMonthCalendar(e)}if(this.period===h.Year){var t={minDate:y(this.minDate),maxDate:y(this.maxDate)};this.yearsList=this.calendarManager.generateYearPickerCollection(null,19,t)}},e.prototype.previous=function(){if(this.period===h.Month){var e=this.currentMonth.subtract(1,"month");this.calendar=this.getMonthCalendar(e)}if(this.period===h.Year){var t={minDate:y(this.minDate),maxDate:y(this.maxDate)};this.yearsList=this.calendarManager.generateYearPickerCollection(null,-19,t)}},e.prototype.getMonthCalendar=function(e){var t=this.selectedDates.toArray(),n={minDate:this.minDate,maxDate:this.maxDate};return this.currentMonth=e.clone(),this.calendarManager.generateCalendarForMonth(e,this.currentMonth,t,n)},e.prototype.showMonthsPicker=function(e){void 0===e&&(e=this.currentMonth.year()),this.deselectAll(),this.isYearsPickerEnabled=!1,this.isMonthsPickerEnabled=!0,this.currentMonth.year(e);var t={minDate:this.minDate,maxDate:this.maxDate};this.period=h.Month,this.months=this.calendarManager.generateMonthPickerCollection(e,t)},e.prototype.showYearsPicker=function(){this.deselectAll(),this.isMonthsPickerEnabled=!1,this.isYearsPickerEnabled=!0;var e={minDate:this.minDate,maxDate:this.maxDate};this.period=h.Year,this.yearsList=this.calendarManager.generateYearPickerCollection(this.currentMonth,19,e)},e.prototype.selectMonth=function(e){this.calendar=this.getMonthCalendar(e.momentObj),this.isMonthsPickerEnabled=!1},e.prototype.selectYear=function(e){this.showMonthsPicker(e.momentObj.year())},e.prototype.onTimeChange=function(){this.setValueResult()},e.prototype.initializeAuthorValuesIfAny=function(){var n=this,i=this._modelToViewChange.subscribe(function(e){if(1===n.selectedDates.size&&n.selectedDates.get(0).isSame(y(),"day")&&e)if(n.deselectAll(),Array.isArray(e))e.forEach(function(e){var t=n.calendarManager.findADateFromCalendar(y(e),n.calendar);n.markDateAsSelected(t)});else{var t=n.calendarManager.findADateFromCalendar(y(e),n.calendar);n.markDateAsSelected(t)}i.unsubscribe()})},e.prototype.markDateAsSelected=function(e){var t=y(e.momentObj),n=this.calendarManager.getSelectedItemIndex(t,this.selectedDates.toArray());if(this.isMultipleSelect)-1<n?(e.isSelected=!1,this.selectedDates=this.selectedDates.remove(n)):(this.selectedDates=this.selectedDates.push(t),e.isSelected=!0);else{var i=this.calendarManager.findADateFromCalendar(this.selectedDates.get(0),this.calendar);i&&(i.isSelected=!1),this.selectedDates=this.selectedDates.clear(),this.selectedDates=this.selectedDates.push(t),e.isSelected=!0}this.setValueResult()},e.prototype.deselectAll=function(){var n=this;this.selectedDates.toArray().forEach(function(e){var t=n.calendarManager.findADateFromCalendar(e,n.calendar);t&&(t.isSelected=!1)}),this.selectedDates=r.List([]),this.setValueResult()},e.prototype.setValueResult=function(){this.parsedSelectedDates=this.selectedDates.toArray(),0<this.parsedSelectedDates.length&&(this.setValueTimeIfNeeded(),this.sortValueIfNeeded(),this.toValueDateObjectTypeIfNeeded(),this.toValueFormatIfNeeded()),this.isMultipleSelect?this.value=this.parsedSelectedDates:this.value=this.parsedSelectedDates[0]},e.prototype.toValueDateObjectTypeIfNeeded=function(){if(!this.format)switch(this.dateObjectType){case f:this.parsedSelectedDates=this.parsedSelectedDates.map(function(e){return e.toDate()});break;case g:this.parsedSelectedDates=this.parsedSelectedDates.map(function(e){return e.toDate().getTime()})}},e.prototype.toValueFormatIfNeeded=function(){var t=this;if(this.format){var e=this.parsedSelectedDates.map(function(e){return y(e).format(t.format)});this.parsedSelectedDates=e}},e.prototype.setValueTimeIfNeeded=function(){var t=this;if(this.isTimepickerEnabled&&this.time){var e=this.parsedSelectedDates.map(function(e){return e.hours(t.time.hours()).minutes(t.time.minutes())});this.parsedSelectedDates=e}},e.prototype.sortValueIfNeeded=function(){if(this.isMultipleSelect){var e=this.calendarManager.sortDatesAsc(this.parsedSelectedDates);this.parsedSelectedDates=e}},e.decorators=[{type:i.Component,args:[{selector:"sq-datetime-picker",template:'<div class="datetime-picker-wrapper">\n <div class="period-section display-flex"\n [ngClass]="{\'justify-center\': isMonthsPickerEnabled,\n \'space-between\': !isMonthsPickerEnabled}">\n <button type="button"\n (click)="previous()"\n class="change-period prev"\n *ngIf="!isMonthsPickerEnabled">\n <i class="fa fa-chevron-left"></i>\n </button>\n\n <div>\n <button type="button"\n class="month-name"\n (click)="showMonthsPicker()"\n *ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">\n <strong class="period-name">{{ currentMonth.format(\'MMMM\') }}</strong>\n </button>\n\n <button type="button"\n (click)="showYearsPicker()"\n *ngIf="!isYearsPickerEnabled">\n <strong class="period-name">{{ currentMonth.format(\'YYYY\') }}</strong>\n </button>\n\n <strong class="period-name" *ngIf="isYearsPickerEnabled">\n {{ yearsList[0].displayName + \' - \' + yearsList[yearsList.length - 1].displayName }}\n </strong>\n </div>\n\n <button type="button"\n (click)="next()"\n class="change-period next"\n *ngIf="!isMonthsPickerEnabled">\n <i class="fa fa-chevron-right"></i>\n </button>\n </div>\n\n <div class="alt-picker display-flex space-between wrap"\n *ngIf="isMonthsPickerEnabled || isYearsPickerEnabled">\n <ng-template [ngIf]="isMonthsPickerEnabled">\n <button type="button"\n class="picker-item"\n *ngFor="let month of months"\n (click)="selectMonth(month)"\n [ngClass]="{\'disabled\': month.isDisabled}">\n {{ month.displayName }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]="isYearsPickerEnabled">\n <button type="button"\n class="picker-item"\n *ngFor="let year of yearsList"\n (click)="selectYear(year)"\n [ngClass]="{\'disabled\': year.isDisabled}">\n {{ year.displayName }}\n </button>\n </ng-template>\n </div>\n\n <table class="datetime-picker" *ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">\n <thead>\n <tr>\n <th *ngFor="let day of weekdays" class="heading">\n <span class="text">{{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let dateRow of calendar" class="row">\n <td *ngFor="let date of dateRow"\n class="cell"\n (click)="onDateClick(date)"\n [ngClass]="{\'beyond-current-period\': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\n \'selected\': date.isSelected,\n \'disabled\': date.isDisabled}">\n {{ date.displayDate }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <sq-time-picker *ngIf="isTimepickerEnabled"\n [(ngModel)]="time"\n (ngModelChange)="onTimeChange()"\n [ngModelOptions]="{standalone: true}"\n timeObjectType="moment"\n [hours]="timepickerConfig.hours"\n [minutes]="timepickerConfig.minutes"\n [hourStep]="timepickerConfig.hourStep"\n [minuteStep]="timepickerConfig.minuteStep"\n [isEditable]="timepickerConfig.isEditable"\n [isMeridiem]="timepickerConfig.isMeridiem">\n </sq-time-picker>\n</div>\n',encapsulation:i.ViewEncapsulation.None,providers:[b],styles:[".sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}"]}]}],e.ctorParameters=function(){return[{type:o}]},e.propDecorators={locale:[{type:i.Input}],maxDate:[{type:i.Input}],minDate:[{type:i.Input}],isMultipleSelect:[{type:i.Input}],format:[{type:i.Input}],isTimepickerEnabled:[{type:i.Input}],dateObjectType:[{type:i.Input}],timepickerConfig:[{type:i.Input}],dateSelectionChange:[{type:i.Output}]},e}(p),k={Hours:"hours",Minutes:"minutes"},M="string",x="moment",D=t,C={provide:n.NG_VALUE_ACCESSOR,useExisting:i.forwardRef(function(){return I}),multi:!0},I=function(t){function e(){var e=t.call(this)||this;return e.hourStep=1,e.minuteStep=1,e.isMeridiem=!1,e.isEditable=!0,e.timeObjectType=M,e.inputHoursChange=new i.EventEmitter,e.inputMinutesChange=new i.EventEmitter,e.noonRelativity="am",e.timeUnit=k,e.start=D(),e.hourFormat="HH",e.limits={hours:{min:0,max:24},minutes:{min:0,max:59}},e}return c(e,t),e.prototype.ngOnInit=function(){this.hours=this.start.format(this.hourFormat),this.minutes=this.start.format("mm"),this.setValueResult()},e.prototype.ngOnChanges=function(e){e.isMeridiem&&(e.isMeridiem.currentValue?(this.hourFormat="hh",this.noonRelativity=this.start.format("a"),this.limits.hours.min=1,this.limits.hours.max=12):(this.hourFormat="HH",this.limits.hours.min=0,this.limits.hours.max=24),this.hours=this.start.format(this.hourFormat)),e.inputHours&&null!==e.inputHours.currentValue&&"undefined"!=typeof e.inputHours.currentValue&&-1<e.inputHours.currentValue&&(this.hours=this.start.hours(e.inputHours.currentValue).format(this.hourFormat),this.noonRelativity=this.start.format("a")),e.inputMinutes&&null!==e.inputMinutes.currentValue&&"undefined"!=typeof e.inputMinutes.currentValue&&-1<e.inputMinutes.currentValue&&(this.minutes=this.start.minutes(e.inputMinutes.currentValue).format("mm")),this.setValueResult()},e.prototype.ngAfterViewInit=function(){var e=this;setTimeout(function(){e.setValueResult()})},e.prototype.increment=function(e){switch(e){case k.Hours:this.hours=this.start.add(this.hourStep,"hours").format(this.hourFormat),this.inputHoursChange.emit(parseInt(this.hours,10));break;case k.Minutes:this.minutes=this.start.add(this.minuteStep,"minutes").format("mm"),this.inputMinutesChange.emit(parseInt(this.minutes,10))}this.setValueResult()},e.prototype.decrement=function(e){switch(e){case k.Hours:this.hours=this.start.subtract(this.hourStep,"hours").format(this.hourFormat),this.inputHoursChange.emit(parseInt(this.hours,10));break;case k.Minutes:this.minutes=this.start.subtract(this.minuteStep,"minutes").format("mm"),this.inputMinutesChange.emit(parseInt(this.minutes,10))}this.setValueResult()},e.prototype.changeNoonRelativity=function(){this.noonRelativity="am"===this.noonRelativity?"pm":"am",this.setValueResult()},e.prototype.validateInput=function(e){switch(e){case k.Hours:this.hours=this.normalizeTimeInput(this.hours,k.Hours);break;case k.Minutes:this.minutes=this.normalizeTimeInput(this.minutes,k.Minutes)}this.setValueResult()},e.prototype.normalizeTimeInput=function(e,t){return e||(e="00"),parseInt(e,10)>=this.limits[t].max&&(e=this.limits[t].max.toString(),t!==k.Hours||this.isMeridiem||(e="00")),parseInt(e,10)<this.limits[t].min&&(e=this.limits[t].min.toString()),e},e.prototype.setValueResult=function(){var e,t=this.hours+":"+this.minutes;if(t=this.isMeridiem?t+" "+this.noonRelativity.toUpperCase():t,this.timeObjectType===x){var n=this.isMeridiem?"hh:mm A":"HH:mm";e=D(t,n)}this.value=e||t},e.decorators=[{type:i.Component,args:[{selector:"sq-time-picker",template:'<div class="time-picker display-flex justify-center align-items-center">\n <div class="time-unit display-flex column align-items-center">\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="increment(timeUnit.Hours)">\n <i class="fa fa-chevron-up" aria-hidden="true"></i>\n </button>\n\n <div class="time display-flex column align-items-center">\n <input type="text"\n name="time"\n [(ngModel)]="hours"\n maxlength="2"\n minlength="1"\n [disabled]="!isEditable"\n [ngModelOptions]="{standalone: true}"\n (ngModelChange)="validateInput(timeUnit.Hours)">\n </div>\n\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="decrement(timeUnit.Hours)">\n <i class="fa fa-chevron-down" aria-hidden="true"></i>\n </button>\n </div>\n\n <div class="time-unit divider">:</div>\n\n <div class="time-unit display-flex column align-items-center">\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="increment(timeUnit.Minutes)">\n <i class="fa fa-chevron-up" aria-hidden="true"></i>\n </button>\n\n <div class="time">\n <input type="text"\n name="minutes"\n [(ngModel)]="minutes"\n maxlength="2"\n minlength="1"\n [disabled]="!isEditable"\n [ngModelOptions]="{standalone: true}"\n (ngModelChange)="validateInput(timeUnit.Minutes)">\n </div>\n\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="decrement(timeUnit.Minutes)">\n <i class="fa fa-chevron-down" aria-hidden="true"></i>\n </button>\n </div>\n\n <div *ngIf="isMeridiem"\n class="time-unit">\n <button type="button"\n class="display-flex justify-center align-items-center"\n (click)="changeNoonRelativity()">\n <span class="meridiem">\n {{noonRelativity.toUpperCase()}}\n </span>\n <i class="fa fa-clock-o meridiem-icon" aria-hidden="true"></i>\n </button>\n </div>\n</div>\n',encapsulation:i.ViewEncapsulation.None,providers:[C],styles:[".sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}"]}]}],e.ctorParameters=function(){return[]},e.propDecorators={hourStep:[{type:i.Input}],minuteStep:[{type:i.Input}],isMeridiem:[{type:i.Input}],isEditable:[{type:i.Input}],inputHours:[{type:i.Input,args:["hours"]}],inputMinutes:[{type:i.Input,args:["minutes"]}],timeObjectType:[{type:i.Input}],inputHoursChange:[{type:i.Output,args:["hoursChange"]}],inputMinutesChange:[{type:i.Output,args:["minutesChange"]}]},e}(p),S=function(){function e(){}return e.decorators=[{type:i.NgModule,args:[{imports:[s.CommonModule,n.FormsModule],declarations:[I,v],exports:[I,v],providers:[o],schemas:[i.CUSTOM_ELEMENTS_SCHEMA,i.NO_ERRORS_SCHEMA]}]}],e}(),E=function(){function e(){}return e.decorators=[{type:i.NgModule,args:[{imports:[S],declarations:[],exports:[S]}]}],e}();e.NgDatetimePickerModule=E,e.ɵf=o,e.ɵa=S,e.ɵe=v,e.ɵb=I,e.ɵd=u,e.ɵc=p,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("immutable"),require("@angular/core"),require("@sq-ui/ng-sq-common"),require("@angular/forms"),require("moment")):"function"==typeof define&&define.amd?define("@sq-ui/ng-datetime-picker",["exports","@angular/common","immutable","@angular/core","@sq-ui/ng-sq-common","@angular/forms","moment"],t):t((e["sq-ui"]=e["sq-ui"]||{},e["sq-ui"]["ng-datetime-picker"]={}),e.ng.common,e.immutable,e.ng.core,e.ngSqCommon,e.ng.forms,e.moment)}(this,function(e,t,n,r,i,s,a){"use strict";var o={Current:0,Before:1,After:2};o[o.Current]="Current",o[o.Before]="Before",o[o.After]="After";var d=a,c=function(){function e(){this.locale="en",this.previouslySelectedYear=d()}return e.prototype.setLocale=function(e){d.locale(e),this.locale=e},e.prototype.generateCalendarForMonth=function(e,t,i,n){var r,s=d(e).startOf("month").locale(this.locale),a=0===s.weekday(),o=s.clone(),c=[],l=[];if(!a){var u=o.weekday();u=0===u?1:u,o.subtract(u,"days")}for(;c.length<6;)r={displayDate:o.format("D"),momentObj:o.clone(),relativityToCurrentMonth:this.determineDateRelativityToCurrentMonth(o,t),isDisabled:this.determineIfDateIsDisabled(o,n.minDate,n.maxDate),isSelected:-1<this.getSelectedItemIndex(o,i)},l.length<=6?l.push(r):(c.push(l),l=[r]),o.add(1,"day");return c},e.prototype.generateMonthPickerCollection=function(n,r){var s=this;return this.getMonths().map(function(e,t){var i=d().year(n).month(t);return{displayName:e,momentObj:i,isDisabled:s.determineIfDateIsDisabled(i,r.minDate,r.maxDate)}})},e.prototype.generateYearPickerCollection=function(e,t,i){var n=this;return void 0===t&&(t=19),this.getYearList(e,t).map(function(e){var t=d().year(e);return{displayName:e.toString(),momentObj:t,isDisabled:n.determineIfDateIsDisabled(t,i.minDate,i.maxDate)}})},e.prototype.getWeekdays=function(e){return void 0===e&&(e=!0),e?d.weekdaysShort(!0):d.weekdays(!0)},e.prototype.getMonths=function(e){return void 0===e&&(e=!0),e?d.monthsShort():d.months()},e.prototype.getYearList=function(e,t){var i,n;void 0===t&&(t=19),e&&(this.previouslySelectedYear=e.clone()),t<0?(n=d(this.previouslySelectedYear).add(t,"years"),i=d(n).add(t,"years")):(i=d(this.previouslySelectedYear),n=d(i).add(t,"years"));for(var r=[];i.isSameOrBefore(n);)r.push(i.clone().year()),i.add(1,"year");return this.previouslySelectedYear=i.subtract(1,"year").clone(),r},e.prototype.findADateFromCalendar=function(e,t){var i=d(e);return t.reduce(function(e,t){return e.concat(t)},[]).find(function(e){return e.momentObj.isSame(i,"day")})},e.prototype.getSelectedItemIndex=function(t,e){return e.findIndex(function(e){return d(e).isSame(t,"day")})},e.prototype.determineIfDateIsDisabled=function(e,t,i){var n=i&&d(e).isAfter(i,"day"),r=t&&d(e).isBefore(t,"day");return n||r},e.prototype.determineDateRelativityToCurrentMonth=function(e,t){var i=d(t).startOf("month"),n=d(t).endOf("month");return d(e).isBefore(i)?o.Before:d(e).isAfter(n)?o.After:o.Current},e.prototype.sortDatesAsc=function(e){return e.sort(function(e,t){return d(e).isAfter(t)?1:-1})},e.decorators=[{type:r.Injectable}],e.ctorParameters=function(){return[]},e}(),l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)};function u(e,t){function i(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}var p={Month:0,Year:1};p[p.Month]="Month",p[p.Year]="Year";var h="moment",m="date",f="unix",g=a,y={provide:s.NG_VALUE_ACCESSOR,useExisting:r.forwardRef(function(){return b}),multi:!0},b=function(i){function e(e){var t=i.call(this)||this;return t.calendarManager=e,t.locale="en",t.isMultipleSelect=!1,t.isTimepickerEnabled=!1,t.dateObjectType=h,t.dateSelectionChange=new r.EventEmitter,t.isMonthsPickerEnabled=!1,t.isYearsPickerEnabled=!1,t.calendarPeriodRelativity=o,t.period=p.Month,t.selectedDates=n.List(),t}return u(e,i),e.prototype.ngOnInit=function(){g.locale(this.locale),this.calendarManager.setLocale(this.locale);var e=g().hours(0).minutes(0).locale(this.locale);this.selectedDates=n.List([e.clone()]),this.weekdays=this.calendarManager.getWeekdays(),this.calendar=this.getMonthCalendar(e.clone()),this.initializeAuthorValuesIfAny()},e.prototype.ngAfterViewInit=function(){var e=this;setTimeout(function(){e.setValueResult()})},e.prototype.ngOnChanges=function(e){e.timepickerConfig&&e.timepickerConfig.currentValue&&this.setValueResult()},e.prototype.onDateClick=function(e){switch(e.relativityToCurrentMonth){case o.After:this.select(e),this.next();break;case o.Before:this.select(e),this.previous();break;default:this.select(e)}},e.prototype.select=function(e){var t=this.currentMonth.clone();e.relativityToCurrentMonth===o.Before&&t.subtract(1,"month"),e.relativityToCurrentMonth===o.After&&t.add(1,"month"),this.markDateAsSelected(e),this.dateSelectionChange.emit(this.value)},e.prototype.next=function(){if(this.period===p.Month){var e=this.currentMonth.add(1,"month");this.calendar=this.getMonthCalendar(e)}if(this.period===p.Year){var t={minDate:g(this.minDate),maxDate:g(this.maxDate)};this.yearsList=this.calendarManager.generateYearPickerCollection(null,19,t)}},e.prototype.previous=function(){if(this.period===p.Month){var e=this.currentMonth.subtract(1,"month");this.calendar=this.getMonthCalendar(e)}if(this.period===p.Year){var t={minDate:g(this.minDate),maxDate:g(this.maxDate)};this.yearsList=this.calendarManager.generateYearPickerCollection(null,-19,t)}},e.prototype.getMonthCalendar=function(e){var t=this.selectedDates.toArray(),i={minDate:this.minDate,maxDate:this.maxDate};return this.currentMonth=e.clone(),this.calendarManager.generateCalendarForMonth(e,this.currentMonth,t,i)},e.prototype.showMonthsPicker=function(e){void 0===e&&(e=this.currentMonth.year()),this.deselectAll(),this.isYearsPickerEnabled=!1,this.isMonthsPickerEnabled=!0,this.currentMonth.year(e);var t={minDate:this.minDate,maxDate:this.maxDate};this.period=p.Month,this.months=this.calendarManager.generateMonthPickerCollection(e,t)},e.prototype.showYearsPicker=function(){this.deselectAll(),this.isMonthsPickerEnabled=!1,this.isYearsPickerEnabled=!0;var e={minDate:this.minDate,maxDate:this.maxDate};this.period=p.Year,this.yearsList=this.calendarManager.generateYearPickerCollection(this.currentMonth,19,e)},e.prototype.selectMonth=function(e){this.calendar=this.getMonthCalendar(e.momentObj),this.isMonthsPickerEnabled=!1},e.prototype.selectYear=function(e){this.showMonthsPicker(e.momentObj.year())},e.prototype.onTimeChange=function(){this.setValueResult()},e.prototype.initializeAuthorValuesIfAny=function(){var i=this,n=this._modelToViewChange.subscribe(function(e){if(1===i.selectedDates.size&&i.selectedDates.get(0).isSame(g(),"day")&&e)if(i.deselectAll(),Array.isArray(e))e.forEach(function(e){var t=i.calendarManager.findADateFromCalendar(g(e),i.calendar);i.markDateAsSelected(t)});else{var t=i.calendarManager.findADateFromCalendar(g(e),i.calendar);i.markDateAsSelected(t)}n.unsubscribe()})},e.prototype.markDateAsSelected=function(e){var t=g(e.momentObj),i=this.calendarManager.getSelectedItemIndex(t,this.selectedDates.toArray());if(this.isMultipleSelect)-1<i?(e.isSelected=!1,this.selectedDates=this.selectedDates.remove(i)):(this.selectedDates=this.selectedDates.push(t),e.isSelected=!0);else{var n=this.calendarManager.findADateFromCalendar(this.selectedDates.get(0),this.calendar);n&&(n.isSelected=!1),this.selectedDates=this.selectedDates.clear(),this.selectedDates=this.selectedDates.push(t),e.isSelected=!0}this.setValueResult()},e.prototype.deselectAll=function(){var i=this;this.selectedDates.toArray().forEach(function(e){var t=i.calendarManager.findADateFromCalendar(e,i.calendar);t&&(t.isSelected=!1)}),this.selectedDates=n.List([]),this.setValueResult()},e.prototype.setValueResult=function(){this.parsedSelectedDates=this.selectedDates.toArray(),0<this.parsedSelectedDates.length&&(this.setValueTimeIfNeeded(),this.sortValueIfNeeded(),this.toValueDateObjectTypeIfNeeded(),this.toValueFormatIfNeeded()),this.isMultipleSelect?this.value=this.parsedSelectedDates:this.value=this.parsedSelectedDates[0]},e.prototype.toValueDateObjectTypeIfNeeded=function(){if(!this.format)switch(this.dateObjectType){case m:this.parsedSelectedDates=this.parsedSelectedDates.map(function(e){return e.toDate()});break;case f:this.parsedSelectedDates=this.parsedSelectedDates.map(function(e){return e.toDate().getTime()})}},e.prototype.toValueFormatIfNeeded=function(){var t=this;if(this.format){var e=this.parsedSelectedDates.map(function(e){return g(e).format(t.format)});this.parsedSelectedDates=e}},e.prototype.setValueTimeIfNeeded=function(){var t=this;if(this.isTimepickerEnabled&&this.time){var e=this.parsedSelectedDates.map(function(e){return e.hours(t.time.hours()).minutes(t.time.minutes())});this.parsedSelectedDates=e}},e.prototype.sortValueIfNeeded=function(){if(this.isMultipleSelect){var e=this.calendarManager.sortDatesAsc(this.parsedSelectedDates);this.parsedSelectedDates=e}},e.decorators=[{type:r.Component,args:[{selector:"sq-datetime-picker",template:'<div class="datetime-picker-wrapper">\n <div class="period-section display-flex"\n [ngClass]="{\'justify-center\': isMonthsPickerEnabled,\n \'space-between\': !isMonthsPickerEnabled}">\n <button type="button"\n (click)="previous()"\n class="change-period prev"\n *ngIf="!isMonthsPickerEnabled">\n <i class="fa fa-chevron-left"></i>\n </button>\n\n <div>\n <button type="button"\n class="month-name"\n (click)="showMonthsPicker()"\n *ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">\n <strong class="period-name">{{ currentMonth.format(\'MMMM\') }}</strong>\n </button>\n\n <button type="button"\n (click)="showYearsPicker()"\n *ngIf="!isYearsPickerEnabled">\n <strong class="period-name">{{ currentMonth.format(\'YYYY\') }}</strong>\n </button>\n\n <strong class="period-name" *ngIf="isYearsPickerEnabled">\n {{ yearsList[0].displayName + \' - \' + yearsList[yearsList.length - 1].displayName }}\n </strong>\n </div>\n\n <button type="button"\n (click)="next()"\n class="change-period next"\n *ngIf="!isMonthsPickerEnabled">\n <i class="fa fa-chevron-right"></i>\n </button>\n </div>\n\n <div class="alt-picker display-flex space-between wrap"\n *ngIf="isMonthsPickerEnabled || isYearsPickerEnabled">\n <ng-template [ngIf]="isMonthsPickerEnabled">\n <button type="button"\n class="picker-item"\n *ngFor="let month of months"\n (click)="selectMonth(month)"\n [ngClass]="{\'disabled\': month.isDisabled}">\n {{ month.displayName }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]="isYearsPickerEnabled">\n <button type="button"\n class="picker-item"\n *ngFor="let year of yearsList"\n (click)="selectYear(year)"\n [ngClass]="{\'disabled\': year.isDisabled}">\n {{ year.displayName }}\n </button>\n </ng-template>\n </div>\n\n <table class="datetime-picker" *ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">\n <thead>\n <tr>\n <th *ngFor="let day of weekdays" class="heading">\n <span class="text">{{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor="let dateRow of calendar" class="row">\n <td *ngFor="let date of dateRow"\n class="cell"\n (click)="onDateClick(date)"\n [ngClass]="{\'beyond-current-period\': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\n \'selected\': date.isSelected,\n \'disabled\': date.isDisabled}">\n {{ date.displayDate }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <sq-time-picker *ngIf="isTimepickerEnabled"\n [(ngModel)]="time"\n (ngModelChange)="onTimeChange()"\n [ngModelOptions]="{standalone: true}"\n timeObjectType="moment"\n [hours]="timepickerConfig.hours"\n [minutes]="timepickerConfig.minutes"\n [hourStep]="timepickerConfig.hourStep"\n [minuteStep]="timepickerConfig.minuteStep"\n [isEditable]="timepickerConfig.isEditable"\n [isMeridiem]="timepickerConfig.isMeridiem">\n </sq-time-picker>\n</div>\n',encapsulation:r.ViewEncapsulation.None,providers:[y],styles:[".sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}"]}]}],e.ctorParameters=function(){return[{type:c}]},e.propDecorators={locale:[{type:r.Input}],maxDate:[{type:r.Input}],minDate:[{type:r.Input}],isMultipleSelect:[{type:r.Input}],format:[{type:r.Input}],isTimepickerEnabled:[{type:r.Input}],dateObjectType:[{type:r.Input}],timepickerConfig:[{type:r.Input}],dateSelectionChange:[{type:r.Output}]},e}(i.InputCoreComponent),k={Hours:"hours",Minutes:"minutes"},v="string",M="moment",x=a,D={provide:s.NG_VALUE_ACCESSOR,useExisting:r.forwardRef(function(){return C}),multi:!0},C=function(t){function e(){var e=t.call(this)||this;return e.hourStep=1,e.minuteStep=1,e.isMeridiem=!1,e.isEditable=!0,e.timeObjectType=v,e.inputHoursChange=new r.EventEmitter,e.inputMinutesChange=new r.EventEmitter,e.noonRelativity="am",e.timeUnit=k,e.start=x(),e.hourFormat="HH",e.limits={hours:{min:0,max:24},minutes:{min:0,max:59}},e}return u(e,t),e.prototype.ngOnInit=function(){this.hours=this.start.format(this.hourFormat),this.minutes=this.start.format("mm"),this.setValueResult()},e.prototype.ngOnChanges=function(e){e.isMeridiem&&(e.isMeridiem.currentValue?(this.hourFormat="hh",this.noonRelativity=this.start.format("a"),this.limits.hours.min=1,this.limits.hours.max=12):(this.hourFormat="HH",this.limits.hours.min=0,this.limits.hours.max=24),this.hours=this.start.format(this.hourFormat)),e.inputHours&&null!==e.inputHours.currentValue&&"undefined"!=typeof e.inputHours.currentValue&&-1<e.inputHours.currentValue&&(this.hours=this.start.hours(e.inputHours.currentValue).format(this.hourFormat),this.noonRelativity=this.start.format("a")),e.inputMinutes&&null!==e.inputMinutes.currentValue&&"undefined"!=typeof e.inputMinutes.currentValue&&-1<e.inputMinutes.currentValue&&(this.minutes=this.start.minutes(e.inputMinutes.currentValue).format("mm")),this.setValueResult()},e.prototype.ngAfterViewInit=function(){var e=this;setTimeout(function(){e.setValueResult()})},e.prototype.increment=function(e){switch(e){case k.Hours:this.hours=this.start.add(this.hourStep,"hours").format(this.hourFormat),this.inputHoursChange.emit(parseInt(this.hours,10));break;case k.Minutes:this.minutes=this.start.add(this.minuteStep,"minutes").format("mm"),this.inputMinutesChange.emit(parseInt(this.minutes,10))}this.setValueResult()},e.prototype.decrement=function(e){switch(e){case k.Hours:this.hours=this.start.subtract(this.hourStep,"hours").format(this.hourFormat),this.inputHoursChange.emit(parseInt(this.hours,10));break;case k.Minutes:this.minutes=this.start.subtract(this.minuteStep,"minutes").format("mm"),this.inputMinutesChange.emit(parseInt(this.minutes,10))}this.setValueResult()},e.prototype.changeNoonRelativity=function(){this.noonRelativity="am"===this.noonRelativity?"pm":"am",this.setValueResult()},e.prototype.validateInput=function(e){switch(e){case k.Hours:this.hours=this.normalizeTimeInput(this.hours,k.Hours);break;case k.Minutes:this.minutes=this.normalizeTimeInput(this.minutes,k.Minutes)}this.setValueResult()},e.prototype.normalizeTimeInput=function(e,t){return e||(e="00"),parseInt(e,10)>=this.limits[t].max&&(e=this.limits[t].max.toString(),t!==k.Hours||this.isMeridiem||(e="00")),parseInt(e,10)<this.limits[t].min&&(e=this.limits[t].min.toString()),e},e.prototype.setValueResult=function(){var e,t=this.hours+":"+this.minutes;if(t=this.isMeridiem?t+" "+this.noonRelativity.toUpperCase():t,this.timeObjectType===M){var i=this.isMeridiem?"hh:mm A":"HH:mm";e=x(t,i)}this.value=e||t},e.decorators=[{type:r.Component,args:[{selector:"sq-time-picker",template:'<div class="time-picker display-flex justify-center align-items-center">\n <div class="time-unit display-flex column align-items-center">\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="increment(timeUnit.Hours)">\n <i class="fa fa-chevron-up" aria-hidden="true"></i>\n </button>\n\n <div class="time display-flex column align-items-center">\n <input type="text"\n name="time"\n [(ngModel)]="hours"\n maxlength="2"\n minlength="1"\n [disabled]="!isEditable"\n [ngModelOptions]="{standalone: true}"\n (ngModelChange)="validateInput(timeUnit.Hours)">\n </div>\n\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="decrement(timeUnit.Hours)">\n <i class="fa fa-chevron-down" aria-hidden="true"></i>\n </button>\n </div>\n\n <div class="time-unit divider">:</div>\n\n <div class="time-unit display-flex column align-items-center">\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="increment(timeUnit.Minutes)">\n <i class="fa fa-chevron-up" aria-hidden="true"></i>\n </button>\n\n <div class="time">\n <input type="text"\n name="minutes"\n [(ngModel)]="minutes"\n maxlength="2"\n minlength="1"\n [disabled]="!isEditable"\n [ngModelOptions]="{standalone: true}"\n (ngModelChange)="validateInput(timeUnit.Minutes)">\n </div>\n\n <button type="button"\n class="spinner display-flex justify-center align-items-center"\n (click)="decrement(timeUnit.Minutes)">\n <i class="fa fa-chevron-down" aria-hidden="true"></i>\n </button>\n </div>\n\n <div *ngIf="isMeridiem"\n class="time-unit">\n <button type="button"\n class="display-flex justify-center align-items-center"\n (click)="changeNoonRelativity()">\n <span class="meridiem">\n {{noonRelativity.toUpperCase()}}\n </span>\n <i class="fa fa-clock-o meridiem-icon" aria-hidden="true"></i>\n </button>\n </div>\n</div>\n',encapsulation:r.ViewEncapsulation.None,providers:[D],styles:[".sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}"]}]}],e.ctorParameters=function(){return[]},e.propDecorators={hourStep:[{type:r.Input}],minuteStep:[{type:r.Input}],isMeridiem:[{type:r.Input}],isEditable:[{type:r.Input}],inputHours:[{type:r.Input,args:["hours"]}],inputMinutes:[{type:r.Input,args:["minutes"]}],timeObjectType:[{type:r.Input}],inputHoursChange:[{type:r.Output,args:["hoursChange"]}],inputMinutesChange:[{type:r.Output,args:["minutesChange"]}]},e}(i.InputCoreComponent),S=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{imports:[t.CommonModule,s.FormsModule],declarations:[C,b],exports:[C,b],providers:[c],schemas:[r.CUSTOM_ELEMENTS_SCHEMA,r.NO_ERRORS_SCHEMA]}]}],e}(),I=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{imports:[S],declarations:[],exports:[S]}]}],e}();e.NgDatetimePickerModule=I,e.ɵd=c,e.ɵa=S,e.ɵc=b,e.ɵb=C,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=sq-ui-ng-datetime-picker.umd.min.js.map
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -224,9 +224,16 @@ import { Injectable } from '@angular/core';

];
/** @nocollapse */
CalendarManagerService.ctorParameters = () => [];
if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
CalendarManagerService.prototype.locale;
/** @type {?} */
/**
* @type {?}
* @private
*/
CalendarManagerService.prototype.previouslySelectedYear;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUd2RixPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7TUFDN0IsTUFBTSxHQUFHLFFBQVE7QUFHdkIsTUFBTTtJQUVKO1FBRVEsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLDJCQUFzQixHQUFHLE1BQU0sRUFBRSxDQUFDO0lBSDFCLENBQUM7Ozs7O0lBS2pCLFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQzs7Ozs7Ozs7SUFFRCx3QkFBd0IsQ0FBQyxTQUFpQyxFQUNqQyxZQUE2QixFQUM3QixhQUFnQyxFQUNoQyxTQUFvQjs7Y0FDckMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7O2NBQ25FLHNDQUFzQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzs7Y0FFckUsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUU7O2NBQ2pDLFFBQVEsR0FBRyxFQUFFOztZQUNmLFFBQVEsR0FBa0IsRUFBRTs7WUFDNUIsT0FBb0I7UUFFeEIsSUFBSSxDQUFDLHNDQUFzQyxFQUFFOztnQkFDdkMsWUFBWSxHQUFHLFlBQVksQ0FBQyxP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LENBQUMsT0FBTyxDQUFDOztjQUMzRCxpQkFBaUIsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUU3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUM5QyxPQUFPLDRCQUE0QixDQUFDLE1BQU0sQ0FBQztTQUM1QztRQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sNEJBQTRCLENBQUMsS0FBSyxDQUFDO1NBQzNDO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxPQUFPLENBQUM7SUFDOUMsQ0FBQzs7Ozs7SUFFRCxZQUFZLENBQUMsS0FBSztRQUNoQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLENBQUMsQ0FBQzthQUNWO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBdktGLFVBQVU7Ozs7O0lBS1Qsd0NBQXNCOztJQUN0Qix3REFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheSwgSW5DYWxlbmRhclBpY2tlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbnRpdGllcyc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtIH0gZnJvbSAnLi9lbnVtcy9jYWxlbmRhci1wZXJpb2QtcmVsYXRpdml0eS5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9kYXRlLXJhbmdlJztcbi8vIHRlbXBvcmFyeSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIxNyNpc3N1ZWNvbW1lbnQtMzYwMTc2NzU5XG5pbXBvcnQgKiBhcyBtb21lbnROcyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TnM7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHByaXZhdGUgbG9jYWxlID0gJ2VuJztcbiAgcHJpdmF0ZSBwcmV2aW91c2x5U2VsZWN0ZWRZZWFyID0gbW9tZW50KCk7XG5cbiAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgbW9tZW50LmxvY2FsZShsb2NhbGUpO1xuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhckZvck1vbnRoKHN0YXJ0RGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb250aDogbW9tZW50TnMuTW9tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlczogbW9tZW50TnMuTW9tZW50W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEFycmF5PENhbGVuZGFyRGF5W10+IHtcbiAgICBjb25zdCBtb250aFN0YXJ0ID0gbW9tZW50KHN0YXJ0RGF0ZSkuc3RhcnRPZignbW9udGgnKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIGNvbnN0IGlzU3RhcnRPZkNob3Nlbk1vbnRoVGhlRmlyc3REYXlPZlRhYmxlID0gKG1vbnRoU3RhcnQud2Vla2RheSgpID09PSAwKTtcblxuICAgIGNvbnN0IGRhdGVJdGVyYXRvciA9IG1vbnRoU3RhcnQuY2xvbmUoKTtcbiAgICBjb25zdCBjYWxlbmRhciA9IFtdO1xuICAgIGxldCB0YWJsZVJvdzogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICAgIGxldCBuZXdEYXRlOiBDYWxlbmRhckRheTtcblxuICAgIGlmICghaXNTdGFydE9mQ2hvc2VuTW9udGhUaGVGaXJzdERheU9mVGFibGUpIHtcbiAgICAgIGxldCBkYXlzVG9Hb0JhY2sgPSBkYXRlSXRlcmF0b3Iud2Vla2RheSgpO1xuICAgICAgZGF5c1RvR29CYWNrID0gKGRheXNUb0dvQmFjayA9PT0gMCkgPyAxIDogZGF5c1RvR29CYWNrO1xuICAgICAgZGF0ZUl0ZXJhdG9yLnN1YnRyYWN0KGRheXNUb0dvQmFjaywgJ2RheXMnKTtcbiAgICB9XG5cbiAgICAvLyBhZGQgZGF0ZXMgdW50aWwgdGhlIGNhbGVuZGFyIGhhcyA2IHdlZWsgcm93c1xuICAgIHdoaWxlIChjYWxlbmRhci5sZW5ndGggPCA2KSB7XG4gICAgICBuZXdEYXRlID0ge1xuICAgICAgICBkaXNwbGF5RGF0ZTogZGF0ZUl0ZXJhdG9yLmZvcm1hdCgnRCcpLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGVJdGVyYXRvci5jbG9uZSgpLFxuICAgICAgICByZWxhdGl2aXR5VG9DdXJyZW50TW9udGg6IHRoaXMuZGV0ZXJtaW5lRGF0ZVJlbGF0aXZpdHlUb0N1cnJlbnRNb250aChkYXRlSXRlcmF0b3IsIGN1cnJlbnRNb250aCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlSXRlcmF0b3IsIGRhdGVSYW5nZS5taW5EYXRlLCBkYXRlUmFuZ2UubWF4RGF0ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IHRoaXMuZ2V0U2VsZWN0ZWRJdGVtSW5kZXgoZGF0ZUl0ZXJhdG9yLCBzZWxlY3RlZERhdGVzKSA+IC0xXG4gICAgICB9O1xuXG4gICAgICBpZiAodGFibGVSb3cubGVuZ3RoIDw9IDYpIHtcbiAgICAgICAgdGFibGVSb3cucHVzaChuZXdEYXRlKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsZW5kYXIucHVzaCh0YWJsZVJvdyk7XG4gICAgICAgIHRhYmxlUm93ID0gW25ld0RhdGVdO1xuICAgICAgfVxuXG4gICAgICBkYXRlSXRlcmF0b3IuYWRkKDEsICdkYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsZW5kYXI7XG4gIH1cblxuICBnZW5lcmF0ZU1vbnRoUGlja2VyQ29sbGVjdGlvbihjdXJyZW50WWVhcjogbnVtYmVyLCBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEluQ2FsZW5kYXJQaWNrZXJbXSB7XG4gICAgY29uc3QgbW9udGhzID0gdGhpcy5nZXRNb250aHMoKTtcblxuICAgIHJldHVybiBtb250aHMubWFwKChtb250aE5hbWUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcihjdXJyZW50WWVhcikubW9udGgoaW5kZXgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5TmFtZTogbW9udGhOYW1lLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlLCBkYXRlUmFuZ2UubWluRGF0ZSwgZGF0ZVJhbmdlLm1heERhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihzdGFydDogbW9tZW50TnMuTW9tZW50LCBtYXJnaW46IG51bWJlciA9IDE5LCBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEluQ2FsZW5kYXJQaWNrZXJbXSB7XG4gICAgY29uc3QgeWVhcnNMaXN0ID0gdGhpcy5nZXRZZWFyTGlzdChzdGFydCwgbWFyZ2luKTtcblxuICAgIHJldHVybiB5ZWFyc0xpc3QubWFwKCh5ZWFyKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcih5ZWFyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgbW9tZW50T2JqOiBkYXRlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0aGlzLmRldGVybWluZUlmRGF0ZUlzRGlzYWJsZWQoZGF0ZSwgZGF0ZVJhbmdlLm1pbkRhdGUsIGRhdGVSYW5nZS5tYXhEYXRlKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFdlZWtkYXlzKHNob3J0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHJldHVybiBzaG9ydCA/IG1vbWVudC53ZWVrZGF5c1Nob3J0KHRydWUpIDogbW9tZW50LndlZWtkYXlzKHRydWUpO1xuICB9XG5cbiAgZ2V0TW9udGhzKHNob3J0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHJldHVybiBzaG9ydCA/IG1vbWVudC5tb250aHNTaG9ydCgpIDogbW9tZW50Lm1vbnRocygpO1xuICB9XG5cbiAgZ2V0WWVhckxpc3Qoc3RhcnQ6IG1vbWVudE5zLk1vbWVudCwgbWFyZ2luOiBudW1iZXIgPSAxOSk6IG51bWJlcltdIHtcbiAgICBsZXQgeWVhckl0ZXJhdG9yO1xuICAgIGxldCBlbmRZZWFyO1xuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSBzdGFydC5jbG9uZSgpO1xuICAgIH1cblxuICAgIGlmIChtYXJnaW4gPCAwKSB7XG4gICAgICBlbmRZZWFyID0gbW9tZW50KHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgICB5ZWFySXRlcmF0b3IgPSBtb21lbnQoZW5kWWVhcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXJJdGVyYXRvciA9IG1vbWVudCh0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIpO1xuICAgICAgZW5kWWVhciA9IG1vbWVudCh5ZWFySXRlcmF0b3IpLmFkZChtYXJnaW4sICd5ZWFycycpO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXJMaXN0ID0gW107XG5cbiAgICB3aGlsZSAoeWVhckl0ZXJhdG9yLmlzU2FtZU9yQmVmb3JlKGVuZFllYXIpKSB7XG4gICAgICB5ZWFyTGlzdC5wdXNoKHllYXJJdGVyYXRvci5jbG9uZSgpLnllYXIoKSk7XG4gICAgICB5ZWFySXRlcmF0b3IuYWRkKDEsICd5ZWFyJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRZZWFyID0geWVhckl0ZXJhdG9yLnN1YnRyYWN0KDEsICd5ZWFyJykuY2xvbmUoKTtcblxuICAgIHJldHVybiB5ZWFyTGlzdDtcbiAgfVxuXG4gIGZpbmRBRGF0ZUZyb21DYWxlbmRhcihkYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLCBjYWxlbmRhclRhYmxlOiBBcnJheTxDYWxlbmRhckRheVtdPik6IENhbGVuZGFyRGF5IHtcbiAgICBjb25zdCBkYXRlVG9GaW5kID0gbW9tZW50KGRhdGUpO1xuXG4gICAgY29uc3QgZmxhdENhbGVuZGFyVGFibGUgPSBjYWxlbmRhclRhYmxlLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYy5jb25jYXQodmFsKSwgW10pO1xuXG4gICAgcmV0dXJuIGZsYXRDYWxlbmRhclRhYmxlLmZpbmQoKGNhbGVuZGFyRGF5KSA9PiB7XG4gICAgICByZXR1cm4gY2FsZW5kYXJEYXkubW9tZW50T2JqLmlzU2FtZShkYXRlVG9GaW5kLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZEl0ZW1JbmRleChkYXRlOiBtb21lbnROcy5Nb21lbnQsIHNlbGVjdGVkRGF0ZXM6IG1vbWVudE5zLk1vbWVudFtdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc2VsZWN0ZWREYXRlcy5maW5kSW5kZXgoKHNlbGVjdGVkRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIG1vbWVudChzZWxlY3RlZERhdGUpLmlzU2FtZShkYXRlLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGN1cnJlbnREYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWZ0ZXJNYXhEYXRlID0gbWF4RGF0ZSAmJiBtb21lbnQoY3VycmVudERhdGUpLmlzQWZ0ZXIobWF4RGF0ZSwgJ2RheScpO1xuICAgIGNvbnN0IGlzQmVmb3JlTWluRGF0ZSA9IG1pbkRhdGUgJiYgbW9tZW50KGN1cnJlbnREYXRlKS5pc0JlZm9yZShtaW5EYXRlLCAnZGF5Jyk7XG5cbiAgICByZXR1cm4gPGJvb2xlYW4+KGlzQWZ0ZXJNYXhEYXRlIHx8IGlzQmVmb3JlTWluRGF0ZSk7XG4gIH1cblxuICBkZXRlcm1pbmVEYXRlUmVsYXRpdml0eVRvQ3VycmVudE1vbnRoKGRhdGU6IG1vbWVudE5zLk1vbWVudCwgY3VycmVudE1vbnRoOiBtb21lbnROcy5Nb21lbnQpOiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtIHtcbiAgICBjb25zdCBzdGFydE9mQ3VycmVudE1vbnRoID0gbW9tZW50KGN1cnJlbnRNb250aCkuc3RhcnRPZignbW9udGgnKTtcbiAgICBjb25zdCBlbmRPZkN1cnJlbnRNb250aCA9IG1vbWVudChjdXJyZW50TW9udGgpLmVuZE9mKCdtb250aCcpO1xuXG4gICAgaWYgKG1vbWVudChkYXRlKS5pc0JlZm9yZShzdGFydE9mQ3VycmVudE1vbnRoKSkge1xuICAgICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQmVmb3JlO1xuICAgIH1cblxuICAgIGlmIChtb21lbnQoZGF0ZSkuaXNBZnRlcihlbmRPZkN1cnJlbnRNb250aCkpIHtcbiAgICAgIHJldHVybiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkFmdGVyO1xuICAgIH1cblxuICAgIHJldHVybiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkN1cnJlbnQ7XG4gIH1cblxuICBzb3J0RGF0ZXNBc2MoZGF0ZXMpIHtcbiAgICByZXR1cm4gZGF0ZXMuc29ydCgoZGF0ZTEsIGRhdGUyKSA9PiB7XG4gICAgICBpZiAobW9tZW50KGRhdGUxKS5pc0FmdGVyKGRhdGUyKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUd2RixPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7TUFDN0IsTUFBTSxHQUFHLFFBQVE7QUFHdkIsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQztRQUVRLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCwyQkFBc0IsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUgxQixDQUFDOzs7OztJQUtqQixTQUFTLENBQUMsTUFBYztRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Ozs7Ozs7O0lBRUQsd0JBQXdCLENBQUMsU0FBaUMsRUFDakMsWUFBNkIsRUFDN0IsYUFBZ0MsRUFDaEMsU0FBb0I7O2NBQ3JDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOztjQUNuRSxzQ0FBc0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7O2NBRXJFLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFOztjQUNqQyxRQUFRLEdBQUcsRUFBRTs7WUFDZixRQUFRLEdBQWtCLEVBQUU7O1lBQzVCLE9BQW9CO1FBRXhCLElBQUksQ0FBQyxzQ0FBc0MsRUFBRTs7Z0JBQ3ZDLFlBQVksR0FB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QUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7Y0FDM0QsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFN0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDOUMsT0FBTyw0QkFBNEIsQ0FBQyxNQUFNLENBQUM7U0FDNUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUMzQyxPQUFPLDRCQUE0QixDQUFDLEtBQUssQ0FBQztTQUMzQztRQUVELE9BQU8sNEJBQTRCLENBQUMsT0FBTyxDQUFDO0lBQzlDLENBQUM7Ozs7O0lBRUQsWUFBWSxDQUFDLEtBQUs7UUFDaEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2pDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXZLRixVQUFVOzs7Ozs7Ozs7SUFLVCx3Q0FBc0I7Ozs7O0lBQ3RCLHdEQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5LCBJbkNhbGVuZGFyUGlja2VyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVudGl0aWVzJztcbmltcG9ydCB7IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXBlcmlvZC1yZWxhdGl2aXR5LmVudW0nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RhdGUtcmFuZ2UnO1xuLy8gdGVtcG9yYXJ5IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjE3I2lzc3VlY29tbWVudC0zNjAxNzY3NTlcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnROcztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTWFuYWdlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcHJpdmF0ZSBsb2NhbGUgPSAnZW4nO1xuICBwcml2YXRlIHByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSBtb21lbnQoKTtcblxuICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICBtb21lbnQubG9jYWxlKGxvY2FsZSk7XG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyRm9yTW9udGgoc3RhcnREYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vbnRoOiBtb21lbnROcy5Nb21lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVzOiBtb21lbnROcy5Nb21lbnRbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogQXJyYXk8Q2FsZW5kYXJEYXlbXT4ge1xuICAgIGNvbnN0IG1vbnRoU3RhcnQgPSBtb21lbnQoc3RhcnREYXRlKS5zdGFydE9mKCdtb250aCcpLmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgaXNTdGFydE9mQ2hvc2VuTW9udGhUaGVGaXJzdERheU9mVGFibGUgPSAobW9udGhTdGFydC53ZWVrZGF5KCkgPT09IDApO1xuXG4gICAgY29uc3QgZGF0ZUl0ZXJhdG9yID0gbW9udGhTdGFydC5jbG9uZSgpO1xuICAgIGNvbnN0IGNhbGVuZGFyID0gW107XG4gICAgbGV0IHRhYmxlUm93OiBDYWxlbmRhckRheVtdID0gW107XG4gICAgbGV0IG5ld0RhdGU6IENhbGVuZGFyRGF5O1xuXG4gICAgaWYgKCFpc1N0YXJ0T2ZDaG9zZW5Nb250aFRoZUZpcnN0RGF5T2ZUYWJsZSkge1xuICAgICAgbGV0IGRheXNUb0dvQmFjayA9IGRhdGVJdGVyYXRvci53ZWVrZGF5KCk7XG4gICAgICBkYXlzVG9Hb0JhY2sgPSAoZGF5c1RvR29CYWNrID09PSAwKSA/IDEgOiBkYXlzVG9Hb0JhY2s7XG4gICAgICBkYXRlSXRlcmF0b3Iuc3VidHJhY3QoZGF5c1RvR29CYWNrLCAnZGF5cycpO1xuICAgIH1cblxuICAgIC8vIGFkZCBkYXRlcyB1bnRpbCB0aGUgY2FsZW5kYXIgaGFzIDYgd2VlayByb3dzXG4gICAgd2hpbGUgKGNhbGVuZGFyLmxlbmd0aCA8IDYpIHtcbiAgICAgIG5ld0RhdGUgPSB7XG4gICAgICAgIGRpc3BsYXlEYXRlOiBkYXRlSXRlcmF0b3IuZm9ybWF0KCdEJyksXG4gICAgICAgIG1vbWVudE9iajogZGF0ZUl0ZXJhdG9yLmNsb25lKCksXG4gICAgICAgIHJlbGF0aXZpdHlUb0N1cnJlbnRNb250aDogdGhpcy5kZXRlcm1pbmVEYXRlUmVsYXRpdml0eVRvQ3VycmVudE1vbnRoKGRhdGVJdGVyYXRvciwgY3VycmVudE1vbnRoKSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGRhdGVJdGVyYXRvciwgZGF0ZVJhbmdlLm1pbkRhdGUsIGRhdGVSYW5nZS5tYXhEYXRlKSxcbiAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5nZXRTZWxlY3RlZEl0ZW1JbmRleChkYXRlSXRlcmF0b3IsIHNlbGVjdGVkRGF0ZXMpID4gLTFcbiAgICAgIH07XG5cbiAgICAgIGlmICh0YWJsZVJvdy5sZW5ndGggPD0gNikge1xuICAgICAgICB0YWJsZVJvdy5wdXNoKG5ld0RhdGUpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxlbmRhci5wdXNoKHRhYmxlUm93KTtcbiAgICAgICAgdGFibGVSb3cgPSBbbmV3RGF0ZV07XG4gICAgICB9XG5cbiAgICAgIGRhdGVJdGVyYXRvci5hZGQoMSwgJ2RheScpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxlbmRhcjtcbiAgfVxuXG4gIGdlbmVyYXRlTW9udGhQaWNrZXJDb2xsZWN0aW9uKGN1cnJlbnRZZWFyOiBudW1iZXIsIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogSW5DYWxlbmRhclBpY2tlcltdIHtcbiAgICBjb25zdCBtb250aHMgPSB0aGlzLmdldE1vbnRocygpO1xuXG4gICAgcmV0dXJuIG1vbnRocy5tYXAoKG1vbnRoTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoKS55ZWFyKGN1cnJlbnRZZWFyKS5tb250aChpbmRleCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBtb250aE5hbWUsXG4gICAgICAgIG1vbWVudE9iajogZGF0ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGRhdGUsIGRhdGVSYW5nZS5taW5EYXRlLCBkYXRlUmFuZ2UubWF4RGF0ZSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKHN0YXJ0OiBtb21lbnROcy5Nb21lbnQsIG1hcmdpbjogbnVtYmVyID0gMTksIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogSW5DYWxlbmRhclBpY2tlcltdIHtcbiAgICBjb25zdCB5ZWFyc0xpc3QgPSB0aGlzLmdldFllYXJMaXN0KHN0YXJ0LCBtYXJnaW4pO1xuXG4gICAgcmV0dXJuIHllYXJzTGlzdC5tYXAoKHllYXIpID0+IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoKS55ZWFyKHllYXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5TmFtZTogeWVhci50b1N0cmluZygpLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlLCBkYXRlUmFuZ2UubWluRGF0ZSwgZGF0ZVJhbmdlLm1heERhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0V2Vla2RheXMoc2hvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHNob3J0ID8gbW9tZW50LndlZWtkYXlzU2hvcnQodHJ1ZSkgOiBtb21lbnQud2Vla2RheXModHJ1ZSk7XG4gIH1cblxuICBnZXRNb250aHMoc2hvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHNob3J0ID8gbW9tZW50Lm1vbnRoc1Nob3J0KCkgOiBtb21lbnQubW9udGhzKCk7XG4gIH1cblxuICBnZXRZZWFyTGlzdChzdGFydDogbW9tZW50TnMuTW9tZW50LCBtYXJnaW46IG51bWJlciA9IDE5KTogbnVtYmVyW10ge1xuICAgIGxldCB5ZWFySXRlcmF0b3I7XG4gICAgbGV0IGVuZFllYXI7XG5cbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhciA9IHN0YXJ0LmNsb25lKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmdpbiA8IDApIHtcbiAgICAgIGVuZFllYXIgPSBtb21lbnQodGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRZZWFyKS5hZGQobWFyZ2luLCAneWVhcnMnKTtcbiAgICAgIHllYXJJdGVyYXRvciA9IG1vbWVudChlbmRZZWFyKS5hZGQobWFyZ2luLCAneWVhcnMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhckl0ZXJhdG9yID0gbW9tZW50KHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhcik7XG4gICAgICBlbmRZZWFyID0gbW9tZW50KHllYXJJdGVyYXRvcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeWVhckxpc3QgPSBbXTtcblxuICAgIHdoaWxlICh5ZWFySXRlcmF0b3IuaXNTYW1lT3JCZWZvcmUoZW5kWWVhcikpIHtcbiAgICAgIHllYXJMaXN0LnB1c2goeWVhckl0ZXJhdG9yLmNsb25lKCkueWVhcigpKTtcbiAgICAgIHllYXJJdGVyYXRvci5hZGQoMSwgJ3llYXInKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSB5ZWFySXRlcmF0b3Iuc3VidHJhY3QoMSwgJ3llYXInKS5jbG9uZSgpO1xuXG4gICAgcmV0dXJuIHllYXJMaXN0O1xuICB9XG5cbiAgZmluZEFEYXRlRnJvbUNhbGVuZGFyKGRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsIGNhbGVuZGFyVGFibGU6IEFycmF5PENhbGVuZGFyRGF5W10+KTogQ2FsZW5kYXJEYXkge1xuICAgIGNvbnN0IGRhdGVUb0ZpbmQgPSBtb21lbnQoZGF0ZSk7XG5cbiAgICBjb25zdCBmbGF0Q2FsZW5kYXJUYWJsZSA9IGNhbGVuZGFyVGFibGUucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjLmNvbmNhdCh2YWwpLCBbXSk7XG5cbiAgICByZXR1cm4gZmxhdENhbGVuZGFyVGFibGUuZmluZCgoY2FsZW5kYXJEYXkpID0+IHtcbiAgICAgIHJldHVybiBjYWxlbmRhckRheS5tb21lbnRPYmouaXNTYW1lKGRhdGVUb0ZpbmQsICdkYXknKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkSXRlbUluZGV4KGRhdGU6IG1vbWVudE5zLk1vbWVudCwgc2VsZWN0ZWREYXRlczogbW9tZW50TnMuTW9tZW50W10pOiBudW1iZXIge1xuICAgIHJldHVybiBzZWxlY3RlZERhdGVzLmZpbmRJbmRleCgoc2VsZWN0ZWREYXRlKSA9PiB7XG4gICAgICByZXR1cm4gbW9tZW50KHNlbGVjdGVkRGF0ZSkuaXNTYW1lKGRhdGUsICdkYXknKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRldGVybWluZUlmRGF0ZUlzRGlzYWJsZWQoY3VycmVudERhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluRGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBZnRlck1heERhdGUgPSBtYXhEYXRlICYmIG1vbWVudChjdXJyZW50RGF0ZSkuaXNBZnRlcihtYXhEYXRlLCAnZGF5Jyk7XG4gICAgY29uc3QgaXNCZWZvcmVNaW5EYXRlID0gbWluRGF0ZSAmJiBtb21lbnQoY3VycmVudERhdGUpLmlzQmVmb3JlKG1pbkRhdGUsICdkYXknKTtcblxuICAgIHJldHVybiA8Ym9vbGVhbj4oaXNBZnRlck1heERhdGUgfHwgaXNCZWZvcmVNaW5EYXRlKTtcbiAgfVxuXG4gIGRldGVybWluZURhdGVSZWxhdGl2aXR5VG9DdXJyZW50TW9udGgoZGF0ZTogbW9tZW50TnMuTW9tZW50LCBjdXJyZW50TW9udGg6IG1vbWVudE5zLk1vbWVudCk6IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0ge1xuICAgIGNvbnN0IHN0YXJ0T2ZDdXJyZW50TW9udGggPSBtb21lbnQoY3VycmVudE1vbnRoKS5zdGFydE9mKCdtb250aCcpO1xuICAgIGNvbnN0IGVuZE9mQ3VycmVudE1vbnRoID0gbW9tZW50KGN1cnJlbnRNb250aCkuZW5kT2YoJ21vbnRoJyk7XG5cbiAgICBpZiAobW9tZW50KGRhdGUpLmlzQmVmb3JlKHN0YXJ0T2ZDdXJyZW50TW9udGgpKSB7XG4gICAgICByZXR1cm4gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmU7XG4gICAgfVxuXG4gICAgaWYgKG1vbWVudChkYXRlKS5pc0FmdGVyKGVuZE9mQ3VycmVudE1vbnRoKSkge1xuICAgICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQWZ0ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQ3VycmVudDtcbiAgfVxuXG4gIHNvcnREYXRlc0FzYyhkYXRlcykge1xuICAgIHJldHVybiBkYXRlcy5zb3J0KChkYXRlMSwgZGF0ZTIpID0+IHtcbiAgICAgIGlmIChtb21lbnQoZGF0ZTEpLmlzQWZ0ZXIoZGF0ZTIpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -31,2 +31,2 @@ import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQWtCMUUsTUFBTTs7O1lBaEJMLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO2lCQUNaO2dCQUNELFlBQVksRUFBRTtvQkFDWixtQkFBbUI7b0JBQ25CLHVCQUF1QjtpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLG1CQUFtQjtvQkFDbkIsdUJBQXVCO2lCQUN4QjtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDbkMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUM7YUFDcEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGV0aW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQ2FsZW5kYXJNYW5hZ2VyU2VydmljZV0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRldGltZVBpY2tlck1vZHVsZSB7IH1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQWtCMUUsTUFBTSxPQUFPLG9CQUFvQjs7O1lBaEJoQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztpQkFDWjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osbUJBQW1CO29CQUNuQix1QkFBdUI7aUJBQ3hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxtQkFBbUI7b0JBQ25CLHVCQUF1QjtpQkFDeEI7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDO2FBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL2NhbGVuZGFyLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRldGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIERhdGV0aW1lUGlja2VyQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIERhdGV0aW1lUGlja2VyQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0NhbGVuZGFyTWFuYWdlclNlcnZpY2VdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJNb2R1bGUgeyB9XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, forwardRef, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { NG_VALUE_ACCESSOR } from '@angular/forms';

@@ -211,2 +211,3 @@ import { CalendarPeriodRelativityEnum } from '../enums/calendar-period-relativity.enum';

/**
* @private
* @return {?}

@@ -238,2 +239,3 @@ */

/**
* @private
* @param {?} date

@@ -270,2 +272,3 @@ * @return {?}

/**
* @private
* @return {?}

@@ -288,2 +291,3 @@ */

/**
* @private
* @return {?}

@@ -307,2 +311,3 @@ */

/**
* @private
* @return {?}

@@ -327,2 +332,3 @@ */

/**
* @private
* @return {?}

@@ -340,2 +346,3 @@ */

/**
* @private
* @return {?}

@@ -353,2 +360,3 @@ */

/**
* @private
* @return {?}

@@ -367,104 +375,9 @@ */

selector: 'sq-datetime-picker',
template: `<div class="datetime-picker-wrapper">
<div class="period-section display-flex"
[ngClass]="{'justify-center': isMonthsPickerEnabled,
'space-between': !isMonthsPickerEnabled}">
<button type="button"
(click)="previous()"
class="change-period prev"
*ngIf="!isMonthsPickerEnabled">
<i class="fa fa-chevron-left"></i>
</button>
<div>
<button type="button"
class="month-name"
(click)="showMonthsPicker()"
*ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">
<strong class="period-name">{{ currentMonth.format('MMMM') }}</strong>
</button>
<button type="button"
(click)="showYearsPicker()"
*ngIf="!isYearsPickerEnabled">
<strong class="period-name">{{ currentMonth.format('YYYY') }}</strong>
</button>
<strong class="period-name" *ngIf="isYearsPickerEnabled">
{{ yearsList[0].displayName + ' - ' + yearsList[yearsList.length - 1].displayName }}
</strong>
</div>
<button type="button"
(click)="next()"
class="change-period next"
*ngIf="!isMonthsPickerEnabled">
<i class="fa fa-chevron-right"></i>
</button>
</div>
<div class="alt-picker display-flex space-between wrap"
*ngIf="isMonthsPickerEnabled || isYearsPickerEnabled">
<ng-template [ngIf]="isMonthsPickerEnabled">
<button type="button"
class="picker-item"
*ngFor="let month of months"
(click)="selectMonth(month)"
[ngClass]="{'disabled': month.isDisabled}">
{{ month.displayName }}
</button>
</ng-template>
<ng-template [ngIf]="isYearsPickerEnabled">
<button type="button"
class="picker-item"
*ngFor="let year of yearsList"
(click)="selectYear(year)"
[ngClass]="{'disabled': year.isDisabled}">
{{ year.displayName }}
</button>
</ng-template>
</div>
<table class="datetime-picker" *ngIf="!isMonthsPickerEnabled && !isYearsPickerEnabled">
<thead>
<tr>
<th *ngFor="let day of weekdays" class="heading">
<span class="text">{{ day }}</span>
</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let dateRow of calendar" class="row">
<td *ngFor="let date of dateRow"
class="cell"
(click)="onDateClick(date)"
[ngClass]="{'beyond-current-period': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,
'selected': date.isSelected,
'disabled': date.isDisabled}">
{{ date.displayDate }}
</td>
</tr>
</tbody>
</table>
<sq-time-picker *ngIf="isTimepickerEnabled"
[(ngModel)]="time"
(ngModelChange)="onTimeChange()"
[ngModelOptions]="{standalone: true}"
timeObjectType="moment"
[hours]="timepickerConfig.hours"
[minutes]="timepickerConfig.minutes"
[hourStep]="timepickerConfig.hourStep"
[minuteStep]="timepickerConfig.minuteStep"
[isEditable]="timepickerConfig.isEditable"
[isMeridiem]="timepickerConfig.isMeridiem">
</sq-time-picker>
</div>
`,
template: "<div class=\"datetime-picker-wrapper\">\n <div class=\"period-section display-flex\"\n [ngClass]=\"{'justify-center': isMonthsPickerEnabled,\n 'space-between': !isMonthsPickerEnabled}\">\n <button type=\"button\"\n (click)=\"previous()\"\n class=\"change-period prev\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-left\"></i>\n </button>\n\n <div>\n <button type=\"button\"\n class=\"month-name\"\n (click)=\"showMonthsPicker()\"\n *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('MMMM') }}</strong>\n </button>\n\n <button type=\"button\"\n (click)=\"showYearsPicker()\"\n *ngIf=\"!isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('YYYY') }}</strong>\n </button>\n\n <strong class=\"period-name\" *ngIf=\"isYearsPickerEnabled\">\n {{ yearsList[0].displayName + ' - ' + yearsList[yearsList.length - 1].displayName }}\n </strong>\n </div>\n\n <button type=\"button\"\n (click)=\"next()\"\n class=\"change-period next\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"alt-picker display-flex space-between wrap\"\n *ngIf=\"isMonthsPickerEnabled || isYearsPickerEnabled\">\n <ng-template [ngIf]=\"isMonthsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let month of months\"\n (click)=\"selectMonth(month)\"\n [ngClass]=\"{'disabled': month.isDisabled}\">\n {{ month.displayName }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"isYearsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let year of yearsList\"\n (click)=\"selectYear(year)\"\n [ngClass]=\"{'disabled': year.isDisabled}\">\n {{ year.displayName }}\n </button>\n </ng-template>\n </div>\n\n <table class=\"datetime-picker\" *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <thead>\n <tr>\n <th *ngFor=\"let day of weekdays\" class=\"heading\">\n <span class=\"text\">{{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let dateRow of calendar\" class=\"row\">\n <td *ngFor=\"let date of dateRow\"\n class=\"cell\"\n (click)=\"onDateClick(date)\"\n [ngClass]=\"{'beyond-current-period': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\n 'selected': date.isSelected,\n 'disabled': date.isDisabled}\">\n {{ date.displayDate }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <sq-time-picker *ngIf=\"isTimepickerEnabled\"\n [(ngModel)]=\"time\"\n (ngModelChange)=\"onTimeChange()\"\n [ngModelOptions]=\"{standalone: true}\"\n timeObjectType=\"moment\"\n [hours]=\"timepickerConfig.hours\"\n [minutes]=\"timepickerConfig.minutes\"\n [hourStep]=\"timepickerConfig.hourStep\"\n [minuteStep]=\"timepickerConfig.minuteStep\"\n [isEditable]=\"timepickerConfig.isEditable\"\n [isMeridiem]=\"timepickerConfig.isMeridiem\">\n </sq-time-picker>\n</div>\n",
encapsulation: ViewEncapsulation.None,
providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],
styles: [`.sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}`]
styles: [".sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}"]
}] }
];
/** @nocollapse */
DatetimePickerComponent.ctorParameters = () => [

@@ -523,9 +436,18 @@ { type: CalendarManagerService }

DatetimePickerComponent.prototype.period;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.selectedDates;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.parsedSelectedDates;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.calendarManager;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFVBQVUsRUFBVSxpQkFBaUIsRUFDaEQsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBRTVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUVyRSxPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7TUFDN0IsTUFBTSxHQUFHLFFBQVE7O01BRWpCLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztJQUN0RCxLQUFLLEVBQUUsSUFBSTtDQUNaO0FBeUdELE1BQU0sOEJBQStCLFNBQVEsa0JBQWtCOzs7O0lBMEI3RCxZQUFvQixlQUF1QztRQUN6RCxLQUFLLEVBQUUsQ0FBQztRQURVLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQXpCbEQsV0FBTSxH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LENBQUM7eUJBRnZDLDR6REFBNHpEO2FBR3QwRDs7O1lBakhRLHNCQUFzQjs7O3FCQW1INUIsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUs7K0JBQ0wsS0FBSztxQkFDTCxLQUFLO2tDQUNMLEtBQUs7NkJBQ0wsS0FBSzsrQkFDTCxLQUFLO2tDQUVMLE1BQU07Ozs7SUFUUCx5Q0FBdUI7O0lBQ3ZCLDBDQUF5Qzs7SUFDekMsMENBQXlDOztJQUN6QyxtREFBa0M7O0lBQ2xDLHlDQUF3Qjs7SUFDeEIsc0RBQXFDOztJQUNyQyxpREFBd0Q7O0lBQ3hELG1EQUE0Qzs7SUFFNUMsc0RBQWlIOztJQUVqSCwyQ0FBbUI7O0lBQ25CLHlDQUEyQjs7SUFDM0IsNENBQThCOztJQUM5QiwyQ0FBK0I7O0lBQy9CLCtDQUE4Qjs7SUFDOUIsd0RBQThCOztJQUM5Qix1REFBNkI7O0lBQzdCLHVDQUFzQjs7SUFDdEIsMkRBQXdEOztJQUN4RCx5Q0FBOEQ7O0lBRTlELGdEQUF1RTs7SUFDdkUsc0RBQWlDOztJQUVyQixrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudGl0aWVzL2lucHV0LWNvcmUtY29tcG9uZW50JztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXksIEluQ2FsZW5kYXJQaWNrZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVudGl0aWVzJztcbmltcG9ydCB7IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0gfSBmcm9tICcuLi9lbnVtcy9jYWxlbmRhci1wZXJpb2QtcmVsYXRpdml0eS5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvY2FsZW5kYXItcGVyaW9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBEYXRlT2JqZWN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2RhdGUtb2JqZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aW1lcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCB7IENhbGVuZGFyTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci1tYW5hZ2VyLnNlcnZpY2UnO1xuLy8gdGVtcG9yYXJ5IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjE3I2lzc3VlY29tbWVudC0zNjAxNzY3NTlcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnROcztcblxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcS1kYXRldGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJkYXRldGltZS1waWNrZXItd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwicGVyaW9kLXNlY3Rpb24gZGlzcGxheS1mbGV4XCJcbiAgICAgICBbbmdDbGFzc109XCJ7J2p1c3RpZnktY2VudGVyJzogaXNNb250aHNQaWNrZXJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICdzcGFjZS1iZXR3ZWVuJzogIWlzTW9udGhzUGlja2VyRW5hYmxlZH1cIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJjaGFuZ2UtcGVyaW9kIHByZXZcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNNb250aHNQaWNrZXJFbmFibGVkXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW5hbWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vbnRoc1BpY2tlcigpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNb250aHNQaWNrZXJFbmFibGVkICYmICFpc1llYXJzUGlja2VyRW5hYmxlZFwiPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIj57eyBjdXJyZW50TW9udGguZm9ybWF0KCdNTU1NJykgfX08L3N0cm9uZz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1llYXJzUGlja2VyKClcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc1llYXJzUGlja2VyRW5hYmxlZFwiPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIj57eyBjdXJyZW50TW9udGguZm9ybWF0KCdZWVlZJykgfX08L3N0cm9uZz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIiAqbmdJZj1cImlzWWVhcnNQaWNrZXJFbmFibGVkXCI+XG4gICAgICAgIHt7IHllYXJzTGlzdFswXS5kaXNwbGF5TmFtZSArICcgLSAnICsgeWVhcnNMaXN0W3llYXJzTGlzdC5sZW5ndGggLSAxXS5kaXNwbGF5TmFtZSB9fVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImNoYW5nZS1wZXJpb2QgbmV4dFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFpc01vbnRoc1BpY2tlckVuYWJsZWRcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFsdC1waWNrZXIgZGlzcGxheS1mbGV4IHNwYWNlLWJldHdlZW4gd3JhcFwiXG4gICAgICAgKm5nSWY9XCJpc01vbnRoc1BpY2tlckVuYWJsZWQgfHwgaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNNb250aHNQaWNrZXJFbmFibGVkXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInBpY2tlci1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogbW9udGguaXNEaXNhYmxlZH1cIj5cbiAgICAgICAge3sgbW9udGguZGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicGlja2VyLWl0ZW1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc0xpc3RcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiB5ZWFyLmlzRGlzYWJsZWR9XCI+XG4gICAgICAgIHt7IHllYXIuZGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDx0YWJsZSBjbGFzcz1cImRhdGV0aW1lLXBpY2tlclwiICpuZ0lmPVwiIWlzTW9udGhzUGlja2VyRW5hYmxlZCAmJiAhaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtkYXlzXCIgY2xhc3M9XCJoZWFkaW5nXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgZGF5IH19PC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0ZVJvdyBvZiBjYWxlbmRhclwiIGNsYXNzPVwicm93XCI+XG4gICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBkYXRlUm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2xpY2soZGF0ZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiZXlvbmQtY3VycmVudC1wZXJpb2QnOiBkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCAhPT0gY2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5LkN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0ZWQnOiBkYXRlLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkYXRlLmlzRGlzYWJsZWR9XCI+XG4gICAgICAgICAge3sgZGF0ZS5kaXNwbGF5RGF0ZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuXG4gIDxzcS10aW1lLXBpY2tlciAqbmdJZj1cImlzVGltZXBpY2tlckVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgICAgICAgdGltZU9iamVjdFR5cGU9XCJtb21lbnRcIlxuICAgICAgICAgICAgICAgICAgW2hvdXJzXT1cInRpbWVwaWNrZXJDb25maWcuaG91cnNcIlxuICAgICAgICAgICAgICAgICAgW21pbnV0ZXNdPVwidGltZXBpY2tlckNvbmZpZy5taW51dGVzXCJcbiAgICAgICAgICAgICAgICAgIFtob3VyU3RlcF09XCJ0aW1lcGlja2VyQ29uZmlnLmhvdXJTdGVwXCJcbiAgICAgICAgICAgICAgICAgIFttaW51dGVTdGVwXT1cInRpbWVwaWNrZXJDb25maWcubWludXRlU3RlcFwiXG4gICAgICAgICAgICAgICAgICBbaXNFZGl0YWJsZV09XCJ0aW1lcGlja2VyQ29uZmlnLmlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2lzTWVyaWRpZW1dPVwidGltZXBpY2tlckNvbmZpZy5pc01lcmlkaWVtXCI+XG4gIDwvc3EtdGltZS1waWNrZXI+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2Auc3EgLmRhdGV0aW1lLXBpY2tlci13cmFwcGVye21heC13aWR0aDo0MTBweDtmb250LXNpemU6MTRweH0uc3EgLmRhdGV0aW1lLXBpY2tlci13cmFwcGVyIC5waWNrZXItaXRlbXtmb250LXNpemU6MTlweDtiYWNrZ3JvdW5kLWNvbG9yOiNlMmVmZWQ7cGFkZGluZzo1cHggMTJweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWJvdHRvbToxMHB4O21pbi13aWR0aDo4MHB4O3RleHQtYWxpZ246Y2VudGVyfS5zcSAuZGF0ZXRpbWUtcGlja2VyLXdyYXBwZXIgLnBpY2tlci1pdGVtLmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSg3Niw3Niw3NiwuMTIpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnNxIC5wZXJpb2Qtc2VjdGlvbnthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1ib3R0b206MTJweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSg0NiwxNTksMTM0LC42OSl9LnNxIC5wZXJpb2QtbmFtZXtmb250LXNpemU6MjBweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnNxIC5tb250aC1uYW1le21hcmdpbi1yaWdodDoxMHB4fS5zcSAuY2hhbmdlLXBlcmlvZHtmb250LXNpemU6MThweH0uc3EgLmNoYW5nZS1wZXJpb2QubmV4dHtwYWRkaW5nLWxlZnQ6MjBweH0uc3EgLmNoYW5nZS1wZXJpb2QucHJldntwYWRkaW5nLXJpZ2h0OjIwcHh9LnNxIC5hbHQtcGlja2Vye3BhZGRpbmctdG9wOjEwcHh9LnNxIC5kYXRldGltZS1waWNrZXJ7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjt0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlcjpub25lfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5ne3dpZHRoOjE0JTtwYWRkaW5nOjEwcHggMTdweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTgsMTI1LDEwNCwuMyk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoNDYsMTU5LDEzNCwuNjkpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmV9LnNxIC5kYXRldGltZS1waWNrZXIgLmNlbGx7Y3Vyc29yOmRlZmF1bHQ7cGFkZGluZzo2cHggMjBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjFzIGN1YmljLWJlemllciguNTUsLjA5LC42OCwuNTMpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxsLmJleW9uZC1jdXJyZW50LXBlcmlvZHtjb2xvcjojMmU5Zjg2fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxsLnNlbGVjdGVke2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOiNiN2Q4ZDF9LnNxIC5kYXRldGltZS1waWNrZXIgLmNlbGwuZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjojYWJhOWE5fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5yb3c6bnRoLWNoaWxkKDJuKSAuY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTgsMTI1LDEwNCwuMTIpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5yb3c6bnRoLWNoaWxkKDJuKSAuY2VsbC5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNiN2Q4ZDF9QG1lZGlhIChtYXgtd2lkdGg6NDUwcHgpey5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5ne3BhZGRpbmc6MTBweCAxNXB4fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nIC50ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Zpc2liaWxpdHk6aGlkZGVufS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nIC50ZXh0OjpmaXJzdC1sZXR0ZXJ7dmlzaWJpbGl0eTp2aXNpYmxlfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxse3BhZGRpbmc6NnB4IDEycHh9fWBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dENvcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbic7XG4gIEBJbnB1dCgpIG1heERhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIG1pbkRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIGlzTXVsdGlwbGVTZWxlY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybWF0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVGltZXBpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGF0ZU9iamVjdFR5cGU6IHN0cmluZyA9IERhdGVPYmplY3RUeXBlLk1vbWVudDtcbiAgQElucHV0KCkgdGltZXBpY2tlckNvbmZpZzogVGltZXBpY2tlckNvbmZpZztcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPG1vbWVudE5zLk1vbWVudCB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxtb21lbnROcy5Nb21lbnQgfCBEYXRlPigpO1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgbW9udGhzOiBJbkNhbGVuZGFyUGlja2VyW107XG4gIHllYXJzTGlzdDogSW5DYWxlbmRhclBpY2tlcltdO1xuICBjYWxlbmRhcjogQXJyYXk8Q2FsZW5kYXJEYXlbXT47XG4gIGN1cnJlbnRNb250aDogbW9tZW50TnMuTW9tZW50O1xuICBpc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgdGltZTogbW9tZW50TnMuTW9tZW50O1xuICBjYWxlbmRhclBlcmlvZFJlbGF0aXZpdHkgPSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtO1xuICBwZXJpb2Q6IENhbGVuZGFyUGVyaW9kVHlwZUVudW0gPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuXG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlczogTGlzdDxtb21lbnROcy5Nb21lbnQ+ID0gTGlzdDxtb21lbnROcy5Nb21lbnQ+KCk7XG4gIHByaXZhdGUgcGFyc2VkU2VsZWN0ZWREYXRlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNYW5hZ2VyOiBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIG1vbWVudC5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgY29uc3Qgbm93ID0gbW9tZW50KCkuaG91cnMoMCkubWludXRlcygwKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW25vdy5jbG9uZSgpXSk7XG4gICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdldFdlZWtkYXlzKCk7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihub3cuY2xvbmUoKSk7XG4gICAgdGhpcy5pbml0aWFsaXplQXV0aG9yVmFsdWVzSWZBbnkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXNPYmopIHtcbiAgICBpZiAoY2hhbmdlc09iai50aW1lcGlja2VyQ29uZmlnICYmIGNoYW5nZXNPYmoudGltZXBpY2tlckNvbmZpZy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDbGljayhkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIHN3aXRjaCAoZGF0ZS5yZWxhdGl2aXR5VG9DdXJyZW50TW9udGgpIHtcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcjpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmU6XG4gICAgICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50TW9udGguY2xvbmUoKTtcblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmUpIHtcbiAgICAgIG1vbnRoLnN1YnRyYWN0KDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcikge1xuICAgICAgbW9udGguYWRkKDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGRhdGUpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoLmFkZCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIobmV4dE1vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uWWVhcikge1xuICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICBtaW5EYXRlOiBtb21lbnQodGhpcy5taW5EYXRlKSxcbiAgICAgICAgbWF4RGF0ZTogbW9tZW50KHRoaXMubWF4RGF0ZSlcbiAgICAgIH07XG5cbiAgICAgIHRoaXMueWVhcnNMaXN0ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihudWxsLCAxOSwgZGF0ZVJhbmdlKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aW91cygpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTW9udGggPSB0aGlzLmN1cnJlbnRNb250aC5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIocHJldmlvdXNNb250aCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVyaW9kID09PSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXIpIHtcbiAgICAgIGNvbnN0IGRhdGVSYW5nZSA9IHtcbiAgICAgICAgbWluRGF0ZTogbW9tZW50KHRoaXMubWluRGF0ZSksXG4gICAgICAgIG1heERhdGU6IG1vbWVudCh0aGlzLm1heERhdGUpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnllYXJzTGlzdCA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdlbmVyYXRlWWVhclBpY2tlckNvbGxlY3Rpb24obnVsbCwgLTE5LCBkYXRlUmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vbnRoQ2FsZW5kYXIoc3RhcnRQZXJpb2Q6IG1vbWVudE5zLk1vbWVudCk6IEFycmF5PENhbGVuZGFyRGF5W10+IHtcbiAgICBjb25zdCBzZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcbiAgICBjb25zdCBkYXRlUmFuZ2U6IERhdGVSYW5nZSA9IHtcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHN0YXJ0UGVyaW9kLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVDYWxlbmRhckZvck1vbnRoKHN0YXJ0UGVyaW9kLCB0aGlzLmN1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlcywgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dNb250aHNQaWNrZXIoeWVhcjogbnVtYmVyID0gdGhpcy5jdXJyZW50TW9udGgueWVhcigpKSB7XG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgIHRoaXMuaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW9udGhzUGlja2VyRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50TW9udGgueWVhcih5ZWFyKTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuICAgIHRoaXMubW9udGhzID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVNb250aFBpY2tlckNvbGxlY3Rpb24oeWVhciwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dZZWFyc1BpY2tlcigpIHtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5pc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzWWVhcnNQaWNrZXJFbmFibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXI7XG4gICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKHRoaXMuY3VycmVudE1vbnRoLCAxOSwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoKSB7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihtb250aC5tb21lbnRPYmopO1xuICAgIHRoaXMuaXNNb250aHNQaWNrZXJFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RZZWFyKHllYXIpIHtcbiAgICB0aGlzLnNob3dNb250aHNQaWNrZXIoeWVhci5tb21lbnRPYmoueWVhcigpKTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZSgpIHtcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBdXRob3JWYWx1ZXNJZkFueSgpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLl9tb2RlbFRvVmlld0NoYW5nZS5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVzLnNpemUgPT09IDEgJiYgdGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKS5pc1NhbWUobW9tZW50KCksICdkYXknKSkge1xuICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlLmZvckVhY2goKGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udmVydGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQoZGF0ZSksIHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAgICAgICB0aGlzLm1hcmtEYXRlQXNTZWxlY3RlZChjb252ZXJ0ZWREYXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYWxlbmRhckRheSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQobmV3VmFsdWUpLCB0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGNhbGVuZGFyRGF5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtEYXRlQXNTZWxlY3RlZChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IHNlbGVjdGVkTW9tZW50T2JqID0gbW9tZW50KGRhdGUubW9tZW50T2JqKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2V0U2VsZWN0ZWRJdGVtSW5kZXgoc2VsZWN0ZWRNb21lbnRPYmosIHRoaXMuc2VsZWN0ZWREYXRlcy50b0FycmF5KCkpO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICBkYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnJlbW92ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHRoaXMuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkTW9tZW50T2JqKTtcbiAgICAgICAgZGF0ZS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmV2aW91c0RhdGUgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5maW5kQURhdGVGcm9tQ2FsZW5kYXIodGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKSwgdGhpcy5jYWxlbmRhcilcbiAgICAgIGlmIChwcmV2aW91c0RhdGUpIHtcbiAgICAgICAgcHJldmlvdXNEYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXMucHVzaChzZWxlY3RlZE1vbWVudE9iaik7XG4gICAgICBkYXRlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKS5mb3JFYWNoKChzZWxlY3RlZERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF5ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZmluZEFEYXRlRnJvbUNhbGVuZGFyKHNlbGVjdGVkRGF0ZSwgdGhpcy5jYWxlbmRhcik7XG5cbiAgICAgIC8vIHRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIHdlIGhhdmUgYSBzZWxlY3RlZCBkYXRlXG4gICAgICAvLyBmcm9tIHRoZSBwcmV2aW91cyBtb250aCBidXQgd2UgaGF2ZW4ndCBzZWxlY3RlZCBhbnl0aGluZ1xuICAgICAgLy8gZnJvbSB0aGUgY3VycmVudFxuICAgICAgaWYgKGNhbGVuZGFyRGF5KSB7XG4gICAgICAgIGNhbGVuZGFyRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW10pO1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVSZXN1bHQoKSB7XG4gICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcblxuICAgIGlmICh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRWYWx1ZVRpbWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy5zb3J0VmFsdWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRGF0ZU9iamVjdFR5cGVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRm9ybWF0SWZOZWVkZWQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzWzBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9WYWx1ZURhdGVPYmplY3RUeXBlSWZOZWVkZWQoKSAge1xuICAgIGlmICghdGhpcy5mb3JtYXQpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlT2JqZWN0VHlwZSkge1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLkRhdGU6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLlVuaXg6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmFsdWVGb3JtYXRJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCh0aGlzLmZvcm1hdCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gZm9ybWF0dGVkRGF0ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZVRpbWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc1RpbWVwaWNrZXJFbmFibGVkICYmIHRoaXMudGltZSkge1xuICAgICAgY29uc3QgZGF0ZXNXaXRoVGltZSA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKG1vbWVudE9iaikgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50T2JqLmhvdXJzKHRoaXMudGltZS5ob3VycygpKS5taW51dGVzKHRoaXMudGltZS5taW51dGVzKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IGRhdGVzV2l0aFRpbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VmFsdWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRlcyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNvcnREYXRlc0FzYyh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMpO1xuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gc29ydGVkRGF0ZXM7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFVBQVUsRUFBVSxpQkFBaUIsRUFDaEQsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBRTVCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUVyRSxPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7TUFDN0IsTUFBTSxHQUFHLFFBQVE7O01BRWpCLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztJQUN0RCxLQUFLLEVBQUUsSUFBSTtDQUNaO0FBU0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjs7OztJQTBCN0QsWUFBb0IsZUFBdUM7UUFDekQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUF6QmxELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHZCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLG1CQUFjLEdBQVcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUc5Qyx3QkFBbUIsR0FBeUMsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFPakgsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU3Qiw2QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztRQUN4RCxXQUFNLEdBQTJCLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUV0RCxrQkFBYSxHQUEwQixJQUFJLEVBQW1CLENBQUM7SUFLdkUsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7O2NBQ3RDLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQzs7OztJQUVELGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFRCxXQUFXLENBQUMsVUFBVTtRQUNwQixJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO1lBQzNFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtJQUNILENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQWlCO1FBQzNCLFFBQVEsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ3JDLEtBQUssNEJBQTRCLENBQUMsS0FBSztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNaLE1BQU07WUFDUixLQUFLLDRCQUE0QixDQUFDLE1BQU07Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU07U0FDVDtJQUNILENBQUM7Ozs7O0lBRUQsTUFBTSxDQUFDLElBQWlCOztjQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFFdkMsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3pFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssNEJBQTRCLENBQUMsS0FBSyxFQUFFO1lBQ3hFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLEtBQUssRUFBRTs7a0JBQzFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLElBQUksRUFBRTs7a0JBQ3pDLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDOUI7WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6RjtJQUNILENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLEtBQUssRUFBRTs7a0JBQzFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO1lBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLElBQUksRUFBRTs7a0JBQ3pDLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDOUI7WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxXQUE0Qjs7Y0FDckMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFOztjQUM1QyxTQUFTLEdBQWM7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXhDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakgsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO1FBQ3RELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O2NBQ3ZCLFNBQVMsR0FBRztZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRixDQUFDOzs7O0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7O2NBQzNCLFNBQVMsR0FBRztZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxJQUFJO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs7OztJQUVPLDJCQUEyQjs7Y0FDM0IsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RGLElBQUksUUFBUSxFQUFFO29CQUNaLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFFbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUMzQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O2tDQUNsQixhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQzs0QkFDN0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN6QyxDQUFDLENBQUMsQ0FBQztxQkFDSjt5QkFBTTs7OEJBQ0MsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQy9GLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDdEM7aUJBQ0Y7YUFDRjtZQUVELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFFTyxrQkFBa0IsQ0FBQyxJQUFpQjs7Y0FDcEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7O2NBQzFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEgsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7YUFDeEI7U0FFRjthQUFNOztrQkFDQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pHLElBQUksWUFBWSxFQUFFO2dCQUNoQixZQUFZLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUNqQztZQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7O2tCQUM5QyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUUzRixxREFBcUQ7WUFDckQsMkRBQTJEO1lBQzNELG1CQUFtQjtZQUNuQixJQUFJLFdBQVcsRUFBRTtnQkFDZixXQUFXLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV4RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FDdkM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQzs7Ozs7SUFFTyw2QkFBNkI7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMzQixLQUFLLGNBQWMsQ0FBQyxJQUFJO29CQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUNwRSxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTTtnQkFDUixLQUFLLGNBQWMsQ0FBQyxJQUFJO29CQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUNwRSxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7O2tCQUNULGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztTQUMzQztJQUNILENBQUM7Ozs7O0lBRU8sb0JBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7O2tCQUNuQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMvRCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQztTQUMxQztJQUNILENBQUM7Ozs7O0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFOztrQkFDbkIsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUMvRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7O1lBMVNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwyaUhBQStDO2dCQUUvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7O2FBQ2pEOzs7O1lBakJRLHNCQUFzQjs7O3FCQW1CNUIsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUs7K0JBQ0wsS0FBSztxQkFDTCxLQUFLO2tDQUNMLEtBQUs7NkJBQ0wsS0FBSzsrQkFDTCxLQUFLO2tDQUVMLE1BQU07Ozs7SUFUUCx5Q0FBdUI7O0lBQ3ZCLDBDQUF5Qzs7SUFDekMsMENBQXlDOztJQUN6QyxtREFBa0M7O0lBQ2xDLHlDQUF3Qjs7SUFDeEIsc0RBQXFDOztJQUNyQyxpREFBd0Q7O0lBQ3hELG1EQUE0Qzs7SUFFNUMsc0RBQWlIOztJQUVqSCwyQ0FBbUI7O0lBQ25CLHlDQUEyQjs7SUFDM0IsNENBQThCOztJQUM5QiwyQ0FBK0I7O0lBQy9CLCtDQUE4Qjs7SUFDOUIsd0RBQThCOztJQUM5Qix1REFBNkI7O0lBQzdCLHVDQUFzQjs7SUFDdEIsMkRBQXdEOztJQUN4RCx5Q0FBOEQ7Ozs7O0lBRTlELGdEQUF1RTs7Ozs7SUFDdkUsc0RBQWlDOzs7OztJQUVyQixrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnQHNxLXVpL25nLXNxLWNvbW1vbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyRGF5LCBJbkNhbGVuZGFyUGlja2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbnRpdGllcyc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtIH0gZnJvbSAnLi4vZW51bXMvY2FsZW5kYXItcGVyaW9kLXJlbGF0aXZpdHkuZW51bSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RhdGUtcmFuZ2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJQZXJpb2RUeXBlRW51bSB9IGZyb20gJy4uL2VudW1zL2NhbGVuZGFyLXBlcmlvZC10eXBlLmVudW0nO1xuaW1wb3J0IHsgRGF0ZU9iamVjdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9kYXRlLW9iamVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGltZXBpY2tlckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGltZXBpY2tlci1jb25maWcnO1xuaW1wb3J0IHsgTGlzdCB9IGZyb20gJ2ltbXV0YWJsZSc7XG5pbXBvcnQgeyBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlJztcbi8vIHRlbXBvcmFyeSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIxNyNpc3N1ZWNvbW1lbnQtMzYwMTc2NzU5XG5pbXBvcnQgKiBhcyBtb21lbnROcyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TnM7XG5cbmNvbnN0IENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dENvcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbic7XG4gIEBJbnB1dCgpIG1heERhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIG1pbkRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIGlzTXVsdGlwbGVTZWxlY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybWF0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVGltZXBpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGF0ZU9iamVjdFR5cGU6IHN0cmluZyA9IERhdGVPYmplY3RUeXBlLk1vbWVudDtcbiAgQElucHV0KCkgdGltZXBpY2tlckNvbmZpZzogVGltZXBpY2tlckNvbmZpZztcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPG1vbWVudE5zLk1vbWVudCB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxtb21lbnROcy5Nb21lbnQgfCBEYXRlPigpO1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgbW9udGhzOiBJbkNhbGVuZGFyUGlja2VyW107XG4gIHllYXJzTGlzdDogSW5DYWxlbmRhclBpY2tlcltdO1xuICBjYWxlbmRhcjogQXJyYXk8Q2FsZW5kYXJEYXlbXT47XG4gIGN1cnJlbnRNb250aDogbW9tZW50TnMuTW9tZW50O1xuICBpc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgdGltZTogbW9tZW50TnMuTW9tZW50O1xuICBjYWxlbmRhclBlcmlvZFJlbGF0aXZpdHkgPSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtO1xuICBwZXJpb2Q6IENhbGVuZGFyUGVyaW9kVHlwZUVudW0gPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuXG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlczogTGlzdDxtb21lbnROcy5Nb21lbnQ+ID0gTGlzdDxtb21lbnROcy5Nb21lbnQ+KCk7XG4gIHByaXZhdGUgcGFyc2VkU2VsZWN0ZWREYXRlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNYW5hZ2VyOiBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIG1vbWVudC5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgY29uc3Qgbm93ID0gbW9tZW50KCkuaG91cnMoMCkubWludXRlcygwKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW25vdy5jbG9uZSgpXSk7XG4gICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdldFdlZWtkYXlzKCk7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihub3cuY2xvbmUoKSk7XG4gICAgdGhpcy5pbml0aWFsaXplQXV0aG9yVmFsdWVzSWZBbnkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXNPYmopIHtcbiAgICBpZiAoY2hhbmdlc09iai50aW1lcGlja2VyQ29uZmlnICYmIGNoYW5nZXNPYmoudGltZXBpY2tlckNvbmZpZy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDbGljayhkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIHN3aXRjaCAoZGF0ZS5yZWxhdGl2aXR5VG9DdXJyZW50TW9udGgpIHtcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcjpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmU6XG4gICAgICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50TW9udGguY2xvbmUoKTtcblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmUpIHtcbiAgICAgIG1vbnRoLnN1YnRyYWN0KDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcikge1xuICAgICAgbW9udGguYWRkKDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGRhdGUpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoLmFkZCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIobmV4dE1vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uWWVhcikge1xuICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICBtaW5EYXRlOiBtb21lbnQodGhpcy5taW5EYXRlKSxcbiAgICAgICAgbWF4RGF0ZTogbW9tZW50KHRoaXMubWF4RGF0ZSlcbiAgICAgIH07XG5cbiAgICAgIHRoaXMueWVhcnNMaXN0ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihudWxsLCAxOSwgZGF0ZVJhbmdlKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aW91cygpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTW9udGggPSB0aGlzLmN1cnJlbnRNb250aC5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIocHJldmlvdXNNb250aCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVyaW9kID09PSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXIpIHtcbiAgICAgIGNvbnN0IGRhdGVSYW5nZSA9IHtcbiAgICAgICAgbWluRGF0ZTogbW9tZW50KHRoaXMubWluRGF0ZSksXG4gICAgICAgIG1heERhdGU6IG1vbWVudCh0aGlzLm1heERhdGUpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnllYXJzTGlzdCA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdlbmVyYXRlWWVhclBpY2tlckNvbGxlY3Rpb24obnVsbCwgLTE5LCBkYXRlUmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vbnRoQ2FsZW5kYXIoc3RhcnRQZXJpb2Q6IG1vbWVudE5zLk1vbWVudCk6IEFycmF5PENhbGVuZGFyRGF5W10+IHtcbiAgICBjb25zdCBzZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcbiAgICBjb25zdCBkYXRlUmFuZ2U6IERhdGVSYW5nZSA9IHtcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHN0YXJ0UGVyaW9kLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVDYWxlbmRhckZvck1vbnRoKHN0YXJ0UGVyaW9kLCB0aGlzLmN1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlcywgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dNb250aHNQaWNrZXIoeWVhcjogbnVtYmVyID0gdGhpcy5jdXJyZW50TW9udGgueWVhcigpKSB7XG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgIHRoaXMuaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW9udGhzUGlja2VyRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50TW9udGgueWVhcih5ZWFyKTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuICAgIHRoaXMubW9udGhzID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVNb250aFBpY2tlckNvbGxlY3Rpb24oeWVhciwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dZZWFyc1BpY2tlcigpIHtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5pc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzWWVhcnNQaWNrZXJFbmFibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXI7XG4gICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKHRoaXMuY3VycmVudE1vbnRoLCAxOSwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoKSB7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihtb250aC5tb21lbnRPYmopO1xuICAgIHRoaXMuaXNNb250aHNQaWNrZXJFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RZZWFyKHllYXIpIHtcbiAgICB0aGlzLnNob3dNb250aHNQaWNrZXIoeWVhci5tb21lbnRPYmoueWVhcigpKTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZSgpIHtcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBdXRob3JWYWx1ZXNJZkFueSgpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLl9tb2RlbFRvVmlld0NoYW5nZS5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVzLnNpemUgPT09IDEgJiYgdGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKS5pc1NhbWUobW9tZW50KCksICdkYXknKSkge1xuICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlLmZvckVhY2goKGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udmVydGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQoZGF0ZSksIHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAgICAgICB0aGlzLm1hcmtEYXRlQXNTZWxlY3RlZChjb252ZXJ0ZWREYXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYWxlbmRhckRheSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQobmV3VmFsdWUpLCB0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGNhbGVuZGFyRGF5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtEYXRlQXNTZWxlY3RlZChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IHNlbGVjdGVkTW9tZW50T2JqID0gbW9tZW50KGRhdGUubW9tZW50T2JqKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2V0U2VsZWN0ZWRJdGVtSW5kZXgoc2VsZWN0ZWRNb21lbnRPYmosIHRoaXMuc2VsZWN0ZWREYXRlcy50b0FycmF5KCkpO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICBkYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnJlbW92ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHRoaXMuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkTW9tZW50T2JqKTtcbiAgICAgICAgZGF0ZS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmV2aW91c0RhdGUgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5maW5kQURhdGVGcm9tQ2FsZW5kYXIodGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKSwgdGhpcy5jYWxlbmRhcik7XG4gICAgICBpZiAocHJldmlvdXNEYXRlKSB7XG4gICAgICAgIHByZXZpb3VzRGF0ZS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHRoaXMuc2VsZWN0ZWREYXRlcy5jbGVhcigpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnB1c2goc2VsZWN0ZWRNb21lbnRPYmopO1xuICAgICAgZGF0ZS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGRlc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlcy50b0FycmF5KCkuZm9yRWFjaCgoc2VsZWN0ZWREYXRlKSA9PiB7XG4gICAgICBjb25zdCBjYWxlbmRhckRheSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihzZWxlY3RlZERhdGUsIHRoaXMuY2FsZW5kYXIpO1xuXG4gICAgICAvLyB0aGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlbiB3ZSBoYXZlIGEgc2VsZWN0ZWQgZGF0ZVxuICAgICAgLy8gZnJvbSB0aGUgcHJldmlvdXMgbW9udGggYnV0IHdlIGhhdmVuJ3Qgc2VsZWN0ZWQgYW55dGhpbmdcbiAgICAgIC8vIGZyb20gdGhlIGN1cnJlbnRcbiAgICAgIGlmIChjYWxlbmRhckRheSkge1xuICAgICAgICBjYWxlbmRhckRheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSBMaXN0KFtdKTtcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlUmVzdWx0KCkge1xuICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IHRoaXMuc2VsZWN0ZWREYXRlcy50b0FycmF5KCk7XG5cbiAgICBpZiAodGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVUaW1lSWZOZWVkZWQoKTtcbiAgICAgIHRoaXMuc29ydFZhbHVlSWZOZWVkZWQoKTtcbiAgICAgIHRoaXMudG9WYWx1ZURhdGVPYmplY3RUeXBlSWZOZWVkZWQoKTtcbiAgICAgIHRoaXMudG9WYWx1ZUZvcm1hdElmTmVlZGVkKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlc1swXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmFsdWVEYXRlT2JqZWN0VHlwZUlmTmVlZGVkKCkgIHtcbiAgICBpZiAoIXRoaXMuZm9ybWF0KSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZGF0ZU9iamVjdFR5cGUpIHtcbiAgICAgICAgY2FzZSBEYXRlT2JqZWN0VHlwZS5EYXRlOlxuICAgICAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKG1vbWVudE9iaikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudE9iai50b0RhdGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBEYXRlT2JqZWN0VHlwZS5Vbml4OlxuICAgICAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKG1vbWVudE9iaikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudE9iai50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b1ZhbHVlRm9ybWF0SWZOZWVkZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybWF0KSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlcyA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKGRhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IGZvcm1hdHRlZERhdGVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVUaW1lSWZOZWVkZWQoKSB7XG4gICAgaWYgKHRoaXMuaXNUaW1lcGlja2VyRW5hYmxlZCAmJiB0aGlzLnRpbWUpIHtcbiAgICAgIGNvbnN0IGRhdGVzV2l0aFRpbWUgPSB0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMubWFwKChtb21lbnRPYmopID0+IHtcbiAgICAgICAgcmV0dXJuIG1vbWVudE9iai5ob3Vycyh0aGlzLnRpbWUuaG91cnMoKSkubWludXRlcyh0aGlzLnRpbWUubWludXRlcygpKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMgPSBkYXRlc1dpdGhUaW1lO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFZhbHVlSWZOZWVkZWQoKSB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgY29uc3Qgc29ydGVkRGF0ZXMgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5zb3J0RGF0ZXNBc2ModGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzKTtcbiAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IHNvcnRlZERhdGVzO1xuICAgIH1cbiAgfVxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {number} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {number} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import * as momentNs from 'moment';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import * as momentNs from 'moment';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, forwardRef, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { TimeUnit } from '../enums/time-unit.enum';

@@ -34,2 +34,3 @@ import { TimeObject } from '../enums/time-object-type.enum';

this.hourFormat = 'HH'; // 24-hour format by default
// 24-hour format by default
this.limits = {

@@ -153,2 +154,3 @@ hours: {

/**
* @private
* @param {?} value

@@ -174,2 +176,3 @@ * @param {?} unit

/**
* @private
* @return {?}

@@ -194,73 +197,9 @@ */

selector: 'sq-time-picker',
template: `<div class="time-picker display-flex justify-center align-items-center">
<div class="time-unit display-flex column align-items-center">
<button type="button"
class="spinner display-flex justify-center align-items-center"
(click)="increment(timeUnit.Hours)">
<i class="fa fa-chevron-up" aria-hidden="true"></i>
</button>
<div class="time display-flex column align-items-center">
<input type="text"
name="time"
[(ngModel)]="hours"
maxlength="2"
minlength="1"
[disabled]="!isEditable"
[ngModelOptions]="{standalone: true}"
(ngModelChange)="validateInput(timeUnit.Hours)">
</div>
<button type="button"
class="spinner display-flex justify-center align-items-center"
(click)="decrement(timeUnit.Hours)">
<i class="fa fa-chevron-down" aria-hidden="true"></i>
</button>
</div>
<div class="time-unit divider">:</div>
<div class="time-unit display-flex column align-items-center">
<button type="button"
class="spinner display-flex justify-center align-items-center"
(click)="increment(timeUnit.Minutes)">
<i class="fa fa-chevron-up" aria-hidden="true"></i>
</button>
<div class="time">
<input type="text"
name="minutes"
[(ngModel)]="minutes"
maxlength="2"
minlength="1"
[disabled]="!isEditable"
[ngModelOptions]="{standalone: true}"
(ngModelChange)="validateInput(timeUnit.Minutes)">
</div>
<button type="button"
class="spinner display-flex justify-center align-items-center"
(click)="decrement(timeUnit.Minutes)">
<i class="fa fa-chevron-down" aria-hidden="true"></i>
</button>
</div>
<div *ngIf="isMeridiem"
class="time-unit">
<button type="button"
class="display-flex justify-center align-items-center"
(click)="changeNoonRelativity()">
<span class="meridiem">
{{noonRelativity.toUpperCase()}}
</span>
<i class="fa fa-clock-o meridiem-icon" aria-hidden="true"></i>
</button>
</div>
</div>
`,
template: "<div class=\"time-picker display-flex justify-center align-items-center\">\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time display-flex column align-items-center\">\n <input type=\"text\"\n name=\"time\"\n [(ngModel)]=\"hours\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Hours)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"time-unit divider\">:</div>\n\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time\">\n <input type=\"text\"\n name=\"minutes\"\n [(ngModel)]=\"minutes\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Minutes)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div *ngIf=\"isMeridiem\"\n class=\"time-unit\">\n <button type=\"button\"\n class=\"display-flex justify-center align-items-center\"\n (click)=\"changeNoonRelativity()\">\n <span class=\"meridiem\">\n {{noonRelativity.toUpperCase()}}\n </span>\n <i class=\"fa fa-clock-o meridiem-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n</div>\n",
encapsulation: ViewEncapsulation.None,
providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],
styles: [`.sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}`]
styles: [".sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}"]
}] }
];
/** @nocollapse */
TimePickerComponent.ctorParameters = () => [];

@@ -305,5 +244,11 @@ TimePickerComponent.propDecorators = {

TimePickerComponent.prototype.timeUnit;
/** @type {?} */
/**
* @type {?}
* @private
*/
TimePickerComponent.prototype.start;
/** @type {?} */
/**
* @type {?}
* @private
*/
TimePickerComponent.prototype.hourFormat;

@@ -313,2 +258,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFVBQVUsRUFBVSxpQkFBaUIsRUFDaEQsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQ3ZDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRW5ELE9BQU8sS0FBSyxRQUFRLE1BQU0sUUFBUSxDQUFDOztNQUM3QixNQUFNLEdBQUcsUUFBUTs7TUFFakIsbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1o7QUEwRUQsTUFBTSwwQkFBMkIsU0FBUSxrQkFBa0I7SUErQnpEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUEvQkQsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsbUJBQWMsR0FBVyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTdCLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZ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QUVELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNwRCxDQUFDOzs7WUF4T0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpRVg7Z0JBRUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO3lCQUZ2Qyx5MEJBQXkwQjthQUduMUI7Ozs7dUJBRUUsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSzt5QkFDTCxLQUFLLFNBQUMsT0FBTzsyQkFDYixLQUFLLFNBQUMsU0FBUzs2QkFDZixLQUFLOytCQUVMLE1BQU0sU0FBQyxhQUFhO2lDQUNwQixNQUFNLFNBQUMsZUFBZTs7OztJQVR2Qix1Q0FBc0I7O0lBQ3RCLHlDQUF3Qjs7SUFDeEIseUNBQTRCOztJQUM1Qix5Q0FBMkI7O0lBQzNCLHlDQUFtQzs7SUFDbkMsMkNBQXVDOztJQUN2Qyw2Q0FBb0Q7O0lBRXBELCtDQUFxRTs7SUFDckUsaURBQXlFOztJQUV6RSxvQ0FBTTs7SUFDTixzQ0FBUTs7SUFDUiw2Q0FBc0I7O0lBQ3RCLHVDQUFvQjs7SUFFcEIsb0NBQXlCOztJQUN6Qix5Q0FBMEI7O0lBRTFCLHFDQVNFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElucHV0Q29yZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnRpdGllcy9pbnB1dC1jb3JlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lVW5pdCB9IGZyb20gJy4uL2VudW1zL3RpbWUtdW5pdC5lbnVtJztcbmltcG9ydCB7IFRpbWVPYmplY3QgfSBmcm9tICcuLi9lbnVtcy90aW1lLW9iamVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyB0ZW1wb3JhcnkgZml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vbmctcGFja2Fnci9uZy1wYWNrYWdyL2lzc3Vlcy8yMTcjaXNzdWVjb21tZW50LTM2MDE3Njc1OVxuaW1wb3J0ICogYXMgbW9tZW50TnMgZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudE5zO1xuXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXIgZGlzcGxheS1mbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGltZS11bml0IGRpc3BsYXktZmxleCBjb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3Bpbm5lciBkaXNwbGF5LWZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbmNyZW1lbnQodGltZVVuaXQuSG91cnMpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGltZSBkaXNwbGF5LWZsZXggY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICBuYW1lPVwidGltZVwiXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJob3Vyc1wiXG4gICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICAgbWlubGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUlucHV0KHRpbWVVbml0LkhvdXJzKVwiPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3Bpbm5lciBkaXNwbGF5LWZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWNyZW1lbnQodGltZVVuaXQuSG91cnMpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRpbWUtdW5pdCBkaXZpZGVyXCI+OjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0aW1lLXVuaXQgZGlzcGxheS1mbGV4IGNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyIGRpc3BsYXktZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudCh0aW1lVW5pdC5NaW51dGVzKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cInRpbWVcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgbmFtZT1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWludXRlc1wiXG4gICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICAgbWlubGVuZ3RoPVwiMVwiXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VkaXRhYmxlXCJcbiAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWxpZGF0ZUlucHV0KHRpbWVVbml0Lk1pbnV0ZXMpXCI+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyIGRpc3BsYXktZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCh0aW1lVW5pdC5NaW51dGVzKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJpc01lcmlkaWVtXCJcbiAgICAgICAgY2xhc3M9XCJ0aW1lLXVuaXRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJkaXNwbGF5LWZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VOb29uUmVsYXRpdml0eSgpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1lcmlkaWVtXCI+XG4gICAgICAgIHt7bm9vblJlbGF0aXZpdHkudG9VcHBlckNhc2UoKX19XG4gICAgICA8L3NwYW4+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNsb2NrLW8gbWVyaWRpZW0taWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2Auc3EgLnRpbWUtcGlja2Vye2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoNDYsMTU5LDEzNCwuNjkpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoNDYsMTU5LDEzNCwuNjkpO2ZvbnQtc2l6ZToyM3B4fS5zcSAudGltZS1waWNrZXIgaW5wdXR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE4LDEyNSwxMDQsLjEyKTtib3JkZXI6bm9uZTt3aWR0aDozOHB4O2hlaWdodDozOHB4O3RleHQtYWxpZ246Y2VudGVyfS5zcSAudGltZS1waWNrZXIgLnRpbWV7cGFkZGluZzo1cHggMCAzcHh9LnNxIC50aW1lLXBpY2tlciAudGltZS11bml0e3BhZGRpbmc6N3B4IDAgMTBweH0uc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQ6bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6MTVweH0uc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQgLm1lcmlkaWVtLWljb24sLnNxIC50aW1lLXBpY2tlciAudGltZS11bml0IC5zcGlubmVye29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246LjNzIGVhc2UtaW59LnNxIC50aW1lLXBpY2tlciAudGltZS11bml0IC5zcGlubmVye2hlaWdodDoyNXB4fS5zcSAudGltZS1waWNrZXIgLnRpbWUtdW5pdDpob3ZlciAubWVyaWRpZW0taWNvbiwuc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQ6aG92ZXIgLnNwaW5uZXJ7b3BhY2l0eToxO3BvaW50ZXItZXZlbnRzOmF1dG99LnNxIC50aW1lLXBpY2tlciAudGltZS11bml0IC5mYXtmb250LXNpemU6MjBweH0uc3EgLnRpbWUtcGlja2VyIC5tZXJpZGllbXtwYWRkaW5nLXJpZ2h0OjVweH0uc3EgLnRpbWUtcGlja2VyIC5kaXZpZGVye2ZvbnQtc2l6ZTo0NHB4O21hcmdpbi1ib3R0b206N3B4fWBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIElucHV0Q29yZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaG91clN0ZXAgPSAxO1xuICBASW5wdXQoKSBtaW51dGVTdGVwID0gMTtcbiAgQElucHV0KCkgaXNNZXJpZGllbSA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0VkaXRhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCdob3VycycpIGlucHV0SG91cnM6IG51bWJlcjtcbiAgQElucHV0KCdtaW51dGVzJykgaW5wdXRNaW51dGVzOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRpbWVPYmplY3RUeXBlOiBzdHJpbmcgPSBUaW1lT2JqZWN0LlN0cmluZztcblxuICBAT3V0cHV0KCdob3Vyc0NoYW5nZScpIGlucHV0SG91cnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgnbWludXRlc0NoYW5nZScpIGlucHV0TWludXRlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGhvdXJzO1xuICBtaW51dGVzO1xuICBub29uUmVsYXRpdml0eSA9ICdhbSc7XG4gIHRpbWVVbml0ID0gVGltZVVuaXQ7XG5cbiAgcHJpdmF0ZSBzdGFydCA9IG1vbWVudCgpO1xuICBwcml2YXRlIGhvdXJGb3JtYXQgPSAnSEgnOyAvLyAyNC1ob3VyIGZvcm1hdCBieSBkZWZhdWx0XG5cbiAgbGltaXRzID0ge1xuICAgIGhvdXJzOiB7XG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDI0XG4gICAgfSxcbiAgICBtaW51dGVzOiB7XG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDU5XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0LmZvcm1hdCgnbW0nKTtcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzT2JqKSB7XG4gICAgaWYgKGNoYW5nZXNPYmouaXNNZXJpZGllbSkge1xuICAgICAgaWYgKGNoYW5nZXNPYmouaXNNZXJpZGllbS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5ob3VyRm9ybWF0ID0gJ2hoJztcbiAgICAgICAgdGhpcy5ub29uUmVsYXRpdml0eSA9IHRoaXMuc3RhcnQuZm9ybWF0KCdhJyk7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1pbiA9IDE7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1heCA9IDEyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob3VyRm9ybWF0ID0gJ0hIJztcbiAgICAgICAgdGhpcy5saW1pdHMuaG91cnMubWluID0gMDtcbiAgICAgICAgdGhpcy5saW1pdHMuaG91cnMubWF4ID0gMjQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaG91cnMgPSB0aGlzLnN0YXJ0LmZvcm1hdCh0aGlzLmhvdXJGb3JtYXQpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzT2JqLmlucHV0SG91cnMgJiZcbiAgICAgICAgY2hhbmdlc09iai5pbnB1dEhvdXJzLmN1cnJlbnRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgY2hhbmdlc09iai5pbnB1dEhvdXJzLmN1cnJlbnRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgY2hhbmdlc09iai5pbnB1dEhvdXJzLmN1cnJlbnRWYWx1ZSA+IC0xKSB7XG4gICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5ob3VycyhjaGFuZ2VzT2JqLmlucHV0SG91cnMuY3VycmVudFZhbHVlKS5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICAgIHRoaXMubm9vblJlbGF0aXZpdHkgPSB0aGlzLnN0YXJ0LmZvcm1hdCgnYScpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzT2JqLmlucHV0TWludXRlcyAmJlxuICAgICAgICBjaGFuZ2VzT2JqLmlucHV0TWludXRlcy5jdXJyZW50VmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGNoYW5nZXNPYmouaW5wdXRNaW51dGVzLmN1cnJlbnRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlID4gLTEpIHtcbiAgICAgIHRoaXMubWludXRlcyA9IHRoaXMuc3RhcnQubWludXRlcyhjaGFuZ2VzT2JqLmlucHV0TWludXRlcy5jdXJyZW50VmFsdWUpLmZvcm1hdCgnbW0nKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBpbmNyZW1lbnQodW5pdDogVGltZVVuaXQpIHtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgVGltZVVuaXQuSG91cnM6XG4gICAgICAgIHRoaXMuaG91cnMgPSB0aGlzLnN0YXJ0LmFkZCh0aGlzLmhvdXJTdGVwLCAnaG91cnMnKS5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICAgICAgdGhpcy5pbnB1dEhvdXJzQ2hhbmdlLmVtaXQocGFyc2VJbnQodGhpcy5ob3VycywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbWVVbml0Lk1pbnV0ZXM6XG4gICAgICAgIHRoaXMubWludXRlcyA9IHRoaXMuc3RhcnQuYWRkKHRoaXMubWludXRlU3RlcCwgJ21pbnV0ZXMnKS5mb3JtYXQoJ21tJyk7XG4gICAgICAgIHRoaXMuaW5wdXRNaW51dGVzQ2hhbmdlLmVtaXQocGFyc2VJbnQodGhpcy5taW51dGVzLCAxMCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBkZWNyZW1lbnQodW5pdDogVGltZVVuaXQpIHtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgVGltZVVuaXQuSG91cnM6XG4gICAgICAgIHRoaXMuaG91cnMgPSB0aGlzLnN0YXJ0LnN1YnRyYWN0KHRoaXMuaG91clN0ZXAsICdob3VycycpLmZvcm1hdCh0aGlzLmhvdXJGb3JtYXQpO1xuICAgICAgICB0aGlzLmlucHV0SG91cnNDaGFuZ2UuZW1pdChwYXJzZUludCh0aGlzLmhvdXJzLCAxMCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGltZVVuaXQuTWludXRlczpcbiAgICAgICAgdGhpcy5taW51dGVzID0gdGhpcy5zdGFydC5zdWJ0cmFjdCh0aGlzLm1pbnV0ZVN0ZXAsICdtaW51dGVzJykuZm9ybWF0KCdtbScpO1xuICAgICAgICB0aGlzLmlucHV0TWludXRlc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMubWludXRlcywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgY2hhbmdlTm9vblJlbGF0aXZpdHkoKSB7XG4gICAgdGhpcy5ub29uUmVsYXRpdml0eSA9IHRoaXMubm9vblJlbGF0aXZpdHkgPT09ICdhbScgPyAncG0nIDogJ2FtJztcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICB2YWxpZGF0ZUlucHV0KHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlIFRpbWVVbml0LkhvdXJzOlxuICAgICAgICB0aGlzLmhvdXJzID0gdGhpcy5ub3JtYWxpemVUaW1lSW5wdXQodGhpcy5ob3VycywgVGltZVVuaXQuSG91cnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGltZVVuaXQuTWludXRlczpcbiAgICAgICAgdGhpcy5taW51dGVzID0gdGhpcy5ub3JtYWxpemVUaW1lSW5wdXQodGhpcy5taW51dGVzLCBUaW1lVW5pdC5NaW51dGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVUaW1lSW5wdXQodmFsdWU6IHN0cmluZywgdW5pdDogVGltZVVuaXQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB2YWx1ZSA9ICcwMCc7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlSW50KHZhbHVlLCAxMCkgPj0gdGhpcy5saW1pdHNbdW5pdF0ubWF4KSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubGltaXRzW3VuaXRdLm1heC50b1N0cmluZygpO1xuXG4gICAgICBpZiAodW5pdCA9PT0gVGltZVVuaXQuSG91cnMgJiYgIXRoaXMuaXNNZXJpZGllbSkge1xuICAgICAgICB2YWx1ZSA9ICcwMCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlSW50KHZhbHVlLCAxMCkgPCB0aGlzLmxpbWl0c1t1bml0XS5taW4pIHtcbiAgICAgIHZhbHVlID0gdGhpcy5saW1pdHNbdW5pdF0ubWluLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZVJlc3VsdCgpIHtcbiAgICBsZXQgdGltZU1vbWVudDogbW9tZW50TnMuTW9tZW50O1xuICAgIGxldCB0aW1lU3RyaW5nID0gYCR7dGhpcy5ob3Vyc306JHt0aGlzLm1pbnV0ZXN9YDtcbiAgICB0aW1lU3RyaW5nID0gdGhpcy5pc01lcmlkaWVtID8gYCR7dGltZVN0cmluZ30gJHt0aGlzLm5vb25SZWxhdGl2aXR5LnRvVXBwZXJDYXNlKCl9YCA6IHRpbWVTdHJpbmc7XG5cbiAgICBpZiAodGhpcy50aW1lT2JqZWN0VHlwZSA9PT0gVGltZU9iamVjdC5Nb21lbnQpIHtcbiAgICAgIGNvbnN0IG1vbWVudEZvcm1hdCA9IHRoaXMuaXNNZXJpZGllbSA/ICdoaDptbSBBJyA6ICdISDptbSc7XG4gICAgICB0aW1lTW9tZW50ID0gbW9tZW50KHRpbWVTdHJpbmcsIG1vbWVudEZvcm1hdCk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHRpbWVNb21lbnQgPyB0aW1lTW9tZW50IDogdGltZVN0cmluZztcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFVBQVUsRUFBVSxpQkFBaUIsRUFDaEQsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQ3ZDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRW5ELE9BQU8sS0FBSyxRQUFRLE1BQU0sUUFBUSxDQUFDOztNQUM3QixNQUFNLEdBQUcsUUFBUTs7TUFFakIsbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1o7QUFTRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBK0J6RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBL0JELGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLG1CQUFjLEdBQVcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUU3QixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLElB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U0FDL0M7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDcEQsQ0FBQzs7O1lBdktGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQix3MkVBQTJDO2dCQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7O2FBQ2pEOzs7Ozt1QkFFRSxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3lCQUNMLEtBQUssU0FBQyxPQUFPOzJCQUNiLEtBQUssU0FBQyxTQUFTOzZCQUNmLEtBQUs7K0JBRUwsTUFBTSxTQUFDLGFBQWE7aUNBQ3BCLE1BQU0sU0FBQyxlQUFlOzs7O0lBVHZCLHVDQUFzQjs7SUFDdEIseUNBQXdCOztJQUN4Qix5Q0FBNEI7O0lBQzVCLHlDQUEyQjs7SUFDM0IseUNBQW1DOztJQUNuQywyQ0FBdUM7O0lBQ3ZDLDZDQUFvRDs7SUFFcEQsK0NBQXFFOztJQUNyRSxpREFBeUU7O0lBRXpFLG9DQUFNOztJQUNOLHNDQUFROztJQUNSLDZDQUFzQjs7SUFDdEIsdUNBQW9COzs7OztJQUVwQixvQ0FBeUI7Ozs7O0lBQ3pCLHlDQUEwQjs7SUFFMUIscUNBU0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnQHNxLXVpL25nLXNxLWNvbW1vbic7XG5pbXBvcnQgeyBUaW1lVW5pdCB9IGZyb20gJy4uL2VudW1zL3RpbWUtdW5pdC5lbnVtJztcbmltcG9ydCB7IFRpbWVPYmplY3QgfSBmcm9tICcuLi9lbnVtcy90aW1lLW9iamVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyB0ZW1wb3JhcnkgZml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vbmctcGFja2Fnci9uZy1wYWNrYWdyL2lzc3Vlcy8yMTcjaXNzdWVjb21tZW50LTM2MDE3Njc1OVxuaW1wb3J0ICogYXMgbW9tZW50TnMgZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudE5zO1xuXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dENvcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGhvdXJTdGVwID0gMTtcbiAgQElucHV0KCkgbWludXRlU3RlcCA9IDE7XG4gIEBJbnB1dCgpIGlzTWVyaWRpZW0gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNFZGl0YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgnaG91cnMnKSBpbnB1dEhvdXJzOiBudW1iZXI7XG4gIEBJbnB1dCgnbWludXRlcycpIGlucHV0TWludXRlczogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1lT2JqZWN0VHlwZTogc3RyaW5nID0gVGltZU9iamVjdC5TdHJpbmc7XG5cbiAgQE91dHB1dCgnaG91cnNDaGFuZ2UnKSBpbnB1dEhvdXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoJ21pbnV0ZXNDaGFuZ2UnKSBpbnB1dE1pbnV0ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBob3VycztcbiAgbWludXRlcztcbiAgbm9vblJlbGF0aXZpdHkgPSAnYW0nO1xuICB0aW1lVW5pdCA9IFRpbWVVbml0O1xuXG4gIHByaXZhdGUgc3RhcnQgPSBtb21lbnQoKTtcbiAgcHJpdmF0ZSBob3VyRm9ybWF0ID0gJ0hIJzsgLy8gMjQtaG91ciBmb3JtYXQgYnkgZGVmYXVsdFxuXG4gIGxpbWl0cyA9IHtcbiAgICBob3Vyczoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiAyNFxuICAgIH0sXG4gICAgbWludXRlczoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiA1OVxuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgdGhpcy5taW51dGVzID0gdGhpcy5zdGFydC5mb3JtYXQoJ21tJyk7XG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlc09iaikge1xuICAgIGlmIChjaGFuZ2VzT2JqLmlzTWVyaWRpZW0pIHtcbiAgICAgIGlmIChjaGFuZ2VzT2JqLmlzTWVyaWRpZW0uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuaG91ckZvcm1hdCA9ICdoaCc7XG4gICAgICAgIHRoaXMubm9vblJlbGF0aXZpdHkgPSB0aGlzLnN0YXJ0LmZvcm1hdCgnYScpO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5taW4gPSAxO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5tYXggPSAxMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaG91ckZvcm1hdCA9ICdISCc7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1pbiA9IDA7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1heCA9IDI0O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc09iai5pbnB1dEhvdXJzICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgPiAtMSkge1xuICAgICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuaG91cnMoY2hhbmdlc09iai5pbnB1dEhvdXJzLmN1cnJlbnRWYWx1ZSkuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgICB0aGlzLm5vb25SZWxhdGl2aXR5ID0gdGhpcy5zdGFydC5mb3JtYXQoJ2EnKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMgJiZcbiAgICAgICAgY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBjaGFuZ2VzT2JqLmlucHV0TWludXRlcy5jdXJyZW50VmFsdWUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRNaW51dGVzLmN1cnJlbnRWYWx1ZSA+IC0xKSB7XG4gICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0Lm1pbnV0ZXMoY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlKS5mb3JtYXQoJ21tJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5jcmVtZW50KHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlIFRpbWVVbml0LkhvdXJzOlxuICAgICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5hZGQodGhpcy5ob3VyU3RlcCwgJ2hvdXJzJykuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgICAgIHRoaXMuaW5wdXRIb3Vyc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMuaG91cnMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaW1lVW5pdC5NaW51dGVzOlxuICAgICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0LmFkZCh0aGlzLm1pbnV0ZVN0ZXAsICdtaW51dGVzJykuZm9ybWF0KCdtbScpO1xuICAgICAgICB0aGlzLmlucHV0TWludXRlc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMubWludXRlcywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgZGVjcmVtZW50KHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlIFRpbWVVbml0LkhvdXJzOlxuICAgICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5zdWJ0cmFjdCh0aGlzLmhvdXJTdGVwLCAnaG91cnMnKS5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICAgICAgdGhpcy5pbnB1dEhvdXJzQ2hhbmdlLmVtaXQocGFyc2VJbnQodGhpcy5ob3VycywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbWVVbml0Lk1pbnV0ZXM6XG4gICAgICAgIHRoaXMubWludXRlcyA9IHRoaXMuc3RhcnQuc3VidHJhY3QodGhpcy5taW51dGVTdGVwLCAnbWludXRlcycpLmZvcm1hdCgnbW0nKTtcbiAgICAgICAgdGhpcy5pbnB1dE1pbnV0ZXNDaGFuZ2UuZW1pdChwYXJzZUludCh0aGlzLm1pbnV0ZXMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIGNoYW5nZU5vb25SZWxhdGl2aXR5KCkge1xuICAgIHRoaXMubm9vblJlbGF0aXZpdHkgPSB0aGlzLm5vb25SZWxhdGl2aXR5ID09PSAnYW0nID8gJ3BtJyA6ICdhbSc7XG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgdmFsaWRhdGVJbnB1dCh1bml0OiBUaW1lVW5pdCkge1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSBUaW1lVW5pdC5Ib3VyczpcbiAgICAgICAgdGhpcy5ob3VycyA9IHRoaXMubm9ybWFsaXplVGltZUlucHV0KHRoaXMuaG91cnMsIFRpbWVVbml0LkhvdXJzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbWVVbml0Lk1pbnV0ZXM6XG4gICAgICAgIHRoaXMubWludXRlcyA9IHRoaXMubm9ybWFsaXplVGltZUlucHV0KHRoaXMubWludXRlcywgVGltZVVuaXQuTWludXRlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVGltZUlucHV0KHZhbHVlOiBzdHJpbmcsIHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdmFsdWUgPSAnMDAnO1xuICAgIH1cblxuICAgIGlmIChwYXJzZUludCh2YWx1ZSwgMTApID49IHRoaXMubGltaXRzW3VuaXRdLm1heCkge1xuICAgICAgdmFsdWUgPSB0aGlzLmxpbWl0c1t1bml0XS5tYXgudG9TdHJpbmcoKTtcblxuICAgICAgaWYgKHVuaXQgPT09IFRpbWVVbml0LkhvdXJzICYmICF0aGlzLmlzTWVyaWRpZW0pIHtcbiAgICAgICAgdmFsdWUgPSAnMDAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJzZUludCh2YWx1ZSwgMTApIDwgdGhpcy5saW1pdHNbdW5pdF0ubWluKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubGltaXRzW3VuaXRdLm1pbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVSZXN1bHQoKSB7XG4gICAgbGV0IHRpbWVNb21lbnQ6IG1vbWVudE5zLk1vbWVudDtcbiAgICBsZXQgdGltZVN0cmluZyA9IGAke3RoaXMuaG91cnN9OiR7dGhpcy5taW51dGVzfWA7XG4gICAgdGltZVN0cmluZyA9IHRoaXMuaXNNZXJpZGllbSA/IGAke3RpbWVTdHJpbmd9ICR7dGhpcy5ub29uUmVsYXRpdml0eS50b1VwcGVyQ2FzZSgpfWAgOiB0aW1lU3RyaW5nO1xuXG4gICAgaWYgKHRoaXMudGltZU9iamVjdFR5cGUgPT09IFRpbWVPYmplY3QuTW9tZW50KSB7XG4gICAgICBjb25zdCBtb21lbnRGb3JtYXQgPSB0aGlzLmlzTWVyaWRpZW0gPyAnaGg6bW0gQScgOiAnSEg6bW0nO1xuICAgICAgdGltZU1vbWVudCA9IG1vbWVudCh0aW1lU3RyaW5nLCBtb21lbnRGb3JtYXQpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB0aW1lTW9tZW50ID8gdGltZU1vbWVudCA6IHRpbWVTdHJpbmc7XG4gIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -18,2 +18,2 @@ import { NgModule } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvbmctZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQVNoRixNQUFNOzs7WUFQTCxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLG9CQUFvQjtpQkFDckI7Z0JBQ0QsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGV0aW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnLi9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBEYXRldGltZVBpY2tlck1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbRGF0ZXRpbWVQaWNrZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE5nRGF0ZXRpbWVQaWNrZXJNb2R1bGUgeyB9XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvbmctZGF0ZXRpbWUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQVNoRixNQUFNLE9BQU8sc0JBQXNCOzs7WUFQbEMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxvQkFBb0I7aUJBQ3JCO2dCQUNELFlBQVksRUFBRSxFQUFFO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzthQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRldGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4vZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgRGF0ZXRpbWVQaWNrZXJNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgZXhwb3J0czogW0RhdGV0aW1lUGlja2VyTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBOZ0RhdGV0aW1lUGlja2VyTW9kdWxlIHsgfVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -9,8 +9,6 @@ /**

export { NgDatetimePickerModule } from './public_api';
export { CalendarManagerService as ɵf } from './lib/datetime-picker/calendar-manager.service';
export { CalendarManagerService as ɵd } from './lib/datetime-picker/calendar-manager.service';
export { DatetimePickerModule as ɵa } from './lib/datetime-picker/datetime-picker.module';
export { DatetimePickerComponent as ɵe } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { DatetimePickerComponent as ɵc } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { TimePickerComponent as ɵb } from './lib/datetime-picker/time-picker/time-picker.component';
export { ControlValueAccessorEnabler as ɵd } from './lib/shared/entities/control-value-accessor-enabler';
export { InputCoreComponent as ɵc } from './lib/shared/entities/input-core-component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3EtdWktbmctZGF0ZXRpbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbInNxLXVpLW5nLWRhdGV0aW1lLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdUNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDdkcsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0NhbGVuZGFyTWFuYWdlclNlcnZpY2UgYXMgybVmfSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCB7RGF0ZXRpbWVQaWNrZXJNb2R1bGUgYXMgybVhfSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQge0RhdGV0aW1lUGlja2VyQ29tcG9uZW50IGFzIMm1ZX0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7VGltZVBpY2tlckNvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vbGliL2RhdGV0aW1lLXBpY2tlci90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvckVuYWJsZXIgYXMgybVkfSBmcm9tICcuL2xpYi9zaGFyZWQvZW50aXRpZXMvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci1lbmFibGVyJztcbmV4cG9ydCB7SW5wdXRDb3JlQ29tcG9uZW50IGFzIMm1Y30gZnJvbSAnLi9saWIvc2hhcmVkL2VudGl0aWVzL2lucHV0LWNvcmUtY29tcG9uZW50JzsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3EtdWktbmctZGF0ZXRpbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbInNxLXVpLW5nLWRhdGV0aW1lLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdUNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtDYWxlbmRhck1hbmFnZXJTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2NhbGVuZGFyLW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQge0RhdGV0aW1lUGlja2VyTW9kdWxlIGFzIMm1YX0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0IHtEYXRldGltZVBpY2tlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vbGliL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQge1RpbWVQaWNrZXJDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50JzsiXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -289,2 +289,3 @@ import { Injectable } from '@angular/core';

];
/** @nocollapse */
CalendarManagerService.ctorParameters = function () { return []; };

@@ -295,7 +296,13 @@ return CalendarManagerService;

if (false) {
/** @type {?} */
/**
* @type {?}
* @private
*/
CalendarManagerService.prototype.locale;
/** @type {?} */
/**
* @type {?}
* @private
*/
CalendarManagerService.prototype.previouslySelectedYear;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUd2RixPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7SUFDN0IsTUFBTSxHQUFHLFFBQVE7QUFFdkI7SUFHRTtRQUVRLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCwyQkFBc0IsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUgxQixDQUFDOzs7OztJQUtqQiwwQ0FBUzs7OztJQUFULFVBQVUsTUFBYztRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Ozs7Ozs7O0lBRUQseURBQXdCOzs7Ozs7O0lBQXhCLFVBQXlCLFNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGFBQWdDLEVBQ2hDLFNBQW9COztZQUNyQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7WUFDbkUsc0NBQXNDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUVyRSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRTs7WUFDakMsUUFBUSxHQUFHLEVBQUU7O1lBQ2YsUUFBUSxHQUFrQixFQUFFOztZQUM1QixPQUFvQjtRQUV4QixJQUFJLENBQUMsc0NBQXNDLEVBQUU7O2dCQUN2QyxZQUFZ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RSxLQUFLLENBQUM7UUFFL0UsT0FBTyxtQkFBUyxDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsRUFBQSxDQUFDO0lBQ3RELENBQUM7Ozs7OztJQUVELHNFQUFxQzs7Ozs7SUFBckMsVUFBc0MsSUFBcUIsRUFBRSxZQUE2Qjs7WUFDbEYsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7O1lBQzNELGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQzlDLE9BQU8sNEJBQTRCLENBQUMsTUFBTSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDM0MsT0FBTyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFFRCxPQUFPLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUM5QyxDQUFDOzs7OztJQUVELDZDQUFZOzs7O0lBQVosVUFBYSxLQUFLO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUssRUFBRSxLQUFLO1lBQzdCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQXZLRixVQUFVOzs7SUF3S1gsNkJBQUM7Q0FBQSxBQXhLRCxJQXdLQztTQXZLWSxzQkFBc0I7OztJQUlqQyx3Q0FBc0I7O0lBQ3RCLHdEQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5LCBJbkNhbGVuZGFyUGlja2VyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVudGl0aWVzJztcbmltcG9ydCB7IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0gfSBmcm9tICcuL2VudW1zL2NhbGVuZGFyLXBlcmlvZC1yZWxhdGl2aXR5LmVudW0nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RhdGUtcmFuZ2UnO1xuLy8gdGVtcG9yYXJ5IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjE3I2lzc3VlY29tbWVudC0zNjAxNzY3NTlcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnROcztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTWFuYWdlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgcHJpdmF0ZSBsb2NhbGUgPSAnZW4nO1xuICBwcml2YXRlIHByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSBtb21lbnQoKTtcblxuICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICBtb21lbnQubG9jYWxlKGxvY2FsZSk7XG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyRm9yTW9udGgoc3RhcnREYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vbnRoOiBtb21lbnROcy5Nb21lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVzOiBtb21lbnROcy5Nb21lbnRbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogQXJyYXk8Q2FsZW5kYXJEYXlbXT4ge1xuICAgIGNvbnN0IG1vbnRoU3RhcnQgPSBtb21lbnQoc3RhcnREYXRlKS5zdGFydE9mKCdtb250aCcpLmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgaXNTdGFydE9mQ2hvc2VuTW9udGhUaGVGaXJzdERheU9mVGFibGUgPSAobW9udGhTdGFydC53ZWVrZGF5KCkgPT09IDApO1xuXG4gICAgY29uc3QgZGF0ZUl0ZXJhdG9yID0gbW9udGhTdGFydC5jbG9uZSgpO1xuICAgIGNvbnN0IGNhbGVuZGFyID0gW107XG4gICAgbGV0IHRhYmxlUm93OiBDYWxlbmRhckRheVtdID0gW107XG4gICAgbGV0IG5ld0RhdGU6IENhbGVuZGFyRGF5O1xuXG4gICAgaWYgKCFpc1N0YXJ0T2ZDaG9zZW5Nb250aFRoZUZpcnN0RGF5T2ZUYWJsZSkge1xuICAgICAgbGV0IGRheXNUb0dvQmFjayA9IGRhdGVJdGVyYXRvci53ZWVrZGF5KCk7XG4gICAgICBkYXlzVG9Hb0JhY2sgPSAoZGF5c1RvR29CYWNrID09PSAwKSA/IDEgOiBkYXlzVG9Hb0JhY2s7XG4gICAgICBkYXRlSXRlcmF0b3Iuc3VidHJhY3QoZGF5c1RvR29CYWNrLCAnZGF5cycpO1xuICAgIH1cblxuICAgIC8vIGFkZCBkYXRlcyB1bnRpbCB0aGUgY2FsZW5kYXIgaGFzIDYgd2VlayByb3dzXG4gICAgd2hpbGUgKGNhbGVuZGFyLmxlbmd0aCA8IDYpIHtcbiAgICAgIG5ld0RhdGUgPSB7XG4gICAgICAgIGRpc3BsYXlEYXRlOiBkYXRlSXRlcmF0b3IuZm9ybWF0KCdEJyksXG4gICAgICAgIG1vbWVudE9iajogZGF0ZUl0ZXJhdG9yLmNsb25lKCksXG4gICAgICAgIHJlbGF0aXZpdHlUb0N1cnJlbnRNb250aDogdGhpcy5kZXRlcm1pbmVEYXRlUmVsYXRpdml0eVRvQ3VycmVudE1vbnRoKGRhdGVJdGVyYXRvciwgY3VycmVudE1vbnRoKSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGRhdGVJdGVyYXRvciwgZGF0ZVJhbmdlLm1pbkRhdGUsIGRhdGVSYW5nZS5tYXhEYXRlKSxcbiAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5nZXRTZWxlY3RlZEl0ZW1JbmRleChkYXRlSXRlcmF0b3IsIHNlbGVjdGVkRGF0ZXMpID4gLTFcbiAgICAgIH07XG5cbiAgICAgIGlmICh0YWJsZVJvdy5sZW5ndGggPD0gNikge1xuICAgICAgICB0YWJsZVJvdy5wdXNoKG5ld0RhdGUpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxlbmRhci5wdXNoKHRhYmxlUm93KTtcbiAgICAgICAgdGFibGVSb3cgPSBbbmV3RGF0ZV07XG4gICAgICB9XG5cbiAgICAgIGRhdGVJdGVyYXRvci5hZGQoMSwgJ2RheScpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWxlbmRhcjtcbiAgfVxuXG4gIGdlbmVyYXRlTW9udGhQaWNrZXJDb2xsZWN0aW9uKGN1cnJlbnRZZWFyOiBudW1iZXIsIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogSW5DYWxlbmRhclBpY2tlcltdIHtcbiAgICBjb25zdCBtb250aHMgPSB0aGlzLmdldE1vbnRocygpO1xuXG4gICAgcmV0dXJuIG1vbnRocy5tYXAoKG1vbnRoTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoKS55ZWFyKGN1cnJlbnRZZWFyKS5tb250aChpbmRleCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBtb250aE5hbWUsXG4gICAgICAgIG1vbWVudE9iajogZGF0ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGRhdGUsIGRhdGVSYW5nZS5taW5EYXRlLCBkYXRlUmFuZ2UubWF4RGF0ZSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKHN0YXJ0OiBtb21lbnROcy5Nb21lbnQsIG1hcmdpbjogbnVtYmVyID0gMTksIGRhdGVSYW5nZTogRGF0ZVJhbmdlKTogSW5DYWxlbmRhclBpY2tlcltdIHtcbiAgICBjb25zdCB5ZWFyc0xpc3QgPSB0aGlzLmdldFllYXJMaXN0KHN0YXJ0LCBtYXJnaW4pO1xuXG4gICAgcmV0dXJuIHllYXJzTGlzdC5tYXAoKHllYXIpID0+IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoKS55ZWFyKHllYXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5TmFtZTogeWVhci50b1N0cmluZygpLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlLCBkYXRlUmFuZ2UubWluRGF0ZSwgZGF0ZVJhbmdlLm1heERhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0V2Vla2RheXMoc2hvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHNob3J0ID8gbW9tZW50LndlZWtkYXlzU2hvcnQodHJ1ZSkgOiBtb21lbnQud2Vla2RheXModHJ1ZSk7XG4gIH1cblxuICBnZXRNb250aHMoc2hvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHNob3J0ID8gbW9tZW50Lm1vbnRoc1Nob3J0KCkgOiBtb21lbnQubW9udGhzKCk7XG4gIH1cblxuICBnZXRZZWFyTGlzdChzdGFydDogbW9tZW50TnMuTW9tZW50LCBtYXJnaW46IG51bWJlciA9IDE5KTogbnVtYmVyW10ge1xuICAgIGxldCB5ZWFySXRlcmF0b3I7XG4gICAgbGV0IGVuZFllYXI7XG5cbiAgICBpZiAoc3RhcnQpIHtcbiAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhciA9IHN0YXJ0LmNsb25lKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmdpbiA8IDApIHtcbiAgICAgIGVuZFllYXIgPSBtb21lbnQodGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRZZWFyKS5hZGQobWFyZ2luLCAneWVhcnMnKTtcbiAgICAgIHllYXJJdGVyYXRvciA9IG1vbWVudChlbmRZZWFyKS5hZGQobWFyZ2luLCAneWVhcnMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhckl0ZXJhdG9yID0gbW9tZW50KHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhcik7XG4gICAgICBlbmRZZWFyID0gbW9tZW50KHllYXJJdGVyYXRvcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeWVhckxpc3QgPSBbXTtcblxuICAgIHdoaWxlICh5ZWFySXRlcmF0b3IuaXNTYW1lT3JCZWZvcmUoZW5kWWVhcikpIHtcbiAgICAgIHllYXJMaXN0LnB1c2goeWVhckl0ZXJhdG9yLmNsb25lKCkueWVhcigpKTtcbiAgICAgIHllYXJJdGVyYXRvci5hZGQoMSwgJ3llYXInKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSB5ZWFySXRlcmF0b3Iuc3VidHJhY3QoMSwgJ3llYXInKS5jbG9uZSgpO1xuXG4gICAgcmV0dXJuIHllYXJMaXN0O1xuICB9XG5cbiAgZmluZEFEYXRlRnJvbUNhbGVuZGFyKGRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsIGNhbGVuZGFyVGFibGU6IEFycmF5PENhbGVuZGFyRGF5W10+KTogQ2FsZW5kYXJEYXkge1xuICAgIGNvbnN0IGRhdGVUb0ZpbmQgPSBtb21lbnQoZGF0ZSk7XG5cbiAgICBjb25zdCBmbGF0Q2FsZW5kYXJUYWJsZSA9IGNhbGVuZGFyVGFibGUucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjLmNvbmNhdCh2YWwpLCBbXSk7XG5cbiAgICByZXR1cm4gZmxhdENhbGVuZGFyVGFibGUuZmluZCgoY2FsZW5kYXJEYXkpID0+IHtcbiAgICAgIHJldHVybiBjYWxlbmRhckRheS5tb21lbnRPYmouaXNTYW1lKGRhdGVUb0ZpbmQsICdkYXknKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkSXRlbUluZGV4KGRhdGU6IG1vbWVudE5zLk1vbWVudCwgc2VsZWN0ZWREYXRlczogbW9tZW50TnMuTW9tZW50W10pOiBudW1iZXIge1xuICAgIHJldHVybiBzZWxlY3RlZERhdGVzLmZpbmRJbmRleCgoc2VsZWN0ZWREYXRlKSA9PiB7XG4gICAgICByZXR1cm4gbW9tZW50KHNlbGVjdGVkRGF0ZSkuaXNTYW1lKGRhdGUsICdkYXknKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRldGVybWluZUlmRGF0ZUlzRGlzYWJsZWQoY3VycmVudERhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluRGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBZnRlck1heERhdGUgPSBtYXhEYXRlICYmIG1vbWVudChjdXJyZW50RGF0ZSkuaXNBZnRlcihtYXhEYXRlLCAnZGF5Jyk7XG4gICAgY29uc3QgaXNCZWZvcmVNaW5EYXRlID0gbWluRGF0ZSAmJiBtb21lbnQoY3VycmVudERhdGUpLmlzQmVmb3JlKG1pbkRhdGUsICdkYXknKTtcblxuICAgIHJldHVybiA8Ym9vbGVhbj4oaXNBZnRlck1heERhdGUgfHwgaXNCZWZvcmVNaW5EYXRlKTtcbiAgfVxuXG4gIGRldGVybWluZURhdGVSZWxhdGl2aXR5VG9DdXJyZW50TW9udGgoZGF0ZTogbW9tZW50TnMuTW9tZW50LCBjdXJyZW50TW9udGg6IG1vbWVudE5zLk1vbWVudCk6IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0ge1xuICAgIGNvbnN0IHN0YXJ0T2ZDdXJyZW50TW9udGggPSBtb21lbnQoY3VycmVudE1vbnRoKS5zdGFydE9mKCdtb250aCcpO1xuICAgIGNvbnN0IGVuZE9mQ3VycmVudE1vbnRoID0gbW9tZW50KGN1cnJlbnRNb250aCkuZW5kT2YoJ21vbnRoJyk7XG5cbiAgICBpZiAobW9tZW50KGRhdGUpLmlzQmVmb3JlKHN0YXJ0T2ZDdXJyZW50TW9udGgpKSB7XG4gICAgICByZXR1cm4gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmU7XG4gICAgfVxuXG4gICAgaWYgKG1vbWVudChkYXRlKS5pc0FmdGVyKGVuZE9mQ3VycmVudE1vbnRoKSkge1xuICAgICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQWZ0ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQ3VycmVudDtcbiAgfVxuXG4gIHNvcnREYXRlc0FzYyhkYXRlcykge1xuICAgIHJldHVybiBkYXRlcy5zb3J0KChkYXRlMSwgZGF0ZTIpID0+IHtcbiAgICAgIGlmIChtb21lbnQoZGF0ZTEpLmlzQWZ0ZXIoZGF0ZTIpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUd2RixPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7SUFDN0IsTUFBTSxHQUFHLFFBQVE7QUFFdkI7SUFHRTtRQUVRLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCwyQkFBc0IsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUgxQixDQUFDOzs7OztJQUtqQiwwQ0FBUzs7OztJQUFULFVBQVUsTUFBYztRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Ozs7Ozs7O0lBRUQseURBQXdCOzs7Ozs7O0lBQXhCLFVBQXlCLFNBQWlDLEVBQ2pDLFlBQTZCLEVBQzdCLGFBQWdDLEVBQ2hDLFNBQW9COztZQUNyQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7WUFDbkUsc0NBQXNDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUVyRSxZQUFZLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRTs7WUFDakMsUUFBUSxHQUFHLEVBQUU7O1lBQ2YsUUFBUSxHQUFrQixFQUFFOztZQUM1QixPQUFvQjtRQUV4QixJQUFJLENBQUMsc0NBQXNDLEVBQUU7O2dCQUN2QyxZQUFZ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RSxLQUFLLENBQUM7UUFFL0UsT0FBTyxtQkFBUyxDQUFDLGNBQWMsSUFBSSxlQUFlLENBQUMsRUFBQSxDQUFDO0lBQ3RELENBQUM7Ozs7OztJQUVELHNFQUFxQzs7Ozs7SUFBckMsVUFBc0MsSUFBcUIsRUFBRSxZQUE2Qjs7WUFDbEYsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7O1lBQzNELGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQzlDLE9BQU8sNEJBQTRCLENBQUMsTUFBTSxDQUFDO1NBQzVDO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDM0MsT0FBTyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7U0FDM0M7UUFFRCxPQUFPLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztJQUM5QyxDQUFDOzs7OztJQUVELDZDQUFZOzs7O0lBQVosVUFBYSxLQUFLO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUssRUFBRSxLQUFLO1lBQzdCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dCQXZLRixVQUFVOzs7O0lBd0tYLDZCQUFDO0NBQUEsQUF4S0QsSUF3S0M7U0F2S1ksc0JBQXNCOzs7Ozs7SUFJakMsd0NBQXNCOzs7OztJQUN0Qix3REFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxlbmRhckRheSwgSW5DYWxlbmRhclBpY2tlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbnRpdGllcyc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtIH0gZnJvbSAnLi9lbnVtcy9jYWxlbmRhci1wZXJpb2QtcmVsYXRpdml0eS5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9kYXRlLXJhbmdlJztcbi8vIHRlbXBvcmFyeSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIxNyNpc3N1ZWNvbW1lbnQtMzYwMTc2NzU5XG5pbXBvcnQgKiBhcyBtb21lbnROcyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TnM7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHByaXZhdGUgbG9jYWxlID0gJ2VuJztcbiAgcHJpdmF0ZSBwcmV2aW91c2x5U2VsZWN0ZWRZZWFyID0gbW9tZW50KCk7XG5cbiAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgbW9tZW50LmxvY2FsZShsb2NhbGUpO1xuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgZ2VuZXJhdGVDYWxlbmRhckZvck1vbnRoKHN0YXJ0RGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb250aDogbW9tZW50TnMuTW9tZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlczogbW9tZW50TnMuTW9tZW50W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEFycmF5PENhbGVuZGFyRGF5W10+IHtcbiAgICBjb25zdCBtb250aFN0YXJ0ID0gbW9tZW50KHN0YXJ0RGF0ZSkuc3RhcnRPZignbW9udGgnKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIGNvbnN0IGlzU3RhcnRPZkNob3Nlbk1vbnRoVGhlRmlyc3REYXlPZlRhYmxlID0gKG1vbnRoU3RhcnQud2Vla2RheSgpID09PSAwKTtcblxuICAgIGNvbnN0IGRhdGVJdGVyYXRvciA9IG1vbnRoU3RhcnQuY2xvbmUoKTtcbiAgICBjb25zdCBjYWxlbmRhciA9IFtdO1xuICAgIGxldCB0YWJsZVJvdzogQ2FsZW5kYXJEYXlbXSA9IFtdO1xuICAgIGxldCBuZXdEYXRlOiBDYWxlbmRhckRheTtcblxuICAgIGlmICghaXNTdGFydE9mQ2hvc2VuTW9udGhUaGVGaXJzdERheU9mVGFibGUpIHtcbiAgICAgIGxldCBkYXlzVG9Hb0JhY2sgPSBkYXRlSXRlcmF0b3Iud2Vla2RheSgpO1xuICAgICAgZGF5c1RvR29CYWNrID0gKGRheXNUb0dvQmFjayA9PT0gMCkgPyAxIDogZGF5c1RvR29CYWNrO1xuICAgICAgZGF0ZUl0ZXJhdG9yLnN1YnRyYWN0KGRheXNUb0dvQmFjaywgJ2RheXMnKTtcbiAgICB9XG5cbiAgICAvLyBhZGQgZGF0ZXMgdW50aWwgdGhlIGNhbGVuZGFyIGhhcyA2IHdlZWsgcm93c1xuICAgIHdoaWxlIChjYWxlbmRhci5sZW5ndGggPCA2KSB7XG4gICAgICBuZXdEYXRlID0ge1xuICAgICAgICBkaXNwbGF5RGF0ZTogZGF0ZUl0ZXJhdG9yLmZvcm1hdCgnRCcpLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGVJdGVyYXRvci5jbG9uZSgpLFxuICAgICAgICByZWxhdGl2aXR5VG9DdXJyZW50TW9udGg6IHRoaXMuZGV0ZXJtaW5lRGF0ZVJlbGF0aXZpdHlUb0N1cnJlbnRNb250aChkYXRlSXRlcmF0b3IsIGN1cnJlbnRNb250aCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlSXRlcmF0b3IsIGRhdGVSYW5nZS5taW5EYXRlLCBkYXRlUmFuZ2UubWF4RGF0ZSksXG4gICAgICAgIGlzU2VsZWN0ZWQ6IHRoaXMuZ2V0U2VsZWN0ZWRJdGVtSW5kZXgoZGF0ZUl0ZXJhdG9yLCBzZWxlY3RlZERhdGVzKSA+IC0xXG4gICAgICB9O1xuXG4gICAgICBpZiAodGFibGVSb3cubGVuZ3RoIDw9IDYpIHtcbiAgICAgICAgdGFibGVSb3cucHVzaChuZXdEYXRlKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsZW5kYXIucHVzaCh0YWJsZVJvdyk7XG4gICAgICAgIHRhYmxlUm93ID0gW25ld0RhdGVdO1xuICAgICAgfVxuXG4gICAgICBkYXRlSXRlcmF0b3IuYWRkKDEsICdkYXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsZW5kYXI7XG4gIH1cblxuICBnZW5lcmF0ZU1vbnRoUGlja2VyQ29sbGVjdGlvbihjdXJyZW50WWVhcjogbnVtYmVyLCBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEluQ2FsZW5kYXJQaWNrZXJbXSB7XG4gICAgY29uc3QgbW9udGhzID0gdGhpcy5nZXRNb250aHMoKTtcblxuICAgIHJldHVybiBtb250aHMubWFwKChtb250aE5hbWUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcihjdXJyZW50WWVhcikubW9udGgoaW5kZXgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5TmFtZTogbW9udGhOYW1lLFxuICAgICAgICBtb21lbnRPYmo6IGRhdGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRoaXMuZGV0ZXJtaW5lSWZEYXRlSXNEaXNhYmxlZChkYXRlLCBkYXRlUmFuZ2UubWluRGF0ZSwgZGF0ZVJhbmdlLm1heERhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihzdGFydDogbW9tZW50TnMuTW9tZW50LCBtYXJnaW46IG51bWJlciA9IDE5LCBkYXRlUmFuZ2U6IERhdGVSYW5nZSk6IEluQ2FsZW5kYXJQaWNrZXJbXSB7XG4gICAgY29uc3QgeWVhcnNMaXN0ID0gdGhpcy5nZXRZZWFyTGlzdChzdGFydCwgbWFyZ2luKTtcblxuICAgIHJldHVybiB5ZWFyc0xpc3QubWFwKCh5ZWFyKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KCkueWVhcih5ZWFyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgbW9tZW50T2JqOiBkYXRlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0aGlzLmRldGVybWluZUlmRGF0ZUlzRGlzYWJsZWQoZGF0ZSwgZGF0ZVJhbmdlLm1pbkRhdGUsIGRhdGVSYW5nZS5tYXhEYXRlKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFdlZWtkYXlzKHNob3J0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHJldHVybiBzaG9ydCA/IG1vbWVudC53ZWVrZGF5c1Nob3J0KHRydWUpIDogbW9tZW50LndlZWtkYXlzKHRydWUpO1xuICB9XG5cbiAgZ2V0TW9udGhzKHNob3J0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHJldHVybiBzaG9ydCA/IG1vbWVudC5tb250aHNTaG9ydCgpIDogbW9tZW50Lm1vbnRocygpO1xuICB9XG5cbiAgZ2V0WWVhckxpc3Qoc3RhcnQ6IG1vbWVudE5zLk1vbWVudCwgbWFyZ2luOiBudW1iZXIgPSAxOSk6IG51bWJlcltdIHtcbiAgICBsZXQgeWVhckl0ZXJhdG9yO1xuICAgIGxldCBlbmRZZWFyO1xuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIgPSBzdGFydC5jbG9uZSgpO1xuICAgIH1cblxuICAgIGlmIChtYXJnaW4gPCAwKSB7XG4gICAgICBlbmRZZWFyID0gbW9tZW50KHRoaXMucHJldmlvdXNseVNlbGVjdGVkWWVhcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgICB5ZWFySXRlcmF0b3IgPSBtb21lbnQoZW5kWWVhcikuYWRkKG1hcmdpbiwgJ3llYXJzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHllYXJJdGVyYXRvciA9IG1vbWVudCh0aGlzLnByZXZpb3VzbHlTZWxlY3RlZFllYXIpO1xuICAgICAgZW5kWWVhciA9IG1vbWVudCh5ZWFySXRlcmF0b3IpLmFkZChtYXJnaW4sICd5ZWFycycpO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXJMaXN0ID0gW107XG5cbiAgICB3aGlsZSAoeWVhckl0ZXJhdG9yLmlzU2FtZU9yQmVmb3JlKGVuZFllYXIpKSB7XG4gICAgICB5ZWFyTGlzdC5wdXNoKHllYXJJdGVyYXRvci5jbG9uZSgpLnllYXIoKSk7XG4gICAgICB5ZWFySXRlcmF0b3IuYWRkKDEsICd5ZWFyJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRZZWFyID0geWVhckl0ZXJhdG9yLnN1YnRyYWN0KDEsICd5ZWFyJykuY2xvbmUoKTtcblxuICAgIHJldHVybiB5ZWFyTGlzdDtcbiAgfVxuXG4gIGZpbmRBRGF0ZUZyb21DYWxlbmRhcihkYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLCBjYWxlbmRhclRhYmxlOiBBcnJheTxDYWxlbmRhckRheVtdPik6IENhbGVuZGFyRGF5IHtcbiAgICBjb25zdCBkYXRlVG9GaW5kID0gbW9tZW50KGRhdGUpO1xuXG4gICAgY29uc3QgZmxhdENhbGVuZGFyVGFibGUgPSBjYWxlbmRhclRhYmxlLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYy5jb25jYXQodmFsKSwgW10pO1xuXG4gICAgcmV0dXJuIGZsYXRDYWxlbmRhclRhYmxlLmZpbmQoKGNhbGVuZGFyRGF5KSA9PiB7XG4gICAgICByZXR1cm4gY2FsZW5kYXJEYXkubW9tZW50T2JqLmlzU2FtZShkYXRlVG9GaW5kLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZEl0ZW1JbmRleChkYXRlOiBtb21lbnROcy5Nb21lbnQsIHNlbGVjdGVkRGF0ZXM6IG1vbWVudE5zLk1vbWVudFtdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc2VsZWN0ZWREYXRlcy5maW5kSW5kZXgoKHNlbGVjdGVkRGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIG1vbWVudChzZWxlY3RlZERhdGUpLmlzU2FtZShkYXRlLCAnZGF5Jyk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRlcm1pbmVJZkRhdGVJc0Rpc2FibGVkKGN1cnJlbnREYXRlOiBtb21lbnROcy5Nb21lbnQgfCBEYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWZ0ZXJNYXhEYXRlID0gbWF4RGF0ZSAmJiBtb21lbnQoY3VycmVudERhdGUpLmlzQWZ0ZXIobWF4RGF0ZSwgJ2RheScpO1xuICAgIGNvbnN0IGlzQmVmb3JlTWluRGF0ZSA9IG1pbkRhdGUgJiYgbW9tZW50KGN1cnJlbnREYXRlKS5pc0JlZm9yZShtaW5EYXRlLCAnZGF5Jyk7XG5cbiAgICByZXR1cm4gPGJvb2xlYW4+KGlzQWZ0ZXJNYXhEYXRlIHx8IGlzQmVmb3JlTWluRGF0ZSk7XG4gIH1cblxuICBkZXRlcm1pbmVEYXRlUmVsYXRpdml0eVRvQ3VycmVudE1vbnRoKGRhdGU6IG1vbWVudE5zLk1vbWVudCwgY3VycmVudE1vbnRoOiBtb21lbnROcy5Nb21lbnQpOiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtIHtcbiAgICBjb25zdCBzdGFydE9mQ3VycmVudE1vbnRoID0gbW9tZW50KGN1cnJlbnRNb250aCkuc3RhcnRPZignbW9udGgnKTtcbiAgICBjb25zdCBlbmRPZkN1cnJlbnRNb250aCA9IG1vbWVudChjdXJyZW50TW9udGgpLmVuZE9mKCdtb250aCcpO1xuXG4gICAgaWYgKG1vbWVudChkYXRlKS5pc0JlZm9yZShzdGFydE9mQ3VycmVudE1vbnRoKSkge1xuICAgICAgcmV0dXJuIENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0uQmVmb3JlO1xuICAgIH1cblxuICAgIGlmIChtb21lbnQoZGF0ZSkuaXNBZnRlcihlbmRPZkN1cnJlbnRNb250aCkpIHtcbiAgICAgIHJldHVybiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkFmdGVyO1xuICAgIH1cblxuICAgIHJldHVybiBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkN1cnJlbnQ7XG4gIH1cblxuICBzb3J0RGF0ZXNBc2MoZGF0ZXMpIHtcbiAgICByZXR1cm4gZGF0ZXMuc29ydCgoZGF0ZTEsIGRhdGUyKSA9PiB7XG4gICAgICBpZiAobW9tZW50KGRhdGUxKS5pc0FmdGVyKGRhdGUyKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, forwardRef, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { NG_VALUE_ACCESSOR } from '@angular/forms';

@@ -259,5 +259,7 @@ import { CalendarPeriodRelativityEnum } from '../enums/calendar-period-relativity.enum';

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.initializeAuthorValuesIfAny = /**
* @private
* @return {?}

@@ -290,2 +292,3 @@ */

/**
* @private
* @param {?} date

@@ -295,2 +298,3 @@ * @return {?}

DatetimePickerComponent.prototype.markDateAsSelected = /**
* @private
* @param {?} date

@@ -327,5 +331,7 @@ * @return {?}

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.deselectAll = /**
* @private
* @return {?}

@@ -349,5 +355,7 @@ */

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.setValueResult = /**
* @private
* @return {?}

@@ -371,5 +379,7 @@ */

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.toValueDateObjectTypeIfNeeded = /**
* @private
* @return {?}

@@ -394,5 +404,7 @@ */

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.toValueFormatIfNeeded = /**
* @private
* @return {?}

@@ -411,5 +423,7 @@ */

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.setValueTimeIfNeeded = /**
* @private
* @return {?}

@@ -428,5 +442,7 @@ */

/**
* @private
* @return {?}
*/
DatetimePickerComponent.prototype.sortValueIfNeeded = /**
* @private
* @return {?}

@@ -450,2 +466,3 @@ */

];
/** @nocollapse */
DatetimePickerComponent.ctorParameters = function () { return [

@@ -507,9 +524,18 @@ { type: CalendarManagerService }

DatetimePickerComponent.prototype.period;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.selectedDates;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.parsedSelectedDates;
/** @type {?} */
/**
* @type {?}
* @private
*/
DatetimePickerComponent.prototype.calendarManager;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQVUsaUJBQWlCLEVBQ2hELEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUU1QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFckUsT0FBTyxLQUFLLFFBQVEsTUFBTSxRQUFRLENBQUM7O0lBQzdCLE1BQU0sR0FBRyxRQUFROztJQUVqQixtQ0FBbUMsR0FBRztJQUMxQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHVCQUF1QixFQUF2QixDQUF1QixDQUFDO0lBQ3RELEtBQUssRUFBRSxJQUFJO0NBQ1o7QUFFRDtJQXVHNkMsbURBQWtCO0lBMEI3RCxpQ0FBb0IsZUFBdUM7UUFBM0QsWUFDRSxpQkFBTyxTQUNSO1FBRm1CLHFCQUFlLEdBQWYsZUFBZSxDQUF3QjtRQXpCbEQsWUFBTSxHQUFHLElBQUksQ0FBQztRQUdkLHNCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6Qix5QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsb0JBQWMsR0FBVyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBRzlDLHlCQUFtQixHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQU9qSCwyQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsMEJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdCLDhCQUF3QixHQUFHLDRCQUE0QixDQUFDO1FBQ3hELFlBQU0sR0FBMkIsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBRXRELG1CQUFhLEdBQTBCLElBQUksRUFBbUIsQ0FBQzs7SUFLdkUsQ0FBQzs7OztJQUVELDBDQUFROzs7SUFBUjtRQUNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7WUFDdEMsR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzs7O0lBRUQsaURBQWU7OztJQUFmO1FBQUEsaUJBSUM7UUFIQyxVQUFVLENBQUM7WUFDVCxLQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVELDZDQUFXOzs7O0lBQVgsVUFBWSxVQUFVO1FBQ3BCLElBQUksVUFBVSxDQUFDLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7WUFDM0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzs7Ozs7SUFFRCw2Q0FBVzs7OztJQUFYLFVBQVksSUFBaUI7UUFDM0IsUUFBUSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDckMsS0FBSyw0QkFBNEIsQ0FBQyxLQUFLO2dCQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTTtZQUNSLEtBQUssNEJBQTRCLENBQUMsTUFBTTtnQkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Ozs7SUFFRCx3Q0FBTTs7OztJQUFOLFVBQU8sSUFBaUI7O1lBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtRQUV2QyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDekUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUU7WUFDeEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDdkI7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7OztJQUVELHNDQUFJOzs7SUFBSjtRQUNFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7O2dCQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUU7O2dCQUN6QyxTQUFTLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzlCO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDekY7SUFDSCxDQUFDOzs7O0lBRUQsMENBQVE7OztJQUFSO1FBQ0UsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLEtBQUssRUFBRTs7Z0JBQzFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO1lBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHNCQUFzQixDQUFDLElBQUksRUFBRTs7Z0JBQ3pDLFNBQVMsR0FBRztnQkFDaEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDOUI7WUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzFGO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxrREFBZ0I7Ozs7SUFBaEIsVUFBaUIsV0FBNEI7O1lBQ3JDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTs7WUFDNUMsU0FBUyxHQUFjO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEI7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7Ozs7O0lBRUQsa0RBQWdCOzs7O0lBQWhCLFVBQWlCLElBQXVDO1FBQXZDLHFCQUFBLEVBQUEsT0FBZSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtRQUN0RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUN2QixTQUFTLEdBQUc7WUFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QjtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEYsQ0FBQzs7OztJQUVELGlEQUFlOzs7SUFBZjtRQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7O1lBQzNCLFNBQVMsR0FBRztZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7Ozs7O0lBRUQsNkNBQVc7Ozs7SUFBWCxVQUFZLEtBQUs7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDOzs7OztJQUVELDRDQUFVOzs7O0lBQVYsVUFBVyxJQUFJO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQsOENBQVk7OztJQUFaO1FBQ0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFTyw2REFBMkI7OztJQUFuQztRQUFBLGlCQW9CQzs7WUFuQk8sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsVUFBQyxRQUFRO1lBQzlELElBQUksS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDdEYsSUFBSSxRQUFRLEVBQUU7b0JBQ1osS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUVuQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQzNCLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJOztnQ0FDZCxhQUFhLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSSxDQUFDLFFBQVEsQ0FBQzs0QkFDN0YsS0FBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN6QyxDQUFDLENBQUMsQ0FBQztxQkFDSjt5QkFBTTs7NEJBQ0MsV0FBVyxHQUFHLEtBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUksQ0FBQyxRQUFRLENBQUM7d0JBQy9GLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDdEM7aUJBQ0Y7YUFDRjtZQUVELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7SUFDSixDQUFDOzs7OztJQUVPLG9EQUFrQjs7OztJQUExQixVQUEyQixJQUFpQjs7WUFDcEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7O1lBQzFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEgsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7YUFDeEI7U0FFRjthQUFNOztnQkFDQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pHLElBQUksWUFBWSxFQUFFO2dCQUNoQixZQUFZLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzthQUNqQztZQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVPLDZDQUFXOzs7SUFBbkI7UUFBQSxpQkFjQztRQWJDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQUMsWUFBWTs7Z0JBQzFDLFdBQVcsR0FBRyxLQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxLQUFJLENBQUMsUUFBUSxDQUFDO1lBRTNGLHFEQUFxRDtZQUNyRCwyREFBMkQ7WUFDM0QsbUJBQW1CO1lBQ25CLElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVPLGdEQUFjOzs7SUFBdEI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV4RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7U0FDdkM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQzs7OztJQUVPLCtEQUE2Qjs7O0lBQXJDO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMzQixLQUFLLGNBQWMsQ0FBQyxJQUFJO29CQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFDLFNBQVM7d0JBQ2hFLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QixDQUFDLENBQUMsQ0FBQztvQkFDSCxNQUFNO2dCQUNSLEtBQUssY0FBYyxDQUFDLElBQUk7b0JBQ3RCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQUMsU0FBUzt3QkFDaEUsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxDQUFDO29CQUNILE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQzs7OztJQUVPLHVEQUFxQjs7O0lBQTdCO1FBQUEsaUJBUUM7UUFQQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7O2dCQUNULGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBSTtnQkFDdkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7OztJQUVPLHNEQUFvQjs7O0lBQTVCO1FBQUEsaUJBUUM7UUFQQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFOztnQkFDbkMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBQyxTQUFTO2dCQUMzRCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQztTQUMxQztJQUNILENBQUM7Ozs7SUFFTyxtREFBaUI7OztJQUF6QjtRQUNFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFOztnQkFDbkIsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUMvRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7Z0JBMVlGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsaWlIQWdHWDtvQkFFQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7NkJBRnZDLDR6REFBNHpEO2lCQUd0MEQ7OztnQkFqSFEsc0JBQXNCOzs7eUJBbUg1QixLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzttQ0FDTCxLQUFLO3lCQUNMLEtBQUs7c0NBQ0wsS0FBSztpQ0FDTCxLQUFLO21DQUNMLEtBQUs7c0NBRUwsTUFBTTs7SUEwUlQsOEJBQUM7Q0FBQSxBQTNZRCxDQXVHNkMsa0JBQWtCLEdBb1M5RDtTQXBTWSx1QkFBdUI7OztJQUNsQyx5Q0FBdUI7O0lBQ3ZCLDBDQUF5Qzs7SUFDekMsMENBQXlDOztJQUN6QyxtREFBa0M7O0lBQ2xDLHlDQUF3Qjs7SUFDeEIsc0RBQXFDOztJQUNyQyxpREFBd0Q7O0lBQ3hELG1EQUE0Qzs7SUFFNUMsc0RBQWlIOztJQUVqSCwyQ0FBbUI7O0lBQ25CLHlDQUEyQjs7SUFDM0IsNENBQThCOztJQUM5QiwyQ0FBK0I7O0lBQy9CLCtDQUE4Qjs7SUFDOUIsd0RBQThCOztJQUM5Qix1REFBNkI7O0lBQzdCLHVDQUFzQjs7SUFDdEIsMkRBQXdEOztJQUN4RCx5Q0FBOEQ7O0lBRTlELGdEQUF1RTs7SUFDdkUsc0RBQWlDOztJQUVyQixrREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudGl0aWVzL2lucHV0LWNvcmUtY29tcG9uZW50JztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXksIEluQ2FsZW5kYXJQaWNrZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVudGl0aWVzJztcbmltcG9ydCB7IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0gfSBmcm9tICcuLi9lbnVtcy9jYWxlbmRhci1wZXJpb2QtcmVsYXRpdml0eS5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvY2FsZW5kYXItcGVyaW9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBEYXRlT2JqZWN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2RhdGUtb2JqZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aW1lcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCB7IENhbGVuZGFyTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci1tYW5hZ2VyLnNlcnZpY2UnO1xuLy8gdGVtcG9yYXJ5IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjE3I2lzc3VlY29tbWVudC0zNjAxNzY3NTlcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnROcztcblxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcS1kYXRldGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJkYXRldGltZS1waWNrZXItd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwicGVyaW9kLXNlY3Rpb24gZGlzcGxheS1mbGV4XCJcbiAgICAgICBbbmdDbGFzc109XCJ7J2p1c3RpZnktY2VudGVyJzogaXNNb250aHNQaWNrZXJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICdzcGFjZS1iZXR3ZWVuJzogIWlzTW9udGhzUGlja2VyRW5hYmxlZH1cIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJjaGFuZ2UtcGVyaW9kIHByZXZcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNNb250aHNQaWNrZXJFbmFibGVkXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW5hbWVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01vbnRoc1BpY2tlcigpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNb250aHNQaWNrZXJFbmFibGVkICYmICFpc1llYXJzUGlja2VyRW5hYmxlZFwiPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIj57eyBjdXJyZW50TW9udGguZm9ybWF0KCdNTU1NJykgfX08L3N0cm9uZz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1llYXJzUGlja2VyKClcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc1llYXJzUGlja2VyRW5hYmxlZFwiPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIj57eyBjdXJyZW50TW9udGguZm9ybWF0KCdZWVlZJykgfX08L3N0cm9uZz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8c3Ryb25nIGNsYXNzPVwicGVyaW9kLW5hbWVcIiAqbmdJZj1cImlzWWVhcnNQaWNrZXJFbmFibGVkXCI+XG4gICAgICAgIHt7IHllYXJzTGlzdFswXS5kaXNwbGF5TmFtZSArICcgLSAnICsgeWVhcnNMaXN0W3llYXJzTGlzdC5sZW5ndGggLSAxXS5kaXNwbGF5TmFtZSB9fVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImNoYW5nZS1wZXJpb2QgbmV4dFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFpc01vbnRoc1BpY2tlckVuYWJsZWRcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFsdC1waWNrZXIgZGlzcGxheS1mbGV4IHNwYWNlLWJldHdlZW4gd3JhcFwiXG4gICAgICAgKm5nSWY9XCJpc01vbnRoc1BpY2tlckVuYWJsZWQgfHwgaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNNb250aHNQaWNrZXJFbmFibGVkXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInBpY2tlci1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogbW9udGguaXNEaXNhYmxlZH1cIj5cbiAgICAgICAge3sgbW9udGguZGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicGlja2VyLWl0ZW1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc0xpc3RcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiB5ZWFyLmlzRGlzYWJsZWR9XCI+XG4gICAgICAgIHt7IHllYXIuZGlzcGxheU5hbWUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG4gIDx0YWJsZSBjbGFzcz1cImRhdGV0aW1lLXBpY2tlclwiICpuZ0lmPVwiIWlzTW9udGhzUGlja2VyRW5hYmxlZCAmJiAhaXNZZWFyc1BpY2tlckVuYWJsZWRcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtkYXlzXCIgY2xhc3M9XCJoZWFkaW5nXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgZGF5IH19PC9zcGFuPlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0ZVJvdyBvZiBjYWxlbmRhclwiIGNsYXNzPVwicm93XCI+XG4gICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBkYXRlUm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2xpY2soZGF0ZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiZXlvbmQtY3VycmVudC1wZXJpb2QnOiBkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCAhPT0gY2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5LkN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0ZWQnOiBkYXRlLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkYXRlLmlzRGlzYWJsZWR9XCI+XG4gICAgICAgICAge3sgZGF0ZS5kaXNwbGF5RGF0ZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuXG4gIDxzcS10aW1lLXBpY2tlciAqbmdJZj1cImlzVGltZXBpY2tlckVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aW1lXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgICAgICAgdGltZU9iamVjdFR5cGU9XCJtb21lbnRcIlxuICAgICAgICAgICAgICAgICAgW2hvdXJzXT1cInRpbWVwaWNrZXJDb25maWcuaG91cnNcIlxuICAgICAgICAgICAgICAgICAgW21pbnV0ZXNdPVwidGltZXBpY2tlckNvbmZpZy5taW51dGVzXCJcbiAgICAgICAgICAgICAgICAgIFtob3VyU3RlcF09XCJ0aW1lcGlja2VyQ29uZmlnLmhvdXJTdGVwXCJcbiAgICAgICAgICAgICAgICAgIFttaW51dGVTdGVwXT1cInRpbWVwaWNrZXJDb25maWcubWludXRlU3RlcFwiXG4gICAgICAgICAgICAgICAgICBbaXNFZGl0YWJsZV09XCJ0aW1lcGlja2VyQ29uZmlnLmlzRWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2lzTWVyaWRpZW1dPVwidGltZXBpY2tlckNvbmZpZy5pc01lcmlkaWVtXCI+XG4gIDwvc3EtdGltZS1waWNrZXI+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2Auc3EgLmRhdGV0aW1lLXBpY2tlci13cmFwcGVye21heC13aWR0aDo0MTBweDtmb250LXNpemU6MTRweH0uc3EgLmRhdGV0aW1lLXBpY2tlci13cmFwcGVyIC5waWNrZXItaXRlbXtmb250LXNpemU6MTlweDtiYWNrZ3JvdW5kLWNvbG9yOiNlMmVmZWQ7cGFkZGluZzo1cHggMTJweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWJvdHRvbToxMHB4O21pbi13aWR0aDo4MHB4O3RleHQtYWxpZ246Y2VudGVyfS5zcSAuZGF0ZXRpbWUtcGlja2VyLXdyYXBwZXIgLnBpY2tlci1pdGVtLmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSg3Niw3Niw3NiwuMTIpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnNxIC5wZXJpb2Qtc2VjdGlvbnthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1ib3R0b206MTJweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSg0NiwxNTksMTM0LC42OSl9LnNxIC5wZXJpb2QtbmFtZXtmb250LXNpemU6MjBweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnNxIC5tb250aC1uYW1le21hcmdpbi1yaWdodDoxMHB4fS5zcSAuY2hhbmdlLXBlcmlvZHtmb250LXNpemU6MThweH0uc3EgLmNoYW5nZS1wZXJpb2QubmV4dHtwYWRkaW5nLWxlZnQ6MjBweH0uc3EgLmNoYW5nZS1wZXJpb2QucHJldntwYWRkaW5nLXJpZ2h0OjIwcHh9LnNxIC5hbHQtcGlja2Vye3BhZGRpbmctdG9wOjEwcHh9LnNxIC5kYXRldGltZS1waWNrZXJ7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjt0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlcjpub25lfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5ne3dpZHRoOjE0JTtwYWRkaW5nOjEwcHggMTdweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTgsMTI1LDEwNCwuMyk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoNDYsMTU5LDEzNCwuNjkpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmV9LnNxIC5kYXRldGltZS1waWNrZXIgLmNlbGx7Y3Vyc29yOmRlZmF1bHQ7cGFkZGluZzo2cHggMjBweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjFzIGN1YmljLWJlemllciguNTUsLjA5LC42OCwuNTMpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxsLmJleW9uZC1jdXJyZW50LXBlcmlvZHtjb2xvcjojMmU5Zjg2fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxsLnNlbGVjdGVke2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOiNiN2Q4ZDF9LnNxIC5kYXRldGltZS1waWNrZXIgLmNlbGwuZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTtjb2xvcjojYWJhOWE5fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5yb3c6bnRoLWNoaWxkKDJuKSAuY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTgsMTI1LDEwNCwuMTIpfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5yb3c6bnRoLWNoaWxkKDJuKSAuY2VsbC5zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNiN2Q4ZDF9QG1lZGlhIChtYXgtd2lkdGg6NDUwcHgpey5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5ne3BhZGRpbmc6MTBweCAxNXB4fS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nIC50ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Zpc2liaWxpdHk6aGlkZGVufS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5oZWFkaW5nIC50ZXh0OjpmaXJzdC1sZXR0ZXJ7dmlzaWJpbGl0eTp2aXNpYmxlfS5zcSAuZGF0ZXRpbWUtcGlja2VyIC5jZWxse3BhZGRpbmc6NnB4IDEycHh9fWBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dENvcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbic7XG4gIEBJbnB1dCgpIG1heERhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIG1pbkRhdGU6IG1vbWVudE5zLk1vbWVudCB8IERhdGU7XG4gIEBJbnB1dCgpIGlzTXVsdGlwbGVTZWxlY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybWF0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVGltZXBpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGF0ZU9iamVjdFR5cGU6IHN0cmluZyA9IERhdGVPYmplY3RUeXBlLk1vbWVudDtcbiAgQElucHV0KCkgdGltZXBpY2tlckNvbmZpZzogVGltZXBpY2tlckNvbmZpZztcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPG1vbWVudE5zLk1vbWVudCB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxtb21lbnROcy5Nb21lbnQgfCBEYXRlPigpO1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgbW9udGhzOiBJbkNhbGVuZGFyUGlja2VyW107XG4gIHllYXJzTGlzdDogSW5DYWxlbmRhclBpY2tlcltdO1xuICBjYWxlbmRhcjogQXJyYXk8Q2FsZW5kYXJEYXlbXT47XG4gIGN1cnJlbnRNb250aDogbW9tZW50TnMuTW9tZW50O1xuICBpc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgdGltZTogbW9tZW50TnMuTW9tZW50O1xuICBjYWxlbmRhclBlcmlvZFJlbGF0aXZpdHkgPSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtO1xuICBwZXJpb2Q6IENhbGVuZGFyUGVyaW9kVHlwZUVudW0gPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuXG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlczogTGlzdDxtb21lbnROcy5Nb21lbnQ+ID0gTGlzdDxtb21lbnROcy5Nb21lbnQ+KCk7XG4gIHByaXZhdGUgcGFyc2VkU2VsZWN0ZWREYXRlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FsZW5kYXJNYW5hZ2VyOiBDYWxlbmRhck1hbmFnZXJTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIG1vbWVudC5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgY29uc3Qgbm93ID0gbW9tZW50KCkuaG91cnMoMCkubWludXRlcygwKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW25vdy5jbG9uZSgpXSk7XG4gICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdldFdlZWtkYXlzKCk7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihub3cuY2xvbmUoKSk7XG4gICAgdGhpcy5pbml0aWFsaXplQXV0aG9yVmFsdWVzSWZBbnkoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXNPYmopIHtcbiAgICBpZiAoY2hhbmdlc09iai50aW1lcGlja2VyQ29uZmlnICYmIGNoYW5nZXNPYmoudGltZXBpY2tlckNvbmZpZy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDbGljayhkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIHN3aXRjaCAoZGF0ZS5yZWxhdGl2aXR5VG9DdXJyZW50TW9udGgpIHtcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcjpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmU6XG4gICAgICAgIHRoaXMuc2VsZWN0KGRhdGUpO1xuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jdXJyZW50TW9udGguY2xvbmUoKTtcblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5CZWZvcmUpIHtcbiAgICAgIG1vbnRoLnN1YnRyYWN0KDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIGlmIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCA9PT0gQ2FsZW5kYXJQZXJpb2RSZWxhdGl2aXR5RW51bS5BZnRlcikge1xuICAgICAgbW9udGguYWRkKDEsICdtb250aCcpO1xuICAgIH1cblxuICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGRhdGUpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoLmFkZCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIobmV4dE1vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uWWVhcikge1xuICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICBtaW5EYXRlOiBtb21lbnQodGhpcy5taW5EYXRlKSxcbiAgICAgICAgbWF4RGF0ZTogbW9tZW50KHRoaXMubWF4RGF0ZSlcbiAgICAgIH07XG5cbiAgICAgIHRoaXMueWVhcnNMaXN0ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihudWxsLCAxOSwgZGF0ZVJhbmdlKTtcbiAgICB9XG4gIH1cblxuICBwcmV2aW91cygpIHtcbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGgpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTW9udGggPSB0aGlzLmN1cnJlbnRNb250aC5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcbiAgICAgIHRoaXMuY2FsZW5kYXIgPSB0aGlzLmdldE1vbnRoQ2FsZW5kYXIocHJldmlvdXNNb250aCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVyaW9kID09PSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXIpIHtcbiAgICAgIGNvbnN0IGRhdGVSYW5nZSA9IHtcbiAgICAgICAgbWluRGF0ZTogbW9tZW50KHRoaXMubWluRGF0ZSksXG4gICAgICAgIG1heERhdGU6IG1vbWVudCh0aGlzLm1heERhdGUpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnllYXJzTGlzdCA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdlbmVyYXRlWWVhclBpY2tlckNvbGxlY3Rpb24obnVsbCwgLTE5LCBkYXRlUmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vbnRoQ2FsZW5kYXIoc3RhcnRQZXJpb2Q6IG1vbWVudE5zLk1vbWVudCk6IEFycmF5PENhbGVuZGFyRGF5W10+IHtcbiAgICBjb25zdCBzZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcbiAgICBjb25zdCBkYXRlUmFuZ2U6IERhdGVSYW5nZSA9IHtcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHN0YXJ0UGVyaW9kLmNsb25lKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVDYWxlbmRhckZvck1vbnRoKHN0YXJ0UGVyaW9kLCB0aGlzLmN1cnJlbnRNb250aCwgc2VsZWN0ZWREYXRlcywgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dNb250aHNQaWNrZXIoeWVhcjogbnVtYmVyID0gdGhpcy5jdXJyZW50TW9udGgueWVhcigpKSB7XG4gICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgIHRoaXMuaXNZZWFyc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzTW9udGhzUGlja2VyRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jdXJyZW50TW9udGgueWVhcih5ZWFyKTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLk1vbnRoO1xuICAgIHRoaXMubW9udGhzID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVNb250aFBpY2tlckNvbGxlY3Rpb24oeWVhciwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNob3dZZWFyc1BpY2tlcigpIHtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5pc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzWWVhcnNQaWNrZXJFbmFibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5wZXJpb2QgPSBDYWxlbmRhclBlcmlvZFR5cGVFbnVtLlllYXI7XG4gICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKHRoaXMuY3VycmVudE1vbnRoLCAxOSwgZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoKSB7XG4gICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihtb250aC5tb21lbnRPYmopO1xuICAgIHRoaXMuaXNNb250aHNQaWNrZXJFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RZZWFyKHllYXIpIHtcbiAgICB0aGlzLnNob3dNb250aHNQaWNrZXIoeWVhci5tb21lbnRPYmoueWVhcigpKTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZSgpIHtcbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBdXRob3JWYWx1ZXNJZkFueSgpIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLl9tb2RlbFRvVmlld0NoYW5nZS5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVzLnNpemUgPT09IDEgJiYgdGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKS5pc1NhbWUobW9tZW50KCksICdkYXknKSkge1xuICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlLmZvckVhY2goKGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udmVydGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQoZGF0ZSksIHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAgICAgICB0aGlzLm1hcmtEYXRlQXNTZWxlY3RlZChjb252ZXJ0ZWREYXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYWxlbmRhckRheSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcihtb21lbnQobmV3VmFsdWUpLCB0aGlzLmNhbGVuZGFyKTtcbiAgICAgICAgICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGNhbGVuZGFyRGF5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtEYXRlQXNTZWxlY3RlZChkYXRlOiBDYWxlbmRhckRheSkge1xuICAgIGNvbnN0IHNlbGVjdGVkTW9tZW50T2JqID0gbW9tZW50KGRhdGUubW9tZW50T2JqKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2V0U2VsZWN0ZWRJdGVtSW5kZXgoc2VsZWN0ZWRNb21lbnRPYmosIHRoaXMuc2VsZWN0ZWREYXRlcy50b0FycmF5KCkpO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdCkge1xuICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPiAtMSkge1xuICAgICAgICBkYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnJlbW92ZShzZWxlY3RlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHRoaXMuc2VsZWN0ZWREYXRlcy5wdXNoKHNlbGVjdGVkTW9tZW50T2JqKTtcbiAgICAgICAgZGF0ZS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcmV2aW91c0RhdGUgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5maW5kQURhdGVGcm9tQ2FsZW5kYXIodGhpcy5zZWxlY3RlZERhdGVzLmdldCgwKSwgdGhpcy5jYWxlbmRhcilcbiAgICAgIGlmIChwcmV2aW91c0RhdGUpIHtcbiAgICAgICAgcHJldmlvdXNEYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXMucHVzaChzZWxlY3RlZE1vbWVudE9iaik7XG4gICAgICBkYXRlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKS5mb3JFYWNoKChzZWxlY3RlZERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF5ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZmluZEFEYXRlRnJvbUNhbGVuZGFyKHNlbGVjdGVkRGF0ZSwgdGhpcy5jYWxlbmRhcik7XG5cbiAgICAgIC8vIHRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIHdlIGhhdmUgYSBzZWxlY3RlZCBkYXRlXG4gICAgICAvLyBmcm9tIHRoZSBwcmV2aW91cyBtb250aCBidXQgd2UgaGF2ZW4ndCBzZWxlY3RlZCBhbnl0aGluZ1xuICAgICAgLy8gZnJvbSB0aGUgY3VycmVudFxuICAgICAgaWYgKGNhbGVuZGFyRGF5KSB7XG4gICAgICAgIGNhbGVuZGFyRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW10pO1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVSZXN1bHQoKSB7XG4gICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcblxuICAgIGlmICh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRWYWx1ZVRpbWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy5zb3J0VmFsdWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRGF0ZU9iamVjdFR5cGVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRm9ybWF0SWZOZWVkZWQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzWzBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9WYWx1ZURhdGVPYmplY3RUeXBlSWZOZWVkZWQoKSAge1xuICAgIGlmICghdGhpcy5mb3JtYXQpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlT2JqZWN0VHlwZSkge1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLkRhdGU6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLlVuaXg6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmFsdWVGb3JtYXRJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCh0aGlzLmZvcm1hdCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gZm9ybWF0dGVkRGF0ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZVRpbWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc1RpbWVwaWNrZXJFbmFibGVkICYmIHRoaXMudGltZSkge1xuICAgICAgY29uc3QgZGF0ZXNXaXRoVGltZSA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKG1vbWVudE9iaikgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50T2JqLmhvdXJzKHRoaXMudGltZS5ob3VycygpKS5taW51dGVzKHRoaXMudGltZS5taW51dGVzKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IGRhdGVzV2l0aFRpbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VmFsdWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRlcyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNvcnREYXRlc0FzYyh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMpO1xuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gc29ydGVkRGF0ZXM7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzcS11aS9uZy1kYXRldGltZS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQVUsaUJBQWlCLEVBQ2hELEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUU1QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFckUsT0FBTyxLQUFLLFFBQVEsTUFBTSxRQUFRLENBQUM7O0lBQzdCLE1BQU0sR0FBRyxRQUFROztJQUVqQixtQ0FBbUMsR0FBRztJQUMxQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHVCQUF1QixFQUF2QixDQUF1QixDQUFDO0lBQ3RELEtBQUssRUFBRSxJQUFJO0NBQ1o7QUFFRDtJQU82QyxtREFBa0I7SUEwQjdELGlDQUFvQixlQUF1QztRQUEzRCxZQUNFLGlCQUFPLFNBQ1I7UUFGbUIscUJBQWUsR0FBZixlQUFlLENBQXdCO1FBekJsRCxZQUFNLEdBQUcs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b0JBQW9CO29CQUM5QiwyaUhBQStDO29CQUUvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7O2lCQUNqRDs7OztnQkFqQlEsc0JBQXNCOzs7eUJBbUI1QixLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzttQ0FDTCxLQUFLO3lCQUNMLEtBQUs7c0NBQ0wsS0FBSztpQ0FDTCxLQUFLO21DQUNMLEtBQUs7c0NBRUwsTUFBTTs7SUEwUlQsOEJBQUM7Q0FBQSxBQTNTRCxDQU82QyxrQkFBa0IsR0FvUzlEO1NBcFNZLHVCQUF1Qjs7O0lBQ2xDLHlDQUF1Qjs7SUFDdkIsMENBQXlDOztJQUN6QywwQ0FBeUM7O0lBQ3pDLG1EQUFrQzs7SUFDbEMseUNBQXdCOztJQUN4QixzREFBcUM7O0lBQ3JDLGlEQUF3RDs7SUFDeEQsbURBQTRDOztJQUU1QyxzREFBaUg7O0lBRWpILDJDQUFtQjs7SUFDbkIseUNBQTJCOztJQUMzQiw0Q0FBOEI7O0lBQzlCLDJDQUErQjs7SUFDL0IsK0NBQThCOztJQUM5Qix3REFBOEI7O0lBQzlCLHVEQUE2Qjs7SUFDN0IsdUNBQXNCOztJQUN0QiwyREFBd0Q7O0lBQ3hELHlDQUE4RDs7Ozs7SUFFOUQsZ0RBQXVFOzs7OztJQUN2RSxzREFBaUM7Ozs7O0lBRXJCLGtEQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBZnRlclZpZXdJbml0LFxuICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dENvcmVDb21wb25lbnQgfSBmcm9tICdAc3EtdWkvbmctc3EtY29tbW9uJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXksIEluQ2FsZW5kYXJQaWNrZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVudGl0aWVzJztcbmltcG9ydCB7IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW0gfSBmcm9tICcuLi9lbnVtcy9jYWxlbmRhci1wZXJpb2QtcmVsYXRpdml0eS5lbnVtJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBDYWxlbmRhclBlcmlvZFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvY2FsZW5kYXItcGVyaW9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBEYXRlT2JqZWN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2RhdGUtb2JqZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aW1lcGlja2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCB7IENhbGVuZGFyTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci1tYW5hZ2VyLnNlcnZpY2UnO1xuLy8gdGVtcG9yYXJ5IGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvMjE3I2lzc3VlY29tbWVudC0zNjAxNzY3NTlcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnROcztcblxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZVBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcS1kYXRldGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRldGltZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIElucHV0Q29yZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgbG9jYWxlID0gJ2VuJztcbiAgQElucHV0KCkgbWF4RGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZTtcbiAgQElucHV0KCkgbWluRGF0ZTogbW9tZW50TnMuTW9tZW50IHwgRGF0ZTtcbiAgQElucHV0KCkgaXNNdWx0aXBsZVNlbGVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZztcbiAgQElucHV0KCkgaXNUaW1lcGlja2VyRW5hYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRlT2JqZWN0VHlwZTogc3RyaW5nID0gRGF0ZU9iamVjdFR5cGUuTW9tZW50O1xuICBASW5wdXQoKSB0aW1lcGlja2VyQ29uZmlnOiBUaW1lcGlja2VyQ29uZmlnO1xuXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bW9tZW50TnMuTW9tZW50IHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPG1vbWVudE5zLk1vbWVudCB8IERhdGU+KCk7XG5cbiAgd2Vla2RheXM6IHN0cmluZ1tdO1xuICBtb250aHM6IEluQ2FsZW5kYXJQaWNrZXJbXTtcbiAgeWVhcnNMaXN0OiBJbkNhbGVuZGFyUGlja2VyW107XG4gIGNhbGVuZGFyOiBBcnJheTxDYWxlbmRhckRheVtdPjtcbiAgY3VycmVudE1vbnRoOiBtb21lbnROcy5Nb21lbnQ7XG4gIGlzTW9udGhzUGlja2VyRW5hYmxlZCA9IGZhbHNlO1xuICBpc1llYXJzUGlja2VyRW5hYmxlZCA9IGZhbHNlO1xuICB0aW1lOiBtb21lbnROcy5Nb21lbnQ7XG4gIGNhbGVuZGFyUGVyaW9kUmVsYXRpdml0eSA9IENhbGVuZGFyUGVyaW9kUmVsYXRpdml0eUVudW07XG4gIHBlcmlvZDogQ2FsZW5kYXJQZXJpb2RUeXBlRW51bSA9IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGg7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVzOiBMaXN0PG1vbWVudE5zLk1vbWVudD4gPSBMaXN0PG1vbWVudE5zLk1vbWVudD4oKTtcbiAgcHJpdmF0ZSBwYXJzZWRTZWxlY3RlZERhdGVzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhck1hbmFnZXI6IENhbGVuZGFyTWFuYWdlclNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgbW9tZW50LmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5jYWxlbmRhck1hbmFnZXIuc2V0TG9jYWxlKHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBub3cgPSBtb21lbnQoKS5ob3VycygwKS5taW51dGVzKDApLmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVzID0gTGlzdChbbm93LmNsb25lKCldKTtcbiAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2V0V2Vla2RheXMoKTtcbiAgICB0aGlzLmNhbGVuZGFyID0gdGhpcy5nZXRNb250aENhbGVuZGFyKG5vdy5jbG9uZSgpKTtcbiAgICB0aGlzLmluaXRpYWxpemVBdXRob3JWYWx1ZXNJZkFueSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlc09iaikge1xuICAgIGlmIChjaGFuZ2VzT2JqLnRpbWVwaWNrZXJDb25maWcgJiYgY2hhbmdlc09iai50aW1lcGlja2VyQ29uZmlnLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNsaWNrKGRhdGU6IENhbGVuZGFyRGF5KSB7XG4gICAgc3dpdGNoIChkYXRlLnJlbGF0aXZpdHlUb0N1cnJlbnRNb250aCkge1xuICAgICAgY2FzZSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkFmdGVyOlxuICAgICAgICB0aGlzLnNlbGVjdChkYXRlKTtcbiAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkJlZm9yZTpcbiAgICAgICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gICAgICAgIHRoaXMucHJldmlvdXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNlbGVjdChkYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0KGRhdGU6IENhbGVuZGFyRGF5KSB7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnRNb250aC5jbG9uZSgpO1xuXG4gICAgaWYgKGRhdGUucmVsYXRpdml0eVRvQ3VycmVudE1vbnRoID09PSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkJlZm9yZSkge1xuICAgICAgbW9udGguc3VidHJhY3QoMSwgJ21vbnRoJyk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUucmVsYXRpdml0eVRvQ3VycmVudE1vbnRoID09PSBDYWxlbmRhclBlcmlvZFJlbGF0aXZpdHlFbnVtLkFmdGVyKSB7XG4gICAgICBtb250aC5hZGQoMSwgJ21vbnRoJyk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrRGF0ZUFzU2VsZWN0ZWQoZGF0ZSk7XG4gICAgdGhpcy5kYXRlU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBlcmlvZCA9PT0gQ2FsZW5kYXJQZXJpb2RUeXBlRW51bS5Nb250aCkge1xuICAgICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGguYWRkKDEsICdtb250aCcpO1xuICAgICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihuZXh0TW9udGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBlcmlvZCA9PT0gQ2FsZW5kYXJQZXJpb2RUeXBlRW51bS5ZZWFyKSB7XG4gICAgICBjb25zdCBkYXRlUmFuZ2UgPSB7XG4gICAgICAgIG1pbkRhdGU6IG1vbWVudCh0aGlzLm1pbkRhdGUpLFxuICAgICAgICBtYXhEYXRlOiBtb21lbnQodGhpcy5tYXhEYXRlKVxuICAgICAgfTtcblxuICAgICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZVllYXJQaWNrZXJDb2xsZWN0aW9uKG51bGwsIDE5LCBkYXRlUmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByZXZpb3VzKCkge1xuICAgIGlmICh0aGlzLnBlcmlvZCA9PT0gQ2FsZW5kYXJQZXJpb2RUeXBlRW51bS5Nb250aCkge1xuICAgICAgY29uc3QgcHJldmlvdXNNb250aCA9IHRoaXMuY3VycmVudE1vbnRoLnN1YnRyYWN0KDEsICdtb250aCcpO1xuICAgICAgdGhpcy5jYWxlbmRhciA9IHRoaXMuZ2V0TW9udGhDYWxlbmRhcihwcmV2aW91c01vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJpb2QgPT09IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uWWVhcikge1xuICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICBtaW5EYXRlOiBtb21lbnQodGhpcy5taW5EYXRlKSxcbiAgICAgICAgbWF4RGF0ZTogbW9tZW50KHRoaXMubWF4RGF0ZSlcbiAgICAgIH07XG5cbiAgICAgIHRoaXMueWVhcnNMaXN0ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZ2VuZXJhdGVZZWFyUGlja2VyQ29sbGVjdGlvbihudWxsLCAtMTksIGRhdGVSYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9udGhDYWxlbmRhcihzdGFydFBlcmlvZDogbW9tZW50TnMuTW9tZW50KTogQXJyYXk8Q2FsZW5kYXJEYXlbXT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXMudG9BcnJheSgpO1xuICAgIGNvbnN0IGRhdGVSYW5nZTogRGF0ZVJhbmdlID0ge1xuICAgICAgbWluRGF0ZTogdGhpcy5taW5EYXRlLFxuICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlXG4gICAgfTtcblxuICAgIHRoaXMuY3VycmVudE1vbnRoID0gc3RhcnRQZXJpb2QuY2xvbmUoKTtcblxuICAgIHJldHVybiB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZUNhbGVuZGFyRm9yTW9udGgoc3RhcnRQZXJpb2QsIHRoaXMuY3VycmVudE1vbnRoLCBzZWxlY3RlZERhdGVzLCBkYXRlUmFuZ2UpO1xuICB9XG5cbiAgc2hvd01vbnRoc1BpY2tlcih5ZWFyOiBudW1iZXIgPSB0aGlzLmN1cnJlbnRNb250aC55ZWFyKCkpIHtcbiAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgdGhpcy5pc1llYXJzUGlja2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNNb250aHNQaWNrZXJFbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmN1cnJlbnRNb250aC55ZWFyKHllYXIpO1xuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHtcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLnBlcmlvZCA9IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uTW9udGg7XG4gICAgdGhpcy5tb250aHMgPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZW5lcmF0ZU1vbnRoUGlja2VyQ29sbGVjdGlvbih5ZWFyLCBkYXRlUmFuZ2UpO1xuICB9XG5cbiAgc2hvd1llYXJzUGlja2VyKCkge1xuICAgIHRoaXMuZGVzZWxlY3RBbGwoKTtcbiAgICB0aGlzLmlzTW9udGhzUGlja2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNZZWFyc1BpY2tlckVuYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHtcbiAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSxcbiAgICAgIG1heERhdGU6IHRoaXMubWF4RGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLnBlcmlvZCA9IENhbGVuZGFyUGVyaW9kVHlwZUVudW0uWWVhcjtcbiAgICB0aGlzLnllYXJzTGlzdCA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmdlbmVyYXRlWWVhclBpY2tlckNvbGxlY3Rpb24odGhpcy5jdXJyZW50TW9udGgsIDE5LCBkYXRlUmFuZ2UpO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGgpIHtcbiAgICB0aGlzLmNhbGVuZGFyID0gdGhpcy5nZXRNb250aENhbGVuZGFyKG1vbnRoLm1vbWVudE9iaik7XG4gICAgdGhpcy5pc01vbnRoc1BpY2tlckVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdFllYXIoeWVhcikge1xuICAgIHRoaXMuc2hvd01vbnRoc1BpY2tlcih5ZWFyLm1vbWVudE9iai55ZWFyKCkpO1xuICB9XG5cbiAgb25UaW1lQ2hhbmdlKCkge1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUF1dGhvclZhbHVlc0lmQW55KCkge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuX21vZGVsVG9WaWV3Q2hhbmdlLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZXMuc2l6ZSA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkRGF0ZXMuZ2V0KDApLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGwoKTtcblxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUuZm9yRWFjaCgoZGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZmluZEFEYXRlRnJvbUNhbGVuZGFyKG1vbWVudChkYXRlKSwgdGhpcy5jYWxlbmRhcik7XG4gICAgICAgICAgICAgIHRoaXMubWFya0RhdGVBc1NlbGVjdGVkKGNvbnZlcnRlZERhdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGVuZGFyRGF5ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZmluZEFEYXRlRnJvbUNhbGVuZGFyKG1vbWVudChuZXdWYWx1ZSksIHRoaXMuY2FsZW5kYXIpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRGF0ZUFzU2VsZWN0ZWQoY2FsZW5kYXJEYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0RhdGVBc1NlbGVjdGVkKGRhdGU6IENhbGVuZGFyRGF5KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRNb21lbnRPYmogPSBtb21lbnQoZGF0ZS5tb21lbnRPYmopO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmNhbGVuZGFyTWFuYWdlci5nZXRTZWxlY3RlZEl0ZW1JbmRleChzZWxlY3RlZE1vbWVudE9iaiwgdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKSk7XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgIGRhdGUuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXMucmVtb3ZlKHNlbGVjdGVkSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnB1c2goc2VsZWN0ZWRNb21lbnRPYmopO1xuICAgICAgICBkYXRlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzRGF0ZSA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLmZpbmRBRGF0ZUZyb21DYWxlbmRhcih0aGlzLnNlbGVjdGVkRGF0ZXMuZ2V0KDApLCB0aGlzLmNhbGVuZGFyKTtcbiAgICAgIGlmIChwcmV2aW91c0RhdGUpIHtcbiAgICAgICAgcHJldmlvdXNEYXRlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXMucHVzaChzZWxlY3RlZE1vbWVudE9iaik7XG4gICAgICBkYXRlLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKS5mb3JFYWNoKChzZWxlY3RlZERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF5ID0gdGhpcy5jYWxlbmRhck1hbmFnZXIuZmluZEFEYXRlRnJvbUNhbGVuZGFyKHNlbGVjdGVkRGF0ZSwgdGhpcy5jYWxlbmRhcik7XG5cbiAgICAgIC8vIHRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIHdlIGhhdmUgYSBzZWxlY3RlZCBkYXRlXG4gICAgICAvLyBmcm9tIHRoZSBwcmV2aW91cyBtb250aCBidXQgd2UgaGF2ZW4ndCBzZWxlY3RlZCBhbnl0aGluZ1xuICAgICAgLy8gZnJvbSB0aGUgY3VycmVudFxuICAgICAgaWYgKGNhbGVuZGFyRGF5KSB7XG4gICAgICAgIGNhbGVuZGFyRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IExpc3QoW10pO1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVSZXN1bHQoKSB7XG4gICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5zZWxlY3RlZERhdGVzLnRvQXJyYXkoKTtcblxuICAgIGlmICh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRWYWx1ZVRpbWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy5zb3J0VmFsdWVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRGF0ZU9iamVjdFR5cGVJZk5lZWRlZCgpO1xuICAgICAgdGhpcy50b1ZhbHVlRm9ybWF0SWZOZWVkZWQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzWzBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9WYWx1ZURhdGVPYmplY3RUeXBlSWZOZWVkZWQoKSAge1xuICAgIGlmICghdGhpcy5mb3JtYXQpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRlT2JqZWN0VHlwZSkge1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLkRhdGU6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERhdGVPYmplY3RUeXBlLlVuaXg6XG4gICAgICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgobW9tZW50T2JqKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW9tZW50T2JqLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVmFsdWVGb3JtYXRJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtYXQpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVzID0gdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzLm1hcCgoZGF0ZSkgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCh0aGlzLmZvcm1hdCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gZm9ybWF0dGVkRGF0ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZVRpbWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc1RpbWVwaWNrZXJFbmFibGVkICYmIHRoaXMudGltZSkge1xuICAgICAgY29uc3QgZGF0ZXNXaXRoVGltZSA9IHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcy5tYXAoKG1vbWVudE9iaikgPT4ge1xuICAgICAgICByZXR1cm4gbW9tZW50T2JqLmhvdXJzKHRoaXMudGltZS5ob3VycygpKS5taW51dGVzKHRoaXMudGltZS5taW51dGVzKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucGFyc2VkU2VsZWN0ZWREYXRlcyA9IGRhdGVzV2l0aFRpbWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VmFsdWVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0KSB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRlcyA9IHRoaXMuY2FsZW5kYXJNYW5hZ2VyLnNvcnREYXRlc0FzYyh0aGlzLnBhcnNlZFNlbGVjdGVkRGF0ZXMpO1xuICAgICAgdGhpcy5wYXJzZWRTZWxlY3RlZERhdGVzID0gc29ydGVkRGF0ZXM7XG4gICAgfVxuICB9XG59XG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {number} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {number} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /** @enum {string} */

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import * as momentNs from 'moment';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import * as momentNs from 'moment';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /**

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, forwardRef, ViewEncapsulation, Input, Output, EventEmitter } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { TimeUnit } from '../enums/time-unit.enum';

@@ -36,2 +36,3 @@ import { TimeObject } from '../enums/time-object-type.enum';

_this.hourFormat = 'HH'; // 24-hour format by default
// 24-hour format by default
_this.limits = {

@@ -182,2 +183,3 @@ hours: {

/**
* @private
* @param {?} value

@@ -188,2 +190,3 @@ * @param {?} unit

TimePickerComponent.prototype.normalizeTimeInput = /**
* @private
* @param {?} value

@@ -209,5 +212,7 @@ * @param {?} unit

/**
* @private
* @return {?}
*/
TimePickerComponent.prototype.setValueResult = /**
* @private
* @return {?}

@@ -237,2 +242,3 @@ */

];
/** @nocollapse */
TimePickerComponent.ctorParameters = function () { return []; };

@@ -280,5 +286,11 @@ TimePickerComponent.propDecorators = {

TimePickerComponent.prototype.timeUnit;
/** @type {?} */
/**
* @type {?}
* @private
*/
TimePickerComponent.prototype.start;
/** @type {?} */
/**
* @type {?}
* @private
*/
TimePickerComponent.prototype.hourFormat;

@@ -288,2 +300,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQVUsaUJBQWlCLEVBQ2hELEtBQUssRUFBYSxNQUFNLEVBQUUsWUFBWSxFQUN2QyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVuRCxPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7SUFDN0IsTUFBTSxHQUFHLFFBQVE7O0lBRWpCLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLENBQUM7SUFDbEQsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQUVEO0lBd0V5QywrQ0FBa0I7SUErQnpEO1FBQUEsWUFDRSxpQkFBTyxTQUNSO1FBaENRLGNBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixnQkFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLG9CQUFjLEdBQVcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUU3QixzQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHdCQUFrQixHQUFHLElBQUks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QUFPO1lBQzFELFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ3BELENBQUM7O2dCQXhPRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLDgxRUFpRVg7b0JBRUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDOzZCQUZ2Qyx5MEJBQXkwQjtpQkFHbjFCOzs7OzJCQUVFLEtBQUs7NkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzZCQUNMLEtBQUs7NkJBQ0wsS0FBSyxTQUFDLE9BQU87K0JBQ2IsS0FBSyxTQUFDLFNBQVM7aUNBQ2YsS0FBSzttQ0FFTCxNQUFNLFNBQUMsYUFBYTtxQ0FDcEIsTUFBTSxTQUFDLGVBQWU7O0lBdUp6QiwwQkFBQztDQUFBLEFBek9ELENBd0V5QyxrQkFBa0IsR0FpSzFEO1NBaktZLG1CQUFtQjs7O0lBQzlCLHVDQUFzQjs7SUFDdEIseUNBQXdCOztJQUN4Qix5Q0FBNEI7O0lBQzVCLHlDQUEyQjs7SUFDM0IseUNBQW1DOztJQUNuQywyQ0FBdUM7O0lBQ3ZDLDZDQUFvRDs7SUFFcEQsK0NBQXFFOztJQUNyRSxpREFBeUU7O0lBRXpFLG9DQUFNOztJQUNOLHNDQUFROztJQUNSLDZDQUFzQjs7SUFDdEIsdUNBQW9COztJQUVwQixvQ0FBeUI7O0lBQ3pCLHlDQUEwQjs7SUFFMUIscUNBU0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudGl0aWVzL2lucHV0LWNvcmUtY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVVbml0IH0gZnJvbSAnLi4vZW51bXMvdGltZS11bml0LmVudW0nO1xuaW1wb3J0IHsgVGltZU9iamVjdCB9IGZyb20gJy4uL2VudW1zL3RpbWUtb2JqZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8vIHRlbXBvcmFyeSBmaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzIxNyNpc3N1ZWNvbW1lbnQtMzYwMTc2NzU5XG5pbXBvcnQgKiBhcyBtb21lbnROcyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TnM7XG5cbmNvbnN0IENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlciBkaXNwbGF5LWZsZXgganVzdGlmeS1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aW1lLXVuaXQgZGlzcGxheS1mbGV4IGNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyIGRpc3BsYXktZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudCh0aW1lVW5pdC5Ib3VycylcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lIGRpc3BsYXktZmxleCBjb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgIG5hbWU9XCJ0aW1lXCJcbiAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhvdXJzXCJcbiAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRWRpdGFibGVcIlxuICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlSW5wdXQodGltZVVuaXQuSG91cnMpXCI+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzcGlubmVyIGRpc3BsYXktZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCh0aW1lVW5pdC5Ib3VycylcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGltZS11bml0IGRpdmlkZXJcIj46PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRpbWUtdW5pdCBkaXNwbGF5LWZsZXggY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNwaW5uZXIgZGlzcGxheS1mbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5jcmVtZW50KHRpbWVVbml0Lk1pbnV0ZXMpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGltZVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICBuYW1lPVwibWludXRlc1wiXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJtaW51dGVzXCJcbiAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRWRpdGFibGVcIlxuICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbGlkYXRlSW5wdXQodGltZVVuaXQuTWludXRlcylcIj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNwaW5uZXIgZGlzcGxheS1mbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVjcmVtZW50KHRpbWVVbml0Lk1pbnV0ZXMpXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImlzTWVyaWRpZW1cIlxuICAgICAgICBjbGFzcz1cInRpbWUtdW5pdFwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImRpc3BsYXktZmxleCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU5vb25SZWxhdGl2aXR5KClcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWVyaWRpZW1cIj5cbiAgICAgICAge3tub29uUmVsYXRpdml0eS50b1VwcGVyQ2FzZSgpfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2xvY2stbyBtZXJpZGllbS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbYC5zcSAudGltZS1waWNrZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSg0NiwxNTksMTM0LC42OSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSg0NiwxNTksMTM0LC42OSk7Zm9udC1zaXplOjIzcHh9LnNxIC50aW1lLXBpY2tlciBpbnB1dHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTgsMTI1LDEwNCwuMTIpO2JvcmRlcjpub25lO3dpZHRoOjM4cHg7aGVpZ2h0OjM4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnNxIC50aW1lLXBpY2tlciAudGltZXtwYWRkaW5nOjVweCAwIDNweH0uc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXR7cGFkZGluZzo3cHggMCAxMHB4fS5zcSAudGltZS1waWNrZXIgLnRpbWUtdW5pdDpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1yaWdodDoxNXB4fS5zcSAudGltZS1waWNrZXIgLnRpbWUtdW5pdCAubWVyaWRpZW0taWNvbiwuc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQgLnNwaW5uZXJ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjouM3MgZWFzZS1pbn0uc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQgLnNwaW5uZXJ7aGVpZ2h0OjI1cHh9LnNxIC50aW1lLXBpY2tlciAudGltZS11bml0OmhvdmVyIC5tZXJpZGllbS1pY29uLC5zcSAudGltZS1waWNrZXIgLnRpbWUtdW5pdDpob3ZlciAuc3Bpbm5lcntvcGFjaXR5OjE7cG9pbnRlci1ldmVudHM6YXV0b30uc3EgLnRpbWUtcGlja2VyIC50aW1lLXVuaXQgLmZhe2ZvbnQtc2l6ZToyMHB4fS5zcSAudGltZS1waWNrZXIgLm1lcmlkaWVte3BhZGRpbmctcmlnaHQ6NXB4fS5zcSAudGltZS1waWNrZXIgLmRpdmlkZXJ7Zm9udC1zaXplOjQ0cHg7bWFyZ2luLWJvdHRvbTo3cHh9YF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRDb3JlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBob3VyU3RlcCA9IDE7XG4gIEBJbnB1dCgpIG1pbnV0ZVN0ZXAgPSAxO1xuICBASW5wdXQoKSBpc01lcmlkaWVtID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzRWRpdGFibGUgPSB0cnVlO1xuICBASW5wdXQoJ2hvdXJzJykgaW5wdXRIb3VyczogbnVtYmVyO1xuICBASW5wdXQoJ21pbnV0ZXMnKSBpbnB1dE1pbnV0ZXM6IG51bWJlcjtcbiAgQElucHV0KCkgdGltZU9iamVjdFR5cGU6IHN0cmluZyA9IFRpbWVPYmplY3QuU3RyaW5nO1xuXG4gIEBPdXRwdXQoJ2hvdXJzQ2hhbmdlJykgaW5wdXRIb3Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCdtaW51dGVzQ2hhbmdlJykgaW5wdXRNaW51dGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgaG91cnM7XG4gIG1pbnV0ZXM7XG4gIG5vb25SZWxhdGl2aXR5ID0gJ2FtJztcbiAgdGltZVVuaXQgPSBUaW1lVW5pdDtcblxuICBwcml2YXRlIHN0YXJ0ID0gbW9tZW50KCk7XG4gIHByaXZhdGUgaG91ckZvcm1hdCA9ICdISCc7IC8vIDI0LWhvdXIgZm9ybWF0IGJ5IGRlZmF1bHRcblxuICBsaW1pdHMgPSB7XG4gICAgaG91cnM6IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMjRcbiAgICB9LFxuICAgIG1pbnV0ZXM6IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogNTlcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaG91cnMgPSB0aGlzLnN0YXJ0LmZvcm1hdCh0aGlzLmhvdXJGb3JtYXQpO1xuICAgIHRoaXMubWludXRlcyA9IHRoaXMuc3RhcnQuZm9ybWF0KCdtbScpO1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXNPYmopIHtcbiAgICBpZiAoY2hhbmdlc09iai5pc01lcmlkaWVtKSB7XG4gICAgICBpZiAoY2hhbmdlc09iai5pc01lcmlkaWVtLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmhvdXJGb3JtYXQgPSAnaGgnO1xuICAgICAgICB0aGlzLm5vb25SZWxhdGl2aXR5ID0gdGhpcy5zdGFydC5mb3JtYXQoJ2EnKTtcbiAgICAgICAgdGhpcy5saW1pdHMuaG91cnMubWluID0gMTtcbiAgICAgICAgdGhpcy5saW1pdHMuaG91cnMubWF4ID0gMTI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhvdXJGb3JtYXQgPSAnSEgnO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5taW4gPSAwO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5tYXggPSAyNDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNPYmouaW5wdXRIb3VycyAmJlxuICAgICAgICBjaGFuZ2VzT2JqLmlucHV0SG91cnMuY3VycmVudFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBjaGFuZ2VzT2JqLmlucHV0SG91cnMuY3VycmVudFZhbHVlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBjaGFuZ2VzT2JqLmlucHV0SG91cnMuY3VycmVudFZhbHVlID4gLTEpIHtcbiAgICAgIHRoaXMuaG91cnMgPSB0aGlzLnN0YXJ0LmhvdXJzKGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUpLmZvcm1hdCh0aGlzLmhvdXJGb3JtYXQpO1xuICAgICAgdGhpcy5ub29uUmVsYXRpdml0eSA9IHRoaXMuc3RhcnQuZm9ybWF0KCdhJyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNPYmouaW5wdXRNaW51dGVzICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRNaW51dGVzLmN1cnJlbnRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBjaGFuZ2VzT2JqLmlucHV0TWludXRlcy5jdXJyZW50VmFsdWUgPiAtMSkge1xuICAgICAgdGhpcy5taW51dGVzID0gdGhpcy5zdGFydC5taW51dGVzKGNoYW5nZXNPYmouaW5wdXRNaW51dGVzLmN1cnJlbnRWYWx1ZSkuZm9ybWF0KCdtbScpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluY3JlbWVudCh1bml0OiBUaW1lVW5pdCkge1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSBUaW1lVW5pdC5Ib3VyczpcbiAgICAgICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuYWRkKHRoaXMuaG91clN0ZXAsICdob3VycycpLmZvcm1hdCh0aGlzLmhvdXJGb3JtYXQpO1xuICAgICAgICB0aGlzLmlucHV0SG91cnNDaGFuZ2UuZW1pdChwYXJzZUludCh0aGlzLmhvdXJzLCAxMCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVGltZVVuaXQuTWludXRlczpcbiAgICAgICAgdGhpcy5taW51dGVzID0gdGhpcy5zdGFydC5hZGQodGhpcy5taW51dGVTdGVwLCAnbWludXRlcycpLmZvcm1hdCgnbW0nKTtcbiAgICAgICAgdGhpcy5pbnB1dE1pbnV0ZXNDaGFuZ2UuZW1pdChwYXJzZUludCh0aGlzLm1pbnV0ZXMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIGRlY3JlbWVudCh1bml0OiBUaW1lVW5pdCkge1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSBUaW1lVW5pdC5Ib3VyczpcbiAgICAgICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuc3VidHJhY3QodGhpcy5ob3VyU3RlcCwgJ2hvdXJzJykuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgICAgIHRoaXMuaW5wdXRIb3Vyc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMuaG91cnMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaW1lVW5pdC5NaW51dGVzOlxuICAgICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0LnN1YnRyYWN0KHRoaXMubWludXRlU3RlcCwgJ21pbnV0ZXMnKS5mb3JtYXQoJ21tJyk7XG4gICAgICAgIHRoaXMuaW5wdXRNaW51dGVzQ2hhbmdlLmVtaXQocGFyc2VJbnQodGhpcy5taW51dGVzLCAxMCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBjaGFuZ2VOb29uUmVsYXRpdml0eSgpIHtcbiAgICB0aGlzLm5vb25SZWxhdGl2aXR5ID0gdGhpcy5ub29uUmVsYXRpdml0eSA9PT0gJ2FtJyA/ICdwbScgOiAnYW0nO1xuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlSW5wdXQodW5pdDogVGltZVVuaXQpIHtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgVGltZVVuaXQuSG91cnM6XG4gICAgICAgIHRoaXMuaG91cnMgPSB0aGlzLm5vcm1hbGl6ZVRpbWVJbnB1dCh0aGlzLmhvdXJzLCBUaW1lVW5pdC5Ib3Vycyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaW1lVW5pdC5NaW51dGVzOlxuICAgICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLm5vcm1hbGl6ZVRpbWVJbnB1dCh0aGlzLm1pbnV0ZXMsIFRpbWVVbml0Lk1pbnV0ZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlUmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVRpbWVJbnB1dCh2YWx1ZTogc3RyaW5nLCB1bml0OiBUaW1lVW5pdCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gJzAwJztcbiAgICB9XG5cbiAgICBpZiAocGFyc2VJbnQodmFsdWUsIDEwKSA+PSB0aGlzLmxpbWl0c1t1bml0XS5tYXgpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5saW1pdHNbdW5pdF0ubWF4LnRvU3RyaW5nKCk7XG5cbiAgICAgIGlmICh1bml0ID09PSBUaW1lVW5pdC5Ib3VycyAmJiAhdGhpcy5pc01lcmlkaWVtKSB7XG4gICAgICAgIHZhbHVlID0gJzAwJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyc2VJbnQodmFsdWUsIDEwKSA8IHRoaXMubGltaXRzW3VuaXRdLm1pbikge1xuICAgICAgdmFsdWUgPSB0aGlzLmxpbWl0c1t1bml0XS5taW4udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlUmVzdWx0KCkge1xuICAgIGxldCB0aW1lTW9tZW50OiBtb21lbnROcy5Nb21lbnQ7XG4gICAgbGV0IHRpbWVTdHJpbmcgPSBgJHt0aGlzLmhvdXJzfToke3RoaXMubWludXRlc31gO1xuICAgIHRpbWVTdHJpbmcgPSB0aGlzLmlzTWVyaWRpZW0gPyBgJHt0aW1lU3RyaW5nfSAke3RoaXMubm9vblJlbGF0aXZpdHkudG9VcHBlckNhc2UoKX1gIDogdGltZVN0cmluZztcblxuICAgIGlmICh0aGlzLnRpbWVPYmplY3RUeXBlID09PSBUaW1lT2JqZWN0Lk1vbWVudCkge1xuICAgICAgY29uc3QgbW9tZW50Rm9ybWF0ID0gdGhpcy5pc01lcmlkaWVtID8gJ2hoOm1tIEEnIDogJ0hIOm1tJztcbiAgICAgIHRpbWVNb21lbnQgPSBtb21lbnQodGltZVN0cmluZywgbW9tZW50Rm9ybWF0KTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdGltZU1vbWVudCA/IHRpbWVNb21lbnQgOiB0aW1lU3RyaW5nO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQVUsaUJBQWlCLEVBQ2hELEtBQUssRUFBYSxNQUFNLEVBQUUsWUFBWSxFQUN2QyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVuRCxPQUFPLEtBQUssUUFBUSxNQUFNLFFBQVEsQ0FBQzs7SUFDN0IsTUFBTSxHQUFHLFFBQVE7O0lBRWpCLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEsbUJBQW1CLEVBQW5CLENBQW1CLENBQUM7SUFDbEQsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQUVEO0lBT3lDLCtDQUFrQjtJQStCekQ7UUFBQSxZQUNFLGlCQUFPLFNBQ1I7UUFoQ1EsY0FBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGdCQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsb0JBQWMsR0FBVyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRTdCLHNCQUFnQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUMsd0JBQWtCLEdBQUcsSUFBSSxZ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QUMsT0FBTztZQUMxRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNwRCxDQUFDOztnQkF2S0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLHcyRUFBMkM7b0JBRTNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQzs7aUJBQ2pEOzs7OzsyQkFFRSxLQUFLOzZCQUNMLEtBQUs7NkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzZCQUNMLEtBQUssU0FBQyxPQUFPOytCQUNiLEtBQUssU0FBQyxTQUFTO2lDQUNmLEtBQUs7bUNBRUwsTUFBTSxTQUFDLGFBQWE7cUNBQ3BCLE1BQU0sU0FBQyxlQUFlOztJQXVKekIsMEJBQUM7Q0FBQSxBQXhLRCxDQU95QyxrQkFBa0IsR0FpSzFEO1NBaktZLG1CQUFtQjs7O0lBQzlCLHVDQUFzQjs7SUFDdEIseUNBQXdCOztJQUN4Qix5Q0FBNEI7O0lBQzVCLHlDQUEyQjs7SUFDM0IseUNBQW1DOztJQUNuQywyQ0FBdUM7O0lBQ3ZDLDZDQUFvRDs7SUFFcEQsK0NBQXFFOztJQUNyRSxpREFBeUU7O0lBRXpFLG9DQUFNOztJQUNOLHNDQUFROztJQUNSLDZDQUFzQjs7SUFDdEIsdUNBQW9COzs7OztJQUVwQixvQ0FBeUI7Ozs7O0lBQ3pCLHlDQUEwQjs7SUFFMUIscUNBU0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRDb3JlQ29tcG9uZW50IH0gZnJvbSAnQHNxLXVpL25nLXNxLWNvbW1vbic7XG5pbXBvcnQgeyBUaW1lVW5pdCB9IGZyb20gJy4uL2VudW1zL3RpbWUtdW5pdC5lbnVtJztcbmltcG9ydCB7IFRpbWVPYmplY3QgfSBmcm9tICcuLi9lbnVtcy90aW1lLW9iamVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyB0ZW1wb3JhcnkgZml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vbmctcGFja2Fnci9uZy1wYWNrYWdyL2lzc3Vlcy8yMTcjaXNzdWVjb21tZW50LTM2MDE3Njc1OVxuaW1wb3J0ICogYXMgbW9tZW50TnMgZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudE5zO1xuXG5jb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBJbnB1dENvcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGhvdXJTdGVwID0gMTtcbiAgQElucHV0KCkgbWludXRlU3RlcCA9IDE7XG4gIEBJbnB1dCgpIGlzTWVyaWRpZW0gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNFZGl0YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgnaG91cnMnKSBpbnB1dEhvdXJzOiBudW1iZXI7XG4gIEBJbnB1dCgnbWludXRlcycpIGlucHV0TWludXRlczogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1lT2JqZWN0VHlwZTogc3RyaW5nID0gVGltZU9iamVjdC5TdHJpbmc7XG5cbiAgQE91dHB1dCgnaG91cnNDaGFuZ2UnKSBpbnB1dEhvdXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoJ21pbnV0ZXNDaGFuZ2UnKSBpbnB1dE1pbnV0ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBob3VycztcbiAgbWludXRlcztcbiAgbm9vblJlbGF0aXZpdHkgPSAnYW0nO1xuICB0aW1lVW5pdCA9IFRpbWVVbml0O1xuXG4gIHByaXZhdGUgc3RhcnQgPSBtb21lbnQoKTtcbiAgcHJpdmF0ZSBob3VyRm9ybWF0ID0gJ0hIJzsgLy8gMjQtaG91ciBmb3JtYXQgYnkgZGVmYXVsdFxuXG4gIGxpbWl0cyA9IHtcbiAgICBob3Vyczoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiAyNFxuICAgIH0sXG4gICAgbWludXRlczoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiA1OVxuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgdGhpcy5taW51dGVzID0gdGhpcy5zdGFydC5mb3JtYXQoJ21tJyk7XG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlc09iaikge1xuICAgIGlmIChjaGFuZ2VzT2JqLmlzTWVyaWRpZW0pIHtcbiAgICAgIGlmIChjaGFuZ2VzT2JqLmlzTWVyaWRpZW0uY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMuaG91ckZvcm1hdCA9ICdoaCc7XG4gICAgICAgIHRoaXMubm9vblJlbGF0aXZpdHkgPSB0aGlzLnN0YXJ0LmZvcm1hdCgnYScpO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5taW4gPSAxO1xuICAgICAgICB0aGlzLmxpbWl0cy5ob3Vycy5tYXggPSAxMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaG91ckZvcm1hdCA9ICdISCc7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1pbiA9IDA7XG4gICAgICAgIHRoaXMubGltaXRzLmhvdXJzLm1heCA9IDI0O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc09iai5pbnB1dEhvdXJzICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRIb3Vycy5jdXJyZW50VmFsdWUgPiAtMSkge1xuICAgICAgdGhpcy5ob3VycyA9IHRoaXMuc3RhcnQuaG91cnMoY2hhbmdlc09iai5pbnB1dEhvdXJzLmN1cnJlbnRWYWx1ZSkuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgICB0aGlzLm5vb25SZWxhdGl2aXR5ID0gdGhpcy5zdGFydC5mb3JtYXQoJ2EnKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMgJiZcbiAgICAgICAgY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBjaGFuZ2VzT2JqLmlucHV0TWludXRlcy5jdXJyZW50VmFsdWUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIGNoYW5nZXNPYmouaW5wdXRNaW51dGVzLmN1cnJlbnRWYWx1ZSA+IC0xKSB7XG4gICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0Lm1pbnV0ZXMoY2hhbmdlc09iai5pbnB1dE1pbnV0ZXMuY3VycmVudFZhbHVlKS5mb3JtYXQoJ21tJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5jcmVtZW50KHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlIFRpbWVVbml0LkhvdXJzOlxuICAgICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5hZGQodGhpcy5ob3VyU3RlcCwgJ2hvdXJzJykuZm9ybWF0KHRoaXMuaG91ckZvcm1hdCk7XG4gICAgICAgIHRoaXMuaW5wdXRIb3Vyc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMuaG91cnMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUaW1lVW5pdC5NaW51dGVzOlxuICAgICAgICB0aGlzLm1pbnV0ZXMgPSB0aGlzLnN0YXJ0LmFkZCh0aGlzLm1pbnV0ZVN0ZXAsICdtaW51dGVzJykuZm9ybWF0KCdtbScpO1xuICAgICAgICB0aGlzLmlucHV0TWludXRlc0NoYW5nZS5lbWl0KHBhcnNlSW50KHRoaXMubWludXRlcywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgZGVjcmVtZW50KHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlIFRpbWVVbml0LkhvdXJzOlxuICAgICAgICB0aGlzLmhvdXJzID0gdGhpcy5zdGFydC5zdWJ0cmFjdCh0aGlzLmhvdXJTdGVwLCAnaG91cnMnKS5mb3JtYXQodGhpcy5ob3VyRm9ybWF0KTtcbiAgICAgICAgdGhpcy5pbnB1dEhvdXJzQ2hhbmdlLmVtaXQocGFyc2VJbnQodGhpcy5ob3VycywgMTApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbWVVbml0Lk1pbnV0ZXM6XG4gICAgICAgIHRoaXMubWludXRlcyA9IHRoaXMuc3RhcnQuc3VidHJhY3QodGhpcy5taW51dGVTdGVwLCAnbWludXRlcycpLmZvcm1hdCgnbW0nKTtcbiAgICAgICAgdGhpcy5pbnB1dE1pbnV0ZXNDaGFuZ2UuZW1pdChwYXJzZUludCh0aGlzLm1pbnV0ZXMsIDEwKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIGNoYW5nZU5vb25SZWxhdGl2aXR5KCkge1xuICAgIHRoaXMubm9vblJlbGF0aXZpdHkgPSB0aGlzLm5vb25SZWxhdGl2aXR5ID09PSAnYW0nID8gJ3BtJyA6ICdhbSc7XG4gICAgdGhpcy5zZXRWYWx1ZVJlc3VsdCgpO1xuICB9XG5cbiAgdmFsaWRhdGVJbnB1dCh1bml0OiBUaW1lVW5pdCkge1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSBUaW1lVW5pdC5Ib3VyczpcbiAgICAgICAgdGhpcy5ob3VycyA9IHRoaXMubm9ybWFsaXplVGltZUlucHV0KHRoaXMuaG91cnMsIFRpbWVVbml0LkhvdXJzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbWVVbml0Lk1pbnV0ZXM6XG4gICAgICAgIHRoaXMubWludXRlcyA9IHRoaXMubm9ybWFsaXplVGltZUlucHV0KHRoaXMubWludXRlcywgVGltZVVuaXQuTWludXRlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWVSZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVGltZUlucHV0KHZhbHVlOiBzdHJpbmcsIHVuaXQ6IFRpbWVVbml0KSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdmFsdWUgPSAnMDAnO1xuICAgIH1cblxuICAgIGlmIChwYXJzZUludCh2YWx1ZSwgMTApID49IHRoaXMubGltaXRzW3VuaXRdLm1heCkge1xuICAgICAgdmFsdWUgPSB0aGlzLmxpbWl0c1t1bml0XS5tYXgudG9TdHJpbmcoKTtcblxuICAgICAgaWYgKHVuaXQgPT09IFRpbWVVbml0LkhvdXJzICYmICF0aGlzLmlzTWVyaWRpZW0pIHtcbiAgICAgICAgdmFsdWUgPSAnMDAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJzZUludCh2YWx1ZSwgMTApIDwgdGhpcy5saW1pdHNbdW5pdF0ubWluKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubGltaXRzW3VuaXRdLm1pbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVSZXN1bHQoKSB7XG4gICAgbGV0IHRpbWVNb21lbnQ6IG1vbWVudE5zLk1vbWVudDtcbiAgICBsZXQgdGltZVN0cmluZyA9IGAke3RoaXMuaG91cnN9OiR7dGhpcy5taW51dGVzfWA7XG4gICAgdGltZVN0cmluZyA9IHRoaXMuaXNNZXJpZGllbSA/IGAke3RpbWVTdHJpbmd9ICR7dGhpcy5ub29uUmVsYXRpdml0eS50b1VwcGVyQ2FzZSgpfWAgOiB0aW1lU3RyaW5nO1xuXG4gICAgaWYgKHRoaXMudGltZU9iamVjdFR5cGUgPT09IFRpbWVPYmplY3QuTW9tZW50KSB7XG4gICAgICBjb25zdCBtb21lbnRGb3JtYXQgPSB0aGlzLmlzTWVyaWRpZW0gPyAnaGg6bW0gQScgOiAnSEg6bW0nO1xuICAgICAgdGltZU1vbWVudCA9IG1vbWVudCh0aW1lU3RyaW5nLCBtb21lbnRGb3JtYXQpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB0aW1lTW9tZW50ID8gdGltZU1vbWVudCA6IHRpbWVTdHJpbmc7XG4gIH1cbn1cbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ import { NgModule } from '@angular/core';

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -5,0 +5,0 @@ /*

/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/

@@ -9,8 +9,6 @@ /**

export { NgDatetimePickerModule } from './public_api';
export { CalendarManagerService as ɵf } from './lib/datetime-picker/calendar-manager.service';
export { CalendarManagerService as ɵd } from './lib/datetime-picker/calendar-manager.service';
export { DatetimePickerModule as ɵa } from './lib/datetime-picker/datetime-picker.module';
export { DatetimePickerComponent as ɵe } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { DatetimePickerComponent as ɵc } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { TimePickerComponent as ɵb } from './lib/datetime-picker/time-picker/time-picker.component';
export { ControlValueAccessorEnabler as ɵd } from './lib/shared/entities/control-value-accessor-enabler';
export { InputCoreComponent as ɵc } from './lib/shared/entities/input-core-component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3EtdWktbmctZGF0ZXRpbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbInNxLXVpLW5nLWRhdGV0aW1lLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdUNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNsRyxPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDdkcsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0NhbGVuZGFyTWFuYWdlclNlcnZpY2UgYXMgybVmfSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvY2FsZW5kYXItbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCB7RGF0ZXRpbWVQaWNrZXJNb2R1bGUgYXMgybVhfSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQge0RhdGV0aW1lUGlja2VyQ29tcG9uZW50IGFzIMm1ZX0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7VGltZVBpY2tlckNvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vbGliL2RhdGV0aW1lLXBpY2tlci90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvckVuYWJsZXIgYXMgybVkfSBmcm9tICcuL2xpYi9zaGFyZWQvZW50aXRpZXMvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci1lbmFibGVyJztcbmV4cG9ydCB7SW5wdXRDb3JlQ29tcG9uZW50IGFzIMm1Y30gZnJvbSAnLi9saWIvc2hhcmVkL2VudGl0aWVzL2lucHV0LWNvcmUtY29tcG9uZW50JzsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3EtdWktbmctZGF0ZXRpbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNxLXVpL25nLWRhdGV0aW1lLXBpY2tlci8iLCJzb3VyY2VzIjpbInNxLXVpLW5nLWRhdGV0aW1lLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsdUNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM1RixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcblxuZXhwb3J0IHtDYWxlbmRhck1hbmFnZXJTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2NhbGVuZGFyLW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQge0RhdGV0aW1lUGlja2VyTW9kdWxlIGFzIMm1YX0gZnJvbSAnLi9saWIvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0IHtEYXRldGltZVBpY2tlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vbGliL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIvZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQge1RpbWVQaWNrZXJDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9kYXRldGltZS1waWNrZXIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50JzsiXX0=
import { OnInit, EventEmitter, AfterViewInit, OnChanges } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { CalendarDay, InCalendarPicker } from '../interfaces/calendar-entities';

@@ -4,0 +4,0 @@ import { CalendarPeriodRelativityEnum } from '../enums/calendar-period-relativity.enum';

import { OnInit, OnChanges, EventEmitter, AfterViewInit } from '@angular/core';
import { InputCoreComponent } from '../../shared/entities/input-core-component';
import { InputCoreComponent } from '@sq-ui/ng-sq-common';
import { TimeUnit } from '../enums/time-unit.enum';

@@ -4,0 +4,0 @@ export declare class TimePickerComponent extends InputCoreComponent implements OnInit, AfterViewInit, OnChanges {

{
"name": "@sq-ui/ng-datetime-picker",
"version": "1.0.1",
"version": "1.0.2",
"license": "MIT",

@@ -53,6 +53,7 @@ "private": false,

"peerDependencies": {
"@angular/common": "^6.0.0-rc.0 || ^6.0.0",
"@angular/core": "^6.0.0-rc.0 || ^6.0.0"
"@angular/common": "^7.0.0",
"@angular/core": "^7.0.0"
},
"dependencies": {
"@sq-ui/ng-sq-common": "^1.0.0",
"immutable": "^3.8.2",

@@ -59,0 +60,0 @@ "font-awesome": "4.7.0",

@@ -5,3 +5,3 @@ # @sq-ui/ng-datetime-picker

> build by developers for developers!
> built by developers for developers!

@@ -15,8 +15,9 @@ ## Docs

- [Home Page](https://sq-ui.github.io/ng-sq-ui)
- [Installation](https://sq-ui.github.io/ng-sq-ui/#/installation)
- [Form Elements](https://sq-ui.github.io/ng-sq-ui/#/form-elements-module)
- [Modal](https://sq-ui.github.io/ng-sq-ui/#/modal-module)
- [Datetime Picker](https://sq-ui.github.io/ng-sq-ui/#/datetime-picker-module)
- [Interfaces](https://sq-ui.github.io/ng-sq-ui/#/interfaces)
- [FormElementsModule](https://sq-ui.github.io/ng-sq-ui/#/form-elements-module)
- [ModalModule](https://sq-ui.github.io/ng-sq-ui/#/modal-module)
- [ProgressBarModule](https://sq-ui.github.io/ng-sq-ui/#/progressbar-module)
- [DatetimePickerModule](https://sq-ui.github.io/ng-sq-ui/#/datetime-picker-module)
- [DatatableModule](https://sq-ui.github.io/ng-sq-ui/#/datatable-module)
- [CommonModule](https://sq-ui.github.io/ng-sq-ui/#/common-module)
- [Live examples](https://ng-sq-ui-examples.surge.sh)

@@ -69,8 +70,2 @@

## Dependencies
- font-awesome
- immutable.js
- moment.js
## Support

@@ -77,0 +72,0 @@

@@ -5,7 +5,5 @@ /**

export * from './public_api';
export { CalendarManagerService as ɵf } from './lib/datetime-picker/calendar-manager.service';
export { CalendarManagerService as ɵd } from './lib/datetime-picker/calendar-manager.service';
export { DatetimePickerModule as ɵa } from './lib/datetime-picker/datetime-picker.module';
export { DatetimePickerComponent as ɵe } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { DatetimePickerComponent as ɵc } from './lib/datetime-picker/datetime-picker/datetime-picker.component';
export { TimePickerComponent as ɵb } from './lib/datetime-picker/time-picker/time-picker.component';
export { ControlValueAccessorEnabler as ɵd } from './lib/shared/entities/control-value-accessor-enabler';
export { InputCoreComponent as ɵc } from './lib/shared/entities/input-core-component';

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"NgDatetimePickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"ɵa"}],"declarations":[],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"TimepickerConfig":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵe"}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵe"}],"providers":[{"__symbolic":"reference","name":"ɵf"}],"schemas":[{"__symbolic":"reference","module":"@angular/core","name":"CUSTOM_ELEMENTS_SCHEMA","line":21,"character":12},{"__symbolic":"reference","module":"@angular/core","name":"NO_ERRORS_SCHEMA","line":21,"character":36}]}]}],"members":{}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"sq-time-picker","template":"<div class=\"time-picker display-flex justify-center align-items-center\">\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time display-flex column align-items-center\">\n <input type=\"text\"\n name=\"time\"\n [(ngModel)]=\"hours\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Hours)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"time-unit divider\">:</div>\n\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time\">\n <input type=\"text\"\n name=\"minutes\"\n [(ngModel)]=\"minutes\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Minutes)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div *ngIf=\"isMeridiem\"\n class=\"time-unit\">\n <button type=\"button\"\n class=\"display-flex justify-center align-items-center\"\n (click)=\"changeNoonRelativity()\">\n <span class=\"meridiem\">\n {{noonRelativity.toUpperCase()}}\n </span>\n <i class=\"fa fa-clock-o meridiem-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n</div>\n","styles":[".sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":87,"character":17},"member":"None"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":13,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true}]}]}],"members":{"hourStep":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"minuteStep":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"isMeridiem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"isEditable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"inputHours":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3},"arguments":["hours"]}]}],"inputMinutes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3},"arguments":["minutes"]}]}],"timeObjectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"inputHoursChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":99,"character":3},"arguments":["hoursChange"]}]}],"inputMinutesChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":100,"character":3},"arguments":["minutesChange"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"increment":[{"__symbolic":"method"}],"decrement":[{"__symbolic":"method"}],"changeNoonRelativity":[{"__symbolic":"method"}],"validateInput":[{"__symbolic":"method"}],"normalizeTimeInput":[{"__symbolic":"method"}],"setValueResult":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"controlId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"controlLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"controlPlaceholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"pattern":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"ɵd":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"onBlur":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"sq-datetime-picker","template":"<div class=\"datetime-picker-wrapper\">\n <div class=\"period-section display-flex\"\n [ngClass]=\"{'justify-center': isMonthsPickerEnabled,\n 'space-between': !isMonthsPickerEnabled}\">\n <button type=\"button\"\n (click)=\"previous()\"\n class=\"change-period prev\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-left\"></i>\n </button>\n\n <div>\n <button type=\"button\"\n class=\"month-name\"\n (click)=\"showMonthsPicker()\"\n *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('MMMM') }}</strong>\n </button>\n\n <button type=\"button\"\n (click)=\"showYearsPicker()\"\n *ngIf=\"!isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('YYYY') }}</strong>\n </button>\n\n <strong class=\"period-name\" *ngIf=\"isYearsPickerEnabled\">\n {{ yearsList[0].displayName + ' - ' + yearsList[yearsList.length - 1].displayName }}\n </strong>\n </div>\n\n <button type=\"button\"\n (click)=\"next()\"\n class=\"change-period next\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"alt-picker display-flex space-between wrap\"\n *ngIf=\"isMonthsPickerEnabled || isYearsPickerEnabled\">\n <ng-template [ngIf]=\"isMonthsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let month of months\"\n (click)=\"selectMonth(month)\"\n [ngClass]=\"{'disabled': month.isDisabled}\">\n {{ month.displayName }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"isYearsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let year of yearsList\"\n (click)=\"selectYear(year)\"\n [ngClass]=\"{'disabled': year.isDisabled}\">\n {{ year.displayName }}\n </button>\n </ng-template>\n </div>\n\n <table class=\"datetime-picker\" *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <thead>\n <tr>\n <th *ngFor=\"let day of weekdays\" class=\"heading\">\n <span class=\"text\">{{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let dateRow of calendar\" class=\"row\">\n <td *ngFor=\"let date of dateRow\"\n class=\"cell\"\n (click)=\"onDateClick(date)\"\n [ngClass]=\"{'beyond-current-period': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\n 'selected': date.isSelected,\n 'disabled': date.isDisabled}\">\n {{ date.displayDate }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <sq-time-picker *ngIf=\"isTimepickerEnabled\"\n [(ngModel)]=\"time\"\n (ngModelChange)=\"onTimeChange()\"\n [ngModelOptions]=\"{standalone: true}\"\n timeObjectType=\"moment\"\n [hours]=\"timepickerConfig.hours\"\n [minutes]=\"timepickerConfig.minutes\"\n [hourStep]=\"timepickerConfig.hourStep\"\n [minuteStep]=\"timepickerConfig.minuteStep\"\n [isEditable]=\"timepickerConfig.isEditable\"\n [isMeridiem]=\"timepickerConfig.isMeridiem\">\n </sq-time-picker>\n</div>\n","styles":[".sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}"],"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":125,"character":17},"member":"None"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵe"},"multi":true}]}]}],"members":{"locale":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"maxDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3}}]}],"minDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"isMultipleSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"isTimepickerEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":134,"character":3}}]}],"dateObjectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":135,"character":3}}]}],"timepickerConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"dateSelectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":138,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵf"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"onDateClick":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"previous":[{"__symbolic":"method"}],"getMonthCalendar":[{"__symbolic":"method"}],"showMonthsPicker":[{"__symbolic":"method"}],"showYearsPicker":[{"__symbolic":"method"}],"selectMonth":[{"__symbolic":"method"}],"selectYear":[{"__symbolic":"method"}],"onTimeChange":[{"__symbolic":"method"}],"initializeAuthorValuesIfAny":[{"__symbolic":"method"}],"markDateAsSelected":[{"__symbolic":"method"}],"deselectAll":[{"__symbolic":"method"}],"setValueResult":[{"__symbolic":"method"}],"toValueDateObjectTypeIfNeeded":[{"__symbolic":"method"}],"toValueFormatIfNeeded":[{"__symbolic":"method"}],"setValueTimeIfNeeded":[{"__symbolic":"method"}],"sortValueIfNeeded":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setLocale":[{"__symbolic":"method"}],"generateCalendarForMonth":[{"__symbolic":"method"}],"generateMonthPickerCollection":[{"__symbolic":"method"}],"generateYearPickerCollection":[{"__symbolic":"method"}],"getWeekdays":[{"__symbolic":"method"}],"getMonths":[{"__symbolic":"method"}],"getYearList":[{"__symbolic":"method"}],"findADateFromCalendar":[{"__symbolic":"method"}],"getSelectedItemIndex":[{"__symbolic":"method"}],"determineIfDateIsDisabled":[{"__symbolic":"method"}],"determineDateRelativityToCurrentMonth":[{"__symbolic":"method"}],"sortDatesAsc":[{"__symbolic":"method"}]}}},"origins":{"NgDatetimePickerModule":"./lib/ng-datetime-picker.module","TimepickerConfig":"./lib/datetime-picker/interfaces/timepicker-config","ɵa":"./lib/datetime-picker/datetime-picker.module","ɵb":"./lib/datetime-picker/time-picker/time-picker.component","ɵc":"./lib/shared/entities/input-core-component","ɵd":"./lib/shared/entities/control-value-accessor-enabler","ɵe":"./lib/datetime-picker/datetime-picker/datetime-picker.component","ɵf":"./lib/datetime-picker/calendar-manager.service"},"importAs":"@sq-ui/ng-datetime-picker"}
{"__symbolic":"module","version":4,"metadata":{"NgDatetimePickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","name":"ɵa"}],"declarations":[],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"TimepickerConfig":{"__symbolic":"interface"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"providers":[{"__symbolic":"reference","name":"ɵd"}],"schemas":[{"__symbolic":"reference","module":"@angular/core","name":"CUSTOM_ELEMENTS_SCHEMA","line":21,"character":12},{"__symbolic":"reference","module":"@angular/core","name":"NO_ERRORS_SCHEMA","line":21,"character":36}]}]}],"members":{}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@sq-ui/ng-sq-common","name":"InputCoreComponent","line":25,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"sq-time-picker","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":22,"character":17},"member":"None"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":13,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵb"},"multi":true}],"template":"<div class=\"time-picker display-flex justify-center align-items-center\">\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time display-flex column align-items-center\">\n <input type=\"text\"\n name=\"time\"\n [(ngModel)]=\"hours\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Hours)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Hours)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"time-unit divider\">:</div>\n\n <div class=\"time-unit display-flex column align-items-center\">\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"increment(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-up\" aria-hidden=\"true\"></i>\n </button>\n\n <div class=\"time\">\n <input type=\"text\"\n name=\"minutes\"\n [(ngModel)]=\"minutes\"\n maxlength=\"2\"\n minlength=\"1\"\n [disabled]=\"!isEditable\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"validateInput(timeUnit.Minutes)\">\n </div>\n\n <button type=\"button\"\n class=\"spinner display-flex justify-center align-items-center\"\n (click)=\"decrement(timeUnit.Minutes)\">\n <i class=\"fa fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div *ngIf=\"isMeridiem\"\n class=\"time-unit\">\n <button type=\"button\"\n class=\"display-flex justify-center align-items-center\"\n (click)=\"changeNoonRelativity()\">\n <span class=\"meridiem\">\n {{noonRelativity.toUpperCase()}}\n </span>\n <i class=\"fa fa-clock-o meridiem-icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n</div>\n","styles":[".sq .time-picker{border-top:1px solid rgba(46,159,134,.69);border-bottom:1px solid rgba(46,159,134,.69);font-size:23px}.sq .time-picker input{background-color:rgba(18,125,104,.12);border:none;width:38px;height:38px;text-align:center}.sq .time-picker .time{padding:5px 0 3px}.sq .time-picker .time-unit{padding:7px 0 10px}.sq .time-picker .time-unit:not(:last-child){margin-right:15px}.sq .time-picker .time-unit .meridiem-icon,.sq .time-picker .time-unit .spinner{opacity:0;pointer-events:none;transition:.3s ease-in}.sq .time-picker .time-unit .spinner{height:25px}.sq .time-picker .time-unit:hover .meridiem-icon,.sq .time-picker .time-unit:hover .spinner{opacity:1;pointer-events:auto}.sq .time-picker .time-unit .fa{font-size:20px}.sq .time-picker .meridiem{padding-right:5px}.sq .time-picker .divider{font-size:44px;margin-bottom:7px}"]}]}],"members":{"hourStep":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"minuteStep":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"isMeridiem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"isEditable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"inputHours":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3},"arguments":["hours"]}]}],"inputMinutes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3},"arguments":["minutes"]}]}],"timeObjectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"inputHoursChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3},"arguments":["hoursChange"]}]}],"inputMinutesChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3},"arguments":["minutesChange"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"increment":[{"__symbolic":"method"}],"decrement":[{"__symbolic":"method"}],"changeNoonRelativity":[{"__symbolic":"method"}],"validateInput":[{"__symbolic":"method"}],"normalizeTimeInput":[{"__symbolic":"method"}],"setValueResult":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@sq-ui/ng-sq-common","name":"InputCoreComponent","line":32,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":25,"character":1},"arguments":[{"selector":"sq-datetime-picker","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":29,"character":17},"member":"None"},"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":11},"useExisting":{"__symbolic":"reference","name":"ɵc"},"multi":true}],"template":"<div class=\"datetime-picker-wrapper\">\n <div class=\"period-section display-flex\"\n [ngClass]=\"{'justify-center': isMonthsPickerEnabled,\n 'space-between': !isMonthsPickerEnabled}\">\n <button type=\"button\"\n (click)=\"previous()\"\n class=\"change-period prev\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-left\"></i>\n </button>\n\n <div>\n <button type=\"button\"\n class=\"month-name\"\n (click)=\"showMonthsPicker()\"\n *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('MMMM') }}</strong>\n </button>\n\n <button type=\"button\"\n (click)=\"showYearsPicker()\"\n *ngIf=\"!isYearsPickerEnabled\">\n <strong class=\"period-name\">{{ currentMonth.format('YYYY') }}</strong>\n </button>\n\n <strong class=\"period-name\" *ngIf=\"isYearsPickerEnabled\">\n {{ yearsList[0].displayName + ' - ' + yearsList[yearsList.length - 1].displayName }}\n </strong>\n </div>\n\n <button type=\"button\"\n (click)=\"next()\"\n class=\"change-period next\"\n *ngIf=\"!isMonthsPickerEnabled\">\n <i class=\"fa fa-chevron-right\"></i>\n </button>\n </div>\n\n <div class=\"alt-picker display-flex space-between wrap\"\n *ngIf=\"isMonthsPickerEnabled || isYearsPickerEnabled\">\n <ng-template [ngIf]=\"isMonthsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let month of months\"\n (click)=\"selectMonth(month)\"\n [ngClass]=\"{'disabled': month.isDisabled}\">\n {{ month.displayName }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"isYearsPickerEnabled\">\n <button type=\"button\"\n class=\"picker-item\"\n *ngFor=\"let year of yearsList\"\n (click)=\"selectYear(year)\"\n [ngClass]=\"{'disabled': year.isDisabled}\">\n {{ year.displayName }}\n </button>\n </ng-template>\n </div>\n\n <table class=\"datetime-picker\" *ngIf=\"!isMonthsPickerEnabled && !isYearsPickerEnabled\">\n <thead>\n <tr>\n <th *ngFor=\"let day of weekdays\" class=\"heading\">\n <span class=\"text\">{{ day }}</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let dateRow of calendar\" class=\"row\">\n <td *ngFor=\"let date of dateRow\"\n class=\"cell\"\n (click)=\"onDateClick(date)\"\n [ngClass]=\"{'beyond-current-period': date.relativityToCurrentMonth !== calendarPeriodRelativity.Current,\n 'selected': date.isSelected,\n 'disabled': date.isDisabled}\">\n {{ date.displayDate }}\n </td>\n </tr>\n </tbody>\n </table>\n\n <sq-time-picker *ngIf=\"isTimepickerEnabled\"\n [(ngModel)]=\"time\"\n (ngModelChange)=\"onTimeChange()\"\n [ngModelOptions]=\"{standalone: true}\"\n timeObjectType=\"moment\"\n [hours]=\"timepickerConfig.hours\"\n [minutes]=\"timepickerConfig.minutes\"\n [hourStep]=\"timepickerConfig.hourStep\"\n [minuteStep]=\"timepickerConfig.minuteStep\"\n [isEditable]=\"timepickerConfig.isEditable\"\n [isMeridiem]=\"timepickerConfig.isMeridiem\">\n </sq-time-picker>\n</div>\n","styles":[".sq .datetime-picker-wrapper{max-width:410px;font-size:14px}.sq .datetime-picker-wrapper .picker-item{font-size:19px;background-color:#e2efed;padding:5px 12px;text-transform:uppercase;cursor:pointer;margin-left:5px;margin-right:5px;margin-bottom:10px;min-width:80px;text-align:center}.sq .datetime-picker-wrapper .picker-item.disabled{background-color:rgba(76,76,76,.12);pointer-events:none}.sq .period-section{align-items:center;padding-bottom:12px;text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .period-name{font-size:20px;text-transform:uppercase}.sq .month-name{margin-right:10px}.sq .change-period{font-size:18px}.sq .change-period.next{padding-left:20px}.sq .change-period.prev{padding-right:20px}.sq .alt-picker{padding-top:10px}.sq .datetime-picker{width:100%;text-align:center;table-layout:fixed;border-collapse:collapse;border:none}.sq .datetime-picker .heading{width:14%;padding:10px 17px;background-color:rgba(18,125,104,.3);text-transform:uppercase;border-bottom:1px solid rgba(46,159,134,.69)}.sq .datetime-picker .heading:last-child{border-right:none}.sq .datetime-picker .cell{cursor:default;padding:6px 20px;transition:background-color .1s cubic-bezier(.55,.09,.68,.53)}.sq .datetime-picker .cell.beyond-current-period{color:#2e9f86}.sq .datetime-picker .cell.selected{font-weight:700;background-color:#b7d8d1}.sq .datetime-picker .cell.disabled{pointer-events:none;color:#aba9a9}.sq .datetime-picker .row:nth-child(2n) .cell{background-color:rgba(18,125,104,.12)}.sq .datetime-picker .row:nth-child(2n) .cell.selected{background-color:#b7d8d1}@media (max-width:450px){.sq .datetime-picker .heading{padding:10px 15px}.sq .datetime-picker .heading .text{display:inline-block;visibility:hidden}.sq .datetime-picker .heading .text::first-letter{visibility:visible}.sq .datetime-picker .cell{padding:6px 12px}}"]}]}],"members":{"locale":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"maxDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"minDate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"isMultipleSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"isTimepickerEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"dateObjectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"timepickerConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"dateSelectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵd"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"onDateClick":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"}],"next":[{"__symbolic":"method"}],"previous":[{"__symbolic":"method"}],"getMonthCalendar":[{"__symbolic":"method"}],"showMonthsPicker":[{"__symbolic":"method"}],"showYearsPicker":[{"__symbolic":"method"}],"selectMonth":[{"__symbolic":"method"}],"selectYear":[{"__symbolic":"method"}],"onTimeChange":[{"__symbolic":"method"}],"initializeAuthorValuesIfAny":[{"__symbolic":"method"}],"markDateAsSelected":[{"__symbolic":"method"}],"deselectAll":[{"__symbolic":"method"}],"setValueResult":[{"__symbolic":"method"}],"toValueDateObjectTypeIfNeeded":[{"__symbolic":"method"}],"toValueFormatIfNeeded":[{"__symbolic":"method"}],"setValueTimeIfNeeded":[{"__symbolic":"method"}],"sortValueIfNeeded":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"setLocale":[{"__symbolic":"method"}],"generateCalendarForMonth":[{"__symbolic":"method"}],"generateMonthPickerCollection":[{"__symbolic":"method"}],"generateYearPickerCollection":[{"__symbolic":"method"}],"getWeekdays":[{"__symbolic":"method"}],"getMonths":[{"__symbolic":"method"}],"getYearList":[{"__symbolic":"method"}],"findADateFromCalendar":[{"__symbolic":"method"}],"getSelectedItemIndex":[{"__symbolic":"method"}],"determineIfDateIsDisabled":[{"__symbolic":"method"}],"determineDateRelativityToCurrentMonth":[{"__symbolic":"method"}],"sortDatesAsc":[{"__symbolic":"method"}]}}},"origins":{"NgDatetimePickerModule":"./lib/ng-datetime-picker.module","TimepickerConfig":"./lib/datetime-picker/interfaces/timepicker-config","ɵa":"./lib/datetime-picker/datetime-picker.module","ɵb":"./lib/datetime-picker/time-picker/time-picker.component","ɵc":"./lib/datetime-picker/datetime-picker/datetime-picker.component","ɵd":"./lib/datetime-picker/calendar-manager.service"},"importAs":"@sq-ui/ng-datetime-picker"}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc