zek 16.1.20 → 16.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -130,6 +130,16 @@ export class DateHelper {
|
|
|
130
130
|
return Math.floor((timeDiff / 86400000) / 365.25); //86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour
|
|
131
131
|
}
|
|
132
132
|
;
|
|
133
|
+
static subtractMonths(endDate, starDate) {
|
|
134
|
+
let start = starDate <= endDate ? starDate : endDate;
|
|
135
|
+
let end = starDate <= endDate ? endDate : starDate;
|
|
136
|
+
let plus = starDate <= endDate ? 1 : -1;
|
|
137
|
+
let months = (end.getFullYear() - start.getFullYear()) * 12;
|
|
138
|
+
months -= start.getMonth();
|
|
139
|
+
months += end.getMonth();
|
|
140
|
+
return months * plus;
|
|
141
|
+
}
|
|
142
|
+
;
|
|
133
143
|
static subtractDays(value, date) {
|
|
134
144
|
if (!date)
|
|
135
145
|
return null;
|
|
@@ -240,4 +250,4 @@ export class DateHelper {
|
|
|
240
250
|
return value instanceof Date && !isNaN(value.valueOf());
|
|
241
251
|
}
|
|
242
252
|
}
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9kYXRlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sT0FBTyxVQUFVO0lBRW5CLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQUEsQ0FBQztJQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBb0IsRUFBRSxNQUFvQjtRQUNwRCxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNyRSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUdyRSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFXLEVBQUUsR0FBUztRQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBQzlCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JD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RSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2pFLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVU7UUFDcEIsT0FBTyxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaW1lSGVscGVyIH0gZnJvbSBcIi4vdGltZS1oZWxwZXJcIjtcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVIZWxwZXIge1xyXG5cclxuICAgIHN0YXRpYyBtaW5EYXRlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgwKTtcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIGVxdWFscyh2YWx1ZTE/OiBEYXRlIHwgbnVsbCwgdmFsdWUyPzogRGF0ZSB8IG51bGwpIHtcclxuICAgICAgICBsZXQgdmFsMSA9ICh2YWx1ZTEgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZTEgPT09IG51bGwpID8gbnVsbCA6IHZhbHVlMTtcclxuICAgICAgICBsZXQgdmFsMiA9ICh2YWx1ZTIgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZTIgPT09IG51bGwpID8gbnVsbCA6IHZhbHVlMjtcclxuXHJcblxyXG4gICAgICAgIGlmICh2YWwxID09PSB2YWwyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF2YWwxIHx8ICF2YWwyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWwxLmdldFRpbWUoKSA9PT0gdmFsMi5nZXRUaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldERhdGVzKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpIHtcclxuICAgICAgICB2YXIgZGF0ZXMgPSBuZXcgQXJyYXk8RGF0ZT4oKTtcclxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0LnZhbHVlT2YoKSk7XHJcbiAgICAgICAgd2hpbGUgKGRhdGUgPD0gZW5kKSB7XHJcbiAgICAgICAgICAgIGRhdGVzLnB1c2gobmV3IERhdGUoZGF0ZSkpO1xyXG4gICAgICAgICAgICBkYXRlID0gdGhpcy5hZGREYXlzKGRhdGUsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGRhdGVPbmx5KHZhbHVlOiBEYXRlKSB7XHJcbiAgICAgICAgbGV0IHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGxldCBtb250aCA9IHZhbHVlLmdldE1vbnRoKCk7XHJcbiAgICAgICAgbGV0IGRheSA9IHZhbHVlLmdldERhdGUoKTtcclxuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRvSVNPRGF0ZVN0cmluZyh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xyXG4gICAgICAgIGxldCBkYXRlID0gdGhpcy5wYXJzZURhdGUodmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAoIWRhdGUpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBsZXQgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAvLyBBZGQgKzEgdG8gbW9udGggc2luY2UgMCBpcyBKYW51YXJ5XHJcbiAgICAgICAgbGV0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgICAgICBsZXQgZGF5ID0gZGF0ZS5nZXREYXRlKCk7XHJcblxyXG4gICAgICAgIGxldCBzdHIgPSBgJHt5ZWFyfS0ke21vbnRoIDwgMTAgPyAnMCcgOiAnJ30ke21vbnRofS0ke2RheSA8IDEwID8gJzAnIDogJyd9JHtkYXl9YDtcclxuICAgICAgICAvL3N0ciA9IHllYXIudG9TdHJpbmcoKSArIFwiLVwiICsgKG1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIikgKyBcIi1cIiArIGRheS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIGFkZFRpbWUodmFsdWU6IERhdGUsIHRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgICAgICBsZXQgdG1wID0gVGltZUhlbHBlci5wYXJzZVRpbWUodGltZSk7XHJcbiAgICAgICAgaWYgKCF0bXApIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgbGV0IHRpbWVEYXRlID0gbmV3IERhdGUoJzE5NzAtMDEtMDFUJyArIHRpbWUgKyAnWicpO1xyXG4gICAgICAgIGxldCBkYXRlID0gdmFsdWU7XHJcbiAgICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgdGltZURhdGUuZ2V0VGltZSgpKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgYWRkWWVhcnModjogRGF0ZSwgeWVhcnM6IG51bWJlcik6IERhdGUge1xyXG4gICAgICAgIGlmICgheWVhcnMpIHJldHVybiB2O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZSA9IHY7XHJcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih2LmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgYWRkTW9udGhzKHY6IERhdGUsIG1vbnRoczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFtb250aHMpIHJldHVybiB2O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZSA9IHY7XHJcbiAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aHMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBhZGREYXlzKHY6IERhdGUsIGRheXM6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghZGF5cykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gdjtcclxuICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgYWRkSG91cnModjogRGF0ZSwgaG91cnM6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghaG91cnMpIHJldHVybiB2O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHYpO1xyXG4gICAgICAgIC8vdG9kbyBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgbGluZSBuZWVkcyAtLT4gZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcclxuICAgICAgICBkYXRlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSArIGhvdXJzKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuICAgIHN0YXRpYyBhZGRNaW51dGVzKHY6IERhdGUsIG1pbnV0ZXM6IG51bWJlcikge1xyXG4gICAgICAgIGlmICghbWludXRlcykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodik7XHJcbiAgICAgICAgLy90b2RvIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBsaW5lIG5lZWRzIC0tPiBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIGRhdGUuc2V0TWludXRlcyhkYXRlLmdldE1pbnV0ZXMoKSArIG1pbnV0ZXMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIGFkZFNlY29uZHModjogRGF0ZSwgc2Vjb25kczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFzZWNvbmRzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSB2O1xyXG4gICAgICAgIGRhdGUuc2V0U2Vjb25kcyhkYXRlLmdldFNlY29uZHMoKSArIHNlY29uZHMpO1xyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgaXNUb2RheShkYXRlOiBEYXRlKSB7XHJcbiAgICAgICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NhbWVEYXRlKGRhdGUsIHRvZGF5KTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgY2xvbmUoZGF0ZTogRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgrZGF0ZSk7XHJcbiAgICB9O1xyXG4gICAgc3RhdGljIGlzQW5vdGhlck1vbnRoKGE6IERhdGUsIGI6IERhdGUpIHtcclxuICAgICAgICByZXR1cm4gYiAmJiBhLmdldE1vbnRoKCkgIT09IGIuZ2V0TW9udGgoKTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgaXNXZWVrZW5kKHY6IERhdGUsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHYuZ2V0RGF5KCkgPT09IDAgfHwgdi5nZXREYXkoKSA9PT0gNjtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgaXNTYW1lRGF0ZShhOiBEYXRlLCBiOiBEYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIGIgJiYgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiYgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiYgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgc3RhdGljIGdldEFnZSh2YWx1ZT86IERhdGUgfCBzdHJpbmcgfCBudWxsLCBub3c/OiBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWUpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy50b0RhdGUodmFsdWUpO1xyXG5cclxuICAgICAgICBsZXQgbm93VGltZSA9IG5vdyA/IG5vdy5nZXRUaW1lKCkgOiBEYXRlLm5vdygpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IG5vd1RpbWUgLSBkYXRlLmdldFRpbWUoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRpbWVEaWZmIC8gODY0MDAwMDApIC8gMzY1LjI1KTsvLzg2NDAwMDAwID0gKDEwMDAgKiA2MCAqIDYwICogMjQpID0gMTAwMCBtaWxsaXNlY29uZCAqIDYwc2Vjb25kICAqIDYwbWludXRlICogMjRob3VyXHJcbiAgICB9O1xyXG4gICAgc3RhdGljIHN1YnRyYWN0RGF5cyh2YWx1ZTogRGF0ZSwgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgZGF0ZSA9IHRoaXMudG9EYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRpbWVEaWZmIC8gODY0MDAwMDApOy8vODY0MDAwMDAgPSAoMTAwMCAqIDYwICogNjAgKiAyNCkgPSAxMDAwIG1pbGxpc2Vjb25kICogNjBzZWNvbmQgICogNjBtaW51dGUgKiAyNGhvdXJcclxuICAgIH07XHJcbiAgICBzdGF0aWMgc3VidHJhY3RIb3Vycyh2YWx1ZTogRGF0ZSwgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgZGF0ZSA9IHRoaXMudG9EYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh0aW1lRGlmZiAlIDg2NDAwMDAwKSAvIDM2MDAwMDApO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBzdWJ0cmFjdE1pbnV0ZXModmFsdWU6IERhdGUsIGRhdGU/OiBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGlmICghZGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGRhdGUgPSB0aGlzLnRvRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgdGltZURpZmYgPSBkYXRlLmdldFRpbWUoKSAtIHZhbHVlLmdldFRpbWUoKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCgodGltZURpZmYgJSA4NjQwMDAwMCkgJSAzNjAwMDAwKSAvIDYwMDAwKTtcclxuICAgIH07XHJcblxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIElTTzg2MDFfREFURV9SRUdFWCA9XHJcbiAgICAgICAgL14oXFxkezR9KS0/KFxcZFxcZCktPyhcXGRcXGQpKD86VChcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpcXC4oXFxkKykpPyk/KT8oWnwoWystXSkoXFxkXFxkKTo/KFxcZFxcZCkpPyk/JC87XHJcbiAgICAvLyAgICAgICAgMSAgICAgICAgMiAgICAgICAzICAgICAgICAgNCAgICAgICAgICA1ICAgICAgICAgIDYgICAgICAgICAgNyAgICAgICAgICA4ICA5ICAgICAxMCAgICAgIDExXHJcblxyXG5cclxuICAgIHN0YXRpYyBwYXJzZURhdGUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAgZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZSh2YWx1ZTogc3RyaW5nfG51bWJlcnxEYXRlKTogRGF0ZSB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGVkIGZyb20gZGF0ZSBwaXBlIFxyXG4gICAgLy8gcGFja2FnZXMvY29tbW9uL3NyYy9pMThuL2Zvcm1hdF9kYXRlLnRzXHJcblxyXG4gICAgLyoqKlxyXG4gICAgICogQ29udmVydHMgYSB2YWx1ZSB0byBkYXRlLlxyXG4gICAgICpcclxuICAgICAqIFN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzOlxyXG4gICAgICogLSBgRGF0ZWBcclxuICAgICAqIC0gbnVtYmVyOiB0aW1lc3RhbXBcclxuICAgICAqIC0gc3RyaW5nOiBudW1lcmljIChlLmcuIFwiMTIzNFwiKSwgSVNPIGFuZCBkYXRlIHN0cmluZ3MgaW4gYSBmb3JtYXQgc3VwcG9ydGVkIGJ5XHJcbiAgICAgKiAgIFtEYXRlLnBhcnNlKCldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGUvcGFyc2UpLlxyXG4gICAgICogICBOb3RlOiBJU08gc3RyaW5ncyB3aXRob3V0IHRpbWUgcmV0dXJuIGEgZGF0ZSB3aXRob3V0IHRpbWVvZmZzZXQuXHJcbiAgICAgKlxyXG4gICAgICogVGhyb3dzIGlmIHVuYWJsZSB0byBjb252ZXJ0IHRvIGEgZGF0ZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRvRGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWROYiA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gYW55IHN0cmluZyB0aGF0IG9ubHkgY29udGFpbnMgbnVtYmVycywgbGlrZSBcIjEyMzRcIiBidXQgbm90IGxpa2UgXCIxMjM0aGVsbG9cIlxyXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHZhbHVlIGFzIGFueSAtIHBhcnNlZE5iKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlZE5iKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKC9eKFxcZHs0fS1cXGR7MSwyfS1cXGR7MSwyfSkkLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgLyogRm9yIElTTyBTdHJpbmdzIHdpdGhvdXQgdGltZSB0aGUgZGF5LCBtb250aCBhbmQgeWVhciBtdXN0IGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBJU08gU3RyaW5nXHJcbiAgICAgICAgICAgICAgICBiZWZvcmUgRGF0ZSBjcmVhdGlvbiB0byBhdm9pZCB0aW1lIG9mZnNldCBhbmQgZXJyb3JzIGluIHRoZSBuZXcgRGF0ZS5cclxuICAgICAgICAgICAgICAgIElmIHdlIG9ubHkgcmVwbGFjZSAnLScgd2l0aCAnLCcgaW4gdGhlIElTTyBTdHJpbmcgKFwiMjAxNSwwMSwwMVwiKSwgYW5kIHRyeSB0byBjcmVhdGUgYSBuZXdcclxuICAgICAgICAgICAgICAgIGRhdGUsIHNvbWUgYnJvd3NlcnMgKGUuZy4gSUUgOSkgd2lsbCB0aHJvdyBhbiBpbnZhbGlkIERhdGUgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICBJZiB3ZSBsZWF2ZSB0aGUgJy0nIChcIjIwMTUtMDEtMDFcIikgYW5kIHRyeSB0byBjcmVhdGUgYSBuZXcgRGF0ZShcIjIwMTUtMDEtMDFcIikgdGhlIHRpbWVvZmZzZXRcclxuICAgICAgICAgICAgICAgIGlzIGFwcGxpZWQuXHJcbiAgICAgICAgICAgICAgICBOb3RlOiBJU08gbW9udGhzIGFyZSAwIGZvciBKYW51YXJ5LCAxIGZvciBGZWJydWFyeSwgLi4uICovXHJcbiAgICAgICAgICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSB2YWx1ZS5zcGxpdCgnLScpLm1hcCgodmFsOiBzdHJpbmcpID0+ICt2YWwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0gLSAxLCBkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbDtcclxuICAgICAgICAgICAgaWYgKG1hdGNoID0gdmFsdWUubWF0Y2godGhpcy5JU084NjAxX0RBVEVfUkVHRVgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc29TdHJpbmdUb0RhdGUobWF0Y2gpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUgYXMgYW55KTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlKGRhdGUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNvbnZlcnQgXCIke3ZhbHVlfVwiIGludG8gYSBkYXRlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYSBkYXRlIGluIElTTzg2MDEgdG8gYSBEYXRlLlxyXG4gICAgICogVXNlZCBpbnN0ZWFkIG9mIGBEYXRlLnBhcnNlYCBiZWNhdXNlIG9mIGJyb3dzZXIgZGlzY3JlcGFuY2llcy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzb1N0cmluZ1RvRGF0ZShtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSk6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcclxuICAgICAgICBsZXQgdHpIb3VyID0gMDtcclxuICAgICAgICBsZXQgdHpNaW4gPSAwO1xyXG5cclxuICAgICAgICAvLyBtYXRjaFs4XSBtZWFucyB0aGF0IHRoZSBzdHJpbmcgY29udGFpbnMgXCJaXCIgKFVUQykgb3IgYSB0aW1lem9uZSBsaWtlIFwiKzAxOjAwXCIgb3IgXCIrMDEwMFwiXHJcbiAgICAgICAgY29uc3QgZGF0ZVNldHRlciA9IG1hdGNoWzhdID8gZGF0ZS5zZXRVVENGdWxsWWVhciA6IGRhdGUuc2V0RnVsbFllYXI7XHJcbiAgICAgICAgY29uc3QgdGltZVNldHRlciA9IG1hdGNoWzhdID8gZGF0ZS5zZXRVVENIb3VycyA6IGRhdGUuc2V0SG91cnM7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgdGltZXpvbmUgZGVmaW5lZCBsaWtlIFwiKzAxOjAwXCIgb3IgXCIrMDEwMFwiXHJcbiAgICAgICAgaWYgKG1hdGNoWzldKSB7XHJcbiAgICAgICAgICAgIHR6SG91ciA9IE51bWJlcihtYXRjaFs5XSArIG1hdGNoWzEwXSk7XHJcbiAgICAgICAgICAgIHR6TWluID0gTnVtYmVyKG1hdGNoWzldICsgbWF0Y2hbMTFdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0ZVNldHRlci5jYWxsKGRhdGUsIE51bWJlcihtYXRjaFsxXSksIE51bWJlcihtYXRjaFsyXSkgLSAxLCBOdW1iZXIobWF0Y2hbM10pKTtcclxuICAgICAgICBjb25zdCBoID0gTnVtYmVyKG1hdGNoWzRdIHx8IDApIC0gdHpIb3VyO1xyXG4gICAgICAgIGNvbnN0IG0gPSBOdW1iZXIobWF0Y2hbNV0gfHwgMCkgLSB0ek1pbjtcclxuICAgICAgICBjb25zdCBzID0gTnVtYmVyKG1hdGNoWzZdIHx8IDApO1xyXG4gICAgICAgIGNvbnN0IG1zID0gTWF0aC5yb3VuZChwYXJzZUZsb2F0KCcwLicgKyAobWF0Y2hbN10gfHwgMCkpICogMTAwMCk7XHJcbiAgICAgICAgdGltZVNldHRlci5jYWxsKGRhdGUsIGgsIG0sIHMsIG1zKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEYXRlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS52YWx1ZU9mKCkpO1xyXG4gICAgfVxyXG59Il19
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9kYXRlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE1BQU0sT0FBTyxVQUFVO0lBRW5CLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQUEsQ0FBQztJQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBb0IsRUFBRSxNQUFvQjtRQUNwRCxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNyRSxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUdyRSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFXLEVBQUUsR0FBUztRQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBQzlCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JD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IFwiLi90aW1lLWhlbHBlclwiO1xyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZUhlbHBlciB7XHJcblxyXG4gICAgc3RhdGljIG1pbkRhdGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKDApO1xyXG4gICAgfTtcclxuXHJcbiAgICBzdGF0aWMgZXF1YWxzKHZhbHVlMT86IERhdGUgfCBudWxsLCB2YWx1ZTI/OiBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGxldCB2YWwxID0gKHZhbHVlMSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlMSA9PT0gbnVsbCkgPyBudWxsIDogdmFsdWUxO1xyXG4gICAgICAgIGxldCB2YWwyID0gKHZhbHVlMiA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlMiA9PT0gbnVsbCkgPyBudWxsIDogdmFsdWUyO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKHZhbDEgPT09IHZhbDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXZhbDEgfHwgIXZhbDIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbDEuZ2V0VGltZSgpID09PSB2YWwyLmdldFRpbWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0RGF0ZXMoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSkge1xyXG4gICAgICAgIHZhciBkYXRlcyA9IG5ldyBBcnJheTxEYXRlPigpO1xyXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoc3RhcnQudmFsdWVPZigpKTtcclxuICAgICAgICB3aGlsZSAoZGF0ZSA8PSBlbmQpIHtcclxuICAgICAgICAgICAgZGF0ZXMucHVzaChuZXcgRGF0ZShkYXRlKSk7XHJcbiAgICAgICAgICAgIGRhdGUgPSB0aGlzLmFkZERheXMoZGF0ZSwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRlcztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZGF0ZU9ubHkodmFsdWU6IERhdGUpIHtcclxuICAgICAgICBsZXQgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gdmFsdWUuZ2V0TW9udGgoKTtcclxuICAgICAgICBsZXQgZGF5ID0gdmFsdWUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdG9JU09EYXRlU3RyaW5nKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSB0aGlzLnBhcnNlRGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICghZGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIC8vIEFkZCArMSB0byBtb250aCBzaW5jZSAwIGlzIEphbnVhcnlcclxuICAgICAgICBsZXQgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgIGxldCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICAgICAgbGV0IHN0ciA9IGAke3llYXJ9LSR7bW9udGggPCAxMCA/ICcwJyA6ICcnfSR7bW9udGh9LSR7ZGF5IDwgMTAgPyAnMCcgOiAnJ30ke2RheX1gO1xyXG4gICAgICAgIC8vc3RyID0geWVhci50b1N0cmluZygpICsgXCItXCIgKyAobW9udGggKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKSArIFwiLVwiICsgZGF5LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBzdGF0aWMgYWRkVGltZSh2YWx1ZTogRGF0ZSwgdGltZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgICAgIGxldCB0bXAgPSBUaW1lSGVscGVyLnBhcnNlVGltZSh0aW1lKTtcclxuICAgICAgICBpZiAoIXRtcCkgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgICAgICBsZXQgdGltZURhdGUgPSBuZXcgRGF0ZSgnMTk3MC0wMS0wMVQnICsgdGltZSArICdaJyk7XHJcbiAgICAgICAgbGV0IGRhdGUgPSB2YWx1ZTtcclxuICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyB0aW1lRGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBhZGRZZWFycyh2OiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICAgICAgaWYgKCF5ZWFycykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gdjtcclxuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHYuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuICAgIHN0YXRpYyBhZGRNb250aHModjogRGF0ZSwgbW9udGhzOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoIW1vbnRocykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gdjtcclxuICAgICAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG1vbnRocyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9O1xyXG4gICAgc3RhdGljIGFkZERheXModjogRGF0ZSwgZGF5czogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFkYXlzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSB2O1xyXG4gICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRheXMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBhZGRIb3Vycyh2OiBEYXRlLCBob3VyczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFob3VycykgcmV0dXJuIHY7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodik7XHJcbiAgICAgICAgLy90b2RvIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBsaW5lIG5lZWRzIC0tPiBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgICAgIGRhdGUuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpICsgaG91cnMpO1xyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIGFkZE1pbnV0ZXModjogRGF0ZSwgbWludXRlczogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKCFtaW51dGVzKSByZXR1cm4gdjtcclxuXHJcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh2KTtcclxuICAgICAgICAvL3RvZG8gbmVlZCB0byBjaGVjayBpZiB0aGlzIGxpbmUgbmVlZHMgLS0+IGRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcbiAgICAgICAgZGF0ZS5zZXRNaW51dGVzKGRhdGUuZ2V0TWludXRlcygpICsgbWludXRlcyk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgYWRkU2Vjb25kcyh2OiBEYXRlLCBzZWNvbmRzOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAoIXNlY29uZHMpIHJldHVybiB2O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZSA9IHY7XHJcbiAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKGRhdGUuZ2V0U2Vjb25kcygpICsgc2Vjb25kcyk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1RvZGF5KGRhdGU6IERhdGUpIHtcclxuICAgICAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZURhdGUoZGF0ZSwgdG9kYXkpO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBjbG9uZShkYXRlOiBEYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCtkYXRlKTtcclxuICAgIH07XHJcbiAgICBzdGF0aWMgaXNBbm90aGVyTW9udGgoYTogRGF0ZSwgYjogRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBiICYmIGEuZ2V0TW9udGgoKSAhPT0gYi5nZXRNb250aCgpO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1dlZWtlbmQodjogRGF0ZSwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdi5nZXREYXkoKSA9PT0gMCB8fCB2LmdldERheSgpID09PSA2O1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBpc1NhbWVEYXRlKGE6IERhdGUsIGI6IERhdGUpIHtcclxuICAgICAgICByZXR1cm4gYiAmJiBhLmdldEZ1bGxZZWFyKCkgPT09IGIuZ2V0RnVsbFllYXIoKSAmJiBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKSAmJiBhLmdldERhdGUoKSA9PT0gYi5nZXREYXRlKCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICBzdGF0aWMgZ2V0QWdlKHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bGwsIG5vdz86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnRvRGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCBub3dUaW1lID0gbm93ID8gbm93LmdldFRpbWUoKSA6IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IHRpbWVEaWZmID0gbm93VGltZSAtIGRhdGUuZ2V0VGltZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGltZURpZmYgLyA4NjQwMDAwMCkgLyAzNjUuMjUpOy8vODY0MDAwMDAgPSAoMTAwMCAqIDYwICogNjAgKiAyNCkgPSAxMDAwIG1pbGxpc2Vjb25kICogNjBzZWNvbmQgICogNjBtaW51dGUgKiAyNGhvdXJcclxuICAgIH07XHJcbiAgICBzdGF0aWMgc3VidHJhY3RNb250aHMoZW5kRGF0ZTogRGF0ZSwgc3RhckRhdGU6IERhdGUpIHtcclxuICAgICAgICBsZXQgc3RhcnQgPSBzdGFyRGF0ZSA8PSBlbmREYXRlID8gc3RhckRhdGUgOiBlbmREYXRlO1xyXG4gICAgICAgIGxldCBlbmQgPSBzdGFyRGF0ZSA8PSBlbmREYXRlID8gZW5kRGF0ZSA6IHN0YXJEYXRlO1xyXG4gICAgICAgIGxldCBwbHVzID0gc3RhckRhdGUgPD0gZW5kRGF0ZSA/IDEgOiAtMTtcclxuXHJcbiAgICAgICAgbGV0IG1vbnRocyA9IChlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCkpICogMTI7XHJcbiAgICAgICAgbW9udGhzIC09IHN0YXJ0LmdldE1vbnRoKCk7XHJcbiAgICAgICAgbW9udGhzICs9IGVuZC5nZXRNb250aCgpO1xyXG4gICAgICAgIHJldHVybiBtb250aHMgKiBwbHVzO1xyXG4gICAgfTtcclxuXHJcbiAgICBzdGF0aWMgc3VidHJhY3REYXlzKHZhbHVlOiBEYXRlLCBkYXRlOiBEYXRlKSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgZGF0ZSA9IHRoaXMudG9EYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRpbWVEaWZmIC8gODY0MDAwMDApOy8vODY0MDAwMDAgPSAoMTAwMCAqIDYwICogNjAgKiAyNCkgPSAxMDAwIG1pbGxpc2Vjb25kICogNjBzZWNvbmQgICogNjBtaW51dGUgKiAyNGhvdXJcclxuICAgIH07XHJcbiAgICBzdGF0aWMgc3VidHJhY3RIb3Vycyh2YWx1ZTogRGF0ZSwgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgZGF0ZSA9IHRoaXMudG9EYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCB0aW1lRGlmZiA9IGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh0aW1lRGlmZiAlIDg2NDAwMDAwKSAvIDM2MDAwMDApO1xyXG4gICAgfTtcclxuICAgIHN0YXRpYyBzdWJ0cmFjdE1pbnV0ZXModmFsdWU6IERhdGUsIGRhdGU/OiBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGlmICghZGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGRhdGUgPSB0aGlzLnRvRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgdGltZURpZmYgPSBkYXRlLmdldFRpbWUoKSAtIHZhbHVlLmdldFRpbWUoKTtcclxuICAgICAgICAvL1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCgodGltZURpZmYgJSA4NjQwMDAwMCkgJSAzNjAwMDAwKSAvIDYwMDAwKTtcclxuICAgIH07XHJcblxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIElTTzg2MDFfREFURV9SRUdFWCA9XHJcbiAgICAgICAgL14oXFxkezR9KS0/KFxcZFxcZCktPyhcXGRcXGQpKD86VChcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpcXC4oXFxkKykpPyk/KT8oWnwoWystXSkoXFxkXFxkKTo/KFxcZFxcZCkpPyk/JC87XHJcbiAgICAvLyAgICAgICAgMSAgICAgICAgMiAgICAgICAzICAgICAgICAgNCAgICAgICAgICA1ICAgICAgICAgIDYgICAgICAgICAgNyAgICAgICAgICA4ICA5ICAgICAxMCAgICAgIDExXHJcblxyXG5cclxuICAgIHN0YXRpYyBwYXJzZURhdGUodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAgZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZSh2YWx1ZTogc3RyaW5nfG51bWJlcnxEYXRlKTogRGF0ZSB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGVkIGZyb20gZGF0ZSBwaXBlIFxyXG4gICAgLy8gcGFja2FnZXMvY29tbW9uL3NyYy9pMThuL2Zvcm1hdF9kYXRlLnRzXHJcblxyXG4gICAgLyoqKlxyXG4gICAgICogQ29udmVydHMgYSB2YWx1ZSB0byBkYXRlLlxyXG4gICAgICpcclxuICAgICAqIFN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzOlxyXG4gICAgICogLSBgRGF0ZWBcclxuICAgICAqIC0gbnVtYmVyOiB0aW1lc3RhbXBcclxuICAgICAqIC0gc3RyaW5nOiBudW1lcmljIChlLmcuIFwiMTIzNFwiKSwgSVNPIGFuZCBkYXRlIHN0cmluZ3MgaW4gYSBmb3JtYXQgc3VwcG9ydGVkIGJ5XHJcbiAgICAgKiAgIFtEYXRlLnBhcnNlKCldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGUvcGFyc2UpLlxyXG4gICAgICogICBOb3RlOiBJU08gc3RyaW5ncyB3aXRob3V0IHRpbWUgcmV0dXJuIGEgZGF0ZSB3aXRob3V0IHRpbWVvZmZzZXQuXHJcbiAgICAgKlxyXG4gICAgICogVGhyb3dzIGlmIHVuYWJsZSB0byBjb252ZXJ0IHRvIGEgZGF0ZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRvRGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWROYiA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gYW55IHN0cmluZyB0aGF0IG9ubHkgY29udGFpbnMgbnVtYmVycywgbGlrZSBcIjEyMzRcIiBidXQgbm90IGxpa2UgXCIxMjM0aGVsbG9cIlxyXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHZhbHVlIGFzIGFueSAtIHBhcnNlZE5iKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlZE5iKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKC9eKFxcZHs0fS1cXGR7MSwyfS1cXGR7MSwyfSkkLy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgLyogRm9yIElTTyBTdHJpbmdzIHdpdGhvdXQgdGltZSB0aGUgZGF5LCBtb250aCBhbmQgeWVhciBtdXN0IGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBJU08gU3RyaW5nXHJcbiAgICAgICAgICAgICAgICBiZWZvcmUgRGF0ZSBjcmVhdGlvbiB0byBhdm9pZCB0aW1lIG9mZnNldCBhbmQgZXJyb3JzIGluIHRoZSBuZXcgRGF0ZS5cclxuICAgICAgICAgICAgICAgIElmIHdlIG9ubHkgcmVwbGFjZSAnLScgd2l0aCAnLCcgaW4gdGhlIElTTyBTdHJpbmcgKFwiMjAxNSwwMSwwMVwiKSwgYW5kIHRyeSB0byBjcmVhdGUgYSBuZXdcclxuICAgICAgICAgICAgICAgIGRhdGUsIHNvbWUgYnJvd3NlcnMgKGUuZy4gSUUgOSkgd2lsbCB0aHJvdyBhbiBpbnZhbGlkIERhdGUgZXJyb3IuXHJcbiAgICAgICAgICAgICAgICBJZiB3ZSBsZWF2ZSB0aGUgJy0nIChcIjIwMTUtMDEtMDFcIikgYW5kIHRyeSB0byBjcmVhdGUgYSBuZXcgRGF0ZShcIjIwMTUtMDEtMDFcIikgdGhlIHRpbWVvZmZzZXRcclxuICAgICAgICAgICAgICAgIGlzIGFwcGxpZWQuXHJcbiAgICAgICAgICAgICAgICBOb3RlOiBJU08gbW9udGhzIGFyZSAwIGZvciBKYW51YXJ5LCAxIGZvciBGZWJydWFyeSwgLi4uICovXHJcbiAgICAgICAgICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSB2YWx1ZS5zcGxpdCgnLScpLm1hcCgodmFsOiBzdHJpbmcpID0+ICt2YWwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0gLSAxLCBkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbDtcclxuICAgICAgICAgICAgaWYgKG1hdGNoID0gdmFsdWUubWF0Y2godGhpcy5JU084NjAxX0RBVEVfUkVHRVgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc29TdHJpbmdUb0RhdGUobWF0Y2gpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUgYXMgYW55KTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlKGRhdGUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNvbnZlcnQgXCIke3ZhbHVlfVwiIGludG8gYSBkYXRlYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYSBkYXRlIGluIElTTzg2MDEgdG8gYSBEYXRlLlxyXG4gICAgICogVXNlZCBpbnN0ZWFkIG9mIGBEYXRlLnBhcnNlYCBiZWNhdXNlIG9mIGJyb3dzZXIgZGlzY3JlcGFuY2llcy5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzb1N0cmluZ1RvRGF0ZShtYXRjaDogUmVnRXhwTWF0Y2hBcnJheSk6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgwKTtcclxuICAgICAgICBsZXQgdHpIb3VyID0gMDtcclxuICAgICAgICBsZXQgdHpNaW4gPSAwO1xyXG5cclxuICAgICAgICAvLyBtYXRjaFs4XSBtZWFucyB0aGF0IHRoZSBzdHJpbmcgY29udGFpbnMgXCJaXCIgKFVUQykgb3IgYSB0aW1lem9uZSBsaWtlIFwiKzAxOjAwXCIgb3IgXCIrMDEwMFwiXHJcbiAgICAgICAgY29uc3QgZGF0ZVNldHRlciA9IG1hdGNoWzhdID8gZGF0ZS5zZXRVVENGdWxsWWVhciA6IGRhdGUuc2V0RnVsbFllYXI7XHJcbiAgICAgICAgY29uc3QgdGltZVNldHRlciA9IG1hdGNoWzhdID8gZGF0ZS5zZXRVVENIb3VycyA6IGRhdGUuc2V0SG91cnM7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgdGltZXpvbmUgZGVmaW5lZCBsaWtlIFwiKzAxOjAwXCIgb3IgXCIrMDEwMFwiXHJcbiAgICAgICAgaWYgKG1hdGNoWzldKSB7XHJcbiAgICAgICAgICAgIHR6SG91ciA9IE51bWJlcihtYXRjaFs5XSArIG1hdGNoWzEwXSk7XHJcbiAgICAgICAgICAgIHR6TWluID0gTnVtYmVyKG1hdGNoWzldICsgbWF0Y2hbMTFdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0ZVNldHRlci5jYWxsKGRhdGUsIE51bWJlcihtYXRjaFsxXSksIE51bWJlcihtYXRjaFsyXSkgLSAxLCBOdW1iZXIobWF0Y2hbM10pKTtcclxuICAgICAgICBjb25zdCBoID0gTnVtYmVyKG1hdGNoWzRdIHx8IDApIC0gdHpIb3VyO1xyXG4gICAgICAgIGNvbnN0IG0gPSBOdW1iZXIobWF0Y2hbNV0gfHwgMCkgLSB0ek1pbjtcclxuICAgICAgICBjb25zdCBzID0gTnVtYmVyKG1hdGNoWzZdIHx8IDApO1xyXG4gICAgICAgIGNvbnN0IG1zID0gTWF0aC5yb3VuZChwYXJzZUZsb2F0KCcwLicgKyAobWF0Y2hbN10gfHwgMCkpICogMTAwMCk7XHJcbiAgICAgICAgdGltZVNldHRlci5jYWxsKGRhdGUsIGgsIG0sIHMsIG1zKTtcclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEYXRlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTih2YWx1ZS52YWx1ZU9mKCkpO1xyXG4gICAgfVxyXG59Il19
|
package/fesm2022/zek.mjs
CHANGED
|
@@ -612,6 +612,16 @@ class DateHelper {
|
|
|
612
612
|
return Math.floor((timeDiff / 86400000) / 365.25); //86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour
|
|
613
613
|
}
|
|
614
614
|
;
|
|
615
|
+
static subtractMonths(endDate, starDate) {
|
|
616
|
+
let start = starDate <= endDate ? starDate : endDate;
|
|
617
|
+
let end = starDate <= endDate ? endDate : starDate;
|
|
618
|
+
let plus = starDate <= endDate ? 1 : -1;
|
|
619
|
+
let months = (end.getFullYear() - start.getFullYear()) * 12;
|
|
620
|
+
months -= start.getMonth();
|
|
621
|
+
months += end.getMonth();
|
|
622
|
+
return months * plus;
|
|
623
|
+
}
|
|
624
|
+
;
|
|
615
625
|
static subtractDays(value, date) {
|
|
616
626
|
if (!date)
|
|
617
627
|
return null;
|