UNPKG

@delon/abc

Version:

Common business components of ng-alain.

167 lines 21.8 kB
import { Injectable, inject } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { map, of } from 'rxjs'; import { yn } from '@delon/theme'; import { formatDate } from '@delon/util/date-time'; import { CurrencyService, formatMask } from '@delon/util/format'; import { deepMerge } from '@delon/util/other'; import { NzI18nService } from 'ng-zorro-antd/i18n'; import * as i0 from "@angular/core"; import * as i1 from "@delon/util/config"; export class CellService { constructor(configSrv) { this.nzI18n = inject(NzI18nService); this.currency = inject(CurrencyService); this.dom = inject(DomSanitizer); this.widgets = { date: { type: 'fn', ref: (value, opt) => { return { text: formatDate(value, opt.date.format, this.nzI18n.getDateLocale()) }; } }, mega: { type: 'fn', ref: (value, opt) => { const res = this.currency.mega(value, opt.mega); return { text: res.value, unit: res.unitI18n }; } }, currency: { type: 'fn', ref: (value, opt) => { return { text: this.currency.format(value, opt.currency) }; } }, cny: { type: 'fn', ref: (value, opt) => { return { text: this.currency.cny(value, opt.cny) }; } }, boolean: { type: 'fn', ref: (value, opt) => { return { text: this.dom.bypassSecurityTrustHtml(yn(value, opt.boolean)) }; } }, img: { type: 'fn', ref: value => { return { text: Array.isArray(value) ? value : [value] }; } } }; this.globalOptions = configSrv.merge('cell', { date: { format: 'yyyy-MM-dd HH:mm:ss' }, img: { size: 32 }, default: { text: '-' } }); } registerWidget(key, widget) { this.widgets[key] = { type: 'widget', ref: widget }; } getWidget(key) { return this.widgets[key]; } genType(value, options) { if (options.type != null) return options.type; const typeOf = typeof value; // When is timestamp if (typeOf === 'number' && /^[0-9]{13}$/g.test(value)) return 'date'; if (value instanceof Date || options.date != null) return 'date'; // Auto detection if (options.widget != null) return 'widget'; else if (options.mega != null) return 'mega'; else if (options.currency != null) return 'currency'; else if (options.cny != null) return 'cny'; else if (options.img != null) return 'img'; else if (options.link != null) return 'link'; else if (options.html != null) return 'html'; else if (options.badge != null) return 'badge'; else if (options.tag != null) return 'tag'; else if (options.checkbox != null) return 'checkbox'; else if (options.radio != null) return 'radio'; else if (options.enum != null) return 'enum'; else if (typeOf === 'number') return 'number'; else if (typeOf === 'boolean' || options.boolean != null) return 'boolean'; else return 'string'; } fixOptions(options) { return deepMerge({}, this.globalOptions, options); } get(value, options) { const type = this.genType(value, { ...options }); const opt = this.fixOptions(options); opt.type = type; const isSafeHtml = typeof value === 'object' && typeof value?.getTypeName === 'function' && value?.getTypeName() != null; let res = { result: typeof value === 'object' && !isSafeHtml ? value : { text: value == null ? '' : isSafeHtml ? value : `${value}` }, options: opt }; const widget = this.widgets[type]; if (widget?.type === 'fn') { res.result = widget.ref(value, opt); } return (typeof value === 'function' ? value(value, opt) : of(res.result)).pipe(map(text => { res.result = text; let dictData; switch (type) { case 'badge': dictData = (opt.badge?.data ?? {})[value]; res.result = { color: 'default', ...dictData }; break; case 'tag': dictData = (opt.tag?.data ?? {})[value]; res.result = dictData; break; case 'enum': res.result = { text: (opt.enum ?? {})[value] }; break; case 'html': res.safeHtml = opt.html?.safe; break; case 'string': if (isSafeHtml) res.safeHtml = 'safeHtml'; break; } if ((type === 'badge' || type === 'tag') && dictData?.tooltip != null) { res.options.tooltip = dictData.tooltip; } if (opt.mask != null) { res.result.text = formatMask(res.result.text, opt.mask); } return res; })); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CellService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CellService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CellService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.AlainConfigService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWJjL2NlbGwvY2VsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQWFuRCxNQUFNLE9BQU8sV0FBVztJQTZDdEIsWUFBWSxTQUE2QjtRQTVDeEIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLFFBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEMsWUFBTyxHQUFrQztZQUMvQyxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNsQixPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFlLEVBQUUsR0FBRyxDQUFDLElBQUssQ0FBQyxNQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9G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RUFBRSxDQUFDO2dCQUN0RSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQWMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBakpVLFdBQVc7a0hBQVgsV0FBVyxjQURFLE1BQU07OzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHluIH0gZnJvbSAnQGRlbG9uL3RoZW1lJztcbmltcG9ydCB7IEFsYWluQ2VsbENvbmZpZywgQWxhaW5Db25maWdTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAZGVsb24vdXRpbC9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQ3VycmVuY3lTZXJ2aWNlLCBmb3JtYXRNYXNrIH0gZnJvbSAnQGRlbG9uL3V0aWwvZm9ybWF0JztcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJ0BkZWxvbi91dGlsL290aGVyJztcbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENlbGxGdVZhbHVlLFxuICBDZWxsT3B0aW9ucyxcbiAgQ2VsbFRleHRSZXN1bHQsXG4gIENlbGxUZXh0VW5pdCxcbiAgQ2VsbFR5cGUsXG4gIENlbGxXaWRnZXQsXG4gIENlbGxXaWRnZXRGblxufSBmcm9tICcuL2NlbGwudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENlbGxTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBuekkxOG4gPSBpbmplY3QoTnpJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVuY3kgPSBpbmplY3QoQ3VycmVuY3lTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb20gPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBnbG9iYWxPcHRpb25zITogQWxhaW5DZWxsQ29uZmlnO1xuICBwcml2YXRlIHdpZGdldHM6IHsgW2tleTogc3RyaW5nXTogQ2VsbFdpZGdldCB9ID0ge1xuICAgIGRhdGU6IHtcbiAgICAgIHR5cGU6ICdmbicsXG4gICAgICByZWY6ICh2YWx1ZSwgb3B0KSA9PiB7XG4gICAgICAgIHJldHVybiB7IHRleHQ6IGZvcm1hdERhdGUodmFsdWUgYXMgc3RyaW5nLCBvcHQuZGF0ZSEuZm9ybWF0ISwgdGhpcy5uekkxOG4uZ2V0RGF0ZUxvY2FsZSgpKSB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgbWVnYToge1xuICAgICAgdHlwZTogJ2ZuJyxcbiAgICAgIHJlZjogKHZhbHVlLCBvcHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5jdXJyZW5jeS5tZWdhKHZhbHVlIGFzIG51bWJlciwgb3B0Lm1lZ2EpO1xuICAgICAgICByZXR1cm4geyB0ZXh0OiByZXMudmFsdWUsIHVuaXQ6IHJlcy51bml0STE4biB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgY3VycmVuY3k6IHtcbiAgICAgIHR5cGU6ICdmbicsXG4gICAgICByZWY6ICh2YWx1ZSwgb3B0KSA9PiB7XG4gICAgICAgIHJldHVybiB7IHRleHQ6IHRoaXMuY3VycmVuY3kuZm9ybWF0KHZhbHVlIGFzIG51bWJlciwgb3B0LmN1cnJlbmN5KSB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgY255OiB7XG4gICAgICB0eXBlOiAnZm4nLFxuICAgICAgcmVmOiAodmFsdWUsIG9wdCkgPT4ge1xuICAgICAgICByZXR1cm4geyB0ZXh0OiB0aGlzLmN1cnJlbmN5LmNueSh2YWx1ZSBhcyBudW1iZXIsIG9wdC5jbnkpIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBib29sZWFuOiB7XG4gICAgICB0eXBlOiAnZm4nLFxuICAgICAgcmVmOiAodmFsdWUsIG9wdCkgPT4ge1xuICAgICAgICByZXR1cm4geyB0ZXh0OiB0aGlzLmRvbS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh5bih2YWx1ZSBhcyBib29sZWFuLCBvcHQuYm9vbGVhbikpIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBpbWc6IHtcbiAgICAgIHR5cGU6ICdmbicsXG4gICAgICByZWY6IHZhbHVlID0+IHtcbiAgICAgICAgcmV0dXJuIHsgdGV4dDogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0gfTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoY29uZmlnU3J2OiBBbGFpbkNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLmdsb2JhbE9wdGlvbnMgPSBjb25maWdTcnYubWVyZ2UoJ2NlbGwnLCB7XG4gICAgICBkYXRlOiB7IGZvcm1hdDogJ3l5eXktTU0tZGQgSEg6bW06c3MnIH0sXG4gICAgICBpbWc6IHsgc2l6ZTogMzIgfSxcbiAgICAgIGRlZmF1bHQ6IHsgdGV4dDogJy0nIH1cbiAgICB9KSE7XG4gIH1cblxuICByZWdpc3RlcldpZGdldChrZXk6IHN0cmluZywgd2lkZ2V0OiBUeXBlPHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRzW2tleV0gPSB7IHR5cGU6ICd3aWRnZXQnLCByZWY6IHdpZGdldCB9O1xuICB9XG5cbiAgZ2V0V2lkZ2V0KGtleTogc3RyaW5nKTogQ2VsbFdpZGdldCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMud2lkZ2V0c1trZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5UeXBlKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBDZWxsT3B0aW9ucyk6IENlbGxUeXBlIHtcbiAgICBpZiAob3B0aW9ucy50eXBlICE9IG51bGwpIHJldHVybiBvcHRpb25zLnR5cGU7XG5cbiAgICBjb25zdCB0eXBlT2YgPSB0eXBlb2YgdmFsdWU7XG4gICAgLy8gV2hlbiBpcyB0aW1lc3RhbXBcbiAgICBpZiAodHlwZU9mID09PSAnbnVtYmVyJyAmJiAvXlswLTldezEzfSQvZy50ZXN0KHZhbHVlIGFzIHN0cmluZykpIHJldHVybiAnZGF0ZSc7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fCBvcHRpb25zLmRhdGUgIT0gbnVsbCkgcmV0dXJuICdkYXRlJztcblxuICAgIC8vIEF1dG8gZGV0ZWN0aW9uXG4gICAgaWYgKG9wdGlvbnMud2lkZ2V0ICE9IG51bGwpIHJldHVybiAnd2lkZ2V0JztcbiAgICBlbHNlIGlmIChvcHRpb25zLm1lZ2EgIT0gbnVsbCkgcmV0dXJuICdtZWdhJztcbiAgICBlbHNlIGlmIChvcHRpb25zLmN1cnJlbmN5ICE9IG51bGwpIHJldHVybiAnY3VycmVuY3knO1xuICAgIGVsc2UgaWYgKG9wdGlvbnMuY255ICE9IG51bGwpIHJldHVybiAnY255JztcbiAgICBlbHNlIGlmIChvcHRpb25zLmltZyAhPSBudWxsKSByZXR1cm4gJ2ltZyc7XG4gICAgZWxzZSBpZiAob3B0aW9ucy5saW5rICE9IG51bGwpIHJldHVybiAnbGluayc7XG4gICAgZWxzZSBpZiAob3B0aW9ucy5odG1sICE9IG51bGwpIHJldHVybiAnaHRtbCc7XG4gICAgZWxzZSBpZiAob3B0aW9ucy5iYWRnZSAhPSBudWxsKSByZXR1cm4gJ2JhZGdlJztcbiAgICBlbHNlIGlmIChvcHRpb25zLnRhZyAhPSBudWxsKSByZXR1cm4gJ3RhZyc7XG4gICAgZWxzZSBpZiAob3B0aW9ucy5jaGVja2JveCAhPSBudWxsKSByZXR1cm4gJ2NoZWNrYm94JztcbiAgICBlbHNlIGlmIChvcHRpb25zLnJhZGlvICE9IG51bGwpIHJldHVybiAncmFkaW8nO1xuICAgIGVsc2UgaWYgKG9wdGlvbnMuZW51bSAhPSBudWxsKSByZXR1cm4gJ2VudW0nO1xuICAgIGVsc2UgaWYgKHR5cGVPZiA9PT0gJ251bWJlcicpIHJldHVybiAnbnVtYmVyJztcbiAgICBlbHNlIGlmICh0eXBlT2YgPT09ICdib29sZWFuJyB8fCBvcHRpb25zLmJvb2xlYW4gIT0gbnVsbCkgcmV0dXJuICdib29sZWFuJztcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcbiAgfVxuXG4gIGZpeE9wdGlvbnMob3B0aW9ucz86IENlbGxPcHRpb25zKTogQ2VsbE9wdGlvbnMge1xuICAgIHJldHVybiBkZWVwTWVyZ2Uoe30sIHRoaXMuZ2xvYmFsT3B0aW9ucywgb3B0aW9ucyk7XG4gIH1cblxuICBnZXQodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiBDZWxsT3B0aW9ucyk6IE9ic2VydmFibGU8Q2VsbFRleHRSZXN1bHQ+IHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZW5UeXBlKHZhbHVlLCB7IC4uLm9wdGlvbnMgfSk7XG4gICAgY29uc3Qgb3B0ID0gdGhpcy5maXhPcHRpb25zKG9wdGlvbnMpO1xuICAgIG9wdC50eXBlID0gdHlwZTtcbiAgICBjb25zdCBpc1NhZmVIdG1sID1cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgTnpTYWZlQW55KT8uZ2V0VHlwZU5hbWUgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICh2YWx1ZSBhcyBOelNhZmVBbnkpPy5nZXRUeXBlTmFtZSgpICE9IG51bGw7XG5cbiAgICBsZXQgcmVzOiBDZWxsVGV4dFJlc3VsdCA9IHtcbiAgICAgIHJlc3VsdDpcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhaXNTYWZlSHRtbFxuICAgICAgICAgID8gKHZhbHVlIGFzIENlbGxUZXh0VW5pdClcbiAgICAgICAgICA6IHsgdGV4dDogdmFsdWUgPT0gbnVsbCA/ICcnIDogaXNTYWZlSHRtbCA/IHZhbHVlIDogYCR7dmFsdWV9YCB9LFxuICAgICAgb3B0aW9uczogb3B0XG4gICAgfTtcblxuICAgIGNvbnN0IHdpZGdldCA9IHRoaXMud2lkZ2V0c1t0eXBlXTtcbiAgICBpZiAod2lkZ2V0Py50eXBlID09PSAnZm4nKSB7XG4gICAgICByZXMucmVzdWx0ID0gKHdpZGdldC5yZWYgYXMgQ2VsbFdpZGdldEZuKSh2YWx1ZSwgb3B0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/ICh2YWx1ZSBhcyBDZWxsRnVWYWx1ZSkodmFsdWUsIG9wdCkgOiBvZihyZXMucmVzdWx0KSkucGlwZShcbiAgICAgIG1hcCh0ZXh0ID0+IHtcbiAgICAgICAgcmVzLnJlc3VsdCA9IHRleHQ7XG4gICAgICAgIGxldCBkaWN0RGF0YTogeyB0b29sdGlwPzogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2JhZGdlJzpcbiAgICAgICAgICAgIGRpY3REYXRhID0gKG9wdC5iYWRnZT8uZGF0YSA/PyB7fSlbdmFsdWUgYXMgc3RyaW5nXTtcbiAgICAgICAgICAgIHJlcy5yZXN1bHQgPSB7IGNvbG9yOiAnZGVmYXVsdCcsIC4uLmRpY3REYXRhIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgZGljdERhdGEgPSAob3B0LnRhZz8uZGF0YSA/PyB7fSlbdmFsdWUgYXMgc3RyaW5nXTtcbiAgICAgICAgICAgIHJlcy5yZXN1bHQgPSBkaWN0RGF0YSBhcyBDZWxsVGV4dFVuaXQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgIHJlcy5yZXN1bHQgPSB7IHRleHQ6IChvcHQuZW51bSA/PyB7fSlbdmFsdWUgYXMgc3RyaW5nXSB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgICAgICByZXMuc2FmZUh0bWwgPSBvcHQuaHRtbD8uc2FmZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBpZiAoaXNTYWZlSHRtbCkgcmVzLnNhZmVIdG1sID0gJ3NhZmVIdG1sJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZSA9PT0gJ2JhZGdlJyB8fCB0eXBlID09PSAndGFnJykgJiYgZGljdERhdGE/LnRvb2x0aXAgIT0gbnVsbCkge1xuICAgICAgICAgIHJlcy5vcHRpb25zLnRvb2x0aXAgPSBkaWN0RGF0YS50b29sdGlwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHQubWFzayAhPSBudWxsKSB7XG4gICAgICAgICAgcmVzLnJlc3VsdC50ZXh0ID0gZm9ybWF0TWFzayhyZXMucmVzdWx0LnRleHQgYXMgc3RyaW5nLCBvcHQubWFzayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19