cfc-ui-test
Version:
Design System do Conselho Federal de Contabilidade baseado no govbr-ds
132 lines • 13.9 kB
JavaScript
import { Inject, Injectable, Optional } from '@angular/core';
import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
import dayjs from 'dayjs';
import 'dayjs/locale/pt-br';
import localeData from 'dayjs/plugin/localeData';
import * as i0 from "@angular/core";
dayjs.extend(localeData);
export class DayjsDateAdapter extends DateAdapter {
locale;
constructor(locale) {
super();
this.locale = locale;
dayjs.locale(locale);
}
getYear(date) {
return date.year();
}
getMonth(date) {
return date.month();
}
getDate(date) {
return date.date();
}
getDayOfWeek(date) {
return date.day();
}
getMonthNames(style) {
return style === 'long'
? dayjs.months()
: dayjs.monthsShort();
}
getDateNames() {
const dateNames = [];
for (let i = 1; i <= 31; i++) {
dateNames.push(String(i));
}
return dateNames;
}
getDayOfWeekNames(style) {
return style === 'long'
? dayjs.weekdays()
: dayjs.weekdaysShort();
}
getYearName(date) {
return date.format('YYYY');
}
getFirstDayOfWeek() {
return 0;
}
getNumDaysInMonth(date) {
return date.daysInMonth();
}
clone(date) {
return date.clone();
}
createDate(year, month, date) {
// Corrigido: usar o método dayjs() para criar a data
return dayjs(new Date(year, month, date));
}
today() {
return dayjs();
}
parse(value, parseFormat) {
if (value && typeof value === 'string') {
return dayjs(value, parseFormat);
}
else if (value instanceof Date) {
return dayjs(value);
}
else if (typeof value === 'number') {
return dayjs(value);
}
else if (dayjs.isDayjs(value)) {
return dayjs(value).locale(this.locale);
}
return null;
}
format(date, displayFormat) {
if (!this.isValid(date)) {
throw Error('DayjsDateAdapter: Cannot format invalid date.');
}
return date.locale(this.locale).format(displayFormat);
}
addCalendarYears(date, years) {
return date.add(years, 'year');
}
addCalendarMonths(date, months) {
return date.add(months, 'month');
}
addCalendarDays(date, days) {
return date.add(days, 'day');
}
toIso8601(date) {
return date.toISOString();
}
deserialize(value) {
let date;
if (value instanceof Date) {
date = dayjs(value);
}
if (typeof value === 'string') {
if (!value) {
return null;
}
date = dayjs(value).locale(this.locale);
}
if (date && this.isValid(date)) {
return date;
}
return super.deserialize(value);
}
isDateInstance(obj) {
return dayjs.isDayjs(obj);
}
isValid(date) {
return date && date.isValid();
}
invalid() {
return dayjs(null);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DayjsDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DayjsDateAdapter });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DayjsDateAdapter, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [MAT_DATE_LOCALE]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5c2pzLWRhdGUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NmYy11aS9zcmMvbGliL3Byb3ZpZGVycy9kYXlzanMtZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDOztBQUVqRCxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBR3pCLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUF3QjtJQUNLO0lBQWpFLFlBQWlFLE1BQWM7UUFDN0UsS0FBSyxFQUFFLENBQUM7UUFEdUQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUU3RSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBaUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBaUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFrQztRQUM5QyxPQUFPLEtBQUssS0FBSyxNQUFNO1lBQ3JCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFrQztRQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNO1lBQ3JCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWlCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBaUI7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLElBQVk7UUFDbEQscURBQXFEO1FBQ3JELE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFjLEVBQUUsV0FBMEM7UUFDOUQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQWlCLEVBQUUsYUFBaUM7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBaUIsRUFBRSxLQUFhO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWlCLEVBQUUsTUFBYztRQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBaUIsRUFBRSxJQUFZO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFpQjtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVEsV0FBVyxDQUFDLEtBQWM7UUFDakMsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFZO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7d0dBbElVLGdCQUFnQixrQkFDSyxlQUFlOzRHQURwQyxnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQUVJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9wdC1icic7XHJcbmltcG9ydCBsb2NhbGVEYXRhIGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhJztcclxuXHJcbmRheWpzLmV4dGVuZChsb2NhbGVEYXRhKTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERheWpzRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlQWRhcHRlcjxkYXlqcy5EYXlqcz4ge1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBwdWJsaWMgb3ZlcnJpZGUgbG9jYWxlOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBkYXlqcy5sb2NhbGUobG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldFllYXIoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRhdGUueWVhcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGgoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRhdGUubW9udGgoKTtcclxuICB9XHJcblxyXG4gIGdldERhdGUoZGF0ZTogZGF5anMuRGF5anMpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGRhdGUuZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF5T2ZXZWVrKGRhdGU6IGRheWpzLkRheWpzKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkYXRlLmRheSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHN0eWxlID09PSAnbG9uZydcclxuICAgICAgPyBkYXlqcy5tb250aHMoKVxyXG4gICAgICA6IGRheWpzLm1vbnRoc1Nob3J0KCk7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZGF0ZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMzE7IGkrKykge1xyXG4gICAgICBkYXRlTmFtZXMucHVzaChTdHJpbmcoaSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGVOYW1lcztcclxuICB9XHJcblxyXG4gIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gc3R5bGUgPT09ICdsb25nJ1xyXG4gICAgICA/IGRheWpzLndlZWtkYXlzKClcclxuICAgICAgOiBkYXlqcy53ZWVrZGF5c1Nob3J0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRZZWFyTmFtZShkYXRlOiBkYXlqcy5EYXlqcyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS5mb3JtYXQoJ1lZWVknKTtcclxuICB9XHJcblxyXG4gIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIGdldE51bURheXNJbk1vbnRoKGRhdGU6IGRheWpzLkRheWpzKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkYXRlLmRheXNJbk1vbnRoKCk7XHJcbiAgfVxyXG5cclxuICBjbG9uZShkYXRlOiBkYXlqcy5EYXlqcyk6IGRheWpzLkRheWpzIHtcclxuICAgIHJldHVybiBkYXRlLmNsb25lKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogZGF5anMuRGF5anMge1xyXG4gICAgLy8gQ29ycmlnaWRvOiB1c2FyIG8gbcOpdG9kbyBkYXlqcygpIHBhcmEgY3JpYXIgYSBkYXRhXHJcbiAgICByZXR1cm4gZGF5anMobmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUpKTtcclxuICB9XHJcblxyXG4gIHRvZGF5KCk6IGRheWpzLkRheWpzIHtcclxuICAgIHJldHVybiBkYXlqcygpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2UodmFsdWU6IHVua25vd24sIHBhcnNlRm9ybWF0OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IGRheWpzLkRheWpzIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZGF5anModmFsdWUsIHBhcnNlRm9ybWF0KTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHJldHVybiBkYXlqcyh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIGRheWpzKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZGF5anMuaXNEYXlqcyh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIGRheWpzKHZhbHVlKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBmb3JtYXQoZGF0ZTogZGF5anMuRGF5anMsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xyXG4gICAgICB0aHJvdyBFcnJvcignRGF5anNEYXRlQWRhcHRlcjogQ2Fubm90IGZvcm1hdCBpbnZhbGlkIGRhdGUuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZS5sb2NhbGUodGhpcy5sb2NhbGUpLmZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogZGF5anMuRGF5anMsIHllYXJzOiBudW1iZXIpOiBkYXlqcy5EYXlqcyB7XHJcbiAgICByZXR1cm4gZGF0ZS5hZGQoeWVhcnMsICd5ZWFyJyk7XHJcbiAgfVxyXG5cclxuICBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBkYXlqcy5EYXlqcywgbW9udGhzOiBudW1iZXIpOiBkYXlqcy5EYXlqcyB7XHJcbiAgICByZXR1cm4gZGF0ZS5hZGQobW9udGhzLCAnbW9udGgnKTtcclxuICB9XHJcblxyXG4gIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBkYXlqcy5EYXlqcywgZGF5czogbnVtYmVyKTogZGF5anMuRGF5anMge1xyXG4gICAgcmV0dXJuIGRhdGUuYWRkKGRheXMsICdkYXknKTtcclxuICB9XHJcblxyXG4gIHRvSXNvODYwMShkYXRlOiBkYXlqcy5EYXlqcyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgZGVzZXJpYWxpemUodmFsdWU6IHVua25vd24pOiBkYXlqcy5EYXlqcyB8IG51bGwge1xyXG4gICAgbGV0IGRhdGU7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIGRhdGUgPSBkYXlqcyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgZGF0ZSA9IGRheWpzKHZhbHVlKS5sb2NhbGUodGhpcy5sb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGUgJiYgdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGlzRGF0ZUluc3RhbmNlKG9iajogdW5rbm93bik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRheWpzLmlzRGF5anMob2JqKTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWQoZGF0ZTogZGF5anMuRGF5anMpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBkYXRlICYmIGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgaW52YWxpZCgpOiBkYXlqcy5EYXlqcyB7XHJcbiAgICByZXR1cm4gZGF5anMobnVsbCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==