@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
135 lines • 22.7 kB
JavaScript
import { AbstractPanelWithHeaderBindingComponent } from './panel-with-header-binding';
import { toMoment } from '../../resources/types/nae-date-type';
import { DATE_FORMAT_STRING, DATE_TIME_FORMAT_STRING } from '../../moment/time-formats';
import { Component, Optional } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
import * as i2 from "@angular/common";
import * as i3 from "../../header/services/overflow.service";
export class AbstractPanelWithImmediateDataComponent extends AbstractPanelWithHeaderBindingComponent {
_translate;
_currencyPipe;
_overflowService;
constructor(_translate, _currencyPipe, _overflowService) {
super(_overflowService);
this._translate = _translate;
this._currencyPipe = _currencyPipe;
this._overflowService = _overflowService;
}
ngOnDestroy() {
super.ngOnDestroy();
}
parseImmediateValue(immediate) {
if (immediate && immediate.value !== undefined || immediate && immediate.type === 'button') {
switch (immediate.type) {
case 'date':
return {
value: toMoment(immediate.value).format(DATE_FORMAT_STRING),
icon: 'event',
type: immediate.type
};
case 'dateTime':
return {
value: toMoment(immediate.value).format(DATE_TIME_FORMAT_STRING),
icon: 'event',
type: immediate.type
};
case 'enumeration':
return { value: this.getTranslation(immediate.value), icon: undefined, type: immediate.type };
case 'multichoice':
return {
value: immediate.value.map(it => this.getTranslation(it)).join(', '),
icon: undefined,
type: immediate.type
};
case 'enumeration_map':
return {
value: this.getTranslation(immediate.options[immediate.value]),
icon: undefined,
type: immediate.type
};
case 'multichoice_map':
return {
value: immediate.value.map(it => this.getTranslation(immediate.options[it])).join(', '),
icon: undefined,
type: immediate.type
};
case 'file':
return { value: immediate.value?.name, icon: 'insert_drive_file', type: immediate.type };
case 'fileList':
return {
value: immediate.value?.namesPaths.map(obj => obj.name).join(', '),
icon: 'file_copy',
type: immediate.type
};
case 'actorList':
return { value: immediate.value?.actorValues?.map(obj => obj.fullName).join(', '), icon: 'account_circle', type: immediate.type };
case 'actor':
return { value: immediate.value?.fullName, icon: 'account_circle', type: immediate.type };
case 'boolean':
return {
value: this._translate.instant('dataField.values.boolean.' + immediate.value),
icon: undefined, type: immediate.type
};
case 'button':
let buttonValue;
if (immediate.placeholder?.defaultValue !== undefined) {
buttonValue = this.getTranslation(immediate.placeholder);
}
else if (immediate.name?.defaultValue !== undefined) {
buttonValue = this.getTranslation(immediate.name);
}
else {
buttonValue = this._translate.instant('dialog.submit');
}
return {
value: buttonValue,
icon: undefined,
type: immediate.type
};
case 'filter':
return {
value: undefined, icon: undefined, type: immediate.type,
filterMetadata: { filterMetadata: immediate.filterMetadata, allowedNets: immediate.allowedNets }
};
case 'number':
if (immediate.format !== undefined) {
return this.formatCurrencyPipe(immediate.value, immediate.format.code, immediate.format.fractionSize, immediate.format.locale, immediate.type);
}
else if (immediate.component?.name === 'currency') {
return this.formatCurrencyPipe(immediate.value, immediate.component.properties['code'], immediate.component.properties['fractionSize'], immediate.component.properties['locale'], immediate.type);
}
return { value: immediate.value, icon: undefined, type: immediate.type };
default:
return { value: immediate.value, icon: undefined, type: immediate.type };
}
}
else {
return { value: '', icon: '', type: '' };
}
}
getTranslation(i18n) {
const locale = this._translate.currentLang;
return (i18n && i18n.translations && locale in i18n.translations)
? i18n.translations[locale]
: (i18n?.defaultValue ?? '');
}
formatCurrencyPipe(value, code, fraction, locale, type) {
return {
value: this._currencyPipe.transform(parseFloat(value), code, 'symbol', '1.' + fraction + '-' + fraction, locale),
icon: undefined, type
};
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractPanelWithImmediateDataComponent, deps: [{ token: i1.TranslateService }, { token: i2.CurrencyPipe }, { token: i3.OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractPanelWithImmediateDataComponent, selector: "ncc-abstract-panel-with-immediate", usesInheritance: true, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractPanelWithImmediateDataComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-panel-with-immediate',
template: ''
}]
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.CurrencyPipe }, { type: i3.OverflowService, decorators: [{
type: Optional
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwtd2l0aC1pbW1lZGlhdGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcGFuZWwvYWJzdHJhY3QvcGFuZWwtd2l0aC1pbW1lZGlhdGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRixPQUFPLEVBQVUsUUFBUSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdEYsT0FBTyxFQUFDLFNBQVMsRUFBYSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBVzdELE1BQU0sT0FBZ0IsdUNBQXdDLFNBQVEsdUNBQXVDO0lBQ3pFO0lBQ0E7SUFDWTtJQUY1QyxZQUFnQyxVQUE0QixFQUM1QixhQUEyQixFQUNmLGdCQUFpQztRQUN6RSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhJLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtJQUU3RSxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVMsbUJBQW1CLENBQUMsU0FBd0I7UUFDbEQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3hGLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRTtnQkFDcEIsS0FBSyxNQUFNO29CQUNQLE9BQU87d0JBQ0gsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBZ0IsQ0FBQyxD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LEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUFVLEVBQUUsSUFBWSxFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDakcsT0FBTztZQUNILEtBQUssRUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDeEIsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUNqQixJQUFJLEVBQ0osUUFBUSxFQUNSLElBQUksR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsRUFDaEMsTUFBTSxDQUFDO1lBQ2YsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJO1NBQ3hCLENBQUM7SUFDTixDQUFDO3dHQXRIaUIsdUNBQXVDOzRGQUF2Qyx1Q0FBdUMsZ0dBRi9DLEVBQUU7OzRGQUVNLHVDQUF1QztrQkFKNUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBSTBCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0UGFuZWxXaXRoSGVhZGVyQmluZGluZ0NvbXBvbmVudH0gZnJvbSAnLi9wYW5lbC13aXRoLWhlYWRlci1iaW5kaW5nJztcbmltcG9ydCB7TmFlRGF0ZSwgdG9Nb21lbnR9IGZyb20gJy4uLy4uL3Jlc291cmNlcy90eXBlcy9uYWUtZGF0ZS10eXBlJztcbmltcG9ydCB7REFURV9GT1JNQVRfU1RSSU5HLCBEQVRFX1RJTUVfRk9STUFUX1NUUklOR30gZnJvbSAnLi4vLi4vbW9tZW50L3RpbWUtZm9ybWF0cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGZWF0dXJlZFZhbHVlfSBmcm9tICcuL2ZlYXR1cmVkLXZhbHVlJztcbmltcG9ydCB7Q3VycmVuY3lQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbW1lZGlhdGVEYXRhfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2ltbWVkaWF0ZS1kYXRhJztcbmltcG9ydCB7T3ZlcmZsb3dTZXJ2aWNlfSBmcm9tICcuLi8uLi9oZWFkZXIvc2VydmljZXMvb3ZlcmZsb3cuc2VydmljZSc7XG5pbXBvcnQge0kxOG5GaWVsZFZhbHVlfSBmcm9tIFwiLi4vLi4vZGF0YS1maWVsZHMvaTE4bi1maWVsZC9tb2RlbHMvaTE4bi1maWVsZC12YWx1ZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1wYW5lbC13aXRoLWltbWVkaWF0ZScsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UGFuZWxXaXRoSW1tZWRpYXRlRGF0YUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0UGFuZWxXaXRoSGVhZGVyQmluZGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2N1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX292ZXJmbG93U2VydmljZTogT3ZlcmZsb3dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKF9vdmVyZmxvd1NlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwYXJzZUltbWVkaWF0ZVZhbHVlKGltbWVkaWF0ZTogSW1tZWRpYXRlRGF0YSk6IEZlYXR1cmVkVmFsdWUge1xuICAgICAgICBpZiAoaW1tZWRpYXRlICYmIGltbWVkaWF0ZS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IGltbWVkaWF0ZSAmJiBpbW1lZGlhdGUudHlwZSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoaW1tZWRpYXRlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b01vbWVudChpbW1lZGlhdGUudmFsdWUgYXMgTmFlRGF0ZSkuZm9ybWF0KERBVEVfRk9STUFUX1NUUklORyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXZlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW1tZWRpYXRlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG9Nb21lbnQoaW1tZWRpYXRlLnZhbHVlIGFzIE5hZURhdGUpLmZvcm1hdChEQVRFX1RJTUVfRk9STUFUX1NUUklORyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXZlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW1tZWRpYXRlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdlbnVtZXJhdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHRoaXMuZ2V0VHJhbnNsYXRpb24oaW1tZWRpYXRlLnZhbHVlKSwgaWNvbjogdW5kZWZpbmVkLCB0eXBlOiBpbW1lZGlhdGUudHlwZX07XG4gICAgICAgICAgICAgICAgY2FzZSAnbXVsdGljaG9pY2UnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGltbWVkaWF0ZS52YWx1ZS5tYXAoaXQgPT4gdGhpcy5nZXRUcmFuc2xhdGlvbihpdCkpLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbW1lZGlhdGUudHlwZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VudW1lcmF0aW9uX21hcCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRUcmFuc2xhdGlvbihpbW1lZGlhdGUub3B0aW9uc1tpbW1lZGlhdGUudmFsdWVdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGltbWVkaWF0ZS50eXBlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY2FzZSAnbXVsdGljaG9pY2VfbWFwJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpbW1lZGlhdGUudmFsdWUubWFwKGl0ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUcmFuc2xhdGlvbihpbW1lZGlhdGUub3B0aW9uc1tpdF0pKS5qb2luKCcsICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW1tZWRpYXRlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdmaWxlJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogaW1tZWRpYXRlLnZhbHVlPy5uYW1lLCBpY29uOiAnaW5zZXJ0X2RyaXZlX2ZpbGUnLCB0eXBlOiBpbW1lZGlhdGUudHlwZX07XG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGltbWVkaWF0ZS52YWx1ZT8ubmFtZXNQYXRocy5tYXAob2JqID0+IG9iai5uYW1lKS5qb2luKCcsICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ZpbGVfY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbW1lZGlhdGUudHlwZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNhc2UgJ2FjdG9yTGlzdCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IGltbWVkaWF0ZS52YWx1ZT8uYWN0b3JWYWx1ZXM/Lm1hcChvYmogPT4gb2JqLmZ1bGxOYW1lKS5qb2luKCcsICcpLCBpY29uOiAnYWNjb3VudF9jaXJjbGUnLCB0eXBlOiBpbW1lZGlhdGUudHlwZX07XG4gICAgICAgICAgICAgICAgY2FzZSAnYWN0b3InOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiBpbW1lZGlhdGUudmFsdWU/LmZ1bGxOYW1lLCBpY29uOiAnYWNjb3VudF9jaXJjbGUnLCB0eXBlOiBpbW1lZGlhdGUudHlwZX07XG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC52YWx1ZXMuYm9vbGVhbi4nICsgaW1tZWRpYXRlLnZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHVuZGVmaW5lZCwgdHlwZTogaW1tZWRpYXRlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9uVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKChpbW1lZGlhdGUgYXMgYW55KS5wbGFjZWhvbGRlcj8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhbHVlID0gdGhpcy5nZXRUcmFuc2xhdGlvbigoaW1tZWRpYXRlIGFzIGFueSkucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGltbWVkaWF0ZS5uYW1lPy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0aW9uKGltbWVkaWF0ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblZhbHVlID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RpYWxvZy5zdWJtaXQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJ1dHRvblZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaW1tZWRpYXRlLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCwgaWNvbjogdW5kZWZpbmVkLCB0eXBlOiBpbW1lZGlhdGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB7ZmlsdGVyTWV0YWRhdGE6IGltbWVkaWF0ZS5maWx0ZXJNZXRhZGF0YSwgYWxsb3dlZE5ldHM6IGltbWVkaWF0ZS5hbGxvd2VkTmV0c31cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1tZWRpYXRlLmZvcm1hdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeVBpcGUoaW1tZWRpYXRlLnZhbHVlLCBpbW1lZGlhdGUuZm9ybWF0LmNvZGUsIGltbWVkaWF0ZS5mb3JtYXQuZnJhY3Rpb25TaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZS5mb3JtYXQubG9jYWxlLCBpbW1lZGlhdGUudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1tZWRpYXRlLmNvbXBvbmVudD8ubmFtZSA9PT0gJ2N1cnJlbmN5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0Q3VycmVuY3lQaXBlKGltbWVkaWF0ZS52YWx1ZSwgaW1tZWRpYXRlLmNvbXBvbmVudC5wcm9wZXJ0aWVzWydjb2RlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlLmNvbXBvbmVudC5wcm9wZXJ0aWVzWydmcmFjdGlvblNpemUnXSwgaW1tZWRpYXRlLmNvbXBvbmVudC5wcm9wZXJ0aWVzWydsb2NhbGUnXSwgaW1tZWRpYXRlLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IGltbWVkaWF0ZS52YWx1ZSwgaWNvbjogdW5kZWZpbmVkLCB0eXBlOiBpbW1lZGlhdGUudHlwZX07XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogaW1tZWRpYXRlLnZhbHVlLCBpY29uOiB1bmRlZmluZWQsIHR5cGU6IGltbWVkaWF0ZS50eXBlfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7dmFsdWU6ICcnLCBpY29uOiAnJywgdHlwZTogJyd9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFRyYW5zbGF0aW9uKGkxOG46IEkxOG5GaWVsZFZhbHVlIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5fdHJhbnNsYXRlLmN1cnJlbnRMYW5nO1xuICAgICAgICByZXR1cm4gKGkxOG4gJiYgaTE4bi50cmFuc2xhdGlvbnMgJiYgbG9jYWxlIGluIGkxOG4udHJhbnNsYXRpb25zKVxuICAgICAgICAgICAgPyBpMThuLnRyYW5zbGF0aW9uc1tsb2NhbGVdXG4gICAgICAgICAgICA6IChpMThuPy5kZWZhdWx0VmFsdWUgPz8gJycpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb3JtYXRDdXJyZW5jeVBpcGUodmFsdWU6IGFueSwgY29kZTogc3RyaW5nLCBmcmFjdGlvbjogbnVtYmVyLCBsb2NhbGU6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW5jeVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCcsXG4gICAgICAgICAgICAgICAgICAgICcxLicgKyBmcmFjdGlvbiArICctJyArIGZyYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGUpLFxuICAgICAgICAgICAgaWNvbjogdW5kZWZpbmVkLCB0eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19