@hxui/angular
Version:
* * *
216 lines (207 loc) • 25.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Component, Input, ViewChild, ElementRef } from '@angular/core';
import { DatepickerFormComponent } from './datepicker-form.component';
import * as moment_ from 'moment';
/** @type {?} */
const moment = moment_;
import { DatepickerConfig } from './datepicker.config';
import { DatepickerComponent } from './datepicker.component';
export class DatepickerIntervalComponent {
/**
* @param {?} _datepickerForm
* @param {?} datePickerConfig
* @param {?} _datepickerComponent
*/
constructor(_datepickerForm, datePickerConfig, _datepickerComponent) {
this._datepickerForm = _datepickerForm;
this.datePickerConfig = datePickerConfig;
this._datepickerComponent = _datepickerComponent;
this.placement = 'bottom';
this.onCancel = () => {
this._datepickerComponent.OpenDiv = false;
};
this.onSelect = () => {
if (this.dropdownNumber && this.Duration) {
this.text = moment().add(this.dropdownNumber, this.Duration.replace('(s)', 's'));
this._DueDate = (this.text).format('ddd DD/MM/YYYY');
this._dueDatestring = (this.text).format('DD/MM/YYYY');
/** @type {?} */
const date = this.text ? new Date(this.text) : new Date();
this.presentDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
this._datepickerComponent.viewDate = new Date(date.getFullYear(), date.getMonth());
this._datepickerComponent.renderCalendar();
this._datepickerForm.dueDateInterval = this.dropdownNumber + ' ' + this.Duration;
this._datepickerForm.onChange(this._dueDatestring);
return this._DueDate;
}
};
}
/**
* @return {?}
*/
ngOnInit() {
/** @type {?} */
const selectedDueDateInterval = this.datePickerConfig.selectedDueDateInterval === undefined ?
(this._datepickerComponent.selectedDueDateInterval ? this._datepickerComponent.selectedDueDateInterval.split(' ') : undefined) :
this.datePickerConfig.selectedDueDateInterval.split(' ');
if (selectedDueDateInterval && selectedDueDateInterval.length > 1) {
this.dropdownNumber = selectedDueDateInterval[0];
this.Duration = this.resetDurationText(selectedDueDateInterval[1]);
if (this.datePickerConfig && this.datePickerConfig.tabSelected === 'tab1') {
this.durationText1 = this.SelectElement(this.durationText, this.Duration);
this.numberText1 = this.SelectElement(this.numberText, this.dropdownNumber);
this._DueDate = this.onSelectoptions(this.numberText1, this.durationText1);
}
else if (this.datePickerConfig && this.datePickerConfig.tabSelected === 'tab2') {
this.text = moment().add(this.dropdownNumber, this.Duration.replace('(s)', 's'));
this._DueDate = (this.text).format('ddd DD/MM/YYYY');
}
}
}
/**
* @param {?} numbervalue
* @param {?} durationValue
* @return {?}
*/
onSelectoptions(numbervalue, durationValue) {
this.text = moment().add(numbervalue, durationValue.replace('(s)', 's'));
this._DueDate = (this.text).format('ddd DD/MM/YYYY');
this._dueDatestring = (this.text).format('DD/MM/YYYY');
this._datepickerForm.onChange(this._dueDatestring);
return this._DueDate;
}
/**
* @return {?}
*/
onChoose() {
this._datepickerForm.date = new Date(this.text);
this._datepickerForm.setDate(new Date(this.text));
this._datepickerComponent.OpenDiv = false;
this._datepickerForm.onChange(this._dueDatestring);
this._datepickerComponent.selectedDueDateInterval = undefined;
this._datepickerForm.dueDateInterval = this.dropdownNumber + ' ' + this.Duration;
}
/**
* @param {?} id
* @param {?} valueToSelect
* @return {?}
*/
SelectElement(id, valueToSelect) {
(id.nativeElement).value = valueToSelect;
return ((id.nativeElement).value);
}
/**
* @param {?} duration
* @return {?}
*/
resetDurationText(duration) {
if (duration === 'day' || duration === 'week' || duration === 'month' || duration === 'year') {
return duration + '(s)';
}
else if (duration === 'days' || duration === 'weeks' || duration === 'months' || duration === 'years') {
return duration.replace('s', '(s)');
}
else {
return duration;
}
}
}
DatepickerIntervalComponent.decorators = [
{ type: Component, args: [{
selector: 'hxa-datepicker-interval',
template: `<div class="hx-datepicker-set-interval is-flex hx-flex-justify-between hx-flex-column">
<div class="hx-datepicker-set-interval-content is-flex hx-flex-column hx-flex-auto hx-flex-align-center hx-flex-justify-center pa-3">
<div class="mb-5">
<div class="hx-datepicker-set-interval-number mr-5">
<input type="number" id="numberText" class="hx-input" min=1 [(ngModel)]="dropdownNumber" (change)="onSelect()" #numberText>
</div>
<span class="hx-dropdown month mr-5" hxaDropdown>
<select id="durationText" class= "hx-input" (change)="onSelect()" [(ngModel)]="Duration" #durationText>
<option>day(s)</option>
<option>week(s)</option>
<option>month(s)</option>
<option>year(s)</option>
</select>
</span>
<span><small>from</small> <span class="hx-datepicker-set-interval-today ml-2">today</span></span>
</div>
<div class="mb-3">
<span><small>will be</small></span>
<span class="hx-datepicker-set-interval-selected-date ml-1">
{{ _DueDate }}
</span>
</div>
</div>
<div class="hx-datepicker-set-interval-footer pa-3">
<div class="hx-columns">
<div class="hx-column">
<button class="hx-button" (click)="onCancel()">Cancel</button>
</div>
<div class="hx-column is-text-right">
<button class="hx-button is-primary" (click)="onChoose()">Select</button>
</div>
</div>
</div>
</div>
`,
styles: [`.hx-datepicker-set-interval{max-width:19rem;width:19rem;height:13.86rem;background-color:#fff}.hx-datepicker-set-interval .hx-datepicker-set-interval-content .hx-datepicker-set-interval-number{width:2.5rem;display:inline-block}.hx-datepicker-set-interval .hx-datepicker-set-interval-content .hx-datepicker-set-interval-today{font-size:1rem}.hx-datepicker-set-interval .hx-datepicker-set-interval-content .hx-datepicker-set-interval-selected-date{font-size:1.1rem;font-weight:500}.hx-datepicker-set-interval .hx-datepicker-set-interval-footer{flex:0 0 auto;background-color:rgba(0,0,0,.04)}`]
},] },
];
/** @nocollapse */
DatepickerIntervalComponent.ctorParameters = () => [
{ type: DatepickerFormComponent },
{ type: DatepickerConfig },
{ type: DatepickerComponent }
];
DatepickerIntervalComponent.propDecorators = {
durationText: [{ type: ViewChild, args: ['durationText',] }],
numberText: [{ type: ViewChild, args: ['numberText',] }],
selectedDateInterval: [{ type: Input }],
placement: [{ type: Input }]
};
if (false) {
/** @type {?} */
DatepickerIntervalComponent.prototype.durationText;
/** @type {?} */
DatepickerIntervalComponent.prototype.numberText;
/** @type {?} */
DatepickerIntervalComponent.prototype.close;
/** @type {?} */
DatepickerIntervalComponent.prototype.Duration;
/** @type {?} */
DatepickerIntervalComponent.prototype.dropdownNumber;
/** @type {?} */
DatepickerIntervalComponent.prototype.text;
/** @type {?} */
DatepickerIntervalComponent.prototype._DueDate;
/** @type {?} */
DatepickerIntervalComponent.prototype._dueDatestring;
/** @type {?} */
DatepickerIntervalComponent.prototype.durationText1;
/** @type {?} */
DatepickerIntervalComponent.prototype.numberText1;
/** @type {?} */
DatepickerIntervalComponent.prototype.selectedDuration;
/** @type {?} */
DatepickerIntervalComponent.prototype.presentDate;
/** @type {?} */
DatepickerIntervalComponent.prototype.viewDate;
/** @type {?} */
DatepickerIntervalComponent.prototype.selectedDateInterval;
/** @type {?} */
DatepickerIntervalComponent.prototype.placement;
/** @type {?} */
DatepickerIntervalComponent.prototype.onCancel;
/** @type {?} */
DatepickerIntervalComponent.prototype.onSelect;
/** @type {?} */
DatepickerIntervalComponent.prototype._datepickerForm;
/** @type {?} */
DatepickerIntervalComponent.prototype.datePickerConfig;
/** @type {?} */
DatepickerIntervalComponent.prototype._datepickerComponent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnRlcnZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHh1aS9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pbnRlcnZhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O01BQzVCLE1BQU0sR0FBRyxPQUFPO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBa0QzRCxNQUFNLE9BQU8sMkJBQTJCOzs7Ozs7SUFzQnRDLFlBQW9CLGVBQXdDLEVBQVUsZ0JBQWtDLEVBQzlGLG9CQUF5QztRQUQvQixvQkFBZSxHQUFmLGVBQWUsQ0FBeUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzlGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFIbkQsY0FBUyxHQUF3QyxRQUFRLENBQUM7UUF3QjFELGFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUM1QyxDQUFDLENBQUE7UUFDRCxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMs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Q0FBc0I7O0lBQ3RCLHFEQUE0Qjs7SUFDNUIsMkNBQWtCOztJQUNsQiwrQ0FBeUI7O0lBQ3pCLHFEQUE4Qjs7SUFDOUIsb0RBQTBCOztJQUMxQixrREFBd0I7O0lBQ3hCLHVEQUFnQzs7SUFDaEMsa0RBQTBCOztJQUMxQiwrQ0FBZTs7SUFFZiwyREFDMkI7O0lBRTNCLGdEQUMwRDs7SUF3QjFELCtDQUVDOztJQUNELCtDQWFDOztJQXRDVyxzREFBZ0Q7O0lBQUUsdURBQTBDOztJQUN0RywyREFBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZXBpY2tlckZvcm1Db21wb25lbnR9IGZyb20gJy4vZGF0ZXBpY2tlci1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuaW1wb3J0IHtEYXRlcGlja2VyQ29uZmlnfSBmcm9tICcuL2RhdGVwaWNrZXIuY29uZmlnJztcclxuaW1wb3J0IHtEYXRlcGlja2VyQ29tcG9uZW50fSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaHhhLWRhdGVwaWNrZXItaW50ZXJ2YWwnLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsIGlzLWZsZXggaHgtZmxleC1qdXN0aWZ5LWJldHdlZW4gaHgtZmxleC1jb2x1bW5cIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsLWNvbnRlbnQgaXMtZmxleCBoeC1mbGV4LWNvbHVtbiBoeC1mbGV4LWF1dG8gaHgtZmxleC1hbGlnbi1jZW50ZXIgaHgtZmxleC1qdXN0aWZ5LWNlbnRlciAgcGEtM1wiPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsLW51bWJlciBtci01XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwibnVtYmVyVGV4dFwiIGNsYXNzPVwiaHgtaW5wdXRcIiBtaW49MSAgWyhuZ01vZGVsKV09XCJkcm9wZG93bk51bWJlclwiIChjaGFuZ2UpPVwib25TZWxlY3QoKVwiICNudW1iZXJUZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImh4LWRyb3Bkb3duIG1vbnRoIG1yLTVcIiBoeGFEcm9wZG93bj5cclxuICAgICAgICAgIDxzZWxlY3QgaWQ9XCJkdXJhdGlvblRleHRcIiBjbGFzcz0gXCJoeC1pbnB1dFwiICAoY2hhbmdlKT1cIm9uU2VsZWN0KClcIiBbKG5nTW9kZWwpXT1cIkR1cmF0aW9uXCIgI2R1cmF0aW9uVGV4dD5cclxuICAgICAgICAgICAgPG9wdGlvbj5kYXkocyk8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbj53ZWVrKHMpPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24+bW9udGgocyk8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbj55ZWFyKHMpPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxzcGFuPjxzbWFsbD5mcm9tPC9zbWFsbD4gPHNwYW4gY2xhc3M9XCJoeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC10b2RheSBtbC0yXCI+dG9kYXk8L3NwYW4+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgPHNwYW4+PHNtYWxsPndpbGwgYmU8L3NtYWxsPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsLXNlbGVjdGVkLWRhdGUgbWwtMVwiPlxyXG4gICAgICAgIHt7IF9EdWVEYXRlIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJoeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC1mb290ZXIgcGEtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImh4LWNvbHVtbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImh4LWNvbHVtblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJoeC1idXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImh4LWNvbHVtbiBpcy10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImh4LWJ1dHRvbiBpcy1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2hvb3NlKClcIj5TZWxlY3Q8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5gLFxyXG4gIHN0eWxlczogW2AuaHgtZGF0ZXBpY2tlci1zZXQtaW50ZXJ2YWx7bWF4LXdpZHRoOjE5cmVtO3dpZHRoOjE5cmVtO2hlaWdodDoxMy44NnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lmh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsIC5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC1jb250ZW50IC5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC1udW1iZXJ7d2lkdGg6Mi41cmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbCAuaHgtZGF0ZXBpY2tlci1zZXQtaW50ZXJ2YWwtY29udGVudCAuaHgtZGF0ZXBpY2tlci1zZXQtaW50ZXJ2YWwtdG9kYXl7Zm9udC1zaXplOjFyZW19Lmh4LWRhdGVwaWNrZXItc2V0LWludGVydmFsIC5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC1jb250ZW50IC5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbC1zZWxlY3RlZC1kYXRle2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6NTAwfS5oeC1kYXRlcGlja2VyLXNldC1pbnRlcnZhbCAuaHgtZGF0ZXBpY2tlci1zZXQtaW50ZXJ2YWwtZm9vdGVye2ZsZXg6MCAwIGF1dG87YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9YF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJJbnRlcnZhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2R1cmF0aW9uVGV4dCcpIGR1cmF0aW9uVGV4dDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdudW1iZXJUZXh0JykgbnVtYmVyVGV4dDogRWxlbWVudFJlZjtcclxuICBwcm90ZWN0ZWQgY2xvc2U6IEZ1bmN0aW9uO1xyXG4gIHB1YmxpYyBEdXJhdGlvbjogYW55IDsgLy8gPSAnZGF5KHMpJztcclxuICBwdWJsaWMgZHJvcGRvd25OdW1iZXI6IGFueSA7IC8vID0gMDtcclxuICBwdWJsaWMgdGV4dDogYW55IDsgLy8gPSAgbW9tZW50KCkuYWRkKHRoaXMuZHJvcGRvd25OdW1iZXIgLCB0aGlzLkR1cmF0aW9uKTtcclxuICBwdWJsaWMgX0R1ZURhdGU6IHN0cmluZyA7XHJcbiAgcHVibGljIF9kdWVEYXRlc3RyaW5nOiBzdHJpbmc7XHJcbiAgcHVibGljIGR1cmF0aW9uVGV4dDE6IGFueTtcclxuICBwdWJsaWMgbnVtYmVyVGV4dDE6IGFueTtcclxuICBwdWJsaWMgc2VsZWN0ZWREdXJhdGlvbjogc3RyaW5nO1xyXG4gIHByaXZhdGUgcHJlc2VudERhdGU6IERhdGU7XHJcbiAgdmlld0RhdGU6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWREYXRlSW50ZXJ2YWw6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGxhY2VtZW50OiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdib3R0b20nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRlcGlja2VyRm9ybTogRGF0ZXBpY2tlckZvcm1Db21wb25lbnQsIHByaXZhdGUgZGF0ZVBpY2tlckNvbmZpZzogRGF0ZXBpY2tlckNvbmZpZyxcclxuICAgIHByaXZhdGUgX2RhdGVwaWNrZXJDb21wb25lbnQ6IERhdGVwaWNrZXJDb21wb25lbnQpIHtcclxuICAgICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwgPSB0aGlzLmRhdGVQaWNrZXJDb25maWcuc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwgPT09IHVuZGVmaW5lZCA/XHJcbiAgICAgKHRoaXMuX2RhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwgPyB0aGlzLl9kYXRlcGlja2VyQ29tcG9uZW50LnNlbGVjdGVkRHVlRGF0ZUludGVydmFsLnNwbGl0KCcgJykgOiB1bmRlZmluZWQpIDpcclxuICAgICAgdGhpcy5kYXRlUGlja2VyQ29uZmlnLnNlbGVjdGVkRHVlRGF0ZUludGVydmFsLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwgJiYgc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTnVtYmVyID0gc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWxbMF07XHJcbiAgICAgIHRoaXMuRHVyYXRpb24gPSB0aGlzLnJlc2V0RHVyYXRpb25UZXh0KHNlbGVjdGVkRHVlRGF0ZUludGVydmFsWzFdKTtcclxuICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlckNvbmZpZyAmJiB0aGlzLmRhdGVQaWNrZXJDb25maWcudGFiU2VsZWN0ZWQgPT09ICd0YWIxJykge1xyXG4gICAgICAgIHRoaXMuZHVyYXRpb25UZXh0MSA9IHRoaXMuU2VsZWN0RWxlbWVudCh0aGlzLmR1cmF0aW9uVGV4dCwgdGhpcy5EdXJhdGlvbik7XHJcbiAgICAgICAgdGhpcy5udW1iZXJUZXh0MSA9IHRoaXMuU2VsZWN0RWxlbWVudCh0aGlzLm51bWJlclRleHQsIHRoaXMuZHJvcGRvd25OdW1iZXIpO1xyXG4gICAgICAgIHRoaXMuX0R1ZURhdGUgPSB0aGlzLm9uU2VsZWN0b3B0aW9ucyh0aGlzLm51bWJlclRleHQxLCB0aGlzLmR1cmF0aW9uVGV4dDEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZVBpY2tlckNvbmZpZyAmJiB0aGlzLmRhdGVQaWNrZXJDb25maWcudGFiU2VsZWN0ZWQgPT09ICd0YWIyJykge1xyXG4gICAgICAgIHRoaXMudGV4dCA9IG1vbWVudCgpLmFkZCh0aGlzLmRyb3Bkb3duTnVtYmVyLCB0aGlzLkR1cmF0aW9uLnJlcGxhY2UoJyhzKScsICdzJykpO1xyXG4gICAgICAgIHRoaXMuX0R1ZURhdGUgPSAodGhpcy50ZXh0KS5mb3JtYXQoJ2RkZCBERC9NTS9ZWVlZJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5fZGF0ZXBpY2tlckNvbXBvbmVudC5PcGVuRGl2ID0gZmFsc2U7XHJcbiAgfVxyXG4gIG9uU2VsZWN0ID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25OdW1iZXIgJiYgdGhpcy5EdXJhdGlvbikge1xyXG4gICAgICB0aGlzLnRleHQgPSBtb21lbnQoKS5hZGQodGhpcy5kcm9wZG93bk51bWJlciAsIHRoaXMuRHVyYXRpb24ucmVwbGFjZSgnKHMpJywgJ3MnKSk7XHJcbiAgICAgIHRoaXMuX0R1ZURhdGUgPSAodGhpcy50ZXh0KS5mb3JtYXQoJ2RkZCBERC9NTS9ZWVlZJyk7XHJcbiAgICAgIHRoaXMuX2R1ZURhdGVzdHJpbmcgPSAodGhpcy50ZXh0KS5mb3JtYXQoJ0REL01NL1lZWVknKTtcclxuICAgICAgY29uc3QgZGF0ZTogRGF0ZSA9IHRoaXMudGV4dCA/IG5ldyBEYXRlKCB0aGlzLnRleHQpIDogbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy5wcmVzZW50RGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XHJcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXJDb21wb25lbnQudmlld0RhdGUgPSAgbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkpO1xyXG4gICAgICB0aGlzLl9kYXRlcGlja2VyQ29tcG9uZW50LnJlbmRlckNhbGVuZGFyKCk7XHJcbiAgICAgIHRoaXMuX2RhdGVwaWNrZXJGb3JtLmR1ZURhdGVJbnRlcnZhbCA9IHRoaXMuZHJvcGRvd25OdW1iZXIgKyAnICcgKyB0aGlzLkR1cmF0aW9uO1xyXG4gICAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5vbkNoYW5nZSh0aGlzLl9kdWVEYXRlc3RyaW5nKTtcclxuICAgICByZXR1cm4gdGhpcy5fRHVlRGF0ZTtcclxuICAgICB9XHJcbiAgfVxyXG4gIG9uU2VsZWN0b3B0aW9ucyhudW1iZXJ2YWx1ZSAsIGR1cmF0aW9uVmFsdWUpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gbW9tZW50KCkuYWRkKG51bWJlcnZhbHVlICwgZHVyYXRpb25WYWx1ZS5yZXBsYWNlKCcocyknLCAncycpKTtcclxuICAgICAgdGhpcy5fRHVlRGF0ZSA9ICh0aGlzLnRleHQpLmZvcm1hdCgnZGRkIEREL01NL1lZWVknKTtcclxuICAgICAgdGhpcy5fZHVlRGF0ZXN0cmluZyA9ICh0aGlzLnRleHQpLmZvcm1hdCgnREQvTU0vWVlZWScpO1xyXG4gICAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5vbkNoYW5nZSh0aGlzLl9kdWVEYXRlc3RyaW5nKTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9EdWVEYXRlO1xyXG4gIH1cclxuICBwdWJsaWMgb25DaG9vc2UoKSB7XHJcbiAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5kYXRlID0gIG5ldyBEYXRlKHRoaXMudGV4dCk7XHJcbiAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5zZXREYXRlKG5ldyBEYXRlKHRoaXMudGV4dCkpO1xyXG4gICAgdGhpcy5fZGF0ZXBpY2tlckNvbXBvbmVudC5PcGVuRGl2ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5vbkNoYW5nZSh0aGlzLl9kdWVEYXRlc3RyaW5nKTtcclxuICAgIHRoaXMuX2RhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREdWVEYXRlSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9kYXRlcGlja2VyRm9ybS5kdWVEYXRlSW50ZXJ2YWwgPSB0aGlzLmRyb3Bkb3duTnVtYmVyICsgJyAnICsgdGhpcy5EdXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RFbGVtZW50KGlkICwgdmFsdWVUb1NlbGVjdCkge1xyXG4gICAgKGlkLm5hdGl2ZUVsZW1lbnQpLnZhbHVlID0gdmFsdWVUb1NlbGVjdDtcclxuICAgIHJldHVybiAoKGlkLm5hdGl2ZUVsZW1lbnQpLnZhbHVlKTtcclxuICB9XHJcbiAgcHVibGljIHJlc2V0RHVyYXRpb25UZXh0KGR1cmF0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGR1cmF0aW9uID09PSAnZGF5JyB8fCBkdXJhdGlvbiA9PT0gJ3dlZWsnIHx8IGR1cmF0aW9uID09PSAnbW9udGgnIHx8IGR1cmF0aW9uID09PSAneWVhcicpIHtcclxuICAgICAgcmV0dXJuIGR1cmF0aW9uICsgJyhzKSc7XHJcbiAgICB9IGVsc2UgaWYgKGR1cmF0aW9uID09PSAnZGF5cycgfHwgZHVyYXRpb24gPT09ICd3ZWVrcycgfHwgZHVyYXRpb24gPT09ICdtb250aHMnIHx8IGR1cmF0aW9uID09PSAneWVhcnMnKSB7XHJcbiAgICAgIHJldHVybiBkdXJhdGlvbi5yZXBsYWNlKCdzJywgJyhzKScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGR1cmF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=